/** * Survey do projeto: o que o runtime SABE do repositório, não o que ele supõe. * * Sem isto, `izanagi run "adicione paginação ao endpoint /users"` produzia um * documento SOBRE adicionar paginação, escrito por um modelo que nunca viu o * projeto: a stack era chutada, os caminhos eram inventados, e o resultado * passava na verificação porque o schema do artefato não pergunta se o * conteúdo corresponde a alguma realidade. Alucinação com aparência de * entrega — exatamente o que a regra anti-slop proíbe. * * O survey é a evidência barata que faltava. Ele é: * * determinístico : nenhuma chamada de modelo. Levantar o terreno não custa * token; o que custa é o que entra no contexto depois, e * isso o Context Resolver já limita. * limitado : profundidade, número de entradas e bytes têm teto, e o * corte é DECLARADO na saída. Um survey que varre o * monorepo inteiro é o mesmo desperdício de contexto que a * arquitetura proíbe, só que com nome melhor. * estrutural : conta arquivos por extensão e lista manifestos. NÃO * despeja código. Quem precisa de um arquivo específico * pede `fs.read` — com permissão, política e sandbox. * * O que ele NÃO faz: julgar. Não há "o projeto usa arquitetura X". Ele * devolve o que foi contado, e quem interpreta é o agente a jusante. */ /** Diretórios que nunca entram: são derivados, não são o projeto. */ export declare const SKIP_DIRS: Set; /** Profundidade máxima da varredura. Três níveis mostram a forma do projeto sem virar um `find /`. */ export declare const MAX_DEPTH = 3; /** Entradas visitadas antes de parar. Repositório grande é normal; varrer tudo não é obrigação. */ export declare const MAX_ENTRIES = 4000; /** Linhas do README levadas adiante. */ export declare const README_LINES = 40; /** Teto de chars do trecho de README. */ export declare const README_CHARS = 3000; /** Diretórios reportados na árvore, os maiores primeiro. */ export declare const MAX_TREE_DIRS = 25; export interface ManifestSummary { file: string; name?: string; version?: string; /** Nomes dos scripts, não o comando: o comando é do projeto, e despejá-lo aqui é convite a executá-lo. */ scripts?: string[]; } export interface TreeEntry { dir: string; files: number; /** Contagem por extensão, as mais frequentes primeiro. */ kinds: Record; } export interface ProjectSurvey { root: string; /** Linguagens/ecossistemas detectados por manifesto e por contagem de arquivo. */ stack: string[]; manifests: ManifestSummary[]; tree: TreeEntry[]; /** Arquivos que costumam ser porta de entrada, quando existem de fato. */ entrypoints: string[]; /** Primeiras linhas do README, quando existe. */ readme?: string; scanned: { dirs: number; files: number; depth: number; }; /** O que foi cortado. Corte não declarado é corte que vira conclusão errada. */ truncated: { entries: boolean; tree: boolean; readme: boolean; }; } /** * Varre o projeto e devolve o levantamento. Nunca lança: diretório ilegível * (permissão, link quebrado) some da contagem em vez de derrubar o run — o * survey é evidência auxiliar, e evidência parcial vale mais que nenhuma. */ export declare function surveyProject(root: string, opts?: { maxEntries?: number; maxDepth?: number; }): ProjectSurvey; /** True quando o diretório tem cara de projeto de código (existe manifesto reconhecido). */ export declare function looksLikeProject(root: string): boolean; //# sourceMappingURL=project-survey.d.ts.map