@semacode/cli 1.5.48 → 1.5.53

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 (281) hide show
  1. package/LICENSE +39 -21
  2. package/README.md +47 -48
  3. package/dist/agentContext.d.ts +2 -2
  4. package/dist/agentContext.js +1 -1
  5. package/dist/agentContextPack.d.ts +1 -1
  6. package/dist/agentContextPack.js +20 -28
  7. package/dist/agentContextTipos.d.ts +2 -2
  8. package/dist/agentContextTipos.js +7 -13
  9. package/dist/agentEntryPoints.js +244 -281
  10. package/dist/billing/index.d.ts +1 -58
  11. package/dist/billing/index.js +17 -278
  12. package/dist/cliArgs.js +0 -3
  13. package/dist/comandos.js +15 -131
  14. package/dist/contexto.d.ts +0 -9
  15. package/dist/contexto.js +59 -109
  16. package/dist/docs.part01.js +30 -51
  17. package/dist/drift.part14.js +18 -3
  18. package/dist/driftOrcamento.js +1 -2
  19. package/dist/index.d.ts +0 -6
  20. package/dist/index.js +0 -6
  21. package/dist/index.part01.d.ts +1 -1
  22. package/dist/index.part01.js +1 -3
  23. package/dist/index.part04.js +4 -4
  24. package/dist/index.part08.js +1 -22
  25. package/dist/initTemplatesBase.js +5 -5
  26. package/dist/sync/index.js +1 -1
  27. package/docs/README.md +19 -0
  28. package/docs/ai-integration.md +90 -0
  29. package/docs/ai-onboarding.md +33 -0
  30. package/docs/ai-workflow.md +62 -0
  31. package/docs/auth.md +16 -0
  32. package/docs/cli.md +36 -95
  33. package/docs/commands.md +90 -0
  34. package/docs/database.md +15 -0
  35. package/docs/deploy.md +6 -38
  36. package/docs/documentation.md +39 -0
  37. package/docs/env.md +8 -109
  38. package/docs/frontend.md +41 -0
  39. package/docs/getting-started.md +33 -0
  40. package/docs/i18n.md +15 -0
  41. package/docs/profiles.md +43 -0
  42. package/docs/repositories.md +19 -61
  43. package/docs/rollback.md +9 -20
  44. package/docs/security.md +24 -0
  45. package/docs/support.md +8 -0
  46. package/docs/syntax.md +128 -0
  47. package/docs/testing.md +17 -0
  48. package/docs/vocabulary.md +28 -0
  49. package/node_modules/@sema/gerador-css/package.json +1 -1
  50. package/node_modules/@sema/gerador-dart/package.json +1 -1
  51. package/node_modules/@sema/gerador-html/package.json +1 -1
  52. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  53. package/node_modules/@sema/gerador-lua/dist/index.js +10 -0
  54. package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -1
  55. package/node_modules/@sema/gerador-lua/package.json +1 -1
  56. package/node_modules/@sema/gerador-python/package.json +1 -1
  57. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  58. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +1 -1
  59. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +1 -1
  60. package/node_modules/@sema/nucleo/package.json +1 -1
  61. package/node_modules/@sema/padroes/package.json +1 -1
  62. package/package.json +15 -22
  63. package/AGENTS.md +0 -81
  64. package/AGENT_CONTEXT_PACK.json +0 -500
  65. package/SEMA_BRIEF.curto.txt +0 -18
  66. package/SEMA_BRIEF.md +0 -726
  67. package/SEMA_BRIEF.micro.txt +0 -16
  68. package/SEMA_INDEX.json +0 -11078
  69. package/dist/agentContext.js.map +0 -1
  70. package/dist/agentContextPack.js.map +0 -1
  71. package/dist/agentContextTipos.js.map +0 -1
  72. package/dist/agentEntryPoints.js.map +0 -1
  73. package/dist/angular-consumer-standalone.js.map +0 -1
  74. package/dist/authorAnalise.js.map +0 -1
  75. package/dist/authorPoliticas.js.map +0 -1
  76. package/dist/billing/index.js.map +0 -1
  77. package/dist/bridge.d.ts +0 -52
  78. package/dist/bridge.js +0 -333
  79. package/dist/bridge.js.map +0 -1
  80. package/dist/carregarModulos.js.map +0 -1
  81. package/dist/cliArgs.js.map +0 -1
  82. package/dist/comandos.js.map +0 -1
  83. package/dist/contexto.js.map +0 -1
  84. package/dist/controleComercialSupabase.d.ts +0 -7
  85. package/dist/controleComercialSupabase.js +0 -6
  86. package/dist/controleComercialSupabase.js.map +0 -1
  87. package/dist/controleComercialSupabaseAdmin.d.ts +0 -7
  88. package/dist/controleComercialSupabaseAdmin.js +0 -138
  89. package/dist/controleComercialSupabaseAdmin.js.map +0 -1
  90. package/dist/controleComercialSupabaseCadastro.d.ts +0 -4
  91. package/dist/controleComercialSupabaseCadastro.js +0 -85
  92. package/dist/controleComercialSupabaseCadastro.js.map +0 -1
  93. package/dist/controleComercialSupabaseConstantes.d.ts +0 -28
  94. package/dist/controleComercialSupabaseConstantes.js +0 -44
  95. package/dist/controleComercialSupabaseConstantes.js.map +0 -1
  96. package/dist/controleComercialSupabaseConsumo.d.ts +0 -2
  97. package/dist/controleComercialSupabaseConsumo.js +0 -77
  98. package/dist/controleComercialSupabaseConsumo.js.map +0 -1
  99. package/dist/controleComercialSupabaseConta.d.ts +0 -11
  100. package/dist/controleComercialSupabaseConta.js +0 -157
  101. package/dist/controleComercialSupabaseConta.js.map +0 -1
  102. package/dist/controleComercialSupabaseProfiles.d.ts +0 -4
  103. package/dist/controleComercialSupabaseProfiles.js +0 -55
  104. package/dist/controleComercialSupabaseProfiles.js.map +0 -1
  105. package/dist/controleComercialSupabaseTipos.d.ts +0 -3
  106. package/dist/controleComercialSupabaseTipos.js +0 -2
  107. package/dist/controleComercialSupabaseTipos.js.map +0 -1
  108. package/dist/controleComercialSupabaseTiposAdmin.d.ts +0 -152
  109. package/dist/controleComercialSupabaseTiposAdmin.js +0 -2
  110. package/dist/controleComercialSupabaseTiposAdmin.js.map +0 -1
  111. package/dist/controleComercialSupabaseTiposBase.d.ts +0 -169
  112. package/dist/controleComercialSupabaseTiposBase.js +0 -2
  113. package/dist/controleComercialSupabaseTiposBase.js.map +0 -1
  114. package/dist/controleComercialSupabaseTiposConta.d.ts +0 -220
  115. package/dist/controleComercialSupabaseTiposConta.js +0 -2
  116. package/dist/controleComercialSupabaseTiposConta.js.map +0 -1
  117. package/dist/cpp-symbols.js.map +0 -1
  118. package/dist/dev/index.js.map +0 -1
  119. package/dist/dev/watcher.js.map +0 -1
  120. package/dist/docs/resolver.js.map +0 -1
  121. package/dist/docs.js.map +0 -1
  122. package/dist/docs.part01.js.map +0 -1
  123. package/dist/docs.part02.js.map +0 -1
  124. package/dist/doctorCommand.js.map +0 -1
  125. package/dist/dotnet-http.js.map +0 -1
  126. package/dist/drift.contrato.js.map +0 -1
  127. package/dist/drift.js.map +0 -1
  128. package/dist/drift.part01.js.map +0 -1
  129. package/dist/drift.part02.js.map +0 -1
  130. package/dist/drift.part03.js.map +0 -1
  131. package/dist/drift.part04.js.map +0 -1
  132. package/dist/drift.part05.js.map +0 -1
  133. package/dist/drift.part06.js.map +0 -1
  134. package/dist/drift.part07.js.map +0 -1
  135. package/dist/drift.part08.js.map +0 -1
  136. package/dist/drift.part09.js.map +0 -1
  137. package/dist/drift.part10.js.map +0 -1
  138. package/dist/drift.part11.js.map +0 -1
  139. package/dist/drift.part12.js.map +0 -1
  140. package/dist/drift.part13.js.map +0 -1
  141. package/dist/drift.part14.js.map +0 -1
  142. package/dist/driftOrcamento.js.map +0 -1
  143. package/dist/driftScore.js.map +0 -1
  144. package/dist/execucoesExternas.js.map +0 -1
  145. package/dist/exemplosOficiais.js.map +0 -1
  146. package/dist/fsGovernado.js.map +0 -1
  147. package/dist/geracaoCore.js.map +0 -1
  148. package/dist/go-http.js.map +0 -1
  149. package/dist/guard.js.map +0 -1
  150. package/dist/iaPrompts.js.map +0 -1
  151. package/dist/importador.js.map +0 -1
  152. package/dist/importador.part01.js.map +0 -1
  153. package/dist/importador.part02.js.map +0 -1
  154. package/dist/importador.part03.js.map +0 -1
  155. package/dist/importador.part04.js.map +0 -1
  156. package/dist/importador.part05.js.map +0 -1
  157. package/dist/importador.part06.js.map +0 -1
  158. package/dist/importador.part07.js.map +0 -1
  159. package/dist/importador.part08.js.map +0 -1
  160. package/dist/importador.part09.js.map +0 -1
  161. package/dist/index.js.map +0 -1
  162. package/dist/index.part01.js.map +0 -1
  163. package/dist/index.part02.js.map +0 -1
  164. package/dist/index.part03.js.map +0 -1
  165. package/dist/index.part04.js.map +0 -1
  166. package/dist/index.part05.js.map +0 -1
  167. package/dist/index.part06.js.map +0 -1
  168. package/dist/index.part07.js.map +0 -1
  169. package/dist/index.part08.js.map +0 -1
  170. package/dist/init/index.js.map +0 -1
  171. package/dist/init/templates.js.map +0 -1
  172. package/dist/init/templates.part01.js.map +0 -1
  173. package/dist/init/templates.part02.js.map +0 -1
  174. package/dist/initCommand.js.map +0 -1
  175. package/dist/initTemplatesBackend.js.map +0 -1
  176. package/dist/initTemplatesBase.js.map +0 -1
  177. package/dist/initTemplatesFlutter.js.map +0 -1
  178. package/dist/initTemplatesRuntime.js.map +0 -1
  179. package/dist/initTemplatesWeb.js.map +0 -1
  180. package/dist/java-http.js.map +0 -1
  181. package/dist/lua-symbols.js.map +0 -1
  182. package/dist/mcpInstalarChaveCommand.d.ts +0 -1
  183. package/dist/mcpInstalarChaveCommand.js +0 -168
  184. package/dist/mcpInstalarChaveCommand.js.map +0 -1
  185. package/dist/mcpRemoto.d.ts +0 -32
  186. package/dist/mcpRemoto.js +0 -61
  187. package/dist/mcpRemoto.js.map +0 -1
  188. package/dist/mcp_chave.d.ts +0 -1
  189. package/dist/mcp_chave.js +0 -4
  190. package/dist/mcp_chave.js.map +0 -1
  191. package/dist/profileArtefatoBase.js.map +0 -1
  192. package/dist/profileArtefatoValidadores.js.map +0 -1
  193. package/dist/profileAuthorCommand.js.map +0 -1
  194. package/dist/profileAuthorTipos.js.map +0 -1
  195. package/dist/profileCatalogo.js.map +0 -1
  196. package/dist/profileCommand.js.map +0 -1
  197. package/dist/profileI18nCatalogo.js.map +0 -1
  198. package/dist/profileI18nVisivel.js.map +0 -1
  199. package/dist/profileOrquestracao.js.map +0 -1
  200. package/dist/profileRegras.js.map +0 -1
  201. package/dist/profileRulePacks.js.map +0 -1
  202. package/dist/profiles/validate.js.map +0 -1
  203. package/dist/projeto.js.map +0 -1
  204. package/dist/projetoBusca.js.map +0 -1
  205. package/dist/projetoCarregar.js.map +0 -1
  206. package/dist/projetoConfig.js.map +0 -1
  207. package/dist/projetoLegado.js.map +0 -1
  208. package/dist/projetoOrigens.js.map +0 -1
  209. package/dist/projetoResolucao.js.map +0 -1
  210. package/dist/projetoTipos.js.map +0 -1
  211. package/dist/python-http.js.map +0 -1
  212. package/dist/runnerValidacaoRemota.d.ts +0 -9
  213. package/dist/runnerValidacaoRemota.js +0 -9
  214. package/dist/runnerValidacaoRemota.js.map +0 -1
  215. package/dist/runnerValidacaoRemotaBateria.d.ts +0 -10
  216. package/dist/runnerValidacaoRemotaBateria.js +0 -117
  217. package/dist/runnerValidacaoRemotaBateria.js.map +0 -1
  218. package/dist/runnerValidacaoRemotaCli.d.ts +0 -4
  219. package/dist/runnerValidacaoRemotaCli.js +0 -86
  220. package/dist/runnerValidacaoRemotaCli.js.map +0 -1
  221. package/dist/runnerValidacaoRemotaComandos.d.ts +0 -7
  222. package/dist/runnerValidacaoRemotaComandos.js +0 -123
  223. package/dist/runnerValidacaoRemotaComandos.js.map +0 -1
  224. package/dist/runnerValidacaoRemotaEscopo.d.ts +0 -4
  225. package/dist/runnerValidacaoRemotaEscopo.js +0 -79
  226. package/dist/runnerValidacaoRemotaEscopo.js.map +0 -1
  227. package/dist/runnerValidacaoRemotaExecucao.d.ts +0 -2
  228. package/dist/runnerValidacaoRemotaExecucao.js +0 -104
  229. package/dist/runnerValidacaoRemotaExecucao.js.map +0 -1
  230. package/dist/runnerValidacaoRemotaRelatorio.d.ts +0 -3
  231. package/dist/runnerValidacaoRemotaRelatorio.js +0 -95
  232. package/dist/runnerValidacaoRemotaRelatorio.js.map +0 -1
  233. package/dist/runnerValidacaoRemotaServidor.d.ts +0 -4
  234. package/dist/runnerValidacaoRemotaServidor.js +0 -185
  235. package/dist/runnerValidacaoRemotaServidor.js.map +0 -1
  236. package/dist/runnerValidacaoRemotaSnapshot.d.ts +0 -10
  237. package/dist/runnerValidacaoRemotaSnapshot.js +0 -219
  238. package/dist/runnerValidacaoRemotaSnapshot.js.map +0 -1
  239. package/dist/runnerValidacaoRemotaTipos.d.ts +0 -158
  240. package/dist/runnerValidacaoRemotaTipos.js +0 -35
  241. package/dist/runnerValidacaoRemotaTipos.js.map +0 -1
  242. package/dist/runnerValidacaoRemotaUtil.d.ts +0 -3
  243. package/dist/runnerValidacaoRemotaUtil.js +0 -18
  244. package/dist/runnerValidacaoRemotaUtil.js.map +0 -1
  245. package/dist/runnerValidacaoRemotaWorkspace.d.ts +0 -2
  246. package/dist/runnerValidacaoRemotaWorkspace.js +0 -115
  247. package/dist/runnerValidacaoRemotaWorkspace.js.map +0 -1
  248. package/dist/rust-http.js.map +0 -1
  249. package/dist/semaChatCommand.d.ts +0 -1
  250. package/dist/semaChatCommand.js +0 -43
  251. package/dist/semaChatCommand.js.map +0 -1
  252. package/dist/semaChatRuntime.d.ts +0 -23
  253. package/dist/semaChatRuntime.js +0 -202
  254. package/dist/semaChatRuntime.js.map +0 -1
  255. package/dist/sync/index.js.map +0 -1
  256. package/dist/textoListas.js.map +0 -1
  257. package/dist/tipos.js.map +0 -1
  258. package/dist/typescript-http-body.js.map +0 -1
  259. package/dist/typescript-http-expressoes.js.map +0 -1
  260. package/dist/typescript-http-modelos.js.map +0 -1
  261. package/dist/typescript-http-rotas.js.map +0 -1
  262. package/dist/typescript-http-semantica.js.map +0 -1
  263. package/dist/typescript-http.js.map +0 -1
  264. package/docs/AGENT_STARTER.md +0 -147
  265. package/docs/agentes-por-capacidade.md +0 -130
  266. package/docs/api.md +0 -82
  267. package/docs/comandos.md +0 -807
  268. package/docs/como-ensinar-a-sema-para-ia.md +0 -30
  269. package/docs/documentacao.md +0 -74
  270. package/docs/extensao-vscode.md +0 -49
  271. package/docs/fluxo-pratico-ia-sema.md +0 -278
  272. package/docs/instalacao-e-primeiro-uso.md +0 -60
  273. package/docs/integracao-com-ia.md +0 -44
  274. package/docs/mcp.md +0 -69
  275. package/docs/pagamento-ponta-a-ponta.md +0 -171
  276. package/docs/persistencia-vendor-first.md +0 -151
  277. package/docs/prompt-base-ia-sema.md +0 -111
  278. package/docs/seguranca.md +0 -126
  279. package/docs/sintaxe.md +0 -390
  280. package/llms-full.txt +0 -40
  281. package/llms.txt +0 -23
