@semacode/cli 2.3.1 → 3.0.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.
Files changed (250) hide show
  1. package/README.md +265 -217
  2. package/dist/agentContextPack.js +14 -10
  3. package/dist/agentEntryPoints.d.ts +5 -0
  4. package/dist/agentEntryPoints.js +567 -557
  5. package/dist/angular-consumer-standalone.js +1 -1
  6. package/dist/bin.d.ts +6 -0
  7. package/dist/bin.js +130 -0
  8. package/dist/cliArgs.js +4 -4
  9. package/dist/cliControlError.d.ts +12 -0
  10. package/dist/cliControlError.js +47 -0
  11. package/dist/cliGrammar.d.ts +11 -0
  12. package/dist/cliGrammar.js +551 -0
  13. package/dist/cliHelp.d.ts +13 -0
  14. package/dist/cliHelp.js +19 -0
  15. package/dist/cliHelpTexto.d.ts +3 -0
  16. package/dist/cliHelpTexto.js +168 -0
  17. package/dist/cliRuntime.d.ts +2 -0
  18. package/dist/cliRuntime.js +31 -0
  19. package/dist/comandos.js +9 -22
  20. package/dist/contexto.js +5 -5
  21. package/dist/dev/index.d.ts +1 -0
  22. package/dist/dev/index.js +51 -9
  23. package/dist/discovery/catalog.js +3 -3
  24. package/dist/distribuicao/filesystemGlobal.d.ts +63 -0
  25. package/dist/distribuicao/filesystemGlobal.js +701 -0
  26. package/dist/distribuicao/index.d.ts +7 -0
  27. package/dist/distribuicao/index.js +227 -0
  28. package/dist/distribuicao/launcherGlobal.d.ts +53 -0
  29. package/dist/distribuicao/launcherGlobal.js +643 -0
  30. package/dist/distribuicao/launcherWindows.d.ts +28 -0
  31. package/dist/distribuicao/launcherWindows.js +326 -0
  32. package/dist/distribuicao/lockContextGlobal.d.ts +10 -0
  33. package/dist/distribuicao/lockContextGlobal.js +17 -0
  34. package/dist/distribuicao/lockGlobal.d.ts +6 -0
  35. package/dist/distribuicao/lockGlobal.js +520 -0
  36. package/dist/distribuicao/skillGlobal.d.ts +48 -0
  37. package/dist/distribuicao/skillGlobal.js +652 -0
  38. package/dist/distribuicao/skillIntentPolicy.d.ts +21 -0
  39. package/dist/distribuicao/skillIntentPolicy.js +115 -0
  40. package/dist/distribuicao/tipos.d.ts +50 -0
  41. package/dist/distribuicao/tipos.js +10 -0
  42. package/dist/distribuicao/versaoSemantica.d.ts +3 -0
  43. package/dist/distribuicao/versaoSemantica.js +62 -0
  44. package/dist/drift.part01.d.ts +26 -24
  45. package/dist/drift.part01.js +2 -1
  46. package/dist/drift.part04.d.ts +12 -3
  47. package/dist/drift.part04.js +88 -17
  48. package/dist/drift.part05.d.ts +2 -2
  49. package/dist/drift.part05.js +8 -6
  50. package/dist/drift.part06.d.ts +2 -2
  51. package/dist/drift.part06.js +113 -26
  52. package/dist/drift.part07.d.ts +11 -11
  53. package/dist/drift.part07.js +261 -265
  54. package/dist/drift.part08.d.ts +2 -2
  55. package/dist/drift.part08.js +35 -26
  56. package/dist/drift.part11.js +238 -56
  57. package/dist/drift.part12.d.ts +1 -1
  58. package/dist/drift.part12.js +193 -21
  59. package/dist/drift.part13.d.ts +20 -39
  60. package/dist/drift.part13.js +601 -647
  61. package/dist/drift.part14.js +21 -7
  62. package/dist/driftCacheCas.d.ts +43 -0
  63. package/dist/driftCacheCas.js +351 -0
  64. package/dist/driftCacheFilesystem.d.ts +64 -0
  65. package/dist/driftCacheFilesystem.js +313 -0
  66. package/dist/driftCacheModes.d.ts +38 -0
  67. package/dist/driftCacheModes.js +147 -0
  68. package/dist/driftCacheStore.d.ts +80 -0
  69. package/dist/driftCacheStore.js +603 -0
  70. package/dist/driftCatalogo.d.ts +2 -28
  71. package/dist/driftCatalogo.js +143 -284
  72. package/dist/driftEscopo.d.ts +1 -3
  73. package/dist/driftEscopo.js +235 -151
  74. package/dist/driftEscopoReferencias.d.ts +5 -1
  75. package/dist/driftEscopoReferencias.js +375 -28
  76. package/dist/driftOrcamento.d.ts +0 -6
  77. package/dist/driftOrcamento.js +2 -1
  78. package/dist/execucoesExternas.js +19 -5
  79. package/dist/geracaoCore.js +4 -6
  80. package/dist/iaPrompts.d.ts +3 -3
  81. package/dist/iaPrompts.js +312 -313
  82. package/dist/index.d.ts +4 -1
  83. package/dist/index.js +6 -25
  84. package/dist/index.part01.d.ts +20 -28
  85. package/dist/index.part01.js +16 -237
  86. package/dist/index.part02.js +36 -22
  87. package/dist/index.part03.d.ts +24 -2
  88. package/dist/index.part03.js +83 -19
  89. package/dist/index.part04.d.ts +10 -2
  90. package/dist/index.part04.js +142 -120
  91. package/dist/index.part05.js +80 -78
  92. package/dist/index.part06.js +34 -17
  93. package/dist/index.part07.js +7 -3
  94. package/dist/index.part08.d.ts +1 -1
  95. package/dist/index.part08.js +22 -27
  96. package/dist/initCommand.js +5 -1
  97. package/dist/initTemplatesBase.js +81 -79
  98. package/dist/pipelineConteudo/command.d.ts +1 -0
  99. package/dist/pipelineConteudo/command.js +9 -2
  100. package/dist/pipelineConteudo/help.d.ts +2 -0
  101. package/dist/pipelineConteudo/help.js +33 -0
  102. package/dist/profileAuthorCommand.js +3 -7
  103. package/dist/profileCommand.js +3 -7
  104. package/dist/projetoCarregar.js +35 -17
  105. package/dist/projetoCatalogo.d.ts +1 -0
  106. package/dist/projetoCatalogo.js +64 -25
  107. package/dist/projetoOrigens.d.ts +2 -0
  108. package/dist/projetoOrigens.js +65 -9
  109. package/dist/projetoTipos.d.ts +1 -0
  110. package/dist/resultadoCli.d.ts +20 -0
  111. package/dist/resultadoCli.js +57 -0
  112. package/dist/saidaCli.d.ts +35 -0
  113. package/dist/saidaCli.js +118 -0
  114. package/dist/sistemasInterativos/acceptanceEvidence.d.ts +22 -0
  115. package/dist/sistemasInterativos/acceptanceEvidence.js +345 -0
  116. package/dist/sistemasInterativos/engineObservation.d.ts +12 -0
  117. package/dist/sistemasInterativos/engineObservation.js +438 -0
  118. package/dist/sistemasInterativos/jobOrchestration.d.ts +2 -0
  119. package/dist/sistemasInterativos/jobOrchestration.js +204 -0
  120. package/dist/sistemasInterativos/operationPrimitives.d.ts +21 -0
  121. package/dist/sistemasInterativos/operationPrimitives.js +194 -0
  122. package/dist/sistemasInterativos/operations.d.ts +4 -39
  123. package/dist/sistemasInterativos/operations.js +5 -1164
  124. package/dist/skillCommand.d.ts +5 -0
  125. package/dist/skillCommand.js +88 -0
  126. package/docs/README.md +34 -30
  127. package/docs/ai-integration.md +25 -12
  128. package/docs/ai-onboarding.md +37 -18
  129. package/docs/ai-workflow.md +9 -7
  130. package/docs/cli.md +125 -7
  131. package/docs/commands.md +41 -20
  132. package/docs/deploy.md +21 -8
  133. package/docs/descoberta-capacidades.md +106 -106
  134. package/docs/documentation.md +49 -39
  135. package/docs/drift-cache.md +108 -0
  136. package/docs/getting-started.md +43 -18
  137. package/docs/pipeline-conteudo.md +246 -246
  138. package/docs/profiles.md +54 -54
  139. package/docs/repositories.md +19 -2
  140. package/docs/rollback.md +15 -8
  141. package/docs/security.md +25 -3
  142. package/docs/sistemas-interativos.md +379 -374
  143. package/docs/testing.md +139 -40
  144. package/exemplos/pipeline-conteudo/README.md +44 -44
  145. package/exemplos/pipeline-conteudo/alvos.json +23 -23
  146. package/exemplos/pipeline-conteudo/definicao.json +136 -136
  147. package/exemplos/profile_simulation.sema +211 -211
  148. package/exemplos/sistemas-interativos/README.md +100 -100
  149. package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -5
  150. package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -16
  151. package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -32
  152. package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -93
  153. package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -78
  154. package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -27
  155. package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -79
  156. package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -42
  157. package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -32
  158. package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -23
  159. package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -39
  160. package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -46
  161. package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -39
  162. package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -37
  163. package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -104
  164. package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -27
  165. package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -118
  166. package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -459
  167. package/exemplos/sistemas-interativos/game-2d.json +83 -83
  168. package/exemplos/sistemas-interativos/game-3d-human.json +81 -81
  169. package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -97
  170. package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -94
  171. package/exemplos/sistemas-interativos/game-xr-human.json +80 -80
  172. package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -108
  173. package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -75
  174. package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -58
  175. package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -97
  176. package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -141
  177. package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -112
  178. package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -103
  179. package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -95
  180. package/node_modules/@sema/gerador-cpp/package.json +1 -1
  181. package/node_modules/@sema/gerador-dotnet/package.json +1 -1
  182. package/node_modules/@sema/gerador-lua/dist/index.js +51 -51
  183. package/node_modules/@sema/gerador-php/dist/index.js +113 -113
  184. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -0
  185. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1 -0
  186. package/package.json +9 -4
  187. package/scripts/postinstall.mjs +148 -0
  188. package/skills/sema/SKILL.md +199 -0
  189. package/skills/sema/agents/openai.yaml +4 -0
  190. package/dist/driftCache.d.ts +0 -49
  191. package/dist/driftCache.js +0 -311
  192. package/dist/driftCacheIncremental.d.ts +0 -98
  193. package/dist/driftCacheIncremental.js +0 -596
  194. package/dist/driftCatalogoPersistente.d.ts +0 -8
  195. package/dist/driftCatalogoPersistente.js +0 -77
  196. package/node_modules/@sema/gerador-cpp/dist/index.js.map +0 -1
  197. package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
  198. package/node_modules/@sema/gerador-css/dist/index.part01.js.map +0 -1
  199. package/node_modules/@sema/gerador-css/dist/index.part02.js.map +0 -1
  200. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  201. package/node_modules/@sema/gerador-dotnet/dist/index.js.map +0 -1
  202. package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
  203. package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
  204. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  205. package/node_modules/@sema/gerador-php/dist/index.js.map +0 -1
  206. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  207. package/node_modules/@sema/gerador-python/dist/index.part01.js.map +0 -1
  208. package/node_modules/@sema/gerador-python/dist/index.part02.js.map +0 -1
  209. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  210. package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +0 -1
  211. package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +0 -1
  212. package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +0 -1
  213. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  214. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  215. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +0 -1
  216. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +0 -1
  217. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  218. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +0 -1
  219. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +0 -1
  220. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  221. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  222. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +0 -1
  223. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +0 -1
  224. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +0 -1
  225. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  226. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  227. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  228. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +0 -1
  229. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  230. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +0 -1
  231. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +0 -1
  232. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +0 -1
  233. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +0 -1
  234. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
  235. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  236. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +0 -1
  237. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +0 -1
  238. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +0 -1
  239. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +0 -1
  240. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +0 -1
  241. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +0 -1
  242. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +0 -1
  243. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +0 -1
  244. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  245. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +0 -1
  246. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +0 -1
  247. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +0 -1
  248. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  249. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  250. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
