Arquitetura¶
O ctxpack percorre um diretório respeitando as regras de ignore, lê cada ficheiro, redige segredos, e empacota os ficheiros num único output até atingir um orçamento de tokens.
flowchart LR
ROOT["diretório"] --> W["walkFiles<br/>(regras de ignore + .gitignore)"]
W --> RD["ler ficheiro"]
RD --> BIN{"binário / grande demais?"}
BIN -- sim --> SK["saltar"]
BIN -- não --> RE["redactSecrets"]
RE --> B{"dentro do orçamento?"}
B -- não --> SK
B -- sim --> ADD["acrescentar bloco"]
ADD --> OUT["Markdown / XML + árvore de ficheiros"]
Mapa de módulos¶
| Módulo | Responsabilidade |
|---|---|
ignore.ts |
Compilar padrões estilo .gitignore num matcher |
walk.ts |
Listar recursivamente os ficheiros incluídos (poda diretórios ignorados) |
redact.ts |
Substituir segredos comuns por placeholders |
tokens.ts |
Estimar tokens (~4 chars cada) |
pack.ts |
Ler, redigir, orçamentar e montar o output |
Princípios de design¶
- Seguro por defeito — segredos redigidos e binários/ficheiros grandes saltados, a menos que optes por não.
- Consciente do orçamento — a inclusão pára no limite estimado de tokens; os saltados são reportados.
- Determinístico & offline — funções puras sobre o filesystem, sem rede, zero dependências.
- Âmbito honesto — o matcher de ignore é um subconjunto comum do
.gitignore, documentado como tal.