package/dist/contexto.js CHANGED
@@ -1,112 +1,79 @@
1
1
  // SEMA-GOVERNED: sema.governanca_ia_contexto
2
- // Descricao: codigo governado pelo Sema; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
3
- /**
4
- * Gerador de pacote de contexto para chats web (ChatGPT, Lovable, etc.).
5
- *
6
- * A CLI lê contratos e código selecionado do disco local e gera um pacote
7
- * compacto que o usuário cola no chat. Isso elimina o sync manual — a CLI
8
- * faz o trabalho pesado de I/O local e entrega um payload pronto.
9
- *
10
- * Contrato: contratos/sema/mcp_client_bridge.sema — task gerar_pacote_contexto_para_chat
11
- */
2
+ // Descricao: gera um pacote local de contexto Sema sem depender de servico externo.
12
3
  import { readFile, mkdir, writeFile } from "node:fs/promises";
13
4
  import path from "node:path";
14
- // ---------------------------------------------------------------------------
15
- // Constantes
16
- // ---------------------------------------------------------------------------
17
- const LIMITE_TAMANHO_INLINE = 100_000; // 100KB
5
+ const LIMITE_TAMANHO_INLINE = 100_000;
18
6
  const PADROES_SEGREDO = [
19
- /(?:api[_-]?key|secret|token|password|senha)\s*[:=]\s*["']?[A-Za-z0-9_\-]{16,}/gi,
20
- /\bsk-[A-Za-z0-9_\-]{20,}\b/g,
21
- /\beyJ[A-Za-z0-9_\-]+\.[A-Za-z0-9_\-]+\.[A-Za-z0-9_\-]+\b/g,
7
+ /(?:api[_-]?key|secret|token|password|senha)\s*[:=]\s*["']?[A-Za-z0-9_-]{16,}/gi,
8
+ /\bsk-[A-Za-z0-9_-]{20,}\b/g,
9
+ /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,
22
10
  ];
23
- // ---------------------------------------------------------------------------
24
- // Gerar pacote de contexto para chat
25
- // ---------------------------------------------------------------------------
26
11
  export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
27
12
  if (!entrada.contratos || entrada.contratos.length === 0) {
28
- throw new Error("Nenhum contrato informado. Use --contratos <arquivo1.sema> <arquivo2.sema>");
13
+ throw new Error("No contract was provided. Use --contratos <file1.sema> <file2.sema>.");
29
14
  }
30
- // Ler contratos
31
15
  const contratosConteudo = [];
32
16
  for (const contrato of entrada.contratos) {
33
17
  const absoluto = path.resolve(cwd, contrato);
34
18
  const conteudo = await readFile(absoluto, "utf8");
35
19
  contratosConteudo.push({ caminho: contrato, conteudo });
36
20
  }
37
- // Ler código selecionado (se houver)
38
21
  const codigoConteudo = [];
39
- if (entrada.codigoSelecionado) {
40
- for (const arquivo of entrada.codigoSelecionado) {
41
- try {
42
- const absoluto = path.resolve(cwd, arquivo);
43
- let conteudo = await readFile(absoluto, "utf8");
44
- conteudo = sanitizarConteudo(conteudo);
45
- codigoConteudo.push({ caminho: arquivo, conteudo });
46
- }
47
- catch {
48
- // Arquivo não existe — ignora silenciosamente
49
- }
22
+ for (const arquivo of entrada.codigoSelecionado ?? []) {
23
+ try {
24
+ const absoluto = path.resolve(cwd, arquivo);
25
+ const conteudo = sanitizarConteudo(await readFile(absoluto, "utf8"));
26
+ codigoConteudo.push({ caminho: arquivo, conteudo });
27
+ }
28
+ catch {
29
+ // Missing selected files are ignored because this helper is best-effort context assembly.
50
30
  }
51
31
  }
52
- // Montar resumo
53
- const modulos = contratosConteudo.map((c) => extrairModulo(c.conteudo)).filter(Boolean);
54
- const tarefas = contratosConteudo.flatMap((c) => extrairTarefas(c.conteudo));
55
- const rotas = contratosConteudo.flatMap((c) => extrairRotas(c.conteudo));
32
+ const modulos = contratosConteudo.map((contrato) => extrairModulo(contrato.conteudo)).filter(Boolean);
33
+ const tarefas = contratosConteudo.flatMap((contrato) => extrairTarefas(contrato.conteudo));
34
+ const rotas = contratosConteudo.flatMap((contrato) => extrairRotas(contrato.conteudo));
56
35
  const resumo = [
57
- `# Contexto Sema para Chat`,
58
- ``,
59
- `**Módulos:** ${modulos.join(", ") || "nenhum"}`,
60
- `**Tarefas:** ${tarefas.length}`,
61
- `**Rotas:** ${rotas.length}`,
62
- `**Arquivos de código:** ${codigoConteudo.length}`,
63
- ``,
64
- `## Contratos`,
65
- ...contratosConteudo.map((c) => `### ${c.caminho}\n\`\`\`sema\n${c.conteudo}\n\`\`\``),
66
- ``,
36
+ "# Sema Local Context",
37
+ "",
38
+ `Modules: ${modulos.join(", ") || "none"}`,
39
+ `Tasks: ${tarefas.length}`,
40
+ `Routes: ${rotas.length}`,
41
+ `Selected code files: ${codigoConteudo.length}`,
42
+ "",
43
+ "## Contracts",
44
+ ...contratosConteudo.map((contrato) => `### ${contrato.caminho}\n\`\`\`sema\n${contrato.conteudo}\n\`\`\``),
45
+ "",
67
46
  ].join("\n");
68
- // Código selecionado (resumido)
69
47
  const codigoResumido = codigoConteudo.length > 0
70
48
  ? [
71
- `## Código Selecionado`,
72
- ...codigoConteudo.map((c) => {
73
- const ext = path.extname(c.caminho).slice(1) || "txt";
74
- return `### ${c.caminho}\n\`\`\`${ext}\n${c.conteudo}\n\`\`\``;
49
+ "## Selected Code",
50
+ ...codigoConteudo.map((arquivo) => {
51
+ const ext = path.extname(arquivo.caminho).slice(1) || "txt";
52
+ return `### ${arquivo.caminho}\n\`\`\`${ext}\n${arquivo.conteudo}\n\`\`\``;
75
53
  }),
76
- ``,
54
+ "",
77
55
  ].join("\n")
78
56
  : "";
79
- // IR resumida
80
57
  const irResumida = [
81
- `## IR Resumida`,
82
- `- Módulos: ${modulos.join(", ") || "nenhum"}`,
83
- `- Tarefas: ${tarefas.map((t) => `\`${t}\``).join(", ") || "nenhuma"}`,
84
- `- Rotas: ${rotas.map((r) => `\`${r}\``).join(", ") || "nenhuma"}`,
85
- ``,
58
+ "## IR Summary",
59
+ `- Modules: ${modulos.join(", ") || "none"}`,
60
+ `- Tasks: ${tarefas.map((tarefa) => `\`${tarefa}\``).join(", ") || "none"}`,
61
+ `- Routes: ${rotas.map((rota) => `\`${rota}\``).join(", ") || "none"}`,
62
+ "",
86
63
  ].join("\n");
87
- // Drift resumido (placeholder — a CLI faz drift real via `sema drift`)
88
64
  const driftResumido = entrada.incluirDrift
89
- ? [
90
- `## Drift`,
91
- `⚠️ Drift real requer \`sema drift\` CLI.`,
92
- `Este pacote contém contratos e código para o MCP executar drift remoto.`,
93
- ``,
94
- ].join("\n")
95
- : `## Drift\nNão incluído (use --drift para incluir).\n`;
96
- // Impact map (placeholder)
65
+ ? "## Drift\nRun `sema drift` locally for the authoritative drift result.\n"
66
+ : "## Drift\nNot included. Run `sema drift` locally when drift evidence is required.\n";
97
67
  const impactMap = entrada.incluirImpacto
98
- ? tarefas.map((t) => `- \`${t}\`: contratos/${t}.sema → implementação`)
68
+ ? tarefas.map((tarefa) => `- \`${tarefa}\`: local contract and linked implementation must be inspected with \`sema impacto\`.`)
99
69
  : [];
100
- // Docs relevantes
101
70
  const docsRelevantes = [
102
71
  "AGENTS.md",
103
- "docs/mcp.md",
104
72
  "docs/cli.md",
105
- "docs/sintaxe.md",
73
+ "docs/syntax.md",
74
+ "docs/documentation.md",
106
75
  ];
107
- // Checksum simples
108
- const conteudoTotal = contratosConteudo.map((c) => c.conteudo).join("");
109
- const checksum = checksumSimples(conteudoTotal);
76
+ const checksum = checksumSimples(contratosConteudo.map((contrato) => contrato.conteudo).join(""));
110
77
  const pacote = {
111
78
  contratos: entrada.contratos,
112
79
  resumo,
@@ -116,7 +83,6 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
116
83
  docsRelevantes,
117
84
  checksum,
118
85
  };
119
- // Montar texto inline completo
120
86
  const inlineTexto = [
121
87
  `<!-- SEMA_CONTEXT_PACK v1 checksum=${checksum} -->`,
122
88
  resumo,
@@ -124,20 +90,19 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
124
90
  irResumida,
125
91
  driftResumido,
126
92
  impactMap.length > 0 ? `## Impact Map\n${impactMap.join("\n")}\n` : "",
127
- `## Docs Relevantes`,
128
- `Leia estes arquivos antes de agir:`,
129
- ...docsRelevantes.map((d) => `- \`${d}\``),
130
- ``,
131
- `## Instruções para o Agente`,
132
- `1. Leia os contratos acima — eles são a fonte da verdade`,
133
- `2. Código selecionado é contexto adicional, não substitui o contrato`,
134
- `3. Antes de qualquer ação: crie, edite ou remova o .sema aplicável`,
135
- `4. Use \`sema_docs_impacto\` com sua intenção declarada`,
136
- `5. Finalize com \`sema_finalizar_mudanca\``,
93
+ "## Relevant Docs",
94
+ "Read these files before acting:",
95
+ ...docsRelevantes.map((doc) => `- \`${doc}\``),
96
+ "",
97
+ "## Agent Instructions",
98
+ "1. Read the contracts above. They are the source of truth.",
99
+ "2. Treat selected code as context, not as a substitute for the contract.",
100
+ "3. Run `sema docs-impacto` with the declared intention before changing files.",
101
+ "4. Run `sema drift` and `sema impacto` locally before editing governed code.",
102
+ "5. Close with `sema finalizar-mudanca` and concrete evidence.",
137
103
  ].join("\n");
138
104
  const tamanhoBytes = Buffer.byteLength(inlineTexto, "utf8");
139
105
  const prontoParaChat = tamanhoBytes <= LIMITE_TAMANHO_INLINE;
140
- // Gerar arquivos se solicitado
141
106
  const arquivosGerados = [];
142
107
  if (entrada.formatoSaida === "arquivo" || entrada.formatoSaida === "ambos") {
143
108
  const pastaSaida = path.resolve(cwd, ".tmp", "sema-contexto-chat");
@@ -145,7 +110,6 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
145
110
  const arquivoContexto = path.join(pastaSaida, "SEMA_CONTEXT_CHAT.md");
146
111
  await writeFile(arquivoContexto, inlineTexto, "utf8");
147
112
  arquivosGerados.push(arquivoContexto);
148
- // Também gerar JSON estruturado
149
113
  const arquivoJson = path.join(pastaSaida, "contexto-chat.json");
150
114
  await writeFile(arquivoJson, JSON.stringify({ pacote, tamanhoBytes, prontoParaChat }, null, 2), "utf8");
151
115
  arquivosGerados.push(arquivoJson);
@@ -158,40 +122,26 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
158
122
  inlineTexto: entrada.formatoSaida === "inline" || entrada.formatoSaida === "ambos" ? inlineTexto : undefined,
159
123
  };
160
124
  }
161
- // ---------------------------------------------------------------------------
162
- // Helpers de extração
163
- // ---------------------------------------------------------------------------
164
125
  function extrairModulo(conteudo) {
165
126
  const match = conteudo.match(/^module\s+([\w.]+)\s*\{/m);
166
127
  return match ? match[1] : null;
167
128
  }
168
129
  function extrairTarefas(conteudo) {
169
- const tarefas = [];
170
- const regex = /^\s*task\s+(\w+)\s*\{/gm;
171
- let match;
172
- while ((match = regex.exec(conteudo)) !== null) {
173
- tarefas.push(match[1]);
174
- }
175
- return tarefas;
130
+ return [...conteudo.matchAll(/^\s*task\s+(\w+)\s*\{/gm)].map((match) => match[1]);
176
131
  }
177
132
  function extrairRotas(conteudo) {
178
- const rotas = [];
179
- const regex = /^\s*route\s+(\w+)\s*\{/gm;
180
- let match;
181
- while ((match = regex.exec(conteudo)) !== null) {
182
- rotas.push(match[1]);
183
- }
184
- return rotas;
133
+ return [...conteudo.matchAll(/^\s*route\s+(\w+)\s*\{/gm)].map((match) => match[1]);
185
134
  }
186
135
  function sanitizarConteudo(conteudo) {
136
+ let sanitizado = conteudo;
187
137
  for (const padrao of PADROES_SEGREDO) {
188
- conteudo = conteudo.replace(padrao, "[REDACTED]");
138
+ sanitizado = sanitizado.replace(padrao, "[REDACTED]");
189
139
  }
190
- return conteudo;
140
+ return sanitizado;
191
141
  }
192
142
  function checksumSimples(texto) {
193
143
  let hash = 0;
194
- for (let i = 0; i < texto.length; i++) {
144
+ for (let i = 0; i < texto.length; i += 1) {
195
145
  hash = ((hash << 5) - hash + texto.charCodeAt(i)) | 0;
196
146
  }
197
147
  return Math.abs(hash).toString(16).padStart(8, "0");
@@ -146,7 +146,7 @@ export const REGRAS_DOCUMENTACAO = [
146
146
  categoria: "author",
147
147
  padroes: [/\bauthor\b/, /autoral/, /obra/, /cliche/, /estilo/, /personagem/, /narrativa/, /sensibility/, /sensitivity/],
148
148
  docs: [
149
- { relativo: "docs/profiles-author-agents-flow.md", tipo: "documentacao", motivo: "profile Author, agents, flow e guardrails autorais", permitirCriacao: false },
149
+ { relativo: "docs/profiles.md", tipo: "documentacao", motivo: "Author profile and local validation guardrails", permitirCriacao: false },
150
150
  ],
151
151
  },
152
152
  {
@@ -154,7 +154,6 @@ export const REGRAS_DOCUMENTACAO = [
154
154
  padroes: [/\bprofiles\b/, /\bworkflow\b/, /\bn8n\b/, /\bops\b/, /\bgame\b/, /\blegal\b/, /\bresearch\b/, /pesquisa/, /juridic/, /orquestracao/, /automacao/],
155
155
  docs: [
156
156
  { relativo: "docs/profiles.md", tipo: "documentacao", motivo: "profiles oficiais, gates e fronteiras de adapter", permitirCriacao: false },
157
- { relativo: "docs/scorecard-compatibilidade.md", tipo: "documentacao", motivo: "scorecard de compatibilidade para runtimes e adapters", permitirCriacao: false },
158
157
  ],
159
158
  },
160
159
  {
@@ -162,23 +161,21 @@ export const REGRAS_DOCUMENTACAO = [
162
161
  padroes: [/(^|[^a-z0-9])auth([^a-z0-9]|$)/, /autentic/, /login/, /permiss/, /autoriz/, /token/, /oauth/, /seguranca/],
163
162
  docs: [
164
163
  { relativo: "docs/auth.md", tipo: "documentacao", motivo: "regras de autenticacao, autorizacao e tokens", permitirCriacao: true },
165
- { relativo: "docs/seguranca.md", tipo: "documentacao", motivo: "politicas de seguranca afetadas pela mudanca", permitirCriacao: true },
164
+ { relativo: "docs/security.md", tipo: "documentacao", motivo: "politicas de seguranca afetadas pela mudanca", permitirCriacao: true },
166
165
  ],
167
166
  },
168
167
  {
169
168
  categoria: "persistencia",
170
169
  padroes: [/banco/, /database/, /persist/, /migration/, /migracao/, /prisma/, /postgres/, /redis/, /mongodb/],
171
170
  docs: [
172
- { relativo: "docs/persistencia-vendor-first.md", tipo: "documentacao", motivo: "regras de persistencia vendor-first", permitirCriacao: false },
173
171
  { relativo: "docs/database.md", tipo: "runbook", motivo: "operacao de banco, migracoes e validacao de dados", permitirCriacao: true },
174
172
  ],
175
173
  },
176
174
  {
177
- categoria: "mcp",
178
- padroes: [/\bmcp\b/, /tool/, /ferramenta/, /server/, /streamable/, /sse/],
175
+ categoria: "integracao_ia",
176
+ padroes: [/tool/, /ferramenta/, /agent/, /agente/, /copilot/, /cursor/, /cline/, /roo/, /opencode/],
179
177
  docs: [
180
- { relativo: "docs/integracao-com-ia.md", tipo: "documentacao", motivo: "integracao do Sema com agentes IA", permitirCriacao: false },
181
- { relativo: "docs/mcp.md", tipo: "documentacao", motivo: "runbook do MCP privado e ferramentas remotas", permitirCriacao: true },
178
+ { relativo: "docs/ai-integration.md", tipo: "documentacao", motivo: "integracao do Sema com agentes IA", permitirCriacao: false },
182
179
  ],
183
180
  },
184
181
  {
@@ -189,20 +186,12 @@ export const REGRAS_DOCUMENTACAO = [
189
186
  { relativo: "docs/cli.md", tipo: "documentacao", motivo: "guia operacional dos comandos da CLI", permitirCriacao: false },
190
187
  ],
191
188
  },
192
- {
193
- categoria: "extensao",
194
- padroes: [/vscode/, /extension/, /extensao/, /editor/, /\blsp\b/, /language server/],
195
- docs: [
196
- { relativo: "pacotes/editor-vscode/README.md", tipo: "pacote", motivo: "documentacao publica da extensao VS Code", permitirCriacao: false },
197
- { relativo: "docs/extensao-vscode.md", tipo: "documentacao", motivo: "runbook da extensao VS Code", permitirCriacao: true },
198
- ],
199
- },
200
189
  {
201
190
  categoria: "contrato",
202
191
  padroes: [/contrato/, /\.sema/, /semant/, /\bsema\b/, /drift/, /governanca/],
203
192
  docs: [
204
- { relativo: "docs/sintaxe.md", tipo: "documentacao", motivo: "sintaxe e blocos de contrato Sema", permitirCriacao: false },
205
- { relativo: "docs/fluxo-pratico-ia-sema.md", tipo: "documentacao", motivo: "fluxo IA-first antes de editar contratos", permitirCriacao: false },
193
+ { relativo: "docs/syntax.md", tipo: "documentacao", motivo: "sintaxe e blocos de contrato Sema", permitirCriacao: false },
194
+ { relativo: "docs/ai-workflow.md", tipo: "documentacao", motivo: "fluxo IA-first antes de editar contratos", permitirCriacao: false },
206
195
  ],
207
196
  },
208
197
  {
@@ -216,7 +205,7 @@ export const REGRAS_DOCUMENTACAO = [
216
205
  categoria: "testes",
217
206
  padroes: [/teste/, /testar/, /qa/, /validacao/, /regressao/],
218
207
  docs: [
219
- { relativo: "docs/testes.md", tipo: "runbook", motivo: "estrategia de testes e regressao", permitirCriacao: true },
208
+ { relativo: "docs/testing.md", tipo: "runbook", motivo: "estrategia de testes e regressao", permitirCriacao: true },
220
209
  ],
221
210
  },
222
211
  {
@@ -224,7 +213,7 @@ export const REGRAS_DOCUMENTACAO = [
224
213
  padroes: [/doc/, /readme/, /manual/, /runbook/, /onboarding/],
225
214
  docs: [
226
215
  { relativo: "docs/README.md", tipo: "documentacao", motivo: "indice de documentacao do projeto", permitirCriacao: false },
227
- { relativo: "docs/documentacao.md", tipo: "documentacao", motivo: "politica de atualizacao documental", permitirCriacao: true },
216
+ { relativo: "docs/documentation.md", tipo: "documentacao", motivo: "politica de atualizacao documental", permitirCriacao: true },
228
217
  ],
229
218
  },
230
219
  ];
@@ -240,56 +229,46 @@ export function criarTemplateDoc(doc, intencao, categorias, arquivosAlvo) {
240
229
  const linhas = [
241
230
  `# ${titulo}`,
242
231
  "",
243
- "## English",
244
- "",
245
232
  "This document was created by Sema because an AI declared an intention that requires operational reading before action.",
246
233
  "",
247
- "## Português",
248
- "",
249
- "Documento criado pela Sema porque uma IA declarou uma intenção que exige leitura operacional antes de agir.",
250
- "",
251
- "## Español",
252
- "",
253
- "Documento creado por Sema porque una IA declaró una intención que exige lectura operativa antes de actuar.",
254
- "",
255
- "## Intenção",
234
+ "## Intention",
256
235
  "",
257
- intencao || "Descrever a intenção operacional antes de executar a mudança.",
236
+ intencao || "Describe the operational intention before making the change.",
258
237
  "",
259
- "## Escopo",
238
+ "## Scope",
260
239
  "",
261
240
  arquivosAlvo.length > 0
262
241
  ? arquivosAlvo.map((arquivo) => `- ${arquivo}`).join("\n")
263
- : "- Declarar os arquivos, serviços ou contratos afetados.",
242
+ : "- Declare the affected files, services, or contracts.",
264
243
  "",
265
- "## Leitura obrigatória antes de agir",
244
+ "## Required Reading Before Action",
266
245
  "",
267
- "- Ler este documento inteiro.",
268
- "- Ler contratos .sema relacionados antes de editar código.",
269
- "- Ler README, runbooks e docs de pacote envolvidos.",
246
+ "- Read this whole document.",
247
+ "- Read related `.sema` contracts before editing code.",
248
+ "- Read the involved README, runbooks, and package docs.",
270
249
  "",
271
- "## Procedimento",
250
+ "## Procedure",
272
251
  "",
273
- "- Descrever os comandos ou passos seguros.",
274
- "- Declarar pré-condições, variáveis e dependências.",
275
- "- Registrar como validar sucesso.",
252
+ "- Describe the safe commands or steps.",
253
+ "- Declare preconditions, variables, and dependencies.",
254
+ "- Record how success will be validated.",
276
255
  "",
277
- "## Validação",
256
+ "## Validation",
278
257
  "",
279
- "- Listar comandos de build, teste, verificação ou smoke test.",
280
- "- Registrar evidências esperadas.",
258
+ "- List build, test, verification, or smoke-check commands.",
259
+ "- Record expected evidence.",
281
260
  "",
282
261
  "## Rollback",
283
262
  "",
284
- "- Descrever como desfazer a mudança.",
285
- "- Declarar sinais que exigem rollback.",
263
+ "- Describe how to undo the change.",
264
+ "- Declare signals that require rollback.",
286
265
  "",
287
- "## Atualização documental",
266
+ "## Documentation Update",
288
267
  "",
289
- "- Atualizar este arquivo quando o fluxo operacional mudar.",
290
- "- Atualizar docs e contratos relacionados na mesma mudança.",
268
+ "- Update this file when the operational flow changes.",
269
+ "- Update related docs and contracts in the same change.",
291
270
  "",
292
- `Categorias inferidas: ${categorias.join(", ")}`,
271
+ `Inferred categories: ${categorias.join(", ")}`,
293
272
  "",
294
273
  ];
295
274
  return `${linhas.join("\n")}\n`;
@@ -1,8 +1,23 @@
1
+ // SEMA-GOVERNED: sema.governanca_ia_contexto
2
+ // Descricao: analisa modulos selecionados no drift; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
3
+ import { existsSync } from "node:fs";
4
+ import path from "node:path";
1
5
  import { escolherArquivoPorVinculo, escolherSimboloPorVinculo } from "./drift.part03.js";
2
6
  import { calcularRiscoOperacional, encontrarAncoraSuperficie } from "./drift.part04.js";
3
7
  import { resolverPersistenciaLocalPorTask } from "./drift.part08.js";
4
8
  import { escolherRotasEsperadas, normalizarCaminhoRota, ordenarCandidatos, sugerirCandidatosParaImpl, sugerirCandidatosParaTaskSemImpl } from "./drift.part09.js";
5
9
  import { coletarVinculosIr, extrairRecursosEsperados, resolverRecursoEsperado } from "./drift.part10.js";
10
+ function escolherArquivoDeclarado(contexto, arquivosConhecidos, valor) {
11
+ const resolucaoIndexada = escolherArquivoPorVinculo(arquivosConhecidos, valor);
12
+ if (resolucaoIndexada.status !== "nao_encontrado") {
13
+ return resolucaoIndexada;
14
+ }
15
+ const caminhoExplicito = path.resolve(contexto.baseProjeto, valor);
16
+ if (existsSync(caminhoExplicito)) {
17
+ return { arquivo: caminhoExplicito, confianca: "alta", status: "resolvido" };
18
+ }
19
+ return resolucaoIndexada;
20
+ }
6
21
  export function analisarModulosSelecionadosDrift(estado) {
7
22
  const { contexto, mapaImpl, todosSimbolos, mapaRecursos, todosRecursos, todasRotasIndexadas, todosArquivosConhecidos, implsValidos, implsQuebrados, vinculosValidos, vinculosQuebrados, rotasDivergentes, recursosValidos, recursosDivergentes, diagnosticos, tasksResumo, taskPorChave, guardrailsPorTask, resumoVinculosPorTask, arquivosAncoraHerdadosPorTask, } = estado;
8
23
  for (const item of contexto.modulosSelecionados) {
@@ -292,7 +307,7 @@ export function analisarModulosSelecionadosDrift(estado) {
292
307
  registro.simbolo = resolucaoSimbolo.simbolo?.simbolo;
293
308
  }
294
309
  else if (arquivoDeclarado) {
295
- const resolucaoArquivo = escolherArquivoPorVinculo(todosArquivosConhecidos, arquivoDeclarado);
310
+ const resolucaoArquivo = escolherArquivoDeclarado(contexto, todosArquivosConhecidos, arquivoDeclarado);
296
311
  registro.status = resolucaoArquivo.status;
297
312
  registro.confianca = resolucaoArquivo.confianca;
298
313
  registro.arquivo = resolucaoArquivo.arquivo;
@@ -319,14 +334,14 @@ export function analisarModulosSelecionadosDrift(estado) {
319
334
  registro.simbolo = rota.simbolo;
320
335
  }
321
336
  else {
322
- const resolucaoArquivo = escolherArquivoPorVinculo(todosArquivosConhecidos, superficieDeclarada);
337
+ const resolucaoArquivo = escolherArquivoDeclarado(contexto, todosArquivosConhecidos, superficieDeclarada);
323
338
  registro.status = resolucaoArquivo.status;
324
339
  registro.confianca = resolucaoArquivo.confianca;
325
340
  registro.arquivo = resolucaoArquivo.arquivo;
326
341
  }
327
342
  }
328
343
  else {
329
- const resolucaoArquivo = escolherArquivoPorVinculo(todosArquivosConhecidos, itemVinculo.vinculo.valor);
344
+ const resolucaoArquivo = escolherArquivoDeclarado(contexto, todosArquivosConhecidos, itemVinculo.vinculo.valor);
330
345
  registro.status = resolucaoArquivo.status;
331
346
  registro.confianca = resolucaoArquivo.confianca;
332
347
  registro.arquivo = resolucaoArquivo.arquivo;
@@ -112,8 +112,7 @@ export function arquivoEhMigracaoHistoricaImutavel(caminho) {
112
112
  const normalizado = caminho.replace(/\\/g, "/").toLowerCase();
113
113
  const partes = normalizado.split("/").filter(Boolean);
114
114
  const nome = partes.at(-1) ?? "";
115
- return partes.includes("supabase")
116
- && partes.includes("migrations")
115
+ return partes.includes("migrations")
117
116
  && /^\d{14}_.+\.sql$/.test(nome);
118
117
  }
119
118
  export function tipoArquivoOrcamento(caminho) {
package/dist/index.d.ts CHANGED
@@ -1,11 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  export * from "./index.part01.js";
3
- export * from "./index.part02.js";
4
- export * from "./index.part03.js";
5
- export * from "./index.part04.js";
6
- export * from "./index.part05.js";
7
- export * from "./index.part06.js";
8
- export * from "./index.part07.js";
9
3
  export * from "./index.part08.js";
10
4
  export { iniciarProfileAuthor, comandoAuthor, criarAuthorBriefing, revisarClichesAuthor } from "./profileAuthorCommand.js";
11
5
  export { validarProfileSemantico } from "./profileCommand.js";
package/dist/index.js CHANGED
@@ -3,12 +3,6 @@
3
3
  // Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
4
4
  import { principal } from "./index.part08.js";
5
5
  export * from "./index.part01.js";
6
- export * from "./index.part02.js";
7
- export * from "./index.part03.js";
8
- export * from "./index.part04.js";
9
- export * from "./index.part05.js";
10
- export * from "./index.part06.js";
11
- export * from "./index.part07.js";
12
6
  export * from "./index.part08.js";
13
7
  export { iniciarProfileAuthor, comandoAuthor, criarAuthorBriefing, revisarClichesAuthor } from "./profileAuthorCommand.js";
14
8
  export { validarProfileSemantico } from "./profileCommand.js";
@@ -2,7 +2,7 @@ import { compilarCodigo, type IrModulo } from "@sema/nucleo";
2
2
  import { analisarDriftLegado, type OpcoesDriftLegado } from "./drift.js";
3
3
  import { type GuiaCapacidadeIaMap } from './agentContextTipos.js';
4
4
  import { criarBriefingAgente, resumirDriftPorModulo } from "./index.part03.js";
5
- export type Comando = "iniciar" | "init" | "dev" | "sync" | "chat" | "runner" | "author" | "profile" | "validar" | "ast" | "ir" | "compilar" | "gerar" | "testar" | "diagnosticos" | "verificar" | "inspecionar" | "drift" | "impacto" | "renomear-semantico" | "importar" | "doctor" | "formatar" | "ajuda-ia" | "starter-ia" | "sync-ai-entrypoints" | "instalar-exemplos" | "preflight" | "mcp-instalar-chave" | "rule-packs" | "docs-impacto" | "finalizar-mudanca" | "resumo" | "prompt-curto" | "prompt-ia" | "prompt-ia-ui" | "prompt-ia-react" | "prompt-ia-sema-primeiro" | "exemplos-prompt-ia" | "contexto-ia";
5
+ export type Comando = "iniciar" | "init" | "dev" | "sync" | "author" | "profile" | "validar" | "ast" | "ir" | "compilar" | "gerar" | "testar" | "diagnosticos" | "verificar" | "inspecionar" | "drift" | "impacto" | "renomear-semantico" | "importar" | "doctor" | "formatar" | "ajuda-ia" | "starter-ia" | "sync-ai-entrypoints" | "instalar-exemplos" | "preflight" | "rule-packs" | "docs-impacto" | "finalizar-mudanca" | "resumo" | "prompt-curto" | "prompt-ia" | "prompt-ia-ui" | "prompt-ia-react" | "prompt-ia-sema-primeiro" | "exemplos-prompt-ia" | "contexto-ia";
6
6
  export interface ResultadoFormatacaoArquivo {
7
7
  caminho: string;
8
8
  alterado: boolean;
@@ -109,9 +109,7 @@ export function ajuda() {
109
109
  "sema contexto-ia <arquivo.sema> [--saida <diretorio>] [--json]",
110
110
  "sema sync-ai-entrypoints [--json]",
111
111
  "sema instalar-exemplos [--json]",
112
- "sema preflight [comando] [--operation-code <codigo>] [--project-id <uuid>] [--json]",
113
- "sema mcp-instalar-chave --stdin [--endpoint <url>] [--control-plane-url <url>] [--dry-run] [--json]",
114
- "sema chat doctor [--json]",
112
+ "sema preflight [comando] [--operation-code <codigo>] [--json]",
115
113
  "sema docs-impacto --intencao <acao> [--arquivo <caminho>] [--criar-ausentes] [--json]",
116
114
  "sema finalizar-mudanca --intencao <acao> [--arquivo <caminho>] [--doc-lida <caminho>] [--json]",
117
115
  "sema author briefing <arquivo.sema> [--json]",
@@ -8,7 +8,7 @@ import { analisarDriftLegado, } from "./drift.js";
8
8
  import { resolverDocumentacaoObrigatoria, verificarDocumentacaoMudanca, } from "./docs.js";
9
9
  import { LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO, LIMITE_AVISO_LINHAS_CONTRATO_SEMA, LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO, LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA, } from "./driftOrcamento.js";
10
10
  import { ARQUIVO_AGENT_CONTEXT_PACK, ARQUIVO_DOC_AGENTES_CAPACIDADE, ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL, } from './agentContextTipos.js';
11
- import { criarGuiaCapacidadeIa, LIMITE_CARACTERES_PAYLOAD_INLINE_MCP } from './agentContextPack.js';
11
+ import { criarGuiaCapacidadeIa, LIMITE_CARACTERES_PAYLOAD_INLINE } from './agentContextPack.js';
12
12
  import { criarEntradaCanonicaProjeto } from './agentContext.js';
13
13
  import { renderizarDocumentoAgentesPorCapacidade, renderizarSemaBoot, renderizarSemaSmallModel, } from './agentEntryPoints.js';
14
14
  import { carregarModulos } from './carregarModulos.js';
@@ -113,7 +113,7 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
113
113
  `TIMEOUT_SEMA: timeout local nao e falha; retry progressivo ${agentContextPack.politicaTimeoutResumo.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")}; escopar arquivo se projeto inteiro for lento`,
114
114
  `CODIGO_GOVERNADO: ${agentContextPack.politicaCodigoGovernado.marcador} -> chamar Sema antes de editar codigo gerado; validacao inline nao dispensa cabecalho fisico`,
115
115
  `ORCAMENTO_SEMANTICO: codigo aviso>${LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO} bloqueio>${LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO}; .sema aviso>${LIMITE_AVISO_LINHAS_CONTRATO_SEMA} bloqueio>${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA}; .sema por capacidade, nunca parte_1/parte_2; docs Markdown fora do limite de codigo`,
116
- `PAYLOAD_MCP: inline>${LIMITE_CARACTERES_PAYLOAD_INLINE_MCP} caracteres nao e timeout; modularize por responsabilidade ou use anexo/caminho autorizado`,
116
+ `PAYLOAD_INLINE: inline>${LIMITE_CARACTERES_PAYLOAD_INLINE} caracteres nao e timeout; modularize por responsabilidade ou use anexo/caminho autorizado`,
117
117
  `SINAL_VS_RITUAL: score/achados/decisaoAgente sao triagem; exigir evidencia concreta alem de palavra-chave ou regex`,
118
118
  `DESIGN_VISUAL: se houver UI, moderno obrigatorio; fraca=padrao seguro responsivo; media=tokens+estados; forte=screenshot+assets+microinteracoes`,
119
119
  `TOP_MODULOS: ${resumirListaTexto(modulos.map((modulo) => modulo.modulo), 3)}`,
@@ -138,7 +138,7 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
138
138
  `TIMEOUT_SEMA: ${agentContextPack.politicaTimeoutResumo.regra} Escale ${agentContextPack.politicaTimeoutResumo.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")} antes de declarar bloqueio.`,
139
139
  `CODIGO_GOVERNADO: ${agentContextPack.politicaCodigoGovernado.marcador} -> docs-impacto e drift antes de alterar comportamento`,
140
140
  `ORCAMENTO_SEMANTICO: codigo governado acima de ${LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO} linhas exige refatoracao e acima de ${LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO} bloqueia; .sema acima de ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA} diagnostica e acima de ${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA} bloqueia criacao, edicao, drift, geracao e snapshot; varios .sema podem governar o mesmo arquivo via vinculos`,
141
- `PAYLOAD_MCP: conteudo inline acima de ${LIMITE_CARACTERES_PAYLOAD_INLINE_MCP} caracteres deve virar arquivos logicos, anexo, caminho de servidor autorizado ou manifesto; nao aumente timeout para empurrar o mesmo payload`,
141
+ `PAYLOAD_INLINE: conteudo inline acima de ${LIMITE_CARACTERES_PAYLOAD_INLINE} caracteres deve virar arquivos logicos, anexo, caminho de servidor autorizado ou manifesto; nao aumente timeout para empurrar o mesmo payload`,
142
142
  `DESIGN_VISUAL: ${agentContextPack.politicaDesignVisual.regra} Fraca=${agentContextPack.politicaDesignVisual.porCapacidade.fraca} Media=${agentContextPack.politicaDesignVisual.porCapacidade.media} Forte=${agentContextPack.politicaDesignVisual.porCapacidade.forte}`,
143
143
  `TOP_MODULOS: ${resumirListaTexto(modulos.map((modulo) => modulo.modulo), 6)}`,
144
144
  `TOP_RISCOS: ${resumirListaTexto(unicosOrdenados(modulos.flatMap((modulo) => modulo.riscosPrincipais)), 6)}`,
@@ -252,7 +252,7 @@ Antes de escolher arquivo de código, leia \`${ARQUIVO_SEMA_BOOT}\` e \`agent-co
252
252
 
253
253
  - Abra \`AGENTS.md\` antes de editar código, contrato, docs operacionais, release ou deploy.
254
254
  - Abra \`exemplos/\` antes de criar ou corrigir sintaxe \`.sema\`.
255
- - Abra \`docs/sintaxe.md\` quando exemplos não bastarem para resolver a gramática.
255
+ - Abra \`docs/syntax.md\` quando exemplos não bastarem para resolver a gramática.
256
256
  - Abra \`contratos/\` antes de qualquer implementação ou mudança de comportamento.
257
257
 
258
258
  ## Timeout e retry
@@ -4,12 +4,9 @@ import path from "node:path";
4
4
  import { carregarConfiguracaoProjeto, resolverAlvoPadrao, resolverEstruturaSaidaPadrao, resolverFrameworkPadrao, resolverSaidaPadrao, } from "./projeto.js";
5
5
  import { REGISTRO_COMANDOS } from "./comandos.js";
6
6
  import * as billing from "./billing/index.js";
7
- import { ajudaRunnerValidacaoRemota, comandoRunnerValidacaoRemota, } from "./runnerValidacaoRemotaCli.js";
8
- import { comandoServidorRunnerValidacaoRemota } from "./runnerValidacaoRemotaServidor.js";
9
7
  import { comandoIniciar, comandoInstalarExemplos } from './initCommand.js';
10
8
  import { obterOpcao, obterPosicionais, possuiFlag } from './cliArgs.js';
11
9
  import { comandoAuthor, comandoProfile, criarPayloadRulePacks, normalizarProfileGovernanca, renderizarRulePacksTexto } from './profileAuthorCommand.js';
12
- import { comandoMcpInstalarChave } from './mcpInstalarChaveCommand.js';
13
10
  import { comandoDoctor } from './doctorCommand.js';
14
11
  import { normalizarFonteImportacao, normalizarTemplateIniciar, } from './geracaoCore.js';
15
12
  import { VERSAO_CLI, ajuda, obterArgumentos } from "./index.part01.js";
@@ -31,7 +28,7 @@ export async function principal() {
31
28
  const cwd = process.cwd();
32
29
  const posicionais = obterPosicionais(resto);
33
30
  let codigoSaida = 0;
34
- // --- Comandos registrados via REGISTRO_COMANDOS (mcp-client, bridge-config, contexto-chat, etc.) ---
31
+ // --- Comandos registrados via REGISTRO_COMANDOS (guard, init, dev, sync) ---
35
32
  const handlerRegistrado = REGISTRO_COMANDOS[comando];
36
33
  if (handlerRegistrado) {
37
34
  codigoSaida = await handlerRegistrado(posicionais, resto, possuiFlag(resto, "--json"));
@@ -55,21 +52,6 @@ export async function principal() {
55
52
  codigoSaida = 0;
56
53
  }
57
54
  break;
58
- case "runner":
59
- {
60
- const subcomando = posicionais[0];
61
- if (subcomando === "validar-remoto") {
62
- codigoSaida = await comandoRunnerValidacaoRemota(resto, cwd);
63
- }
64
- else if (subcomando === "servidor") {
65
- codigoSaida = await comandoServidorRunnerValidacaoRemota(resto, cwd);
66
- }
67
- else {
68
- console.log(ajudaRunnerValidacaoRemota());
69
- codigoSaida = subcomando ? 1 : 0;
70
- }
71
- }
72
- break;
73
55
  case "validar":
74
56
  codigoSaida = possuiFlag(resto, "--json")
75
57
  ? await comandoValidarJson(posicionais[0])
@@ -167,9 +149,6 @@ export async function principal() {
167
149
  case "preflight":
168
150
  codigoSaida = await billing.comandoPreflightCli(resto, possuiFlag(resto, "--json"));
169
151
  break;
170
- case "mcp-instalar-chave":
171
- codigoSaida = await comandoMcpInstalarChave(resto, possuiFlag(resto, "--json"));
172
- break;
173
152
  case "docs-impacto":
174
153
  codigoSaida = await comandoDocsImpacto(posicionais, resto, possuiFlag(resto, "--json"));
175
154
  break;