@semacode/cli 2.2.0 → 2.3.1

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 (252) hide show
  1. package/LICENSE +39 -39
  2. package/README.md +251 -141
  3. package/dist/agentContext.d.ts +1 -1
  4. package/dist/agentContextPack.js +6 -1
  5. package/dist/agentContextTipos.d.ts +4 -2
  6. package/dist/agentContextTipos.js +7 -0
  7. package/dist/agentEntryPoints.js +551 -499
  8. package/dist/angular-consumer-standalone.d.ts +3 -1
  9. package/dist/angular-consumer-standalone.js +12 -8
  10. package/dist/comandos.js +4 -0
  11. package/dist/discovery/catalog.d.ts +11 -0
  12. package/dist/discovery/catalog.js +521 -0
  13. package/dist/discovery/command.d.ts +11 -0
  14. package/dist/discovery/command.js +226 -0
  15. package/dist/discovery/index.d.ts +5 -0
  16. package/dist/discovery/index.js +8 -0
  17. package/dist/discovery/ranker.d.ts +3 -0
  18. package/dist/discovery/ranker.js +310 -0
  19. package/dist/discovery/redaction.d.ts +2 -0
  20. package/dist/discovery/redaction.js +21 -0
  21. package/dist/discovery/render.d.ts +2 -0
  22. package/dist/discovery/render.js +100 -0
  23. package/dist/discovery/types.d.ts +119 -0
  24. package/dist/discovery/types.js +13 -0
  25. package/dist/drift.part01.d.ts +32 -2
  26. package/dist/drift.part01.js +2 -0
  27. package/dist/drift.part04.d.ts +3 -2
  28. package/dist/drift.part04.js +6 -3
  29. package/dist/drift.part05.d.ts +2 -1
  30. package/dist/drift.part05.js +4 -3
  31. package/dist/drift.part06.d.ts +2 -1
  32. package/dist/drift.part06.js +9 -5
  33. package/dist/drift.part07.d.ts +11 -10
  34. package/dist/drift.part07.js +40 -30
  35. package/dist/drift.part08.d.ts +2 -1
  36. package/dist/drift.part08.js +4 -3
  37. package/dist/drift.part11.js +71 -6
  38. package/dist/drift.part12.js +14 -1
  39. package/dist/drift.part13.d.ts +42 -7
  40. package/dist/drift.part13.js +660 -36
  41. package/dist/driftCache.d.ts +49 -0
  42. package/dist/driftCache.js +311 -0
  43. package/dist/driftCacheIncremental.d.ts +98 -0
  44. package/dist/driftCacheIncremental.js +596 -0
  45. package/dist/driftCatalogo.d.ts +91 -0
  46. package/dist/driftCatalogo.js +657 -0
  47. package/dist/driftCatalogoPersistente.d.ts +8 -0
  48. package/dist/driftCatalogoPersistente.js +77 -0
  49. package/dist/driftEscopo.d.ts +23 -0
  50. package/dist/driftEscopo.js +563 -0
  51. package/dist/driftEscopoReferencias.d.ts +4 -0
  52. package/dist/driftEscopoReferencias.js +265 -0
  53. package/dist/driftOrcamento.d.ts +12 -0
  54. package/dist/driftOrcamento.js +19 -3
  55. package/dist/execucoesExternas.js +5 -19
  56. package/dist/exemplosOficiais.js +29 -8
  57. package/dist/iaPrompts.d.ts +1 -1
  58. package/dist/iaPrompts.js +310 -307
  59. package/dist/index.d.ts +2 -0
  60. package/dist/index.js +23 -5
  61. package/dist/index.part01.d.ts +17 -2
  62. package/dist/index.part01.js +119 -8
  63. package/dist/index.part02.js +21 -21
  64. package/dist/index.part03.d.ts +2 -2
  65. package/dist/index.part03.js +14 -3
  66. package/dist/index.part04.d.ts +2 -2
  67. package/dist/index.part04.js +113 -101
  68. package/dist/index.part05.d.ts +1 -1
  69. package/dist/index.part05.js +99 -22
  70. package/dist/index.part06.js +6 -2
  71. package/dist/index.part07.js +24 -24
  72. package/dist/index.part08.js +1 -1
  73. package/dist/init/templates.part01.js +393 -393
  74. package/dist/init/templates.part02.js +189 -189
  75. package/dist/initTemplatesBackend.js +73 -73
  76. package/dist/initTemplatesBase.js +81 -80
  77. package/dist/initTemplatesFlutter.js +137 -137
  78. package/dist/initTemplatesRuntime.js +350 -350
  79. package/dist/initTemplatesWeb.js +309 -309
  80. package/dist/pipelineConteudo/command.js +1 -36
  81. package/dist/profileArtefatoValidadores.d.ts +3 -2
  82. package/dist/profileArtefatoValidadores.js +81 -0
  83. package/dist/profileAuthorTipos.d.ts +4 -3
  84. package/dist/profileCatalogo.d.ts +5 -5
  85. package/dist/profileCatalogo.js +30 -0
  86. package/dist/profileCommand.d.ts +8 -2
  87. package/dist/profileCommand.js +15 -5
  88. package/dist/profileRegras.d.ts +5 -5
  89. package/dist/profileRegras.js +13 -1
  90. package/dist/profileRulePacks.js +68 -0
  91. package/dist/projeto.d.ts +1 -1
  92. package/dist/projetoCarregar.d.ts +2 -2
  93. package/dist/projetoCarregar.js +47 -24
  94. package/dist/projetoCatalogo.d.ts +7 -0
  95. package/dist/projetoCatalogo.js +125 -0
  96. package/dist/projetoTipos.d.ts +14 -5
  97. package/dist/sistemasInterativos/adapterProtocol.d.ts +3 -0
  98. package/dist/sistemasInterativos/adapterProtocol.js +240 -0
  99. package/dist/sistemasInterativos/advancedCatalog.d.ts +5 -0
  100. package/dist/sistemasInterativos/advancedCatalog.js +442 -0
  101. package/dist/sistemasInterativos/autonomy.d.ts +230 -0
  102. package/dist/sistemasInterativos/autonomy.js +753 -0
  103. package/dist/sistemasInterativos/canonical.d.ts +3 -0
  104. package/dist/sistemasInterativos/canonical.js +43 -0
  105. package/dist/sistemasInterativos/catalog.d.ts +116 -0
  106. package/dist/sistemasInterativos/catalog.js +543 -0
  107. package/dist/sistemasInterativos/command.d.ts +7 -0
  108. package/dist/sistemasInterativos/command.js +311 -0
  109. package/dist/sistemasInterativos/controlRun.d.ts +56 -0
  110. package/dist/sistemasInterativos/controlRun.js +391 -0
  111. package/dist/sistemasInterativos/evidence.d.ts +5 -0
  112. package/dist/sistemasInterativos/evidence.js +306 -0
  113. package/dist/sistemasInterativos/experienceIr.d.ts +12 -0
  114. package/dist/sistemasInterativos/experienceIr.js +895 -0
  115. package/dist/sistemasInterativos/experienceIrSemantics.d.ts +30 -0
  116. package/dist/sistemasInterativos/experienceIrSemantics.js +368 -0
  117. package/dist/sistemasInterativos/experienceIrTypes.d.ts +370 -0
  118. package/dist/sistemasInterativos/experienceIrTypes.js +5 -0
  119. package/dist/sistemasInterativos/extensionCommand.d.ts +391 -0
  120. package/dist/sistemasInterativos/extensionCommand.js +383 -0
  121. package/dist/sistemasInterativos/index.d.ts +19 -0
  122. package/dist/sistemasInterativos/index.js +22 -0
  123. package/dist/sistemasInterativos/operations.d.ts +40 -0
  124. package/dist/sistemasInterativos/operations.js +1167 -0
  125. package/dist/sistemasInterativos/operationsTypes.d.ts +297 -0
  126. package/dist/sistemasInterativos/operationsTypes.js +11 -0
  127. package/dist/sistemasInterativos/planner.d.ts +2 -0
  128. package/dist/sistemasInterativos/planner.js +159 -0
  129. package/dist/sistemasInterativos/portability.d.ts +164 -0
  130. package/dist/sistemasInterativos/portability.js +539 -0
  131. package/dist/sistemasInterativos/render.d.ts +3 -0
  132. package/dist/sistemasInterativos/render.js +179 -0
  133. package/dist/sistemasInterativos/temporal.d.ts +183 -0
  134. package/dist/sistemasInterativos/temporal.js +543 -0
  135. package/dist/sistemasInterativos/types.d.ts +215 -0
  136. package/dist/sistemasInterativos/types.js +4 -0
  137. package/dist/sistemasInterativos/validator.d.ts +2 -0
  138. package/dist/sistemasInterativos/validator.js +305 -0
  139. package/dist/sync/index.js +35 -35
  140. package/docs/README.md +34 -28
  141. package/docs/ai-onboarding.md +62 -62
  142. package/docs/ai-workflow.md +9 -4
  143. package/docs/auth.md +26 -26
  144. package/docs/cli.md +79 -79
  145. package/docs/commands.md +47 -2
  146. package/docs/database.md +15 -15
  147. package/docs/deploy.md +41 -41
  148. package/docs/descoberta-capacidades.md +106 -0
  149. package/docs/documentation.md +39 -39
  150. package/docs/env.md +16 -16
  151. package/docs/frontend.md +41 -41
  152. package/docs/getting-started.md +57 -57
  153. package/docs/i18n.md +15 -15
  154. package/docs/pipeline-conteudo.md +246 -246
  155. package/docs/profiles.md +54 -45
  156. package/docs/repositories.md +43 -43
  157. package/docs/rollback.md +31 -31
  158. package/docs/security.md +32 -32
  159. package/docs/sistemas-interativos.md +376 -0
  160. package/docs/support.md +8 -8
  161. package/docs/testing.md +51 -35
  162. package/docs/vocabulary.md +29 -29
  163. package/exemplos/agendamento.sema +1 -1
  164. package/exemplos/assinatura.sema +1 -1
  165. package/exemplos/auditoria.sema +1 -1
  166. package/exemplos/autenticacao.sema +1 -1
  167. package/exemplos/author_obra_comum.sema +1 -1
  168. package/exemplos/author_tema_sensivel.sema +1 -1
  169. package/exemplos/automacao.sema +1 -1
  170. package/exemplos/cadastro_usuario.sema +1 -1
  171. package/exemplos/calculadora.sema +1 -1
  172. package/exemplos/crud_simples.sema +1 -1
  173. package/exemplos/estoque.sema +1 -1
  174. package/exemplos/exportacao.sema +1 -1
  175. package/exemplos/fila.sema +1 -1
  176. package/exemplos/integracao_externa.sema +1 -1
  177. package/exemplos/multi_tenant.sema +1 -1
  178. package/exemplos/notificacao.sema +1 -1
  179. package/exemplos/operacao_estrategia.sema +132 -132
  180. package/exemplos/operacao_estrategia_discovery.sema +220 -220
  181. package/exemplos/operacao_estrategia_fluxo.sema +114 -114
  182. package/exemplos/operacao_estrategia_gates.sema +106 -106
  183. package/exemplos/operacao_estrategia_quarentena.sema +133 -133
  184. package/exemplos/operacao_estrategia_rollout.sema +124 -124
  185. package/exemplos/pagamento.sema +1 -1
  186. package/exemplos/pagamento_dominio.sema +1 -1
  187. package/exemplos/pedido.sema +1 -1
  188. package/exemplos/permissao.sema +1 -1
  189. package/exemplos/persistencia_vendor_first.sema +1 -1
  190. package/exemplos/pipeline-conteudo/README.md +44 -44
  191. package/exemplos/pipeline-conteudo/alvos.json +23 -23
  192. package/exemplos/pipeline-conteudo/definicao.json +136 -136
  193. package/exemplos/profile_conversas.sema +165 -165
  194. package/exemplos/profile_game.sema +1 -1
  195. package/exemplos/profile_legal.sema +1 -1
  196. package/exemplos/profile_ops.sema +1 -1
  197. package/exemplos/profile_research.sema +1 -1
  198. package/exemplos/profile_simulation.sema +211 -0
  199. package/exemplos/profile_software.sema +1 -1
  200. package/exemplos/profile_workflow_n8n.sema +1 -1
  201. package/exemplos/relatorio.sema +1 -1
  202. package/exemplos/replica_analitica_erp.sema +1 -1
  203. package/exemplos/sistemas-interativos/README.md +100 -0
  204. package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -0
  205. package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -0
  206. package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -0
  207. package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -0
  208. package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -0
  209. package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -0
  210. package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -0
  211. package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -0
  212. package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -0
  213. package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -0
  214. package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -0
  215. package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -0
  216. package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -0
  217. package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -0
  218. package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -0
  219. package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -0
  220. package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -0
  221. package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -0
  222. package/exemplos/sistemas-interativos/game-2d.json +83 -0
  223. package/exemplos/sistemas-interativos/game-3d-human.json +81 -0
  224. package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -0
  225. package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -0
  226. package/exemplos/sistemas-interativos/game-xr-human.json +80 -0
  227. package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -0
  228. package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -0
  229. package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -0
  230. package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -0
  231. package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -0
  232. package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -0
  233. package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -0
  234. package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -0
  235. package/exemplos/testes_embutidos.sema +1 -1
  236. package/exemplos/tratamento_erro.sema +1 -1
  237. package/exemplos/upload_arquivo.sema +1 -1
  238. package/exemplos/webhook.sema +1 -1
  239. package/node_modules/@sema/gerador-cpp/dist/index.js +176 -176
  240. package/node_modules/@sema/gerador-cpp/package.json +1 -1
  241. package/node_modules/@sema/gerador-css/dist/index.part01.js +10 -10
  242. package/node_modules/@sema/gerador-css/dist/index.part02.js +460 -460
  243. package/node_modules/@sema/gerador-dotnet/dist/index.js +169 -169
  244. package/node_modules/@sema/gerador-dotnet/package.json +1 -1
  245. package/node_modules/@sema/gerador-html/dist/index.js +17 -17
  246. package/node_modules/@sema/gerador-lua/dist/index.js +76 -47
  247. package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -1
  248. package/node_modules/@sema/gerador-php/dist/index.js +113 -113
  249. package/node_modules/@sema/gerador-python/dist/index.part02.js +3 -3
  250. package/node_modules/@sema/gerador-typescript/dist/index.part02.js +11 -11
  251. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +42 -42
  252. package/package.json +3 -3
