Skip to content

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.