@@ -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 { criarResultadoDriftNaoExecutado, resolverAnaliseDriftCli, resolverOpcoesDriftCli } from "./index.part01.js";
13
+ import { resolverAnaliseDriftConsultaCli, resolverOpcoesDriftCli } from "./index.part01.js";
11
14
  export async function comandoInspecionar(entrada, emJson, cwd = process.cwd(), args = []) {
12
- const analiseDrift = resolverAnaliseDriftCli(args, "none");
13
- const contextoProjeto = await carregarProjeto(entrada, cwd, { escopo: analiseDrift.opcoes.escopo });
14
- const driftExecutado = analiseDrift.modo !== "none";
15
- const resultadoDrift = driftExecutado
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
- : criarResultadoDriftNaoExecutado(contextoProjeto, analiseDrift.opcoes);
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: driftExecutado,
39
- cache: analiseDrift.modo === "fresh" ? "refresh" : analiseDrift.modo === "cache" ? "auto" : null,
40
- aviso: driftExecutado
49
+ executada: analiseDrift.executar,
50
+ sucesso: resultadoDrift?.sucesso ?? null,
51
+ aviso: analiseDrift.executar
41
52
  ? null
42
- : "Análise de drift não executada; código, rotas, vínculos e implementações não foram verificados.",
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: driftExecutado ? resultadoDrift.resumo_operacional.scoreMedio : null,
45
- confiancaGeral: driftExecutado ? resultadoDrift.resumo_operacional.confiancaGeral : null,
46
- consumerFramework: driftExecutado ? resultadoDrift.consumerFramework : null,
47
- appRoutes: driftExecutado ? resultadoDrift.appRoutes : null,
48
- consumerSurfaces: driftExecutado ? resultadoDrift.consumerSurfaces : null,
49
- consumerBridges: driftExecutado ? resultadoDrift.consumerBridges : null,
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
- tasks: item.resultado.ir?.tasks.map((task) => task.nome) ?? [],
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 0;
81
+ return codigoSaida;
92
82
  }
