@semacode/cli 2.3.1 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +265 -217
- package/dist/agentContextPack.js +14 -10
- package/dist/agentEntryPoints.d.ts +5 -0
- package/dist/agentEntryPoints.js +592 -568
- package/dist/angular-consumer-standalone.js +1 -1
- package/dist/bin.d.ts +6 -0
- package/dist/bin.js +130 -0
- package/dist/cliArgs.js +4 -4
- package/dist/cliControlError.d.ts +12 -0
- package/dist/cliControlError.js +47 -0
- package/dist/cliGrammar.d.ts +11 -0
- package/dist/cliGrammar.js +551 -0
- package/dist/cliHelp.d.ts +13 -0
- package/dist/cliHelp.js +19 -0
- package/dist/cliHelpTexto.d.ts +3 -0
- package/dist/cliHelpTexto.js +168 -0
- package/dist/cliRuntime.d.ts +2 -0
- package/dist/cliRuntime.js +31 -0
- package/dist/comandos.js +9 -22
- package/dist/contexto.js +5 -5
- package/dist/dev/index.d.ts +1 -0
- package/dist/dev/index.js +51 -9
- package/dist/discovery/catalog.js +3 -3
- package/dist/distribuicao/filesystemGlobal.d.ts +63 -0
- package/dist/distribuicao/filesystemGlobal.js +701 -0
- package/dist/distribuicao/index.d.ts +7 -0
- package/dist/distribuicao/index.js +227 -0
- package/dist/distribuicao/launcherGlobal.d.ts +53 -0
- package/dist/distribuicao/launcherGlobal.js +643 -0
- package/dist/distribuicao/launcherWindows.d.ts +28 -0
- package/dist/distribuicao/launcherWindows.js +326 -0
- package/dist/distribuicao/lockContextGlobal.d.ts +10 -0
- package/dist/distribuicao/lockContextGlobal.js +17 -0
- package/dist/distribuicao/lockGlobal.d.ts +6 -0
- package/dist/distribuicao/lockGlobal.js +520 -0
- package/dist/distribuicao/skillGlobal.d.ts +48 -0
- package/dist/distribuicao/skillGlobal.js +652 -0
- package/dist/distribuicao/skillIntentPolicy.d.ts +21 -0
- package/dist/distribuicao/skillIntentPolicy.js +115 -0
- package/dist/distribuicao/tipos.d.ts +50 -0
- package/dist/distribuicao/tipos.js +10 -0
- package/dist/distribuicao/versaoSemantica.d.ts +3 -0
- package/dist/distribuicao/versaoSemantica.js +62 -0
- package/dist/docs.part01.d.ts +4 -1
- package/dist/docs.part01.js +8 -0
- package/dist/docs.part02.js +9 -1
- package/dist/drift.part01.d.ts +33 -25
- package/dist/drift.part01.js +2 -1
- package/dist/drift.part04.d.ts +26 -5
- package/dist/drift.part04.js +123 -19
- package/dist/drift.part05.d.ts +2 -2
- package/dist/drift.part05.js +8 -6
- package/dist/drift.part06.d.ts +2 -2
- package/dist/drift.part06.js +113 -26
- package/dist/drift.part07.d.ts +11 -11
- package/dist/drift.part07.js +261 -265
- package/dist/drift.part08.d.ts +2 -2
- package/dist/drift.part08.js +35 -26
- package/dist/drift.part09.d.ts +2 -2
- package/dist/drift.part09.js +10 -3
- package/dist/drift.part11.js +261 -58
- package/dist/drift.part12.d.ts +1 -1
- package/dist/drift.part12.js +193 -21
- package/dist/drift.part13.d.ts +20 -39
- package/dist/drift.part13.js +601 -647
- package/dist/drift.part14.js +23 -7
- package/dist/driftCacheCas.d.ts +43 -0
- package/dist/driftCacheCas.js +351 -0
- package/dist/driftCacheFilesystem.d.ts +64 -0
- package/dist/driftCacheFilesystem.js +313 -0
- package/dist/driftCacheModes.d.ts +38 -0
- package/dist/driftCacheModes.js +147 -0
- package/dist/driftCacheStore.d.ts +80 -0
- package/dist/driftCacheStore.js +603 -0
- package/dist/driftCatalogo.d.ts +2 -28
- package/dist/driftCatalogo.js +143 -284
- package/dist/driftEscopo.d.ts +1 -3
- package/dist/driftEscopo.js +235 -151
- package/dist/driftEscopoReferencias.d.ts +5 -1
- package/dist/driftEscopoReferencias.js +375 -28
- package/dist/driftOrcamento.d.ts +0 -6
- package/dist/driftOrcamento.js +2 -1
- package/dist/execucoesExternas.js +19 -5
- package/dist/exemplosOficiais.d.ts +2 -1
- package/dist/exemplosOficiais.js +9 -3
- package/dist/geracaoCore.d.ts +1 -0
- package/dist/geracaoCore.js +6 -6
- package/dist/iaPrompts.d.ts +3 -3
- package/dist/iaPrompts.js +312 -313
- package/dist/importador.part01.d.ts +1 -1
- package/dist/importador.part06.d.ts +2 -0
- package/dist/importador.part06.js +87 -1
- package/dist/importador.part09.js +7 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +6 -25
- package/dist/index.part01.d.ts +20 -28
- package/dist/index.part01.js +16 -237
- package/dist/index.part02.js +36 -22
- package/dist/index.part03.d.ts +24 -2
- package/dist/index.part03.js +83 -19
- package/dist/index.part04.d.ts +10 -2
- package/dist/index.part04.js +152 -123
- package/dist/index.part05.js +80 -78
- package/dist/index.part06.js +34 -17
- package/dist/index.part07.d.ts +8 -2
- package/dist/index.part07.js +153 -7
- package/dist/index.part08.d.ts +1 -1
- package/dist/index.part08.js +25 -30
- package/dist/initCommand.d.ts +1 -0
- package/dist/initCommand.js +20 -4
- package/dist/initTemplatesBase.js +6 -4
- package/dist/pipelineConteudo/command.d.ts +1 -0
- package/dist/pipelineConteudo/command.js +9 -2
- package/dist/pipelineConteudo/help.d.ts +2 -0
- package/dist/pipelineConteudo/help.js +33 -0
- package/dist/profileAuthorCommand.js +3 -7
- package/dist/profileCommand.js +3 -7
- package/dist/projetoCarregar.js +35 -17
- package/dist/projetoCatalogo.d.ts +1 -0
- package/dist/projetoCatalogo.js +64 -25
- package/dist/projetoConfig.js +2 -0
- package/dist/projetoLegado.js +18 -0
- package/dist/projetoOrigens.d.ts +2 -0
- package/dist/projetoOrigens.js +65 -9
- package/dist/projetoTipos.d.ts +1 -0
- package/dist/resultadoCli.d.ts +20 -0
- package/dist/resultadoCli.js +57 -0
- package/dist/saidaCli.d.ts +35 -0
- package/dist/saidaCli.js +118 -0
- package/dist/sistemasInterativos/acceptanceEvidence.d.ts +22 -0
- package/dist/sistemasInterativos/acceptanceEvidence.js +345 -0
- package/dist/sistemasInterativos/engineObservation.d.ts +12 -0
- package/dist/sistemasInterativos/engineObservation.js +438 -0
- package/dist/sistemasInterativos/jobOrchestration.d.ts +2 -0
- package/dist/sistemasInterativos/jobOrchestration.js +204 -0
- package/dist/sistemasInterativos/operationPrimitives.d.ts +21 -0
- package/dist/sistemasInterativos/operationPrimitives.js +194 -0
- package/dist/sistemasInterativos/operations.d.ts +4 -39
- package/dist/sistemasInterativos/operations.js +5 -1164
- package/dist/skillCommand.d.ts +5 -0
- package/dist/skillCommand.js +88 -0
- package/dist/tipos.d.ts +1 -1
- package/dist/typescript-http-modelos.d.ts +1 -1
- package/dist/typescript-http-rotas.d.ts +1 -0
- package/dist/typescript-http-rotas.js +93 -0
- package/dist/typescript-http.d.ts +1 -1
- package/dist/typescript-http.js +1 -1
- package/dist/verificacaoCache.d.ts +25 -0
- package/dist/verificacaoCache.js +80 -0
- package/docs/README.md +34 -30
- package/docs/ai-integration.md +25 -12
- package/docs/ai-onboarding.md +37 -18
- package/docs/ai-workflow.md +9 -7
- package/docs/cli.md +125 -7
- package/docs/commands.md +41 -20
- package/docs/deploy.md +21 -8
- package/docs/descoberta-capacidades.md +106 -106
- package/docs/documentation.md +49 -39
- package/docs/drift-cache.md +108 -0
- package/docs/getting-started.md +43 -18
- package/docs/pipeline-conteudo.md +246 -246
- package/docs/profiles.md +54 -54
- package/docs/repositories.md +19 -2
- package/docs/rollback.md +15 -8
- package/docs/security.md +25 -3
- package/docs/sistemas-interativos.md +379 -374
- package/docs/syntax.md +14 -0
- package/docs/testing.md +139 -40
- package/exemplos/express_crud.sema +139 -0
- package/exemplos/fastify_crud.sema +146 -0
- package/exemplos/pipeline-conteudo/README.md +44 -44
- package/exemplos/pipeline-conteudo/alvos.json +23 -23
- package/exemplos/pipeline-conteudo/definicao.json +136 -136
- package/exemplos/profile_simulation.sema +211 -211
- package/exemplos/sistemas-interativos/README.md +100 -100
- package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -5
- package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -16
- package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -32
- package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -93
- package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -78
- package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -27
- package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -79
- package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -42
- package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -32
- package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -23
- package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -39
- package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -46
- package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -39
- package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -37
- package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -104
- package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -27
- package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -118
- package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -459
- package/exemplos/sistemas-interativos/game-2d.json +83 -83
- package/exemplos/sistemas-interativos/game-3d-human.json +81 -81
- package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -97
- package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -94
- package/exemplos/sistemas-interativos/game-xr-human.json +80 -80
- package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -108
- package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -75
- package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -58
- package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -97
- package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -141
- package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -112
- package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -103
- package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -95
- package/node_modules/@sema/gerador-cpp/package.json +1 -1
- package/node_modules/@sema/gerador-dotnet/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +51 -51
- package/node_modules/@sema/gerador-php/dist/index.js +113 -113
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js +37 -38
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.d.ts +7 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js +33 -10
- package/package.json +9 -4
- package/scripts/postinstall.mjs +148 -0
- package/skills/sema/SKILL.md +199 -0
- package/skills/sema/agents/openai.yaml +4 -0
- package/dist/driftCache.d.ts +0 -49
- package/dist/driftCache.js +0 -311
- package/dist/driftCacheIncremental.d.ts +0 -98
- package/dist/driftCacheIncremental.js +0 -596
- package/dist/driftCatalogoPersistente.d.ts +0 -8
- package/dist/driftCatalogoPersistente.js +0 -77
- package/node_modules/@sema/gerador-cpp/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-css/dist/index.part01.js.map +0 -1
- package/node_modules/@sema/gerador-css/dist/index.part02.js.map +0 -1
- package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-dotnet/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-php/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-python/dist/index.part01.js.map +0 -1
- package/node_modules/@sema/gerador-python/dist/index.part02.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
- package/node_modules/@sema/padroes/dist/index.js.map +0 -1
package/dist/index.part04.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.governanca_ia_contexto, sema.produto.escrita_segura_workspace
|
|
1
|
+
// SEMA-GOVERNED: sema.governanca_ia_contexto, sema.produto.escrita_segura_workspace, sema.produto.governanca_ia.drift.cache.modos
|
|
2
2
|
// Descrição: gera contexto local e grava artefatos somente dentro da base validada.
|
|
3
3
|
import { mkdir } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { formatarDiagnosticos, gerarRespostaValidacao, temErros, } from "@sema/nucleo";
|
|
6
6
|
import { carregarProjeto, } from "./projeto.js";
|
|
7
7
|
import { analisarDriftLegado, } from "./drift.js";
|
|
8
|
-
import { resolverDocumentacaoObrigatoria, verificarDocumentacaoMudanca, } from "./docs.js";
|
|
8
|
+
import { compactarDocumentoObrigatorio, resolverDocumentacaoObrigatoria, verificarDocumentacaoMudanca, } from "./docs.js";
|
|
9
9
|
import { LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO, LIMITE_AVISO_LINHAS_CONTRATO_SEMA, LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO, LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA, } from "./driftOrcamento.js";
|
|
10
10
|
import { ARQUIVO_AGENT_CONTEXT_PACK, ARQUIVO_DOC_AGENTES_CAPACIDADE, ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL, } from './agentContextTipos.js';
|
|
11
11
|
import { criarGuiaCapacidadeIa, LIMITE_CARACTERES_PAYLOAD_INLINE } from './agentContextPack.js';
|
|
@@ -16,9 +16,9 @@ import { carregarModulos } from './carregarModulos.js';
|
|
|
16
16
|
import { obterOpcao, obterOpcoesRepetidas, possuiFlag } from './cliArgs.js';
|
|
17
17
|
import { resumirListaTexto, unicosOrdenados } from './textoListas.js';
|
|
18
18
|
import { EXTENSOES_CODIGO, listarArquivosRecursivosLimitado } from './projetoBusca.js';
|
|
19
|
-
import { VERSAO_CLI
|
|
19
|
+
import { VERSAO_CLI } from "./index.part01.js";
|
|
20
20
|
import { coletarResumoSemanticoModulo, descreverFontesConclusao, detectarFontesConclusaoSnapshot, detectarModoVerificacaoCodigo } from "./index.part02.js";
|
|
21
|
-
import { ARQUIVOS_RESUMO_MODULO_IA, carregarContextoModuloIa, criarBriefingAgente, gerarArquivosResumoModuloIa, renderizarResumoProjetoMarkdown, resumirDriftPorModulo } from "./index.part03.js";
|
|
21
|
+
import { ARQUIVOS_RESUMO_MODULO_IA, carregarContextoModuloIa, criarBriefingAgente, criarBriefingAgenteContratos, gerarArquivosResumoModuloIa, renderizarResumoProjetoMarkdown, resumirDriftPorModulo } from "./index.part03.js";
|
|
22
22
|
export const ARQUIVOS_RESUMO_PROJETO_IA = [
|
|
23
23
|
ARQUIVO_SEMA_BOOT,
|
|
24
24
|
ARQUIVO_SEMA_SMALL_MODEL,
|
|
@@ -53,26 +53,36 @@ function escolherTopArquivosResumo(modulos, arquivosCodigoDetectados) {
|
|
|
53
53
|
}
|
|
54
54
|
return { arquivos: [], fonte: "nenhum" };
|
|
55
55
|
}
|
|
56
|
-
export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escreverNaRaiz = false,
|
|
57
|
-
const contextoProjeto = await carregarProjeto(entrada, process.cwd()
|
|
56
|
+
export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escreverNaRaiz = false, analiseDrift = { modo: "none", executar: false, avisos: [] }) {
|
|
57
|
+
const contextoProjeto = await carregarProjeto(entrada, process.cwd(), {
|
|
58
|
+
escopo: "projeto",
|
|
59
|
+
adiarDescobertaCodigo: !analiseDrift.executar,
|
|
60
|
+
});
|
|
58
61
|
const geradoEm = new Date().toISOString();
|
|
59
62
|
const guiaPorCapacidade = criarGuiaCapacidadeIa();
|
|
60
63
|
const entradaCanonica = criarEntradaCanonicaProjeto(guiaPorCapacidade);
|
|
61
64
|
const agentContextPack = entradaCanonica.agentContextPack;
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
const modoVerificacaoCodigo = analiseDrift.executar
|
|
66
|
+
? await detectarModoVerificacaoCodigo(contextoProjeto.baseProjeto, contextoProjeto.diretoriosCodigo)
|
|
67
|
+
: "contratos_apenas";
|
|
68
|
+
const fontesConclusao = analiseDrift.executar
|
|
69
|
+
? await detectarFontesConclusaoSnapshot(contextoProjeto.baseProjeto)
|
|
70
|
+
: ["contrato"];
|
|
71
|
+
const resultadoDrift = analiseDrift.executar
|
|
72
|
+
? await analisarDriftLegado(contextoProjeto, {
|
|
73
|
+
escopo: "projeto",
|
|
74
|
+
modoCache: analiseDrift.modo,
|
|
75
|
+
avisosModoCache: analiseDrift.avisos,
|
|
76
|
+
})
|
|
77
|
+
: null;
|
|
72
78
|
const modulos = contextoProjeto.modulosSelecionados.map((item) => {
|
|
73
79
|
const modulo = item.resultado.modulo?.nome ?? path.basename(item.caminho, ".sema");
|
|
74
|
-
const driftResumo =
|
|
75
|
-
|
|
80
|
+
const driftResumo = resultadoDrift
|
|
81
|
+
? resumirDriftPorModulo(modulo, item.caminho, resultadoDrift)
|
|
82
|
+
: null;
|
|
83
|
+
const briefing = resultadoDrift && driftResumo
|
|
84
|
+
? criarBriefingAgente(item.caminho, modulo, item.resultado.ir ?? null, driftResumo, resultadoDrift)
|
|
85
|
+
: criarBriefingAgenteContratos(item.caminho, modulo, item.resultado.ir ?? null);
|
|
76
86
|
return coletarResumoSemanticoModulo({
|
|
77
87
|
arquivo: item.caminho,
|
|
78
88
|
modulo,
|
|
@@ -83,12 +93,12 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
83
93
|
comando: "drift",
|
|
84
94
|
caminho: item.caminho,
|
|
85
95
|
modulo,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
aviso: analiseDrift.
|
|
90
|
-
?
|
|
91
|
-
:
|
|
96
|
+
modo: analiseDrift.modo,
|
|
97
|
+
executada: analiseDrift.executar,
|
|
98
|
+
sucesso: resultadoDrift?.sucesso ?? null,
|
|
99
|
+
aviso: analiseDrift.executar
|
|
100
|
+
? null
|
|
101
|
+
: "Análise de drift não executada; implementação, vínculos e rotas não foram verificados.",
|
|
92
102
|
resumo: driftResumo,
|
|
93
103
|
drift: resultadoDrift,
|
|
94
104
|
},
|
|
@@ -96,7 +106,7 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
96
106
|
fontesConclusao,
|
|
97
107
|
});
|
|
98
108
|
});
|
|
99
|
-
const arquivosCodigoDetectados = modoVerificacaoCodigo === "codigo_completo"
|
|
109
|
+
const arquivosCodigoDetectados = analiseDrift.executar && modoVerificacaoCodigo === "codigo_completo"
|
|
100
110
|
? await listarTopArquivosCodigoDetectados(contextoProjeto.diretoriosCodigo)
|
|
101
111
|
: [];
|
|
102
112
|
const topArquivosResumo = escolherTopArquivosResumo(modulos, arquivosCodigoDetectados);
|
|
@@ -117,6 +127,15 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
117
127
|
cliVersao: VERSAO_CLI,
|
|
118
128
|
baseProjeto,
|
|
119
129
|
modoVerificacaoCodigo,
|
|
130
|
+
analiseDrift: {
|
|
131
|
+
modo: analiseDrift.modo,
|
|
132
|
+
executada: analiseDrift.executar,
|
|
133
|
+
sucesso: resultadoDrift?.sucesso ?? null,
|
|
134
|
+
aviso: analiseDrift.executar
|
|
135
|
+
? null
|
|
136
|
+
: "Análise de drift não executada; o resumo contém somente evidência contratual.",
|
|
137
|
+
cache: resultadoDrift?.escopo_aplicado.cache ?? null,
|
|
138
|
+
},
|
|
120
139
|
fontesConclusao,
|
|
121
140
|
conclusoesPorFonte: descreverFontesConclusao(fontesConclusao, modoVerificacaoCodigo),
|
|
122
141
|
totalModulos: modulos.length,
|
|
@@ -130,6 +149,7 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
130
149
|
`PROJETO: ${path.basename(baseProjeto)}`,
|
|
131
150
|
`MODULOS: ${modulos.length}`,
|
|
132
151
|
`MODO_CODIGO: ${modoVerificacaoCodigo}`,
|
|
152
|
+
`RESULTADO_DRIFT: ${resultadoDrift ? (resultadoDrift.sucesso ? "sucesso" : "falha") : "não avaliado"}`,
|
|
133
153
|
`FONTES_CONCLUSAO: ${resumirListaTexto(fontesConclusao, 4)}`,
|
|
134
154
|
`ENTRADA_IA: ${entradaCanonica.porCapacidade.fraca.join(" -> ")}`,
|
|
135
155
|
`POLITICA_PLATAFORMA: Sema governa projeto e nao contorna politicas da plataforma; se houver alerta externo, pare e explique sem burlar filtro`,
|
|
@@ -150,6 +170,7 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
150
170
|
`BASE: ${baseProjeto}`,
|
|
151
171
|
`MODULOS: ${modulos.length}`,
|
|
152
172
|
`MODO_CODIGO: ${modoVerificacaoCodigo}`,
|
|
173
|
+
`RESULTADO_DRIFT: ${resultadoDrift ? (resultadoDrift.sucesso ? "sucesso" : "falha") : "não avaliado"}`,
|
|
153
174
|
...(modoVerificacaoCodigo === "contratos_apenas"
|
|
154
175
|
? ["AVISO_CODIGO: somente contratos enviados; implementacao nao verificada neste modo"]
|
|
155
176
|
: modoVerificacaoCodigo === "codigo_selecionado"
|
|
@@ -193,6 +214,7 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
193
214
|
artefatos: [...ARQUIVOS_RESUMO_PROJETO_IA],
|
|
194
215
|
modulos,
|
|
195
216
|
guiaPorCapacidade,
|
|
217
|
+
analiseDrift: indexJson.analiseDrift,
|
|
196
218
|
};
|
|
197
219
|
}
|
|
198
220
|
export async function gerarContextoIa(arquivoEntrada, pastaSaidaOpcional) {
|
|
@@ -218,102 +240,102 @@ export async function gerarContextoIa(arquivoEntrada, pastaSaidaOpcional) {
|
|
|
218
240
|
await escreverArquivoWorkspaceSeguro(pastaBase, artefato.caminhoRelativo, artefato.conteudo, { sobrescrever: true });
|
|
219
241
|
}
|
|
220
242
|
const resumoGerado = await gerarArquivosResumoModuloIa(contexto, pastaBase);
|
|
221
|
-
const resumo = `# Contexto de IA para ${contexto.modulo}
|
|
222
|
-
|
|
223
|
-
- Arquivo alvo: \`${contexto.arquivo}\`
|
|
224
|
-
- Modulo: \`${contexto.modulo}\`
|
|
225
|
-
- Sucesso em validar: \`${contexto.sucesso}\`
|
|
226
|
-
- Quantidade de diagnosticos: \`${contexto.diagnosticos.length}\`
|
|
227
|
-
- Gerado em: \`${contexto.geradoEm}\`
|
|
228
|
-
|
|
229
|
-
## Arquivos gerados neste pacote
|
|
230
|
-
|
|
231
|
-
- \`agent-context-pack.json\`
|
|
232
|
-
- \`${ARQUIVO_SEMA_BOOT}\`
|
|
233
|
-
- \`${ARQUIVO_SEMA_SMALL_MODEL}\`
|
|
234
|
-
- \`resumo.micro.txt\`
|
|
235
|
-
- \`resumo.curto.txt\`
|
|
236
|
-
- \`resumo.md\`
|
|
237
|
-
- \`briefing.min.json\`
|
|
238
|
-
- \`prompt-curto.txt\`
|
|
239
|
-
- \`validar.json\`
|
|
240
|
-
- \`diagnosticos.json\`
|
|
241
|
-
- \`ast.json\`
|
|
242
|
-
- \`ir.json\`
|
|
243
|
-
- \`drift.json\`
|
|
244
|
-
- \`briefing.json\`
|
|
245
|
-
|
|
246
|
-
## Fluxo recomendado para o agente
|
|
247
|
-
|
|
248
|
-
Antes de escolher arquivo de código, leia \`${ARQUIVO_SEMA_BOOT}\` e \`agent-context-pack.json\`. Eles declaram regras obrigatórias, proibições, prioridades, idioma humano e quando abrir texto bruto como \`AGENTS.md\`, \`exemplos/\`, docs e contratos.
|
|
249
|
-
|
|
250
|
-
## Políticas da plataforma
|
|
251
|
-
|
|
252
|
-
- Sema governa contrato, escopo, drift, evidência e qualidade; não contorna políticas, termos, permissões, segurança ou leis.
|
|
253
|
-
- Se houver alerta externo, trate como bloqueio da plataforma ou falso positivo possível, explique de forma neutra e não tente burlar filtro.
|
|
254
|
-
|
|
255
|
-
### IA fraca, gratuita ou com pouca disciplina
|
|
256
|
-
|
|
257
|
-
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
258
|
-
2. Ler \`${ARQUIVO_SEMA_SMALL_MODEL}\`.
|
|
259
|
-
3. Ler \`agent-context-pack.json\`.
|
|
260
|
-
4. Ler \`resumo.micro.txt\`.
|
|
261
|
-
5. Ler \`briefing.min.json\`.
|
|
262
|
-
6. Se ainda couber contexto, ler \`resumo.curto.txt\`.
|
|
263
|
-
|
|
264
|
-
### IA média
|
|
265
|
-
|
|
266
|
-
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
267
|
-
2. Ler \`agent-context-pack.json\`.
|
|
268
|
-
3. Ler \`resumo.curto.txt\`.
|
|
269
|
-
4. Ler \`briefing.min.json\`.
|
|
270
|
-
5. Ler \`drift.json\`.
|
|
271
|
-
6. Se precisar, subir para \`resumo.md\`.
|
|
272
|
-
|
|
273
|
-
### IA forte ou com tool use
|
|
274
|
-
|
|
275
|
-
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
276
|
-
2. Ler \`agent-context-pack.json\`.
|
|
277
|
-
3. Ler \`README.md\`.
|
|
278
|
-
4. Ler \`resumo.md\`.
|
|
279
|
-
5. Ler \`briefing.json\`.
|
|
280
|
-
6. Ler \`drift.json\`.
|
|
281
|
-
7. Só depois abrir \`ir.json\` e \`ast.json\`.
|
|
282
|
-
|
|
283
|
-
## Idioma humano
|
|
284
|
-
|
|
285
|
-
- Responda no idioma do usuário.
|
|
286
|
-
- Em PT-BR, use acentos, cedilha, pontuação e símbolos normais.
|
|
287
|
-
- A DSL \`.sema\` pode ser ASCII; texto humano não precisa ser.
|
|
288
|
-
|
|
289
|
-
## Texto bruto sob demanda
|
|
290
|
-
|
|
291
|
-
- Abra \`AGENTS.md\` antes de editar código, contrato, docs operacionais, release ou deploy.
|
|
292
|
-
- Abra \`exemplos/\` antes de criar ou corrigir sintaxe \`.sema\`.
|
|
293
|
-
- Abra \`docs/syntax.md\` quando exemplos não bastarem para resolver a gramática.
|
|
294
|
-
- Abra \`contratos/\` antes de qualquer implementação ou mudança de comportamento.
|
|
295
|
-
|
|
296
|
-
## Timeout e retry
|
|
297
|
-
|
|
298
|
-
- Timeout local do agente não é falha do Sema.
|
|
299
|
-
- Se uma chamada Sema estourar, aumente o timeout e tente de novo.
|
|
300
|
-
- Se o projeto inteiro for lento, escopar para \`sema resumo "${contexto.arquivo}" --micro --para mudanca\`.
|
|
301
|
-
- Se o ambiente impedir continuar, pare bloqueado e não avance com código sem Sema.
|
|
302
|
-
|
|
303
|
-
## Fechamento
|
|
304
|
-
|
|
305
|
-
1. Editar o arquivo \`.sema\`.
|
|
306
|
-
2. Rodar \`sema formatar "${contexto.arquivo}"\`.
|
|
307
|
-
3. Rodar \`sema validar "${contexto.arquivo}" --json\`.
|
|
308
|
-
4. Rodar \`sema drift "${contexto.arquivo}" --json\`.
|
|
309
|
-
5. Fechar com \`sema verificar <arquivo-ou-pasta> --json --saida ./.tmp/verificacao-ia\`.
|
|
310
|
-
|
|
311
|
-
## Textos base para onboarding do agente
|
|
312
|
-
|
|
313
|
-
- \`sema starter-ia\`
|
|
314
|
-
- \`sema resumo "${contexto.arquivo}" --micro --para onboarding\`
|
|
315
|
-
- \`sema prompt-curto "${contexto.arquivo}" --para mudanca\`
|
|
316
|
-
- \`sema prompt-ia\`
|
|
243
|
+
const resumo = `# Contexto de IA para ${contexto.modulo}
|
|
244
|
+
|
|
245
|
+
- Arquivo alvo: \`${contexto.arquivo}\`
|
|
246
|
+
- Modulo: \`${contexto.modulo}\`
|
|
247
|
+
- Sucesso em validar: \`${contexto.sucesso}\`
|
|
248
|
+
- Quantidade de diagnosticos: \`${contexto.diagnosticos.length}\`
|
|
249
|
+
- Gerado em: \`${contexto.geradoEm}\`
|
|
250
|
+
|
|
251
|
+
## Arquivos gerados neste pacote
|
|
252
|
+
|
|
253
|
+
- \`agent-context-pack.json\`
|
|
254
|
+
- \`${ARQUIVO_SEMA_BOOT}\`
|
|
255
|
+
- \`${ARQUIVO_SEMA_SMALL_MODEL}\`
|
|
256
|
+
- \`resumo.micro.txt\`
|
|
257
|
+
- \`resumo.curto.txt\`
|
|
258
|
+
- \`resumo.md\`
|
|
259
|
+
- \`briefing.min.json\`
|
|
260
|
+
- \`prompt-curto.txt\`
|
|
261
|
+
- \`validar.json\`
|
|
262
|
+
- \`diagnosticos.json\`
|
|
263
|
+
- \`ast.json\`
|
|
264
|
+
- \`ir.json\`
|
|
265
|
+
- \`drift.json\`
|
|
266
|
+
- \`briefing.json\`
|
|
267
|
+
|
|
268
|
+
## Fluxo recomendado para o agente
|
|
269
|
+
|
|
270
|
+
Antes de escolher arquivo de código, leia \`${ARQUIVO_SEMA_BOOT}\` e \`agent-context-pack.json\`. Eles declaram regras obrigatórias, proibições, prioridades, idioma humano e quando abrir texto bruto como \`AGENTS.md\`, \`exemplos/\`, docs e contratos.
|
|
271
|
+
|
|
272
|
+
## Políticas da plataforma
|
|
273
|
+
|
|
274
|
+
- Sema governa contrato, escopo, drift, evidência e qualidade; não contorna políticas, termos, permissões, segurança ou leis.
|
|
275
|
+
- Se houver alerta externo, trate como bloqueio da plataforma ou falso positivo possível, explique de forma neutra e não tente burlar filtro.
|
|
276
|
+
|
|
277
|
+
### IA fraca, gratuita ou com pouca disciplina
|
|
278
|
+
|
|
279
|
+
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
280
|
+
2. Ler \`${ARQUIVO_SEMA_SMALL_MODEL}\`.
|
|
281
|
+
3. Ler \`agent-context-pack.json\`.
|
|
282
|
+
4. Ler \`resumo.micro.txt\`.
|
|
283
|
+
5. Ler \`briefing.min.json\`.
|
|
284
|
+
6. Se ainda couber contexto, ler \`resumo.curto.txt\`.
|
|
285
|
+
|
|
286
|
+
### IA média
|
|
287
|
+
|
|
288
|
+
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
289
|
+
2. Ler \`agent-context-pack.json\`.
|
|
290
|
+
3. Ler \`resumo.curto.txt\`.
|
|
291
|
+
4. Ler \`briefing.min.json\`.
|
|
292
|
+
5. Ler \`drift.json\`.
|
|
293
|
+
6. Se precisar, subir para \`resumo.md\`.
|
|
294
|
+
|
|
295
|
+
### IA forte ou com tool use
|
|
296
|
+
|
|
297
|
+
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
298
|
+
2. Ler \`agent-context-pack.json\`.
|
|
299
|
+
3. Ler \`README.md\`.
|
|
300
|
+
4. Ler \`resumo.md\`.
|
|
301
|
+
5. Ler \`briefing.json\`.
|
|
302
|
+
6. Ler \`drift.json\`.
|
|
303
|
+
7. Só depois abrir \`ir.json\` e \`ast.json\`.
|
|
304
|
+
|
|
305
|
+
## Idioma humano
|
|
306
|
+
|
|
307
|
+
- Responda no idioma do usuário.
|
|
308
|
+
- Em PT-BR, use acentos, cedilha, pontuação e símbolos normais.
|
|
309
|
+
- A DSL \`.sema\` pode ser ASCII; texto humano não precisa ser.
|
|
310
|
+
|
|
311
|
+
## Texto bruto sob demanda
|
|
312
|
+
|
|
313
|
+
- Abra \`AGENTS.md\` antes de editar código, contrato, docs operacionais, release ou deploy.
|
|
314
|
+
- Abra \`exemplos/\` antes de criar ou corrigir sintaxe \`.sema\`.
|
|
315
|
+
- Abra \`docs/syntax.md\` quando exemplos não bastarem para resolver a gramática.
|
|
316
|
+
- Abra \`contratos/\` antes de qualquer implementação ou mudança de comportamento.
|
|
317
|
+
|
|
318
|
+
## Timeout e retry
|
|
319
|
+
|
|
320
|
+
- Timeout local do agente não é falha do Sema.
|
|
321
|
+
- Se uma chamada Sema estourar, aumente o timeout e tente de novo.
|
|
322
|
+
- Se o projeto inteiro for lento, escopar para \`sema resumo "${contexto.arquivo}" --micro --para mudanca --drift none\`.
|
|
323
|
+
- Se o ambiente impedir continuar, pare bloqueado e não avance com código sem Sema.
|
|
324
|
+
|
|
325
|
+
## Fechamento
|
|
326
|
+
|
|
327
|
+
1. Editar o arquivo \`.sema\`.
|
|
328
|
+
2. Rodar \`sema formatar "${contexto.arquivo}"\`.
|
|
329
|
+
3. Rodar \`sema validar "${contexto.arquivo}" --json\`.
|
|
330
|
+
4. Rodar \`sema drift "${contexto.arquivo}" --cache fresh --json\`.
|
|
331
|
+
5. Fechar com \`sema verificar <arquivo-ou-pasta> --json --saida ./.tmp/verificacao-ia\`.
|
|
332
|
+
|
|
333
|
+
## Textos base para onboarding do agente
|
|
334
|
+
|
|
335
|
+
- \`sema starter-ia\`
|
|
336
|
+
- \`sema resumo "${contexto.arquivo}" --micro --para onboarding --drift none\`
|
|
337
|
+
- \`sema prompt-curto "${contexto.arquivo}" --para mudanca\`
|
|
338
|
+
- \`sema prompt-ia\`
|
|
317
339
|
`;
|
|
318
340
|
await escreverArquivoWorkspaceSeguro(pastaBase, "README.md", resumo, {
|
|
319
341
|
sobrescrever: true,
|
|
@@ -350,7 +372,7 @@ export function resolverEntradaDocs(posicionais, args) {
|
|
|
350
372
|
export async function comandoDocsImpacto(posicionais, args, emJson) {
|
|
351
373
|
const { intencao, arquivosAlvo } = resolverEntradaDocs(posicionais, args);
|
|
352
374
|
if (!intencao.trim()) {
|
|
353
|
-
console.error("Uso: sema docs-impacto --intencao <acao> [--arquivo <caminho>] [--criar-ausentes] [--json]");
|
|
375
|
+
console.error("Uso: sema docs-impacto --intencao <acao> [--arquivo <caminho>] [--criar-ausentes] [--completo] [--json]");
|
|
354
376
|
return 1;
|
|
355
377
|
}
|
|
356
378
|
const resultado = await resolverDocumentacaoObrigatoria({
|
|
@@ -359,9 +381,16 @@ export async function comandoDocsImpacto(posicionais, args, emJson) {
|
|
|
359
381
|
arquivosAlvo,
|
|
360
382
|
criarAusentes: possuiFlag(args, "--criar-ausentes"),
|
|
361
383
|
});
|
|
384
|
+
const completo = possuiFlag(args, "--completo");
|
|
362
385
|
const payload = {
|
|
363
386
|
comando: "docs-impacto",
|
|
364
|
-
...resultado
|
|
387
|
+
...(completo ? resultado : {
|
|
388
|
+
...resultado,
|
|
389
|
+
leituraObrigatoria: resultado.leituraObrigatoria.map(compactarDocumentoObrigatorio),
|
|
390
|
+
docsAusentes: resultado.docsAusentes.map(compactarDocumentoObrigatorio),
|
|
391
|
+
docsCriadas: resultado.docsCriadas.map(compactarDocumentoObrigatorio),
|
|
392
|
+
modoDocumentos: "compacto",
|
|
393
|
+
}),
|
|
365
394
|
};
|
|
366
395
|
if (emJson) {
|
|
367
396
|
console.log(JSON.stringify(payload, null, 2));
|
package/dist/index.part05.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// SEMA-GOVERNED: sema.governanca_ia_contexto, sema.produto.governanca_ia.drift.cache.modos
|
|
2
|
+
// Descrição: executa drift sob modo explícito e mantém consultas honestas quando a análise é pulada.
|
|
3
|
+
import { stat } from "node:fs/promises";
|
|
1
4
|
import path from "node:path";
|
|
2
5
|
import { compilarCodigo, formatarDiagnosticos, lerArquivoTexto, temErros, } from "@sema/nucleo";
|
|
3
6
|
import { carregarProjeto, resolverAlvosVerificacao, resolverEstruturaSaidaPadrao, resolverFrameworkPadrao, resolverSaidaPadrao, } from "./projeto.js";
|
|
@@ -7,14 +10,22 @@ import { escreverArquivos, formatarAvisoArtefatosGeradosAcimaDoLimite, } from '.
|
|
|
7
10
|
import { carregarModulos } from './carregarModulos.js';
|
|
8
11
|
import { obterOpcao } from './cliArgs.js';
|
|
9
12
|
import { resumirDriftPorModulo } from "./index.part03.js";
|
|
10
|
-
import {
|
|
13
|
+
import { resolverAnaliseDriftConsultaCli, resolverOpcoesDriftCli } from "./index.part01.js";
|
|
11
14
|
export async function comandoInspecionar(entrada, emJson, cwd = process.cwd(), args = []) {
|
|
12
|
-
const analiseDrift =
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
15
|
+
const analiseDrift = resolverAnaliseDriftConsultaCli(args, "inspecionar");
|
|
16
|
+
const alvo = entrada ? path.resolve(cwd, entrada) : cwd;
|
|
17
|
+
const alvoEhArquivo = (await stat(alvo)).isFile();
|
|
18
|
+
const escopoEstreito = analiseDrift.opcoes.escopo === "arquivo"
|
|
19
|
+
|| analiseDrift.opcoes.escopo === "modulo"
|
|
20
|
+
|| (analiseDrift.opcoes.escopo === undefined
|
|
21
|
+
&& alvoEhArquivo);
|
|
22
|
+
const contextoProjeto = await carregarProjeto(entrada, cwd, {
|
|
23
|
+
escopo: analiseDrift.opcoes.escopo,
|
|
24
|
+
adiarDescobertaCodigo: !analiseDrift.executar || escopoEstreito,
|
|
25
|
+
});
|
|
26
|
+
const resultadoDrift = analiseDrift.executar
|
|
16
27
|
? await analisarDriftLegado(contextoProjeto, analiseDrift.opcoes)
|
|
17
|
-
:
|
|
28
|
+
: null;
|
|
18
29
|
const framework = resolverFrameworkPadrao(undefined, contextoProjeto.configCarregada);
|
|
19
30
|
const estruturaSaida = resolverEstruturaSaidaPadrao(undefined, framework, contextoProjeto.configCarregada);
|
|
20
31
|
const alvos = resolverAlvosVerificacao(contextoProjeto.configCarregada);
|
|
@@ -35,78 +46,61 @@ export async function comandoInspecionar(entrada, emJson, cwd = process.cwd(), a
|
|
|
35
46
|
modoAdocao: contextoProjeto.modoAdocao,
|
|
36
47
|
analiseDrift: {
|
|
37
48
|
modo: analiseDrift.modo,
|
|
38
|
-
executada:
|
|
39
|
-
|
|
40
|
-
aviso:
|
|
49
|
+
executada: analiseDrift.executar,
|
|
50
|
+
sucesso: resultadoDrift?.sucesso ?? null,
|
|
51
|
+
aviso: analiseDrift.executar
|
|
41
52
|
? null
|
|
42
|
-
: "Análise de drift não executada;
|
|
53
|
+
: "Análise de drift não executada; implementação, vínculos e rotas não foram verificados.",
|
|
54
|
+
avisos: analiseDrift.avisos,
|
|
55
|
+
cache: resultadoDrift?.escopo_aplicado.cache ?? null,
|
|
43
56
|
},
|
|
44
|
-
scoreDrift:
|
|
45
|
-
confiancaGeral:
|
|
46
|
-
consumerFramework:
|
|
47
|
-
appRoutes:
|
|
48
|
-
consumerSurfaces:
|
|
49
|
-
consumerBridges:
|
|
57
|
+
scoreDrift: resultadoDrift?.resumo_operacional.scoreMedio ?? null,
|
|
58
|
+
confiancaGeral: resultadoDrift?.resumo_operacional.confiancaGeral ?? null,
|
|
59
|
+
consumerFramework: resultadoDrift?.consumerFramework ?? null,
|
|
60
|
+
appRoutes: resultadoDrift?.appRoutes ?? null,
|
|
61
|
+
consumerSurfaces: resultadoDrift?.consumerSurfaces ?? null,
|
|
62
|
+
consumerBridges: resultadoDrift?.consumerBridges ?? null,
|
|
50
63
|
},
|
|
51
64
|
projeto: {
|
|
52
65
|
arquivos: contextoProjeto.arquivosProjeto,
|
|
53
|
-
arquivosDescobertos: contextoProjeto.arquivosDescobertos,
|
|
54
66
|
modulos: contextoProjeto.modulosSelecionados.map((item) => ({
|
|
55
67
|
caminho: item.caminho,
|
|
56
68
|
modulo: item.resultado.modulo?.nome ?? null,
|
|
57
69
|
sucesso: !temErros(item.resultado.diagnosticos),
|
|
58
70
|
diagnosticos: item.resultado.diagnosticos.length,
|
|
59
71
|
superficies: item.resultado.ir?.superficies.map((superficie) => `${superficie.tipo}:${superficie.nome}`) ?? [],
|
|
60
|
-
|
|
61
|
-
vinculos: item.resultado.ir
|
|
62
|
-
? [
|
|
63
|
-
...item.resultado.ir.vinculos,
|
|
64
|
-
...item.resultado.ir.tasks.flatMap((task) => task.vinculos),
|
|
65
|
-
...item.resultado.ir.flows.flatMap((flow) => flow.vinculos),
|
|
66
|
-
...item.resultado.ir.routes.flatMap((route) => route.vinculos),
|
|
67
|
-
...item.resultado.ir.superficies.flatMap((superficie) => superficie.vinculos),
|
|
68
|
-
]
|
|
69
|
-
: [],
|
|
70
|
-
arquivosEsperados: item.resultado.ir
|
|
71
|
-
? [...new Set([
|
|
72
|
-
...item.resultado.ir.vinculos,
|
|
73
|
-
...item.resultado.ir.tasks.flatMap((task) => task.vinculos),
|
|
74
|
-
...item.resultado.ir.flows.flatMap((flow) => flow.vinculos),
|
|
75
|
-
...item.resultado.ir.routes.flatMap((route) => route.vinculos),
|
|
76
|
-
...item.resultado.ir.superficies.flatMap((superficie) => superficie.vinculos),
|
|
77
|
-
].flatMap((vinculo) => [
|
|
78
|
-
vinculo.arquivo,
|
|
79
|
-
vinculo.tipo === "arquivo" ? vinculo.valor : undefined,
|
|
80
|
-
]).filter((arquivo) => Boolean(arquivo)))]
|
|
81
|
-
.sort((a, b) => a.localeCompare(b, "pt-BR"))
|
|
82
|
-
: [],
|
|
83
|
-
implementacao: driftExecutado
|
|
72
|
+
implementacao: resultadoDrift
|
|
84
73
|
? resumirDriftPorModulo(item.resultado.modulo?.nome ?? null, item.caminho, resultadoDrift)
|
|
85
74
|
: null,
|
|
86
75
|
})),
|
|
87
76
|
},
|
|
88
77
|
};
|
|
78
|
+
const codigoSaida = resultadoDrift?.sucesso === false ? 1 : 0;
|
|
89
79
|
if (emJson) {
|
|
90
80
|
console.log(JSON.stringify(payload, null, 2));
|
|
91
|
-
return
|
|
81
|
+
return codigoSaida;
|
|
92
82
|
}
|
|
93
|
-
console.log("
|
|
83
|
+
console.log("Inspeção de projeto Sema");
|
|
94
84
|
console.log(`- Entrada: ${payload.entrada}`);
|
|
95
|
-
console.log(`-
|
|
85
|
+
console.log(`- Configuração: ${payload.configuracao.caminho ?? "nenhuma"}`);
|
|
96
86
|
console.log(`- Base do projeto: ${payload.configuracao.baseProjeto}`);
|
|
97
87
|
console.log(`- Framework: ${payload.configuracao.framework}`);
|
|
98
88
|
console.log(`- Estrutura de saida: ${payload.configuracao.estruturaSaida}`);
|
|
99
89
|
console.log(`- Alvos: ${payload.configuracao.alvos.join(", ")}`);
|
|
100
|
-
console.log(`- Modo de
|
|
90
|
+
console.log(`- Modo de adoção: ${payload.configuracao.modoAdocao}`);
|
|
101
91
|
console.log(`- Análise de drift: ${payload.configuracao.analiseDrift.modo} (${payload.configuracao.analiseDrift.executada ? "executada" : "não executada"})`);
|
|
102
92
|
if (payload.configuracao.analiseDrift.executada) {
|
|
103
|
-
console.log(`-
|
|
104
|
-
console.log(`-
|
|
93
|
+
console.log(`- Resultado do drift: ${payload.configuracao.analiseDrift.sucesso ? "sucesso" : "falha"}`);
|
|
94
|
+
console.log(`- Score médio de drift: ${payload.configuracao.scoreDrift}`);
|
|
95
|
+
console.log(`- Confiança geral: ${payload.configuracao.confiancaGeral}`);
|
|
105
96
|
}
|
|
106
97
|
else {
|
|
98
|
+
console.log("- Resultado do drift: não avaliado");
|
|
99
|
+
console.log("- Score médio de drift: não avaliado");
|
|
100
|
+
console.log("- Confiança geral: não avaliada");
|
|
107
101
|
console.log(`- Aviso: ${payload.configuracao.analiseDrift.aviso}`);
|
|
108
102
|
}
|
|
109
|
-
console.log("-
|
|
103
|
+
console.log("- Saídas por alvo:");
|
|
110
104
|
for (const [alvo, saida] of Object.entries(payload.configuracao.saidas)) {
|
|
111
105
|
console.log(` - ${alvo}: ${saida}`);
|
|
112
106
|
}
|
|
@@ -114,22 +108,16 @@ export async function comandoInspecionar(entrada, emJson, cwd = process.cwd(), a
|
|
|
114
108
|
for (const origem of payload.configuracao.origens) {
|
|
115
109
|
console.log(` - ${origem}`);
|
|
116
110
|
}
|
|
117
|
-
console.log("-
|
|
111
|
+
console.log("- Diretórios de código:");
|
|
118
112
|
for (const diretorio of payload.configuracao.diretoriosCodigo) {
|
|
119
113
|
console.log(` - ${diretorio}`);
|
|
120
114
|
}
|
|
121
115
|
console.log(`- Fontes de legado detectadas: ${payload.configuracao.fontesLegado.join(", ") || "nenhuma"}`);
|
|
122
|
-
console.log(
|
|
123
|
-
console.log(`- Contratos descobertos: ${payload.projeto.arquivosDescobertos.length}`);
|
|
124
|
-
console.log("- Modulos selecionados:");
|
|
116
|
+
console.log("- Módulos selecionados:");
|
|
125
117
|
for (const modulo of payload.projeto.modulos) {
|
|
126
118
|
console.log(` - ${modulo.modulo ?? "(sem modulo)"} :: ${modulo.caminho} :: diagnosticos=${modulo.diagnosticos}`);
|
|
127
|
-
console.log(` tasks=${modulo.tasks.length} vinculos=${modulo.vinculos.length} arquivos esperados=${modulo.arquivosEsperados.length}`);
|
|
128
|
-
for (const arquivoEsperado of modulo.arquivosEsperados.slice(0, 8)) {
|
|
129
|
-
console.log(` arquivo esperado: ${arquivoEsperado}`);
|
|
130
|
-
}
|
|
131
119
|
if (modulo.implementacao) {
|
|
132
|
-
console.log(` impls
|
|
120
|
+
console.log(` impls válidos=${modulo.implementacao.implsValidos} quebrados=${modulo.implementacao.implsQuebrados} recursos divergentes=${modulo.implementacao.recursosDivergentesCount} sem_impl=${modulo.implementacao.tasksSemImplementacao}`);
|
|
133
121
|
for (const arquivoRelacionado of modulo.implementacao.arquivosRelacionados.slice(0, 5)) {
|
|
134
122
|
console.log(` arquivo relacionado: ${arquivoRelacionado}`);
|
|
135
123
|
}
|
|
@@ -138,11 +126,14 @@ export async function comandoInspecionar(entrada, emJson, cwd = process.cwd(), a
|
|
|
138
126
|
console.log(" implementação: não verificada neste modo");
|
|
139
127
|
}
|
|
140
128
|
}
|
|
141
|
-
return
|
|
129
|
+
return codigoSaida;
|
|
142
130
|
}
|
|
143
131
|
export async function comandoDrift(entrada, args, emJson, cwd = process.cwd()) {
|
|
144
132
|
const opcoes = resolverOpcoesDriftCli(args);
|
|
145
|
-
const contextoProjeto = await carregarProjeto(entrada, cwd, {
|
|
133
|
+
const contextoProjeto = await carregarProjeto(entrada, cwd, {
|
|
134
|
+
escopo: opcoes.escopo,
|
|
135
|
+
adiarDescobertaCodigo: opcoes.escopo !== "projeto",
|
|
136
|
+
});
|
|
146
137
|
const resultado = await analisarDriftLegado(contextoProjeto, opcoes);
|
|
147
138
|
if (emJson) {
|
|
148
139
|
console.log(JSON.stringify(resultado, null, 2));
|
|
@@ -150,18 +141,29 @@ export async function comandoDrift(entrada, args, emJson, cwd = process.cwd()) {
|
|
|
150
141
|
}
|
|
151
142
|
console.log("Drift entre Sema e codigo legado");
|
|
152
143
|
console.log(`- Escopo aplicado: ${resultado.escopo_aplicado.escopo}`);
|
|
153
|
-
console.log(`-
|
|
154
|
-
console.log(`- Cobertura: ${resultado.escopo_aplicado.cobertura ?? "
|
|
144
|
+
console.log(`- Estratégia física: ${resultado.escopo_aplicado.estrategia ?? "não informada"}`);
|
|
145
|
+
console.log(`- Cobertura: ${resultado.escopo_aplicado.cobertura ?? "não informada"}`);
|
|
155
146
|
console.log(`- Arquivos planejados: ${resultado.escopo_aplicado.arquivosPlanejados?.length ?? 0}`);
|
|
156
|
-
console.log(`-
|
|
157
|
-
console.log(`-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
147
|
+
console.log(`- Arquivos declarados: ${resultado.escopo_aplicado.arquivosDeclarados?.length ?? 0}`);
|
|
148
|
+
console.log(`- Arquivos inferidos: ${resultado.escopo_aplicado.arquivosInferidos?.length ?? 0}`);
|
|
149
|
+
console.log(`- Arquivos ausentes: ${resultado.escopo_aplicado.arquivosAusentes?.length ?? 0}`);
|
|
150
|
+
console.log(`- Bloqueios do plano: ${resultado.escopo_aplicado.bloqueios?.length ?? 0}`);
|
|
151
|
+
for (const bloqueio of resultado.escopo_aplicado.bloqueios ?? []) {
|
|
152
|
+
console.log(` - ${bloqueio}`);
|
|
153
|
+
}
|
|
154
|
+
const metricasCatalogo = resultado.escopo_aplicado.catalogo;
|
|
155
|
+
if (metricasCatalogo) {
|
|
156
|
+
const origemCatalogo = metricasCatalogo.origem === "plano_explicito"
|
|
157
|
+
? "plano explícito"
|
|
158
|
+
: "caminhada";
|
|
159
|
+
console.log(`- Catálogo: ${metricasCatalogo.arquivosCatalogados} arquivos, ${metricasCatalogo.diretoriosVisitados} diretórios visitados, ${metricasCatalogo.leiturasConteudo} leituras, ${metricasCatalogo.bytesLidos} bytes, ${metricasCatalogo.acertosMemoriaConteudo} reaproveitamentos em memória, origem ${origemCatalogo}`);
|
|
160
|
+
}
|
|
161
|
+
const estadoCache = resultado.escopo_aplicado.cache;
|
|
162
|
+
if (estadoCache) {
|
|
163
|
+
console.log(`- Cache: modo=${estadoCache.modo} origem=${estadoCache.origem} hits=${estadoCache.metricas.hits} misses=${estadoCache.metricas.misses} corrompidos=${estadoCache.metricas.corruptos} gravações=${estadoCache.metricas.gravacoes}`);
|
|
164
|
+
for (const aviso of estadoCache.avisos) {
|
|
165
|
+
console.log(` - Aviso: ${aviso.mensagem}`);
|
|
166
|
+
}
|
|
165
167
|
}
|
|
166
168
|
console.log(`- Ignorar worktrees: ${resultado.escopo_aplicado.ignorarWorktrees ? "sim" : "nao"}`);
|
|
167
169
|
console.log(`- Ignorar consumidores laterais: ${resultado.escopo_aplicado.ignorarConsumidoresLaterais ? "sim" : "nao"}`);
|
|
@@ -251,10 +253,10 @@ export async function comandoImpacto(entrada, args, emJson, cwd = process.cwd())
|
|
|
251
253
|
return 1;
|
|
252
254
|
}
|
|
253
255
|
const opcoes = resolverOpcoesDriftCli(args);
|
|
254
|
-
|
|
255
|
-
opcoes.escopo
|
|
256
|
-
|
|
257
|
-
|
|
256
|
+
const contextoProjeto = await carregarProjeto(entrada, cwd, {
|
|
257
|
+
escopo: opcoes.escopo,
|
|
258
|
+
adiarDescobertaCodigo: opcoes.escopo !== "projeto",
|
|
259
|
+
});
|
|
258
260
|
const resultado = await gerarMapaImpactoSemantico(contextoProjeto, alvoSemantico, obterOpcao(args, "--mudanca", `avaliar impacto de ${alvoSemantico}`), opcoes);
|
|
259
261
|
if (emJson) {
|
|
260
262
|
console.log(JSON.stringify(resultado, null, 2));
|
|
@@ -289,10 +291,10 @@ export async function comandoRenomearSemantico(entrada, args, emJson, cwd = proc
|
|
|
289
291
|
return 1;
|
|
290
292
|
}
|
|
291
293
|
const opcoes = resolverOpcoesDriftCli(args);
|
|
292
|
-
|
|
293
|
-
opcoes.escopo
|
|
294
|
-
|
|
295
|
-
|
|
294
|
+
const contextoProjeto = await carregarProjeto(entrada, cwd, {
|
|
295
|
+
escopo: opcoes.escopo,
|
|
296
|
+
adiarDescobertaCodigo: opcoes.escopo !== "projeto",
|
|
297
|
+
});
|
|
296
298
|
const resultado = await assistirRenomeacaoSemantica(contextoProjeto, nomeAtual, nomeNovo, opcoes);
|
|
297
299
|
if (emJson) {
|
|
298
300
|
console.log(JSON.stringify(resultado, null, 2));
|