@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.part06.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
-
//
|
|
1
|
+
// SEMA-GOVERNED: sema.governanca_ia_contexto, sema.produto.governanca_ia.drift.cache.modos
|
|
2
|
+
// Descrição: resume contrato ou projeto com política explícita de análise de drift.
|
|
3
3
|
import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { compilarCodigo, formatarCodigo, formatarDiagnosticos, lerArquivoTexto, temErros, } from "@sema/nucleo";
|
|
@@ -13,7 +13,7 @@ import { carregarModulos } from './carregarModulos.js';
|
|
|
13
13
|
import { obterOpcao, possuiFlag } from './cliArgs.js';
|
|
14
14
|
import { EXEMPLOS_PROMPT_IA, PROMPT_BASE_IA, PROMPT_IA_REACT, PROMPT_IA_SEMA_PRIMEIRO, PROMPT_IA_UI, STARTER_IA } from './iaPrompts.js';
|
|
15
15
|
import { aplicarEstruturaSaida, gerarArquivosPorAlvo, garantirIr, validarCompatibilidadeFramework, } from './geracaoCore.js';
|
|
16
|
-
import { descobrirDocsIa, normalizarModoResumo, normalizarTamanhoResumo, renderizarCabecalhoDocsIa, renderizarCaixaAscii, renderizarSecaoAscii } from "./index.part01.js";
|
|
16
|
+
import { descobrirDocsIa, normalizarModoResumo, normalizarTamanhoResumo, renderizarCabecalhoDocsIa, renderizarCaixaAscii, renderizarSecaoAscii, resolverAnaliseDriftConsultaCli } from "./index.part01.js";
|
|
17
17
|
import { gerarResumoProjetoIa } from "./index.part04.js";
|
|
18
18
|
import { carregarContextoModuloIa, gerarArquivosResumoModuloIa } from "./index.part03.js";
|
|
19
19
|
import { coletarResumoSemanticoModulo, renderizarResumoModuloMarkdown, renderizarResumoModuloTexto } from "./index.part02.js";
|
|
@@ -121,7 +121,11 @@ export async function comandoStarterIa() {
|
|
|
121
121
|
return 0;
|
|
122
122
|
}
|
|
123
123
|
export async function comandoSyncCodex(emJson) {
|
|
124
|
-
const resumoProjeto = await gerarResumoProjetoIa(process.cwd(), undefined, true
|
|
124
|
+
const resumoProjeto = await gerarResumoProjetoIa(process.cwd(), undefined, true, {
|
|
125
|
+
modo: "fresh",
|
|
126
|
+
executar: true,
|
|
127
|
+
avisos: [],
|
|
128
|
+
});
|
|
125
129
|
const exemplos = await materializarExemplosOficiais(resumoProjeto.baseProjeto, true);
|
|
126
130
|
if (!exemplos.sucesso) {
|
|
127
131
|
if (emJson) {
|
|
@@ -196,8 +200,8 @@ export async function comandoAjudaIa() {
|
|
|
196
200
|
]));
|
|
197
201
|
console.log("");
|
|
198
202
|
console.log(renderizarSecaoAscii("Capacidade de IA", [
|
|
199
|
-
"fraca: `sema resumo <arquivo> --micro --json` usa stdout compacto",
|
|
200
|
-
"média: `sema resumo <arquivo> --curto --json` + `sema drift <arquivo> --json`",
|
|
203
|
+
"fraca: `sema resumo <arquivo> --micro --drift none --json` usa stdout compacto sem inventar evidência de implementação",
|
|
204
|
+
"média: `sema resumo <arquivo> --curto --drift none --json` + `sema drift <arquivo> --cache fresh --json`",
|
|
201
205
|
"forte: `sema contexto-ia <arquivo.sema> --saida <diretorio> --json` materializa o pacote completo",
|
|
202
206
|
]));
|
|
203
207
|
console.log("");
|
|
@@ -208,14 +212,13 @@ export async function comandoAjudaIa() {
|
|
|
208
212
|
"Use `sema interativo pipelines --json` para jogos, simulações e híbridos 3D, 2D, retro, texto, XR ou headless.",
|
|
209
213
|
"Use `sema sync-codex` para regenerar o contexto governado do Codex na raiz.",
|
|
210
214
|
"Use `sema instalar-exemplos` para materializar `exemplos/` oficiais sem sobrescrever arquivos locais.",
|
|
211
|
-
"Use `sema resumo <arquivo> --micro --para onboarding --json` para IA fraca; o resumo vem no stdout.",
|
|
212
|
-
"Use `--drift fresh|cache|none` em `resumo` para escolher análise nova, cache válido ou somente contratos; `--micro` usa `none` por padrão e os demais usam `fresh`.",
|
|
215
|
+
"Use `sema resumo <arquivo> --micro --para onboarding --drift none --json` para IA fraca; o resumo contratual vem no stdout e campos derivados ficam não avaliados.",
|
|
213
216
|
"Se `sema resumo` ou outro gate estourar timeout local, aumente o timeout e tente de novo; timeout do agente nao e falha do Sema.",
|
|
214
217
|
"Use `sema prompt-curto <arquivo> --curto --para mudanca` para colar contexto em modelo gratuito.",
|
|
215
218
|
"Use `sema prompt-ia`, `sema prompt-ia-ui`, `sema prompt-ia-react` e `sema prompt-ia-sema-primeiro` conforme a tarefa.",
|
|
216
219
|
"Use `sema exemplos-prompt-ia` para pegar modelos prontos de prompt.",
|
|
217
|
-
"Use `sema inspecionar` para descobrir
|
|
218
|
-
"Use `sema drift` para medir impls,
|
|
220
|
+
"Use `sema inspecionar --drift none` para descobrir a superfície contratual sem executar drift implicitamente.",
|
|
221
|
+
"Use `sema drift --cache fresh` para medir impls, vínculos, rotas, score e lacunas no fechamento; cache é aceleração, não prova final.",
|
|
219
222
|
"Use `sema docs-impacto --intencao <acao>` para ler ou criar docs obrigatorias antes de agir.",
|
|
220
223
|
"Use `sema finalizar-mudanca --intencao <acao>` para bloquear conclusao sem leitura documental comprovada.",
|
|
221
224
|
"Use `sema contexto-ia <arquivo.sema> --saida <diretorio> --json` para gerar AST, IR, drift, `briefing.json` e `briefing.min.json`.",
|
|
@@ -287,8 +290,10 @@ export async function comandoResumo(entrada, args, emJson) {
|
|
|
287
290
|
const pastaSaida = obterOpcao(args, "--saida");
|
|
288
291
|
const escreverNaRaiz = possuiFlag(args, "--raiz");
|
|
289
292
|
const alvo = entrada ? path.resolve(process.cwd(), entrada) : process.cwd();
|
|
290
|
-
|
|
291
|
-
|
|
293
|
+
const analiseDrift = resolverAnaliseDriftConsultaCli(args, "resumo");
|
|
294
|
+
const alvoEhArquivo = (await stat(alvo)).isFile();
|
|
295
|
+
if (alvoEhArquivo) {
|
|
296
|
+
const contexto = await carregarContextoModuloIa(alvo, analiseDrift);
|
|
292
297
|
const resumoSemantico = coletarResumoSemanticoModulo(contexto);
|
|
293
298
|
const guiaPorCapacidade = criarGuiaCapacidadeIa();
|
|
294
299
|
const texto = tamanho === "medio"
|
|
@@ -312,20 +317,28 @@ export async function comandoResumo(entrada, args, emJson) {
|
|
|
312
317
|
modulo: contexto.modulo,
|
|
313
318
|
pastaSaida: pastaResumo ?? null,
|
|
314
319
|
artefatosCompactos,
|
|
320
|
+
analiseDrift: {
|
|
321
|
+
modo: contexto.drift.modo,
|
|
322
|
+
executada: contexto.drift.executada,
|
|
323
|
+
sucesso: contexto.drift.sucesso,
|
|
324
|
+
aviso: contexto.drift.aviso,
|
|
325
|
+
avisos: analiseDrift.avisos,
|
|
326
|
+
cache: contexto.drift.drift?.escopo_aplicado.cache ?? null,
|
|
327
|
+
},
|
|
315
328
|
guiaPorCapacidade,
|
|
316
329
|
resumo: resumoSemantico,
|
|
317
330
|
texto,
|
|
318
331
|
}, null, 2));
|
|
319
|
-
return 0;
|
|
332
|
+
return contexto.drift.sucesso === false ? 1 : 0;
|
|
320
333
|
}
|
|
321
334
|
if (pastaResumo) {
|
|
322
335
|
console.log(`Resumo IA-first gerado em ${pastaResumo}`);
|
|
323
336
|
console.log("");
|
|
324
337
|
}
|
|
325
338
|
console.log(texto);
|
|
326
|
-
return 0;
|
|
339
|
+
return contexto.drift.sucesso === false ? 1 : 0;
|
|
327
340
|
}
|
|
328
|
-
const resumoProjeto = await gerarResumoProjetoIa(alvo, pastaSaida, escreverNaRaiz,
|
|
341
|
+
const resumoProjeto = await gerarResumoProjetoIa(alvo, pastaSaida, escreverNaRaiz, analiseDrift);
|
|
329
342
|
const arquivoResumo = tamanho === "micro"
|
|
330
343
|
? "SEMA_BRIEF.micro.txt"
|
|
331
344
|
: tamanho === "curto"
|
|
@@ -341,15 +354,19 @@ export async function comandoResumo(entrada, args, emJson) {
|
|
|
341
354
|
baseProjeto: resumoProjeto.baseProjeto,
|
|
342
355
|
pastaSaida: resumoProjeto.pastaSaida,
|
|
343
356
|
artefatos: resumoProjeto.artefatos,
|
|
357
|
+
analiseDrift: {
|
|
358
|
+
...resumoProjeto.analiseDrift,
|
|
359
|
+
avisos: analiseDrift.avisos,
|
|
360
|
+
},
|
|
344
361
|
guiaPorCapacidade: resumoProjeto.guiaPorCapacidade,
|
|
345
362
|
modulos: resumoProjeto.modulos,
|
|
346
363
|
texto,
|
|
347
364
|
}, null, 2));
|
|
348
|
-
return 0;
|
|
365
|
+
return resumoProjeto.analiseDrift.sucesso === false ? 1 : 0;
|
|
349
366
|
}
|
|
350
367
|
console.log(`Resumo IA-first do projeto gerado em ${resumoProjeto.pastaSaida}`);
|
|
351
368
|
console.log("");
|
|
352
369
|
console.log(texto);
|
|
353
|
-
return 0;
|
|
370
|
+
return resumoProjeto.analiseDrift.sucesso === false ? 1 : 0;
|
|
354
371
|
}
|
|
355
372
|
//# sourceMappingURL=index.part06.js.map
|
package/dist/index.part07.d.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { type AlvoGeracao, type FrameworkGeracao } from "@sema/padroes";
|
|
2
2
|
import type { EstruturaSaida } from "./tipos.js";
|
|
3
|
+
export interface OpcoesVerificar {
|
|
4
|
+
alvo?: string;
|
|
5
|
+
semCache?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function alvosSuportadosPelaStack(fontesLegado: string[] | undefined): AlvoGeracao[] | undefined;
|
|
8
|
+
export declare function avisoEscopoStackVerificacao(fontesLegado: string[] | undefined, alvosEfetivos: AlvoGeracao[]): string | undefined;
|
|
3
9
|
import { type ResumoModuloVerificacao } from './geracaoCore.js';
|
|
4
10
|
export declare function comandoPromptCurto(entrada: string | undefined, args: string[], emJson: boolean): Promise<number>;
|
|
5
11
|
export declare function comandoContextoIa(arquivo: string, pastaSaida: string | undefined, emJson: boolean): Promise<number>;
|
|
6
12
|
export declare function comandoTestar(arquivo: string, alvo: AlvoGeracao, saida: string, estrutura: EstruturaSaida, framework: FrameworkGeracao): Promise<number>;
|
|
7
13
|
export declare function imprimirResumoVerificacao(resumos: ResumoModuloVerificacao[]): void;
|
|
8
|
-
export declare function comandoVerificar(entrada: string | undefined, baseSaida: string, cwd?: string): Promise<number>;
|
|
9
|
-
export declare function comandoVerificarJson(entrada: string | undefined, baseSaida: string, cwd?: string): Promise<number>;
|
|
14
|
+
export declare function comandoVerificar(entrada: string | undefined, baseSaida: string, cwd?: string, opcoes?: OpcoesVerificar): Promise<number>;
|
|
15
|
+
export declare function comandoVerificarJson(entrada: string | undefined, baseSaida: string, cwd?: string, opcoes?: OpcoesVerificar): Promise<number>;
|
package/dist/index.part07.js
CHANGED
|
@@ -1,9 +1,56 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
-
//
|
|
1
|
+
// SEMA-GOVERNED: sema.governanca_ia_contexto, sema.produto.governanca_ia.drift.cache.modos
|
|
2
|
+
// Descrição: preserva modos explícitos nas superfícies auxiliares de contexto.
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
|
+
import pacoteCli from "../package.json" with { type: "json" };
|
|
5
6
|
import { compilarCodigo, formatarDiagnosticos, lerArquivoTexto, temErros, } from "@sema/nucleo";
|
|
6
7
|
import { carregarProjeto, resolverAlvosVerificacao, } from "./projeto.js";
|
|
8
|
+
import { SCHEMA_CACHE_VERIFICACAO, calcularChaveVerificacao, carregarCacheVerificacao, gravarCacheVerificacao, } from "./verificacaoCache.js";
|
|
9
|
+
const FONTES_POR_ALVO_SUPORTADO = {
|
|
10
|
+
typescript: ["typescript", "javascript"],
|
|
11
|
+
javascript: ["typescript", "javascript"],
|
|
12
|
+
nestjs: ["typescript", "javascript"],
|
|
13
|
+
express: ["typescript", "javascript"],
|
|
14
|
+
fastify: ["typescript", "javascript"],
|
|
15
|
+
nextjs: ["typescript", "javascript"],
|
|
16
|
+
"nextjs-consumer": ["typescript", "javascript"],
|
|
17
|
+
"react-vite-consumer": ["typescript", "javascript"],
|
|
18
|
+
"angular-consumer": ["typescript", "javascript"],
|
|
19
|
+
firebase: ["typescript", "javascript"],
|
|
20
|
+
python: ["python"],
|
|
21
|
+
fastapi: ["python"],
|
|
22
|
+
flask: ["python"],
|
|
23
|
+
dart: ["dart"],
|
|
24
|
+
"flutter-consumer": ["dart"],
|
|
25
|
+
dotnet: ["dotnet"],
|
|
26
|
+
java: ["javascript"],
|
|
27
|
+
lua: ["lua"],
|
|
28
|
+
php: ["php"],
|
|
29
|
+
cpp: ["cpp"],
|
|
30
|
+
};
|
|
31
|
+
export function alvosSuportadosPelaStack(fontesLegado) {
|
|
32
|
+
if (!fontesLegado?.length) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
const suportados = new Set();
|
|
36
|
+
for (const fonte of fontesLegado) {
|
|
37
|
+
for (const alvo of FONTES_POR_ALVO_SUPORTADO[fonte] ?? []) {
|
|
38
|
+
suportados.add(alvo);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return suportados.size > 0 ? [...suportados] : undefined;
|
|
42
|
+
}
|
|
43
|
+
export function avisoEscopoStackVerificacao(fontesLegado, alvosEfetivos) {
|
|
44
|
+
const suportados = alvosSuportadosPelaStack(fontesLegado);
|
|
45
|
+
if (!suportados) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
const foraDaStack = alvosEfetivos.filter((alvo) => alvo !== "html" && alvo !== "css" && !suportados.includes(alvo));
|
|
49
|
+
if (foraDaStack.length === 0) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
return `Alvos fora da stack detectada (${(fontesLegado ?? []).join(", ")}): ${foraDaStack.join(", ")}. Considere reduzir "alvos" no sema.config.json, remover "fontesLegado" auto-declaradas ou usar --alvo unico.`;
|
|
53
|
+
}
|
|
7
54
|
import { escreverArquivos, formatarAvisoArtefatosGeradosAcimaDoLimite, } from './fsGovernado.js';
|
|
8
55
|
import { obterOpcao } from './cliArgs.js';
|
|
9
56
|
import { avaliarDependenciasVerificacao, imprimirFalhaDependenciasVerificacao } from './doctorCommand.js';
|
|
@@ -17,7 +64,11 @@ export async function comandoPromptCurto(entrada, args, emJson) {
|
|
|
17
64
|
const modo = normalizarModoResumo(obterOpcao(args, "--para"));
|
|
18
65
|
const alvo = entrada ? path.resolve(process.cwd(), entrada) : process.cwd();
|
|
19
66
|
if (entrada && entrada.toLowerCase().endsWith(".sema")) {
|
|
20
|
-
const contexto = await carregarContextoModuloIa(alvo
|
|
67
|
+
const contexto = await carregarContextoModuloIa(alvo, {
|
|
68
|
+
modo: "none",
|
|
69
|
+
executar: false,
|
|
70
|
+
avisos: [],
|
|
71
|
+
});
|
|
21
72
|
const resumoSemantico = coletarResumoSemanticoModulo(contexto);
|
|
22
73
|
const capacidade = tamanho === "micro" ? "fraca" : tamanho === "curto" ? "media" : "forte";
|
|
23
74
|
const prompt = criarPromptCurtoModulo(resumoSemantico, modo, tamanho, capacidade);
|
|
@@ -150,7 +201,7 @@ export function imprimirResumoVerificacao(resumos) {
|
|
|
150
201
|
}
|
|
151
202
|
console.log(`Totais: modulos=${resumos.length} alvos=${totalAlvos} arquivos=${totalArquivos} testes=${totalTestes}`);
|
|
152
203
|
}
|
|
153
|
-
export async function comandoVerificar(entrada, baseSaida, cwd = process.cwd()) {
|
|
204
|
+
export async function comandoVerificar(entrada, baseSaida, cwd = process.cwd(), opcoes = {}) {
|
|
154
205
|
const contextoProjeto = await carregarProjeto(entrada, cwd);
|
|
155
206
|
const modulos = contextoProjeto.modulosSelecionados;
|
|
156
207
|
const diagnosticos = modulos.flatMap((item) => item.resultado.diagnosticos);
|
|
@@ -158,7 +209,13 @@ export async function comandoVerificar(entrada, baseSaida, cwd = process.cwd())
|
|
|
158
209
|
console.error(formatarDiagnosticos(diagnosticos));
|
|
159
210
|
return 1;
|
|
160
211
|
}
|
|
161
|
-
const alvos =
|
|
212
|
+
const alvos = opcoes.alvo
|
|
213
|
+
? [opcoes.alvo]
|
|
214
|
+
: resolverAlvosVerificacao(contextoProjeto.configCarregada);
|
|
215
|
+
const avisoEscopo = avisoEscopoStackVerificacao(contextoProjeto.configCarregada?.config.fontesLegado, alvos);
|
|
216
|
+
if (avisoEscopo) {
|
|
217
|
+
console.warn(avisoEscopo);
|
|
218
|
+
}
|
|
162
219
|
const configuracoesAlvo = alvos.map((alvo) => ({
|
|
163
220
|
alvo,
|
|
164
221
|
...resolverConfiguracaoVerificacaoPorAlvo(alvo, contextoProjeto.configCarregada),
|
|
@@ -183,13 +240,55 @@ export async function comandoVerificar(entrada, baseSaida, cwd = process.cwd())
|
|
|
183
240
|
arquivoFonte: modulo.caminho,
|
|
184
241
|
alvos: [],
|
|
185
242
|
};
|
|
243
|
+
const conteudoContrato = await readFile(modulo.caminho, "utf8").catch(() => "");
|
|
186
244
|
for (const configuracaoAlvo of configuracoesAlvo) {
|
|
187
245
|
const { alvo, framework, estrutura } = configuracaoAlvo;
|
|
188
246
|
const pastaAlvo = path.join(baseSaida, alvo, nomeSubpastaModulo(modulo.caminho));
|
|
247
|
+
const chave = calcularChaveVerificacao({
|
|
248
|
+
versaoCli: pacoteCli.version,
|
|
249
|
+
versaoNode: process.versions.node ?? "",
|
|
250
|
+
modulo: ir.nome,
|
|
251
|
+
alvo,
|
|
252
|
+
framework: framework ?? "",
|
|
253
|
+
estrutura,
|
|
254
|
+
conteudoContrato,
|
|
255
|
+
});
|
|
256
|
+
const emCache = opcoes.semCache ? undefined : await carregarCacheVerificacao(chave, pastaAlvo);
|
|
257
|
+
if (emCache) {
|
|
258
|
+
resumoModulo.alvos.push({
|
|
259
|
+
alvo,
|
|
260
|
+
arquivosGerados: emCache.arquivosGerados.length,
|
|
261
|
+
quantidadeTestes: emCache.quantidadeTestes,
|
|
262
|
+
pastaSaida: pastaAlvo,
|
|
263
|
+
sucesso: emCache.sucesso,
|
|
264
|
+
framework,
|
|
265
|
+
estrutura,
|
|
266
|
+
testesExecutados: false,
|
|
267
|
+
origem: "cache",
|
|
268
|
+
});
|
|
269
|
+
if (!emCache.sucesso) {
|
|
270
|
+
imprimirResumoVerificacao([...resumos, resumoModulo]);
|
|
271
|
+
console.error(`Falha registrada em cache na verificacao do modulo ${modulo.caminho} para o alvo ${alvo}.`);
|
|
272
|
+
return 1;
|
|
273
|
+
}
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
189
276
|
const arquivos = aplicarEstruturaSaida(gerarArquivosPorAlvo(ir, alvo, framework), ir, estrutura);
|
|
190
277
|
const escrita = await escreverArquivos(pastaAlvo, arquivos, { artefatoGerado: true });
|
|
191
278
|
artefatosGeradosAcimaDoLimite.push(...escrita.artefatosGeradosAcimaDoLimite);
|
|
192
279
|
const { execucao, testesExecutados } = executarTestesParaVerificacao(alvo, pastaAlvo, arquivos, framework);
|
|
280
|
+
await gravarCacheVerificacao({
|
|
281
|
+
schemaVersion: SCHEMA_CACHE_VERIFICACAO,
|
|
282
|
+
chave,
|
|
283
|
+
versaoCli: pacoteCli.version,
|
|
284
|
+
alvo,
|
|
285
|
+
modulo: ir.nome,
|
|
286
|
+
sucesso: execucao.codigoSaida === 0,
|
|
287
|
+
quantidadeTestes: execucao.quantidadeTestes,
|
|
288
|
+
testesExecutados,
|
|
289
|
+
arquivosGerados: arquivos.map((arquivo) => arquivo.caminhoRelativo),
|
|
290
|
+
geradoEm: new Date().toISOString(),
|
|
291
|
+
});
|
|
193
292
|
resumoModulo.alvos.push({
|
|
194
293
|
alvo,
|
|
195
294
|
arquivosGerados: arquivos.length,
|
|
@@ -199,6 +298,7 @@ export async function comandoVerificar(entrada, baseSaida, cwd = process.cwd())
|
|
|
199
298
|
framework,
|
|
200
299
|
estrutura,
|
|
201
300
|
testesExecutados,
|
|
301
|
+
origem: "executado",
|
|
202
302
|
});
|
|
203
303
|
if (execucao.codigoSaida !== 0) {
|
|
204
304
|
imprimirResumoVerificacao([...resumos, resumoModulo]);
|
|
@@ -216,7 +316,7 @@ export async function comandoVerificar(entrada, baseSaida, cwd = process.cwd())
|
|
|
216
316
|
console.log("Verificacao completa concluida com sucesso.");
|
|
217
317
|
return 0;
|
|
218
318
|
}
|
|
219
|
-
export async function comandoVerificarJson(entrada, baseSaida, cwd = process.cwd()) {
|
|
319
|
+
export async function comandoVerificarJson(entrada, baseSaida, cwd = process.cwd(), opcoes = {}) {
|
|
220
320
|
const contextoProjeto = await carregarProjeto(entrada, cwd);
|
|
221
321
|
const modulos = contextoProjeto.modulosSelecionados;
|
|
222
322
|
const diagnosticos = modulos.flatMap((item) => item.resultado.diagnosticos);
|
|
@@ -230,7 +330,10 @@ export async function comandoVerificarJson(entrada, baseSaida, cwd = process.cwd
|
|
|
230
330
|
}, null, 2));
|
|
231
331
|
return 1;
|
|
232
332
|
}
|
|
233
|
-
const alvos =
|
|
333
|
+
const alvos = opcoes.alvo
|
|
334
|
+
? [opcoes.alvo]
|
|
335
|
+
: resolverAlvosVerificacao(contextoProjeto.configCarregada);
|
|
336
|
+
const avisoEscopo = avisoEscopoStackVerificacao(contextoProjeto.configCarregada?.config.fontesLegado, alvos);
|
|
234
337
|
const configuracoesAlvo = alvos.map((alvo) => ({
|
|
235
338
|
alvo,
|
|
236
339
|
...resolverConfiguracaoVerificacaoPorAlvo(alvo, contextoProjeto.configCarregada),
|
|
@@ -269,13 +372,54 @@ export async function comandoVerificarJson(entrada, baseSaida, cwd = process.cwd
|
|
|
269
372
|
alvos: [],
|
|
270
373
|
saidaTestes: [],
|
|
271
374
|
};
|
|
375
|
+
const conteudoContrato = await readFile(modulo.caminho, "utf8").catch(() => "");
|
|
272
376
|
for (const configuracaoAlvo of configuracoesAlvo) {
|
|
273
377
|
const { alvo, framework, estrutura } = configuracaoAlvo;
|
|
274
378
|
const pastaAlvo = path.join(baseSaida, alvo, nomeSubpastaModulo(modulo.caminho));
|
|
379
|
+
const chave = calcularChaveVerificacao({
|
|
380
|
+
versaoCli: pacoteCli.version,
|
|
381
|
+
versaoNode: process.versions.node ?? "",
|
|
382
|
+
modulo: ir.nome,
|
|
383
|
+
alvo,
|
|
384
|
+
framework: framework ?? "",
|
|
385
|
+
estrutura,
|
|
386
|
+
conteudoContrato,
|
|
387
|
+
});
|
|
388
|
+
const emCache = opcoes.semCache ? undefined : await carregarCacheVerificacao(chave, pastaAlvo);
|
|
389
|
+
if (emCache) {
|
|
390
|
+
resumoModulo.alvos.push({
|
|
391
|
+
alvo,
|
|
392
|
+
arquivosGerados: emCache.arquivosGerados.length,
|
|
393
|
+
quantidadeTestes: emCache.quantidadeTestes,
|
|
394
|
+
pastaSaida: pastaAlvo,
|
|
395
|
+
sucesso: emCache.sucesso,
|
|
396
|
+
framework,
|
|
397
|
+
estrutura,
|
|
398
|
+
testesExecutados: false,
|
|
399
|
+
origem: "cache",
|
|
400
|
+
});
|
|
401
|
+
resumoModulo.saidaTestes.push({ alvo, stdout: "", stderr: `resultado reutilizado do cache de verificacao (chave ${chave.slice(0, 12)})` });
|
|
402
|
+
if (!emCache.sucesso) {
|
|
403
|
+
codigoSaida = 1;
|
|
404
|
+
}
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
275
407
|
const arquivos = aplicarEstruturaSaida(gerarArquivosPorAlvo(ir, alvo, framework), ir, estrutura);
|
|
276
408
|
const escrita = await escreverArquivos(pastaAlvo, arquivos, { artefatoGerado: true });
|
|
277
409
|
artefatosGeradosAcimaDoLimite.push(...escrita.artefatosGeradosAcimaDoLimite);
|
|
278
410
|
const { execucao, testesExecutados } = executarTestesParaVerificacao(alvo, pastaAlvo, arquivos, framework, true);
|
|
411
|
+
await gravarCacheVerificacao({
|
|
412
|
+
schemaVersion: SCHEMA_CACHE_VERIFICACAO,
|
|
413
|
+
chave,
|
|
414
|
+
versaoCli: pacoteCli.version,
|
|
415
|
+
alvo,
|
|
416
|
+
modulo: ir.nome,
|
|
417
|
+
sucesso: execucao.codigoSaida === 0,
|
|
418
|
+
quantidadeTestes: execucao.quantidadeTestes,
|
|
419
|
+
testesExecutados,
|
|
420
|
+
arquivosGerados: arquivos.map((arquivo) => arquivo.caminhoRelativo),
|
|
421
|
+
geradoEm: new Date().toISOString(),
|
|
422
|
+
});
|
|
279
423
|
resumoModulo.alvos.push({
|
|
280
424
|
alvo,
|
|
281
425
|
arquivosGerados: arquivos.length,
|
|
@@ -285,6 +429,7 @@ export async function comandoVerificarJson(entrada, baseSaida, cwd = process.cwd
|
|
|
285
429
|
framework,
|
|
286
430
|
estrutura,
|
|
287
431
|
testesExecutados,
|
|
432
|
+
origem: "executado",
|
|
288
433
|
});
|
|
289
434
|
resumoModulo.saidaTestes.push({ alvo, stdout: execucao.saidaPadrao, stderr: execucao.saidaErro });
|
|
290
435
|
if (execucao.codigoSaida !== 0) {
|
|
@@ -302,6 +447,7 @@ export async function comandoVerificarJson(entrada, baseSaida, cwd = process.cwd
|
|
|
302
447
|
console.log(JSON.stringify({
|
|
303
448
|
comando: "verificar",
|
|
304
449
|
sucesso: codigoSaida === 0,
|
|
450
|
+
avisoEscopo,
|
|
305
451
|
modulos: resumos,
|
|
306
452
|
totais,
|
|
307
453
|
artefatosGeradosAcimaDoLimite,
|
package/dist/index.part08.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function principal(): Promise<
|
|
1
|
+
export declare function principal(): Promise<number>;
|
package/dist/index.part08.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
-
//
|
|
1
|
+
// SEMA-GOVERNED: sema.governanca_ia_contexto, sema.produto.governanca_ia.drift.cache.modos, sema.produto.cli_invocacao_publica, sema.produto.cli_invocacao_publica.argumentos
|
|
2
|
+
// Descrição: encaminha argumentos validados para as consultas e o comando de drift.
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { carregarConfiguracaoProjeto, resolverAlvoPadrao, resolverEstruturaSaidaPadrao, resolverFrameworkPadrao, resolverSaidaPadrao, } from "./projeto.js";
|
|
5
5
|
import { REGISTRO_COMANDOS } from "./comandos.js";
|
|
@@ -7,35 +7,34 @@ import { comandoIniciar, comandoInstalarExemplos } from './initCommand.js';
|
|
|
7
7
|
import { obterOpcao, obterPosicionais, possuiFlag } from './cliArgs.js';
|
|
8
8
|
import { comandoAuthor, comandoProfile, criarPayloadRulePacks, normalizarProfileGovernanca, renderizarRulePacksTexto } from './profileAuthorCommand.js';
|
|
9
9
|
import { comandoDoctor } from './doctorCommand.js';
|
|
10
|
+
import { erroArgumentoInvalido, erroComandoDesconhecido } from './cliControlError.js';
|
|
11
|
+
import { validarSintaxeInvocacaoPublica } from './cliGrammar.js';
|
|
10
12
|
import { normalizarFonteImportacao, normalizarTemplateIniciar, } from './geracaoCore.js';
|
|
11
|
-
import {
|
|
13
|
+
import { obterArgumentos } from "./index.part01.js";
|
|
12
14
|
import { comandoDocsImpacto, comandoFinalizarMudanca, comandoValidar, comandoValidarJson } from "./index.part04.js";
|
|
13
15
|
import { comandoAst, comandoAstJson, comandoDrift, comandoImpacto, comandoImportar, comandoInspecionar, comandoIr, comandoIrJson, comandoRenomearSemantico } from "./index.part05.js";
|
|
14
16
|
import { comandoAjudaIa, comandoCompilar, comandoDiagnosticos, comandoExemplosPromptIa, comandoFormatar, comandoPromptIa, comandoPromptIaReact, comandoPromptIaSemaPrimeiro, comandoPromptIaUi, comandoResumo, comandoStarterIa, comandoSyncCodex } from "./index.part06.js";
|
|
15
17
|
import { comandoContextoIa, comandoPromptCurto, comandoTestar, comandoVerificar, comandoVerificarJson } from "./index.part07.js";
|
|
16
18
|
export async function principal() {
|
|
19
|
+
const argvPublico = process.argv.slice(2);
|
|
20
|
+
const sintaxe = validarSintaxeInvocacaoPublica(argvPublico);
|
|
21
|
+
if (!sintaxe.dispatchPermitido)
|
|
22
|
+
return 0;
|
|
17
23
|
const { comando, resto } = obterArgumentos();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
console.log(VERSAO_CLI);
|
|
21
|
-
process.exit(0);
|
|
22
|
-
}
|
|
23
|
-
if (!comando || comandoCru === "--help" || comandoCru === "-h") {
|
|
24
|
-
console.log(ajuda());
|
|
25
|
-
process.exit(0);
|
|
26
|
-
}
|
|
27
|
-
const cwd = process.cwd();
|
|
24
|
+
if (!comando)
|
|
25
|
+
return 0;
|
|
28
26
|
const posicionais = obterPosicionais(resto);
|
|
29
|
-
|
|
27
|
+
const modoJson = argvPublico.includes("--json");
|
|
28
|
+
const cwd = process.cwd();
|
|
30
29
|
// --- Comandos registrados via REGISTRO_COMANDOS (guard, init, dev, sync) ---
|
|
31
30
|
const handlerRegistrado = REGISTRO_COMANDOS[comando];
|
|
32
31
|
if (handlerRegistrado) {
|
|
33
|
-
|
|
34
|
-
process.exit(codigoSaida);
|
|
32
|
+
return handlerRegistrado(posicionais, resto, modoJson);
|
|
35
33
|
}
|
|
34
|
+
let codigoSaida = 0;
|
|
36
35
|
switch (comando) {
|
|
37
36
|
case "iniciar":
|
|
38
|
-
codigoSaida = await comandoIniciar(cwd, normalizarTemplateIniciar(obterOpcao(resto, "--template")), { force: possuiFlag(resto, "--force") });
|
|
37
|
+
codigoSaida = await comandoIniciar(cwd, normalizarTemplateIniciar(obterOpcao(resto, "--template")), { force: possuiFlag(resto, "--force"), exemplosCompletos: possuiFlag(resto, "--com-exemplos") });
|
|
39
38
|
break;
|
|
40
39
|
case "author":
|
|
41
40
|
codigoSaida = await comandoAuthor(posicionais, resto, possuiFlag(resto, "--json"));
|
|
@@ -58,13 +57,13 @@ export async function principal() {
|
|
|
58
57
|
break;
|
|
59
58
|
case "ast":
|
|
60
59
|
codigoSaida = possuiFlag(resto, "--json")
|
|
61
|
-
? await comandoAstJson(
|
|
62
|
-
: await comandoAst(
|
|
60
|
+
? await comandoAstJson(posicionais[0] ?? "")
|
|
61
|
+
: await comandoAst(posicionais[0] ?? "");
|
|
63
62
|
break;
|
|
64
63
|
case "ir":
|
|
65
64
|
codigoSaida = possuiFlag(resto, "--json")
|
|
66
|
-
? await comandoIrJson(
|
|
67
|
-
: await comandoIr(
|
|
65
|
+
? await comandoIrJson(posicionais[0] ?? "")
|
|
66
|
+
: await comandoIr(posicionais[0] ?? "");
|
|
68
67
|
break;
|
|
69
68
|
case "compilar":
|
|
70
69
|
{
|
|
@@ -101,8 +100,8 @@ export async function principal() {
|
|
|
101
100
|
break;
|
|
102
101
|
case "verificar":
|
|
103
102
|
codigoSaida = possuiFlag(resto, "--json")
|
|
104
|
-
? await comandoVerificarJson(posicionais[0], resolverSaidaPadrao(obterOpcao(resto, "--saida", "./.tmp/sema-verificar"), "typescript", await carregarConfiguracaoProjeto(posicionais[0] ? path.resolve(cwd, posicionais[0]) : cwd)), cwd)
|
|
105
|
-
: await comandoVerificar(posicionais[0], resolverSaidaPadrao(obterOpcao(resto, "--saida", "./.tmp/sema-verificar"), "typescript", await carregarConfiguracaoProjeto(posicionais[0] ? path.resolve(cwd, posicionais[0]) : cwd)), cwd);
|
|
103
|
+
? await comandoVerificarJson(posicionais[0], resolverSaidaPadrao(obterOpcao(resto, "--saida", "./.tmp/sema-verificar"), "typescript", await carregarConfiguracaoProjeto(posicionais[0] ? path.resolve(cwd, posicionais[0]) : cwd)), cwd, { alvo: obterOpcao(resto, "--alvo"), semCache: possuiFlag(resto, "--sem-cache") })
|
|
104
|
+
: await comandoVerificar(posicionais[0], resolverSaidaPadrao(obterOpcao(resto, "--saida", "./.tmp/sema-verificar"), "typescript", await carregarConfiguracaoProjeto(posicionais[0] ? path.resolve(cwd, posicionais[0]) : cwd)), cwd, { alvo: obterOpcao(resto, "--alvo"), semCache: possuiFlag(resto, "--sem-cache") });
|
|
106
105
|
break;
|
|
107
106
|
case "inspecionar":
|
|
108
107
|
codigoSaida = await comandoInspecionar(posicionais[0], possuiFlag(resto, "--json"), cwd, resto);
|
|
@@ -120,9 +119,7 @@ export async function principal() {
|
|
|
120
119
|
{
|
|
121
120
|
const fonte = normalizarFonteImportacao(posicionais[0]);
|
|
122
121
|
if (!fonte || !posicionais[1]) {
|
|
123
|
-
|
|
124
|
-
codigoSaida = 1;
|
|
125
|
-
break;
|
|
122
|
+
throw erroArgumentoInvalido();
|
|
126
123
|
}
|
|
127
124
|
codigoSaida = await comandoImportar(fonte, path.resolve(cwd, posicionais[1]), path.resolve(cwd, obterOpcao(resto, "--saida", "./sema/importado")), obterOpcao(resto, "--namespace"), possuiFlag(resto, "--json"));
|
|
128
125
|
}
|
|
@@ -176,10 +173,8 @@ export async function principal() {
|
|
|
176
173
|
codigoSaida = await comandoContextoIa(posicionais[0] ?? "", obterOpcao(resto, "--saida"), possuiFlag(resto, "--json"));
|
|
177
174
|
break;
|
|
178
175
|
default:
|
|
179
|
-
|
|
180
|
-
codigoSaida = 1;
|
|
181
|
-
break;
|
|
176
|
+
throw erroComandoDesconhecido();
|
|
182
177
|
}
|
|
183
|
-
|
|
178
|
+
return codigoSaida;
|
|
184
179
|
}
|
|
185
180
|
//# sourceMappingURL=index.part08.js.map
|
package/dist/initCommand.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type TemplateIniciar } from "./initTemplatesBase.js";
|
|
2
2
|
export declare function comandoIniciar(cwd: string, template: TemplateIniciar, opcoes?: {
|
|
3
3
|
force?: boolean;
|
|
4
|
+
exemplosCompletos?: boolean;
|
|
4
5
|
}): Promise<number>;
|
|
5
6
|
export declare function comandoInstalarExemplos(emJson: boolean): Promise<number>;
|
package/dist/initCommand.js
CHANGED
|
@@ -4,14 +4,18 @@ import * as fs from "node:fs";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { escreverArquivos } from "./fsGovernado.js";
|
|
6
6
|
import { arquivosTemplateIniciar } from "./initTemplatesBase.js";
|
|
7
|
-
import { materializarExemplosOficiais, planejarExemplosOficiais } from "./exemplosOficiais.js";
|
|
7
|
+
import { materializarExemplosOficiais, normalizarCaminhoExemplo, planejarExemplosOficiais } from "./exemplosOficiais.js";
|
|
8
8
|
import { validarDestinosEscritaWorkspace } from "./workspaceWrite.js";
|
|
9
9
|
async function sincronizarKitIaInicial(cwd) {
|
|
10
10
|
const [{ gerarResumoProjetoIa }, { sincronizarEntrypointCodex }] = await Promise.all([
|
|
11
11
|
import("./index.part04.js"),
|
|
12
12
|
import("./agentEntryPoints.js"),
|
|
13
13
|
]);
|
|
14
|
-
const resumoProjeto = await gerarResumoProjetoIa(cwd, undefined, true
|
|
14
|
+
const resumoProjeto = await gerarResumoProjetoIa(cwd, undefined, true, {
|
|
15
|
+
modo: "fresh",
|
|
16
|
+
executar: true,
|
|
17
|
+
avisos: [],
|
|
18
|
+
});
|
|
15
19
|
const indexJson = JSON.parse(fs.readFileSync(path.join(resumoProjeto.pastaSaida, "SEMA_INDEX.json"), "utf8"));
|
|
16
20
|
const codex = await sincronizarEntrypointCodex(resumoProjeto.baseProjeto, indexJson.agentContextPack);
|
|
17
21
|
return {
|
|
@@ -22,6 +26,12 @@ async function sincronizarKitIaInicial(cwd) {
|
|
|
22
26
|
codex,
|
|
23
27
|
};
|
|
24
28
|
}
|
|
29
|
+
const EXEMPLOS_STARTER_INICIAR = new Set([
|
|
30
|
+
"exemplos/crud_simples.sema",
|
|
31
|
+
"exemplos/cadastro_usuario.sema",
|
|
32
|
+
"exemplos/pedido.sema",
|
|
33
|
+
"exemplos/autenticacao.sema",
|
|
34
|
+
]);
|
|
25
35
|
export async function comandoIniciar(cwd, template, opcoes = {}) {
|
|
26
36
|
const arquivos = arquivosTemplateIniciar(template);
|
|
27
37
|
const planoExemplos = await planejarExemplosOficiais();
|
|
@@ -29,6 +39,9 @@ export async function comandoIniciar(cwd, template, opcoes = {}) {
|
|
|
29
39
|
console.error("Diretorio de exemplos oficiais nao foi encontrado no pacote da CLI.");
|
|
30
40
|
return 1;
|
|
31
41
|
}
|
|
42
|
+
const exemplosIniciar = opcoes.exemplosCompletos
|
|
43
|
+
? planoExemplos.arquivos
|
|
44
|
+
: planoExemplos.arquivos.filter((arquivo) => EXEMPLOS_STARTER_INICIAR.has(normalizarCaminhoExemplo(arquivo.caminhoRelativo)));
|
|
32
45
|
const [{ ARQUIVOS_RESUMO_PROJETO_IA }, { listarDestinosEntrypointCodex }] = await Promise.all([
|
|
33
46
|
import("./index.part04.js"),
|
|
34
47
|
import("./agentEntryPoints.js"),
|
|
@@ -36,7 +49,7 @@ export async function comandoIniciar(cwd, template, opcoes = {}) {
|
|
|
36
49
|
const caminhosTemplate = new Set(arquivos.map((arquivo) => arquivo.caminhoRelativo));
|
|
37
50
|
const destinos = await validarDestinosEscritaWorkspace(cwd, [
|
|
38
51
|
...caminhosTemplate,
|
|
39
|
-
...
|
|
52
|
+
...exemplosIniciar.map((arquivo) => arquivo.caminhoRelativo),
|
|
40
53
|
...ARQUIVOS_RESUMO_PROJETO_IA,
|
|
41
54
|
...listarDestinosEntrypointCodex("AGENTS.md"),
|
|
42
55
|
]);
|
|
@@ -47,7 +60,7 @@ export async function comandoIniciar(cwd, template, opcoes = {}) {
|
|
|
47
60
|
? arquivos
|
|
48
61
|
: arquivos.filter((arquivo) => !existentes.has(arquivo.caminhoRelativo));
|
|
49
62
|
await escreverArquivos(cwd, arquivosParaEscrever, { inserirCabecalhoGovernado: true });
|
|
50
|
-
const exemplos = await materializarExemplosOficiais(cwd, true);
|
|
63
|
+
const exemplos = await materializarExemplosOficiais(cwd, true, opcoes.exemplosCompletos ? undefined : EXEMPLOS_STARTER_INICIAR);
|
|
51
64
|
if (!exemplos.sucesso) {
|
|
52
65
|
console.error(exemplos.erro);
|
|
53
66
|
return 1;
|
|
@@ -63,6 +76,9 @@ export async function comandoIniciar(cwd, template, opcoes = {}) {
|
|
|
63
76
|
console.log(`Projeto Sema inicializado com template ${template}.`);
|
|
64
77
|
console.log(`Arquivos do projeto: ${arquivosParaEscrever.length} escritos, ${opcoes.force ? 0 : existentes.size} preservados.`);
|
|
65
78
|
console.log(`Exemplos oficiais sincronizados em ${exemplos.destino} (${exemplos.criados.length} criados, ${exemplos.preservados.length} preservados).`);
|
|
79
|
+
if (!opcoes.exemplosCompletos) {
|
|
80
|
+
console.log("Starter de exemplos instalado; rode sema instalar-exemplos ou sema iniciar --com-exemplos para o pacote completo.");
|
|
81
|
+
}
|
|
66
82
|
console.log(`Kit IA Codex-native sincronizado (${kitIa.artefatos.length} artefatos; entrypoint ${kitIa.codex.entrypointCodex}; ${kitIa.codex.criados.length} criados, ${kitIa.codex.atualizados.length} atualizados, ${kitIa.codex.preservados.length} preservados).`);
|
|
67
83
|
return 0;
|
|
68
84
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.produto.cli_init_templates
|
|
1
|
+
// SEMA-GOVERNED: sema.produto.cli_init_templates, sema.produto.governanca_ia.drift.cache.modos
|
|
2
2
|
// Descrição: contrato base e dispatcher dos templates Codex-native de inicialização.
|
|
3
3
|
import { arquivosInitTemplatesBackend } from "./initTemplatesBackend.js";
|
|
4
4
|
import { arquivosInitTemplatesWeb } from "./initTemplatesWeb.js";
|
|
@@ -73,13 +73,15 @@ Este projeto foi inicializado com Sema.
|
|
|
73
73
|
Antes de alterar codigo, contrato ou documentacao:
|
|
74
74
|
|
|
75
75
|
1. leia \`AGENTS.md\`;
|
|
76
|
-
2. rode \`sema --version\`;
|
|
77
|
-
3. rode \`sema resumo
|
|
76
|
+
2. rode \`sema --version\`; se o shell não localizar o comando, use \`$HOME/.sema/bin/sema\` no macOS/Linux; no Windows, PowerShell usa \`sema.ps1\` no PATH, cmd.exe usa \`sema.cmd\`, e o fallback absoluto é \`& "$env:SystemRoot\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "$HOME\\.sema\\bin\\sema-managed.ps1" --version\`;
|
|
77
|
+
3. rode \`sema resumo --drift none\` para contexto contratual; score, confiança e implementação ficam não avaliados;
|
|
78
78
|
4. rode \`sema docs-impacto --intencao "<acao>" --json\`;
|
|
79
79
|
5. leia \`docs/commands.md\` antes de escolher comando ou interpretar \`--saida\`;
|
|
80
80
|
6. use \`sema descobrir recomendar --intencao "<objetivo>" --json\` quando não souber qual capacidade ou pipeline aplicar;
|
|
81
81
|
7. use \`exemplos/\` e \`docs/syntax.md\` antes de criar ou corrigir \`.sema\`.
|
|
82
82
|
|
|
83
|
+
Quando precisar comprovar o código vivo, rode \`sema drift <contrato.sema> --escopo modulo --cache fresh --json\`. Cache acelera navegação, mas não é prova final de fechamento.
|
|
84
|
+
|
|
83
85
|
## Estrutura criada
|
|
84
86
|
|
|
85
87
|
- \`contratos/\`: contratos semanticamente governados.
|
|
@@ -117,7 +119,7 @@ export function arquivosTemplateIniciar(template) {
|
|
|
117
119
|
?? [
|
|
118
120
|
{
|
|
119
121
|
caminhoRelativo: "sema.config.json",
|
|
120
|
-
conteudo: "{\n \"origens\": [\"./contratos\"],\n \"saida\": \"./generated\",\n \"alvos\": [\"typescript\", \"javascript\"
|
|
122
|
+
conteudo: "{\n \"origens\": [\"./contratos\"],\n \"saida\": \"./generated\",\n \"alvos\": [\"typescript\", \"javascript\"],\n \"alvoPadrao\": \"typescript\",\n \"estruturaSaida\": \"modulos\",\n \"framework\": \"base\",\n \"modoEstrito\": true,\n \"diretoriosSaidaPorAlvo\": {\n \"typescript\": \"./generated/typescript\",\n \"javascript\": \"./generated/javascript\",\n \"python\": \"./generated/python\",\n \"php\": \"./generated/php\",\n \"dart\": \"./generated/dart\",\n \"lua\": \"./generated/lua\",\n \"html\": \"./generated/html\",\n \"css\": \"./generated/css\",\n \"dotnet\": \"./generated/dotnet\",\n \"cpp\": \"./generated/cpp\"\n },\n \"convencoesGeracaoPorProjeto\": \"base\"\n}\n",
|
|
121
123
|
},
|
|
122
124
|
...arquivosBase,
|
|
123
125
|
];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { criarAjudaPipelineConteudo } from "./help.js";
|
|
1
2
|
import { HEAD_GENESIS_LEDGER_CONTEUDO } from "./ledger.js";
|
|
2
3
|
export declare function comandoPipelineConteudo(_posicionaisGlobais: string[], args: string[], emJson: boolean): Promise<number>;
|
|
3
4
|
export { HEAD_GENESIS_LEDGER_CONTEUDO };
|