93
- console.log("Inspecao de projeto Sema");
83
+ console.log("Inspeção de projeto Sema");
94
84
  console.log(`- Entrada: ${payload.entrada}`);
95
- console.log(`- Configuracao: ${payload.configuracao.caminho ?? "nenhuma"}`);
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 adocao: ${payload.configuracao.modoAdocao}`);
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(`- Score medio de drift: ${payload.configuracao.scoreDrift}`);
104
- console.log(`- Confianca geral: ${payload.configuracao.confiancaGeral}`);
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("- Saidas por alvo:");
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("- Diretorios de codigo:");
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(`- Contratos carregados: ${payload.projeto.arquivos.length}`);
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 validos=${modulo.implementacao.implsValidos} quebrados=${modulo.implementacao.implsQuebrados} recursos divergentes=${modulo.implementacao.recursosDivergentesCount} sem_impl=${modulo.implementacao.tasksSemImplementacao}`);
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 0;
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, { escopo: opcoes.escopo });
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(`- Estrategia fisica: ${resultado.escopo_aplicado.estrategia ?? "legado"}`);
154
- console.log(`- Cobertura: ${resultado.escopo_aplicado.cobertura ?? "nao informada"}`);
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(`- Cache: ${resultado.escopo_aplicado.cache?.politica ?? "nao informado"} (${resultado.escopo_aplicado.cache?.origem ?? "nao informado"})`);
157
- console.log(`- Catálogo: ${resultado.escopo_aplicado.catalogo?.arquivosCatalogados ?? 0} arquivos, ${resultado.escopo_aplicado.catalogo?.diretoriosVisitados ?? 0} diretórios visitados, ${resultado.escopo_aplicado.catalogo?.leiturasConteudo ?? 0} leituras`);
158
- const cacheIncremental = resultado.escopo_aplicado.cache?.incremental;
159
- if (cacheIncremental) {
160
- console.log(`- Cache incremental: ${cacheIncremental.metadataHits} metadata hits, ${cacheIncremental.contentHits} content hits, ${cacheIncremental.groupHits} grupos reutilizados, ${cacheIncremental.groupMisses} grupos recalculados`);
161
- }
162
- const fases = resultado.escopo_aplicado.cache?.fasesMs;
163
- if (fases) {
164
- console.log(`- Fases: plano ${fases.planejamento}ms, catálogo ${fases.catalogacao}ms, dependências ${fases.dependencias}ms, assinaturas ${fases.assinaturas}ms, índices ${fases.indexacao}ms, total ${fases.total}ms`);
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
- if (!obterOpcao(args, "--escopo")) {
255
- opcoes.escopo = entrada?.toLowerCase().endsWith(".sema") ? "modulo" : "projeto";
256
- }
257
- const contextoProjeto = await carregarProjeto(entrada, cwd, { escopo: opcoes.escopo });
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
- if (!obterOpcao(args, "--escopo")) {
293
- opcoes.escopo = entrada?.toLowerCase().endsWith(".sema") ? "modulo" : "projeto";
294
- }
295
- const contextoProjeto = await carregarProjeto(entrada, cwd, { escopo: opcoes.escopo });
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));
@@ -1,5 +1,5 @@
1
- // SEMA-GOVERNED: sema.governanca_ia_contexto
2
- // Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
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 base, codigo vivo e fontes legado.",
218
- "Use `sema drift` para medir impls, vinculos, rotas, score e lacunas.",
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
- if (entrada && entrada.toLowerCase().endsWith(".sema")) {
291
- const contexto = await carregarContextoModuloIa(alvo, args, tamanho === "micro" ? "none" : "fresh");
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, args, tamanho === "micro" ? "none" : "fresh");
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
@@ -1,5 +1,5 @@
1
- // SEMA-GOVERNED: sema.governanca_ia_contexto
2
- // Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
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
5
  import { compilarCodigo, formatarDiagnosticos, lerArquivoTexto, temErros, } from "@sema/nucleo";