@@ -16,7 +16,7 @@ import { carregarModulos } from './carregarModulos.js';
16
16
  import { obterOpcao, obterOpcoesRepetidas, possuiFlag } from './cliArgs.js';
17
17
  import { resumirListaTexto, unicosOrdenados } from './textoListas.js';
18
18
  import { EXTENSOES_CODIGO, listarArquivosRecursivosLimitado } from './projetoBusca.js';
19
- import { VERSAO_CLI } from "./index.part01.js";
19
+ import { VERSAO_CLI, criarResultadoDriftNaoExecutado, resolverAnaliseDriftCli, } from "./index.part01.js";
20
20
  import { coletarResumoSemanticoModulo, descreverFontesConclusao, detectarFontesConclusaoSnapshot, detectarModoVerificacaoCodigo } from "./index.part02.js";
21
21
  import { ARQUIVOS_RESUMO_MODULO_IA, carregarContextoModuloIa, criarBriefingAgente, gerarArquivosResumoModuloIa, renderizarResumoProjetoMarkdown, resumirDriftPorModulo } from "./index.part03.js";
22
22
  export const ARQUIVOS_RESUMO_PROJETO_IA = [
@@ -53,15 +53,22 @@ function escolherTopArquivosResumo(modulos, arquivosCodigoDetectados) {
53
53
  }
54
54
  return { arquivos: [], fonte: "nenhum" };
55
55
  }
