/** * `izanagi polyglot status` — ponte de diagnóstico entre a CLI legado (TypeScript) * e os núcleos poliglotas do monorepo (Rust, Go, Python, packages TS), SEM executá-los * pesadamente: no máximo probes baratos (`--version` dos bins com timeout curto e * `import ast_analyzer` no venv) + checagens de existência. * * Contrato: * - Exit code 0 SEMPRE em modo normal (status é diagnóstico, não gate). * - `--strict` sai 1 se qualquer componente estiver ausente (útil em CI opcional). * - `--json` emite array puro de linhas máquina-legíveis (sem ANSI). * - Zero dependências novas: apenas node:fs/path/child_process. * * Ancoragem: os artefatos poliglotas vivem na raiz do MONOREPO (target/, packages/, * python-engine/) — que coincide com getPackageDir() no checkout dev. Num consumo via * npm (node_modules/izanagi-ai) nada disso existe → tudo "ausente", que é o diagnóstico * correto para quem não é desenvolvedor do framework. Testes injetam outra raiz via opts.root. */ export type PolyglotStatus = 'ok' | 'ausente'; export interface PolyglotRow { /** Identificador estável do componente (ex.: 'rust:izanagi-core'). */ component: string; status: PolyglotStatus; /** Detalhe curto legível (versão, caminho efetivo ou motivo da ausência). */ detail: string; /** Caminho verificado quando aplicável; null quando nada foi encontrado. */ path: string | null; } export interface PolyglotOptions { /** Raiz do monorepo onde procurar artefatos poliglotas (default: instalação do pacote). */ root?: string; } interface CheckContext { root: string; } /** * Sufixos de nome de executável a tentar, na ordem. * * No Windows o `cargo build` emite `izanagi-core.exe`, e a busca só olhava o * nome sem extensão: um binário que ESTAVA em `target/debug` era reportado * como "não encontrado em target/{release,debug}". O caminho sem extensão * continua primeiro para não mudar nada no Linux/macOS, onde é o único nome * que cargo produz. */ export declare const RUST_BIN_SUFFIXES: string[]; /** Ordem fixa e estável — contrato também consumido pelo modo --json. */ export declare function collectPolyglotRows(ctx: CheckContext): PolyglotRow[]; /** * Handler do comando. Sempre imprime o relatório; exit code só muda com --strict. * Síncrono na essência (spawnSync nos probes), assinatura async por uniformidade * com o router (todos os comandos são awaited). */ export declare function polyglotCommand(rest: string[], opts?: PolyglotOptions): Promise; export {}; //# sourceMappingURL=polyglot.d.ts.map