@@ -17,7 +17,11 @@ export async function comandoPromptCurto(entrada, args, emJson) {
17
17
  const modo = normalizarModoResumo(obterOpcao(args, "--para"));
18
18
  const alvo = entrada ? path.resolve(process.cwd(), entrada) : process.cwd();
19
19
  if (entrada && entrada.toLowerCase().endsWith(".sema")) {
20
- const contexto = await carregarContextoModuloIa(alvo);
20
+ const contexto = await carregarContextoModuloIa(alvo, {
21
+ modo: "none",
22
+ executar: false,
23
+ avisos: [],
24
+ });
21
25
  const resumoSemantico = coletarResumoSemanticoModulo(contexto);
22
26
  const capacidade = tamanho === "micro" ? "fraca" : tamanho === "curto" ? "media" : "forte";
23
27
  const prompt = criarPromptCurtoModulo(resumoSemantico, modo, tamanho, capacidade);
@@ -1 +1 @@
1
- export declare function principal(): Promise<void>;
1
+ export declare function principal(): Promise<number>;
@@ -1,5 +1,5 @@
1
- // SEMA-GOVERNED: sema.governanca_ia_contexto
2
- // Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
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,32 +7,31 @@ 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 { VERSAO_CLI, ajuda, obterArgumentos } from "./index.part01.js";
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
- const comandoCru = process.argv[2];
19
- if (comandoCru === "--versao" || comandoCru === "--version" || comandoCru === "-v") {
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
- let codigoSaida = 0;
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
- codigoSaida = await handlerRegistrado(posicionais, resto, possuiFlag(resto, "--json"));
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
37
  codigoSaida = await comandoIniciar(cwd, normalizarTemplateIniciar(obterOpcao(resto, "--template")), { force: possuiFlag(resto, "--force") });
@@ -58,13 +57,13 @@ export async function principal() {
58
57
  break;
59
58
  case "ast":
60
59
  codigoSaida = possuiFlag(resto, "--json")
61
- ? await comandoAstJson(resto[0] ?? "")
62
- : await comandoAst(resto[0] ?? "");
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(resto[0] ?? "")
67
- : await comandoIr(resto[0] ?? "");
65
+ ? await comandoIrJson(posicionais[0] ?? "")
66
+ : await comandoIr(posicionais[0] ?? "");
68
67
  break;
69
68
  case "compilar":
70
69
  {
@@ -120,9 +119,7 @@ export async function principal() {
120
119
  {
121
120
  const fonte = normalizarFonteImportacao(posicionais[0]);
122
121
  if (!fonte || !posicionais[1]) {
123
- console.error("Uso: sema importar <nestjs|fastapi|flask|nextjs|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer|firebase|dotnet|java|go|rust|cpp|php|typescript|python|dart> <diretorio> [--saida <diretorio>] [--namespace <base>] [--json]");
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
- console.log(ajuda());
180
- codigoSaida = 1;
181
- break;
176
+ throw erroComandoDesconhecido();
182
177
  }
183
- process.exit(codigoSaida);
178
+ return codigoSaida;
184
179
  }
185
180
  //# sourceMappingURL=index.part08.js.map
@@ -11,7 +11,11 @@ async function sincronizarKitIaInicial(cwd) {
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 {