56
- export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escreverNaRaiz = false) {
56
+ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escreverNaRaiz = false, args = [], modoDriftPadrao = "fresh") {
57
57
  const contextoProjeto = await carregarProjeto(entrada, process.cwd());
58
58
  const geradoEm = new Date().toISOString();
59
59
  const guiaPorCapacidade = criarGuiaCapacidadeIa();
60
60
  const entradaCanonica = criarEntradaCanonicaProjeto(guiaPorCapacidade);
61
61
  const agentContextPack = entradaCanonica.agentContextPack;
62
- const modoVerificacaoCodigo = await detectarModoVerificacaoCodigo(contextoProjeto.baseProjeto, contextoProjeto.diretoriosCodigo);
63
- const fontesConclusao = await detectarFontesConclusaoSnapshot(contextoProjeto.baseProjeto);
64
- const resultadoDrift = await analisarDriftLegado(contextoProjeto);
62
+ const analiseDrift = resolverAnaliseDriftCli(args, modoDriftPadrao);
63
+ const modoVerificacaoCodigo = analiseDrift.modo === "none"
64
+ ? "contratos_apenas"
65
+ : await detectarModoVerificacaoCodigo(contextoProjeto.baseProjeto, contextoProjeto.diretoriosCodigo);
66
+ const fontesConclusao = analiseDrift.modo === "none"
67
+ ? ["contrato"]
68
+ : await detectarFontesConclusaoSnapshot(contextoProjeto.baseProjeto);
69
+ const resultadoDrift = analiseDrift.modo === "none"
70
+ ? criarResultadoDriftNaoExecutado(contextoProjeto, analiseDrift.opcoes)
71
+ : await analisarDriftLegado(contextoProjeto, analiseDrift.opcoes);
65
72
  const modulos = contextoProjeto.modulosSelecionados.map((item) => {
66
73
  const modulo = item.resultado.modulo?.nome ?? path.basename(item.caminho, ".sema");
67
74
  const driftResumo = resumirDriftPorModulo(modulo, item.caminho, resultadoDrift);
@@ -77,6 +84,11 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
77
84
  caminho: item.caminho,
78
85
  modulo,
79
86
  sucesso: resultadoDrift.sucesso,
87
+ modoAnalise: analiseDrift.modo,
88
+ executado: analiseDrift.modo !== "none",
89
+ aviso: analiseDrift.modo === "none"
90
+ ? "Análise de drift não executada; nenhuma conclusão sobre o código foi produzida."
91
+ : null,
80
92
  resumo: driftResumo,
81
93
  drift: resultadoDrift,
82
94
  },
@@ -206,102 +218,102 @@ export async function gerarContextoIa(arquivoEntrada, pastaSaidaOpcional) {
206
218
  await escreverArquivoWorkspaceSeguro(pastaBase, artefato.caminhoRelativo, artefato.conteudo, { sobrescrever: true });
207
219
  }
208
220
  const resumoGerado = await gerarArquivosResumoModuloIa(contexto, pastaBase);
209
- const resumo = `# Contexto de IA para ${contexto.modulo}
210
-
211
- - Arquivo alvo: \`${contexto.arquivo}\`
212
- - Modulo: \`${contexto.modulo}\`
213
- - Sucesso em validar: \`${contexto.sucesso}\`
214
- - Quantidade de diagnosticos: \`${contexto.diagnosticos.length}\`
215
- - Gerado em: \`${contexto.geradoEm}\`
216
-
217
- ## Arquivos gerados neste pacote
218
-
219
- - \`agent-context-pack.json\`
220
- - \`${ARQUIVO_SEMA_BOOT}\`
221
- - \`${ARQUIVO_SEMA_SMALL_MODEL}\`
222
- - \`resumo.micro.txt\`
223
- - \`resumo.curto.txt\`
224
- - \`resumo.md\`
225
- - \`briefing.min.json\`
226
- - \`prompt-curto.txt\`
227
- - \`validar.json\`
228
- - \`diagnosticos.json\`
229
- - \`ast.json\`
230
- - \`ir.json\`
231
- - \`drift.json\`
232
- - \`briefing.json\`
233
-
234
- ## Fluxo recomendado para o agente
235
-
236
- Antes de escolher arquivo de código, leia \`${ARQUIVO_SEMA_BOOT}\` e \`agent-context-pack.json\`. Eles declaram regras obrigatórias, proibições, prioridades, idioma humano e quando abrir texto bruto como \`AGENTS.md\`, \`exemplos/\`, docs e contratos.
237
-
238
- ## Políticas da plataforma
239
-
240
- - Sema governa contrato, escopo, drift, evidência e qualidade; não contorna políticas, termos, permissões, segurança ou leis.
241
- - Se houver alerta externo, trate como bloqueio da plataforma ou falso positivo possível, explique de forma neutra e não tente burlar filtro.
242
-
243
- ### IA fraca, gratuita ou com pouca disciplina
244
-
245
- 1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
246
- 2. Ler \`${ARQUIVO_SEMA_SMALL_MODEL}\`.
247
- 3. Ler \`agent-context-pack.json\`.
248
- 4. Ler \`resumo.micro.txt\`.
249
- 5. Ler \`briefing.min.json\`.
250
- 6. Se ainda couber contexto, ler \`resumo.curto.txt\`.
251
-
252
- ### IA média
253
-
254
- 1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
255
- 2. Ler \`agent-context-pack.json\`.
256
- 3. Ler \`resumo.curto.txt\`.
257
- 4. Ler \`briefing.min.json\`.
258
- 5. Ler \`drift.json\`.
259
- 6. Se precisar, subir para \`resumo.md\`.
260
-
261
- ### IA forte ou com tool use
262
-
263
- 1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
264
- 2. Ler \`agent-context-pack.json\`.
265
- 3. Ler \`README.md\`.
266
- 4. Ler \`resumo.md\`.
267
- 5. Ler \`briefing.json\`.
268
- 6. Ler \`drift.json\`.
269
- 7. Só depois abrir \`ir.json\` e \`ast.json\`.
270
-
271
- ## Idioma humano
272
-
273
- - Responda no idioma do usuário.
274
- - Em PT-BR, use acentos, cedilha, pontuação e símbolos normais.
275
- - A DSL \`.sema\` pode ser ASCII; texto humano não precisa ser.
276
-
277
- ## Texto bruto sob demanda
278
-
279
- - Abra \`AGENTS.md\` antes de editar código, contrato, docs operacionais, release ou deploy.
280
- - Abra \`exemplos/\` antes de criar ou corrigir sintaxe \`.sema\`.
281
- - Abra \`docs/syntax.md\` quando exemplos não bastarem para resolver a gramática.
282
- - Abra \`contratos/\` antes de qualquer implementação ou mudança de comportamento.
283
-
284
- ## Timeout e retry
285
-
286
- - Timeout local do agente não é falha do Sema.
287
- - Se uma chamada Sema estourar, aumente o timeout e tente de novo.
288
- - Se o projeto inteiro for lento, escopar para \`sema resumo "${contexto.arquivo}" --micro --para mudanca\`.
289
- - Se o ambiente impedir continuar, pare bloqueado e não avance com código sem Sema.
290
-
291
- ## Fechamento
292
-
293
- 1. Editar o arquivo \`.sema\`.
294
- 2. Rodar \`sema formatar "${contexto.arquivo}"\`.
295
- 3. Rodar \`sema validar "${contexto.arquivo}" --json\`.
296
- 4. Rodar \`sema drift "${contexto.arquivo}" --json\`.
297
- 5. Fechar com \`sema verificar <arquivo-ou-pasta> --json --saida ./.tmp/verificacao-ia\`.
298
-
299
- ## Textos base para onboarding do agente
300
-
301
- - \`sema starter-ia\`
302
- - \`sema resumo "${contexto.arquivo}" --micro --para onboarding\`
303
- - \`sema prompt-curto "${contexto.arquivo}" --para mudanca\`
304
- - \`sema prompt-ia\`
221
+ const resumo = `# Contexto de IA para ${contexto.modulo}
222
+
223
+ - Arquivo alvo: \`${contexto.arquivo}\`
224
+ - Modulo: \`${contexto.modulo}\`
225
+ - Sucesso em validar: \`${contexto.sucesso}\`
226
+ - Quantidade de diagnosticos: \`${contexto.diagnosticos.length}\`
227
+ - Gerado em: \`${contexto.geradoEm}\`
228
+
229
+ ## Arquivos gerados neste pacote
230
+
231
+ - \`agent-context-pack.json\`
232
+ - \`${ARQUIVO_SEMA_BOOT}\`
233
+ - \`${ARQUIVO_SEMA_SMALL_MODEL}\`
234
+ - \`resumo.micro.txt\`
235
+ - \`resumo.curto.txt\`
236
+ - \`resumo.md\`
237
+ - \`briefing.min.json\`
238
+ - \`prompt-curto.txt\`
239
+ - \`validar.json\`
240
+ - \`diagnosticos.json\`
241
+ - \`ast.json\`
242
+ - \`ir.json\`
243
+ - \`drift.json\`
244
+ - \`briefing.json\`
245
+
246
+ ## Fluxo recomendado para o agente
247
+
248
+ Antes de escolher arquivo de código, leia \`${ARQUIVO_SEMA_BOOT}\` e \`agent-context-pack.json\`. Eles declaram regras obrigatórias, proibições, prioridades, idioma humano e quando abrir texto bruto como \`AGENTS.md\`, \`exemplos/\`, docs e contratos.
249
+
250
+ ## Políticas da plataforma
251
+
252
+ - Sema governa contrato, escopo, drift, evidência e qualidade; não contorna políticas, termos, permissões, segurança ou leis.
253
+ - Se houver alerta externo, trate como bloqueio da plataforma ou falso positivo possível, explique de forma neutra e não tente burlar filtro.
254
+
255
+ ### IA fraca, gratuita ou com pouca disciplina
256
+
257
+ 1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
258
+ 2. Ler \`${ARQUIVO_SEMA_SMALL_MODEL}\`.
259
+ 3. Ler \`agent-context-pack.json\`.
260
+ 4. Ler \`resumo.micro.txt\`.
261
+ 5. Ler \`briefing.min.json\`.
262
+ 6. Se ainda couber contexto, ler \`resumo.curto.txt\`.
263
+
264
+ ### IA média
265
+
266
+ 1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
267
+ 2. Ler \`agent-context-pack.json\`.
268
+ 3. Ler \`resumo.curto.txt\`.
269
+ 4. Ler \`briefing.min.json\`.
270
+ 5. Ler \`drift.json\`.
271
+ 6. Se precisar, subir para \`resumo.md\`.
272
+
273
+ ### IA forte ou com tool use
274
+
275
+ 1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
276
+ 2. Ler \`agent-context-pack.json\`.
277
+ 3. Ler \`README.md\`.
278
+ 4. Ler \`resumo.md\`.
279
+ 5. Ler \`briefing.json\`.
280
+ 6. Ler \`drift.json\`.
281
+ 7. Só depois abrir \`ir.json\` e \`ast.json\`.
282
+
283
+ ## Idioma humano
284
+
285
+ - Responda no idioma do usuário.
286
+ - Em PT-BR, use acentos, cedilha, pontuação e símbolos normais.
287
+ - A DSL \`.sema\` pode ser ASCII; texto humano não precisa ser.
288
+
289
+ ## Texto bruto sob demanda
290
+
291
+ - Abra \`AGENTS.md\` antes de editar código, contrato, docs operacionais, release ou deploy.
292
+ - Abra \`exemplos/\` antes de criar ou corrigir sintaxe \`.sema\`.
293
+ - Abra \`docs/syntax.md\` quando exemplos não bastarem para resolver a gramática.
294
+ - Abra \`contratos/\` antes de qualquer implementação ou mudança de comportamento.
295
+
296
+ ## Timeout e retry
297
+
298
+ - Timeout local do agente não é falha do Sema.
299
+ - Se uma chamada Sema estourar, aumente o timeout e tente de novo.
300
+ - Se o projeto inteiro for lento, escopar para \`sema resumo "${contexto.arquivo}" --micro --para mudanca\`.
301
+ - Se o ambiente impedir continuar, pare bloqueado e não avance com código sem Sema.
302
+
303
+ ## Fechamento
304
+
305
+ 1. Editar o arquivo \`.sema\`.
306
+ 2. Rodar \`sema formatar "${contexto.arquivo}"\`.
307
+ 3. Rodar \`sema validar "${contexto.arquivo}" --json\`.
308
+ 4. Rodar \`sema drift "${contexto.arquivo}" --json\`.
309
+ 5. Fechar com \`sema verificar <arquivo-ou-pasta> --json --saida ./.tmp/verificacao-ia\`.
310
+
311
+ ## Textos base para onboarding do agente
312
+
313
+ - \`sema starter-ia\`
314
+ - \`sema resumo "${contexto.arquivo}" --micro --para onboarding\`
315
+ - \`sema prompt-curto "${contexto.arquivo}" --para mudanca\`
316
+ - \`sema prompt-ia\`
305
317
  `;
306
318
  await escreverArquivoWorkspaceSeguro(pastaBase, "README.md", resumo, {
307
319
  sobrescrever: true,
@@ -1,5 +1,5 @@
1
1
  import { type FonteImportacao } from "./importador.js";
2
- export declare function comandoInspecionar(entrada: string | undefined, emJson: boolean, cwd?: string): Promise<number>;
2
+ export declare function comandoInspecionar(entrada: string | undefined, emJson: boolean, cwd?: string, args?: string[]): Promise<number>;
3
3
  export declare function comandoDrift(entrada: string | undefined, args: string[], emJson: boolean, cwd?: string): Promise<number>;
4
4
  export declare function comandoImpacto(entrada: string | undefined, args: string[], emJson: boolean, cwd?: string): Promise<number>;
5
5
  export declare function comandoRenomearSemantico(entrada: string | undefined, args: string[], emJson: boolean, cwd?: string): Promise<number>;
@@ -7,10 +7,14 @@ import { escreverArquivos, formatarAvisoArtefatosGeradosAcimaDoLimite, } from '.
7
7
  import { carregarModulos } from './carregarModulos.js';
8
8
  import { obterOpcao } from './cliArgs.js';
9
9
  import { resumirDriftPorModulo } from "./index.part03.js";
10
- import { resolverOpcoesDriftCli } from "./index.part01.js";
11
- export async function comandoInspecionar(entrada, emJson, cwd = process.cwd()) {
12
- const contextoProjeto = await carregarProjeto(entrada, cwd);
13
- const resultadoDrift = await analisarDriftLegado(contextoProjeto);
10
+ import { criarResultadoDriftNaoExecutado, resolverAnaliseDriftCli, resolverOpcoesDriftCli } from "./index.part01.js";
11
+ 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
16
+ ? await analisarDriftLegado(contextoProjeto, analiseDrift.opcoes)
17
+ : criarResultadoDriftNaoExecutado(contextoProjeto, analiseDrift.opcoes);
14
18
  const framework = resolverFrameworkPadrao(undefined, contextoProjeto.configCarregada);
15
19
  const estruturaSaida = resolverEstruturaSaidaPadrao(undefined, framework, contextoProjeto.configCarregada);
16
20
  const alvos = resolverAlvosVerificacao(contextoProjeto.configCarregada);
@@ -29,22 +33,56 @@ export async function comandoInspecionar(entrada, emJson, cwd = process.cwd()) {
29
33
  diretoriosCodigo: contextoProjeto.diretoriosCodigo,
30
34
  fontesLegado: contextoProjeto.fontesLegado,
31
35
  modoAdocao: contextoProjeto.modoAdocao,
32
- scoreDrift: resultadoDrift.resumo_operacional.scoreMedio,
33
- confiancaGeral: resultadoDrift.resumo_operacional.confiancaGeral,
34
- consumerFramework: resultadoDrift.consumerFramework,
35
- appRoutes: resultadoDrift.appRoutes,
36
- consumerSurfaces: resultadoDrift.consumerSurfaces,
37
- consumerBridges: resultadoDrift.consumerBridges,
36
+ analiseDrift: {
37
+ modo: analiseDrift.modo,
38
+ executada: driftExecutado,
39
+ cache: analiseDrift.modo === "fresh" ? "refresh" : analiseDrift.modo === "cache" ? "auto" : null,
40
+ aviso: driftExecutado
41
+ ? null
42
+ : "Análise de drift não executada; código, rotas, vínculos e implementações não foram verificados.",
43
+ },
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,
38
50
  },
39
51
  projeto: {
40
52
  arquivos: contextoProjeto.arquivosProjeto,
53
+ arquivosDescobertos: contextoProjeto.arquivosDescobertos,
41
54
  modulos: contextoProjeto.modulosSelecionados.map((item) => ({
42
55
  caminho: item.caminho,
43
56
  modulo: item.resultado.modulo?.nome ?? null,
44
57
  sucesso: !temErros(item.resultado.diagnosticos),
45
58
  diagnosticos: item.resultado.diagnosticos.length,
46
59
  superficies: item.resultado.ir?.superficies.map((superficie) => `${superficie.tipo}:${superficie.nome}`) ?? [],
47
- implementacao: resumirDriftPorModulo(item.resultado.modulo?.nome ?? null, item.caminho, resultadoDrift),
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
84
+ ? resumirDriftPorModulo(item.resultado.modulo?.nome ?? null, item.caminho, resultadoDrift)
85
+ : null,
48
86
  })),
49
87
  },
50
88
  };
@@ -60,8 +98,14 @@ export async function comandoInspecionar(entrada, emJson, cwd = process.cwd()) {
60
98
  console.log(`- Estrutura de saida: ${payload.configuracao.estruturaSaida}`);
61
99
  console.log(`- Alvos: ${payload.configuracao.alvos.join(", ")}`);
62
100
  console.log(`- Modo de adocao: ${payload.configuracao.modoAdocao}`);
63
- console.log(`- Score medio de drift: ${payload.configuracao.scoreDrift}`);
64
- console.log(`- Confianca geral: ${payload.configuracao.confiancaGeral}`);
101
+ console.log(`- Análise de drift: ${payload.configuracao.analiseDrift.modo} (${payload.configuracao.analiseDrift.executada ? "executada" : "não executada"})`);
102
+ if (payload.configuracao.analiseDrift.executada) {
103
+ console.log(`- Score medio de drift: ${payload.configuracao.scoreDrift}`);
104
+ console.log(`- Confianca geral: ${payload.configuracao.confiancaGeral}`);
105
+ }
106
+ else {
107
+ console.log(`- Aviso: ${payload.configuracao.analiseDrift.aviso}`);
108
+ }
65
109
  console.log("- Saidas por alvo:");
66
110
  for (const [alvo, saida] of Object.entries(payload.configuracao.saidas)) {
67
111
  console.log(` - ${alvo}: ${saida}`);
@@ -75,25 +119,50 @@ export async function comandoInspecionar(entrada, emJson, cwd = process.cwd()) {
75
119
  console.log(` - ${diretorio}`);
76
120
  }
77
121
  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}`);
78
124
  console.log("- Modulos selecionados:");
79
125
  for (const modulo of payload.projeto.modulos) {
80
126
  console.log(` - ${modulo.modulo ?? "(sem modulo)"} :: ${modulo.caminho} :: diagnosticos=${modulo.diagnosticos}`);
81
- console.log(` impls validos=${modulo.implementacao.implsValidos} quebrados=${modulo.implementacao.implsQuebrados} recursos divergentes=${modulo.implementacao.recursosDivergentesCount} sem_impl=${modulo.implementacao.tasksSemImplementacao}`);
82
- for (const arquivoRelacionado of modulo.implementacao.arquivosRelacionados.slice(0, 5)) {
83
- console.log(` arquivo relacionado: ${arquivoRelacionado}`);
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
+ 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}`);
133
+ for (const arquivoRelacionado of modulo.implementacao.arquivosRelacionados.slice(0, 5)) {
134
+ console.log(` arquivo relacionado: ${arquivoRelacionado}`);
135
+ }
136
+ }
137
+ else {
138
+ console.log(" implementação: não verificada neste modo");
84
139
  }
85
140
  }
86
141
  return 0;
87
142
  }
88
143
  export async function comandoDrift(entrada, args, emJson, cwd = process.cwd()) {
89
- const contextoProjeto = await carregarProjeto(entrada, cwd);
90
- const resultado = await analisarDriftLegado(contextoProjeto, resolverOpcoesDriftCli(args));
144
+ const opcoes = resolverOpcoesDriftCli(args);
145
+ const contextoProjeto = await carregarProjeto(entrada, cwd, { escopo: opcoes.escopo });
146
+ const resultado = await analisarDriftLegado(contextoProjeto, opcoes);
91
147
  if (emJson) {
92
148
  console.log(JSON.stringify(resultado, null, 2));
93
149
  return resultado.sucesso ? 0 : 1;
94
150
  }
95
151
  console.log("Drift entre Sema e codigo legado");
96
152
  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"}`);
155
+ 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`);
165
+ }
97
166
  console.log(`- Ignorar worktrees: ${resultado.escopo_aplicado.ignorarWorktrees ? "sim" : "nao"}`);
98
167
  console.log(`- Ignorar consumidores laterais: ${resultado.escopo_aplicado.ignorarConsumidoresLaterais ? "sim" : "nao"}`);
99
168
  console.log(`- Modulos analisados: ${resultado.modulos.length}`);
@@ -181,8 +250,12 @@ export async function comandoImpacto(entrada, args, emJson, cwd = process.cwd())
181
250
  console.error("Uso: sema impacto <arquivo-ou-pasta> --alvo <token-semântico> [--mudanca <descricao>] [--escopo <arquivo|modulo|projeto>] [--incluir-worktrees] [--incluir-consumidores-laterais] [--json]");
182
251
  return 1;
183
252
  }
184
- const contextoProjeto = await carregarProjeto(entrada, cwd);
185
- const resultado = await gerarMapaImpactoSemantico(contextoProjeto, alvoSemantico, obterOpcao(args, "--mudanca", `avaliar impacto de ${alvoSemantico}`), resolverOpcoesDriftCli(args));
253
+ 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 });
258
+ const resultado = await gerarMapaImpactoSemantico(contextoProjeto, alvoSemantico, obterOpcao(args, "--mudanca", `avaliar impacto de ${alvoSemantico}`), opcoes);
186
259
  if (emJson) {
187
260
  console.log(JSON.stringify(resultado, null, 2));
188
261
  return resultado.sucesso ? 0 : 1;
@@ -215,8 +288,12 @@ export async function comandoRenomearSemantico(entrada, args, emJson, cwd = proc
215
288
  console.error("Uso: sema renomear-semantico <arquivo-ou-pasta> --de <nome-atual> --para <nome-novo> [--escopo <arquivo|modulo|projeto>] [--incluir-worktrees] [--incluir-consumidores-laterais] [--json]");
216
289
  return 1;
217
290
  }
218
- const contextoProjeto = await carregarProjeto(entrada, cwd);
219
- const resultado = await assistirRenomeacaoSemantica(contextoProjeto, nomeAtual, nomeNovo, resolverOpcoesDriftCli(args));
291
+ 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 });
296
+ const resultado = await assistirRenomeacaoSemantica(contextoProjeto, nomeAtual, nomeNovo, opcoes);
220
297
  if (emJson) {
221
298
  console.log(JSON.stringify(resultado, null, 2));
222
299
  return resultado.sucesso ? 0 : 1;
@@ -203,9 +203,13 @@ export async function comandoAjudaIa() {
203
203
  console.log("");
204
204
  console.log(renderizarSecaoAscii("Fluxo recomendado", [
205
205
  "Use `sema starter-ia` para um texto curto de onboarding.",
206
+ "Use `sema descobrir recomendar --intencao <objetivo> --json` quando ainda não souber qual profile, workflow, pipeline, gerador ou adaptador usar.",
207
+ "Use `sema descobrir catalogo --json` ou `sema capabilities --json` para expor o mapa completo de capacidades à IA.",
208
+ "Use `sema interativo pipelines --json` para jogos, simulações e híbridos 3D, 2D, retro, texto, XR ou headless.",
206
209
  "Use `sema sync-codex` para regenerar o contexto governado do Codex na raiz.",
207
210
  "Use `sema instalar-exemplos` para materializar `exemplos/` oficiais sem sobrescrever arquivos locais.",
208
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`.",
209
213
  "Se `sema resumo` ou outro gate estourar timeout local, aumente o timeout e tente de novo; timeout do agente nao e falha do Sema.",
210
214
  "Use `sema prompt-curto <arquivo> --curto --para mudanca` para colar contexto em modelo gratuito.",
211
215
  "Use `sema prompt-ia`, `sema prompt-ia-ui`, `sema prompt-ia-react` e `sema prompt-ia-sema-primeiro` conforme a tarefa.",
@@ -284,7 +288,7 @@ export async function comandoResumo(entrada, args, emJson) {
284
288
  const escreverNaRaiz = possuiFlag(args, "--raiz");
285
289
  const alvo = entrada ? path.resolve(process.cwd(), entrada) : process.cwd();
286
290
  if (entrada && entrada.toLowerCase().endsWith(".sema")) {
287
- const contexto = await carregarContextoModuloIa(alvo);
291
+ const contexto = await carregarContextoModuloIa(alvo, args, tamanho === "micro" ? "none" : "fresh");
288
292
  const resumoSemantico = coletarResumoSemanticoModulo(contexto);
289
293
  const guiaPorCapacidade = criarGuiaCapacidadeIa();
290
294
  const texto = tamanho === "medio"
@@ -321,7 +325,7 @@ export async function comandoResumo(entrada, args, emJson) {
321
325
  console.log(texto);
322
326
  return 0;
323
327
  }
324
- const resumoProjeto = await gerarResumoProjetoIa(alvo, pastaSaida, escreverNaRaiz);
328
+ const resumoProjeto = await gerarResumoProjetoIa(alvo, pastaSaida, escreverNaRaiz, args, tamanho === "micro" ? "none" : "fresh");
325
329
  const arquivoResumo = tamanho === "micro"
326
330
  ? "SEMA_BRIEF.micro.txt"
327
331
  : tamanho === "curto"
@@ -45,30 +45,30 @@ export async function comandoPromptCurto(entrada, args, emJson) {
45
45
  : "SEMA_BRIEF.md";
46
46
  const contextoProjeto = await readFile(path.join(resumoProjeto.pastaSaida, arquivoResumo), "utf8");
47
47
  const capacidade = tamanho === "micro" ? "fraca" : tamanho === "curto" ? "media" : "forte";
48
- const prompt = `⚠️ REGRA OBRIGATÓRIA DE GOVERNANÇA:
49
-
50
- ANTES DE QUALQUER AÇÃO (editar, criar, deletar, executar, consultar ou modificar):
51
- 1. Rode \`sema docs-impacto --intencao "<ação>" --json\` com sua intenção declarada.
52
- 2. Aguarde a resposta com as docs obrigatórias.
53
- 3. Leia as docs antes de agir.
54
- 4. Antes de concluir, rode \`sema finalizar-mudanca --intencao "<ação>" --doc-lida <arquivo> --json\` com todas as docs lidas.
55
-
56
- Você está operando Sema em modo IA-first.
57
-
58
- Isto é contexto comprimido para IA operar contrato semântico antes de tocar código vivo.
59
-
60
- Capacidade alvo: ${capacidade}
61
- Modo da tarefa: ${modo}
62
-
63
- Regras:
64
- - ANTES DE TUDO: rode \`sema docs-impacto --intencao "<ação>" --json\`.
65
- - Comece pelo resumo compacto abaixo.
66
- - Se a tarefa pedir mais contexto, abra \`AGENT_CONTEXT_PACK.json\` e depois \`SEMA_INDEX.json\`.
67
- - Não tente ler o repositório inteiro se o resumo já disser onde tocar.
68
- - Preserve contrato, risco, lacuna e checks sugeridos.
69
-
70
- Contexto do projeto:
71
- ${contextoProjeto.trim()}
48
+ const prompt = `⚠️ REGRA OBRIGATÓRIA DE GOVERNANÇA:
49
+
50
+ ANTES DE QUALQUER AÇÃO (editar, criar, deletar, executar, consultar ou modificar):
51
+ 1. Rode \`sema docs-impacto --intencao "<ação>" --json\` com sua intenção declarada.
52
+ 2. Aguarde a resposta com as docs obrigatórias.
53
+ 3. Leia as docs antes de agir.
54
+ 4. Antes de concluir, rode \`sema finalizar-mudanca --intencao "<ação>" --doc-lida <arquivo> --json\` com todas as docs lidas.
55
+
56
+ Você está operando Sema em modo IA-first.
57
+
58
+ Isto é contexto comprimido para IA operar contrato semântico antes de tocar código vivo.
59
+
60
+ Capacidade alvo: ${capacidade}
61
+ Modo da tarefa: ${modo}
62
+
63
+ Regras:
64
+ - ANTES DE TUDO: rode \`sema docs-impacto --intencao "<ação>" --json\`.
65
+ - Comece pelo resumo compacto abaixo.
66
+ - Se a tarefa pedir mais contexto, abra \`AGENT_CONTEXT_PACK.json\` e depois \`SEMA_INDEX.json\`.
67
+ - Não tente ler o repositório inteiro se o resumo já disser onde tocar.
68
+ - Preserve contrato, risco, lacuna e checks sugeridos.
69
+
70
+ Contexto do projeto:
71
+ ${contextoProjeto.trim()}
72
72
  `;
73
73
  if (emJson) {
74
74
  console.log(JSON.stringify({
@@ -105,7 +105,7 @@ export async function principal() {
105
105
  : await comandoVerificar(posicionais[0], resolverSaidaPadrao(obterOpcao(resto, "--saida", "./.tmp/sema-verificar"), "typescript", await carregarConfiguracaoProjeto(posicionais[0] ? path.resolve(cwd, posicionais[0]) : cwd)), cwd);
106
106
  break;
107
107
  case "inspecionar":
108
- codigoSaida = await comandoInspecionar(posicionais[0], possuiFlag(resto, "--json"), cwd);
108
+ codigoSaida = await comandoInspecionar(posicionais[0], possuiFlag(resto, "--json"), cwd, resto);
109
109
  break;
110
110
  case "drift":
111
111
  codigoSaida = await comandoDrift(posicionais[0], resto, possuiFlag(resto, "--json"), cwd);