@semacode/cli 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/LICENSE +39 -39
  2. package/README.md +112 -41
  3. package/dist/agentContextPack.js +14 -10
  4. package/dist/agentEntryPoints.d.ts +5 -0
  5. package/dist/agentEntryPoints.js +102 -91
  6. package/dist/angular-consumer-standalone.d.ts +3 -1
  7. package/dist/angular-consumer-standalone.js +12 -8
  8. package/dist/bin.d.ts +6 -0
  9. package/dist/bin.js +130 -0
  10. package/dist/cliArgs.js +4 -4
  11. package/dist/cliControlError.d.ts +12 -0
  12. package/dist/cliControlError.js +47 -0
  13. package/dist/cliGrammar.d.ts +11 -0
  14. package/dist/cliGrammar.js +551 -0
  15. package/dist/cliHelp.d.ts +13 -0
  16. package/dist/cliHelp.js +19 -0
  17. package/dist/cliHelpTexto.d.ts +3 -0
  18. package/dist/cliHelpTexto.js +168 -0
  19. package/dist/cliRuntime.d.ts +2 -0
  20. package/dist/cliRuntime.js +31 -0
  21. package/dist/comandos.js +9 -22
  22. package/dist/contexto.js +5 -5
  23. package/dist/dev/index.d.ts +1 -0
  24. package/dist/dev/index.js +51 -9
  25. package/dist/discovery/catalog.js +3 -3
  26. package/dist/distribuicao/filesystemGlobal.d.ts +63 -0
  27. package/dist/distribuicao/filesystemGlobal.js +701 -0
  28. package/dist/distribuicao/index.d.ts +7 -0
  29. package/dist/distribuicao/index.js +227 -0
  30. package/dist/distribuicao/launcherGlobal.d.ts +53 -0
  31. package/dist/distribuicao/launcherGlobal.js +643 -0
  32. package/dist/distribuicao/launcherWindows.d.ts +28 -0
  33. package/dist/distribuicao/launcherWindows.js +326 -0
  34. package/dist/distribuicao/lockContextGlobal.d.ts +10 -0
  35. package/dist/distribuicao/lockContextGlobal.js +17 -0
  36. package/dist/distribuicao/lockGlobal.d.ts +6 -0
  37. package/dist/distribuicao/lockGlobal.js +520 -0
  38. package/dist/distribuicao/skillGlobal.d.ts +48 -0
  39. package/dist/distribuicao/skillGlobal.js +652 -0
  40. package/dist/distribuicao/skillIntentPolicy.d.ts +21 -0
  41. package/dist/distribuicao/skillIntentPolicy.js +115 -0
  42. package/dist/distribuicao/tipos.d.ts +50 -0
  43. package/dist/distribuicao/tipos.js +10 -0
  44. package/dist/distribuicao/versaoSemantica.d.ts +3 -0
  45. package/dist/distribuicao/versaoSemantica.js +62 -0
  46. package/dist/drift.part01.d.ts +34 -2
  47. package/dist/drift.part01.js +3 -0
  48. package/dist/drift.part04.d.ts +12 -2
  49. package/dist/drift.part04.js +89 -15
  50. package/dist/drift.part05.d.ts +2 -1
  51. package/dist/drift.part05.js +9 -6
  52. package/dist/drift.part06.d.ts +2 -1
  53. package/dist/drift.part06.js +115 -24
  54. package/dist/drift.part07.d.ts +11 -10
  55. package/dist/drift.part07.js +261 -255
  56. package/dist/drift.part08.d.ts +2 -1
  57. package/dist/drift.part08.js +35 -25
  58. package/dist/drift.part11.js +279 -32
  59. package/dist/drift.part12.d.ts +1 -1
  60. package/dist/drift.part12.js +196 -11
  61. package/dist/drift.part13.d.ts +18 -2
  62. package/dist/drift.part13.js +654 -76
  63. package/dist/drift.part14.js +21 -7
  64. package/dist/driftCacheCas.d.ts +43 -0
  65. package/dist/driftCacheCas.js +351 -0
  66. package/dist/driftCacheFilesystem.d.ts +64 -0
  67. package/dist/driftCacheFilesystem.js +313 -0
  68. package/dist/driftCacheModes.d.ts +38 -0
  69. package/dist/driftCacheModes.js +147 -0
  70. package/dist/driftCacheStore.d.ts +80 -0
  71. package/dist/driftCacheStore.js +603 -0
  72. package/dist/driftCatalogo.d.ts +65 -0
  73. package/dist/driftCatalogo.js +516 -0
  74. package/dist/driftEscopo.d.ts +21 -0
  75. package/dist/driftEscopo.js +647 -0
  76. package/dist/driftEscopoReferencias.d.ts +8 -0
  77. package/dist/driftEscopoReferencias.js +612 -0
  78. package/dist/driftOrcamento.d.ts +6 -0
  79. package/dist/driftOrcamento.js +20 -3
  80. package/dist/geracaoCore.js +4 -6
  81. package/dist/iaPrompts.d.ts +3 -3
  82. package/dist/iaPrompts.js +13 -14
  83. package/dist/index.d.ts +4 -1
  84. package/dist/index.js +6 -25
  85. package/dist/index.part01.d.ts +21 -14
  86. package/dist/index.part01.js +20 -165
  87. package/dist/index.part02.js +57 -43
  88. package/dist/index.part03.d.ts +23 -1
  89. package/dist/index.part03.js +83 -8
  90. package/dist/index.part04.d.ts +10 -2
  91. package/dist/index.part04.js +48 -14
  92. package/dist/index.part05.d.ts +1 -1
  93. package/dist/index.part05.js +109 -30
  94. package/dist/index.part06.js +34 -16
  95. package/dist/index.part07.js +31 -27
  96. package/dist/index.part08.d.ts +1 -1
  97. package/dist/index.part08.js +23 -28
  98. package/dist/init/templates.part01.js +393 -393
  99. package/dist/init/templates.part02.js +189 -189
  100. package/dist/initCommand.js +5 -1
  101. package/dist/initTemplatesBackend.js +73 -73
  102. package/dist/initTemplatesBase.js +7 -5
  103. package/dist/initTemplatesFlutter.js +137 -137
  104. package/dist/initTemplatesRuntime.js +350 -350
  105. package/dist/initTemplatesWeb.js +309 -309
  106. package/dist/pipelineConteudo/command.d.ts +1 -0
  107. package/dist/pipelineConteudo/command.js +4 -32
  108. package/dist/pipelineConteudo/help.d.ts +2 -0
  109. package/dist/pipelineConteudo/help.js +33 -0
  110. package/dist/profileAuthorCommand.js +3 -7
  111. package/dist/profileCommand.js +3 -7
  112. package/dist/projeto.d.ts +1 -1
  113. package/dist/projetoCarregar.d.ts +2 -2
  114. package/dist/projetoCarregar.js +69 -28
  115. package/dist/projetoCatalogo.d.ts +8 -0
  116. package/dist/projetoCatalogo.js +164 -0
  117. package/dist/projetoOrigens.d.ts +2 -0
  118. package/dist/projetoOrigens.js +65 -9
  119. package/dist/projetoTipos.d.ts +15 -5
  120. package/dist/resultadoCli.d.ts +20 -0
  121. package/dist/resultadoCli.js +57 -0
  122. package/dist/saidaCli.d.ts +35 -0
  123. package/dist/saidaCli.js +118 -0
  124. package/dist/sistemasInterativos/acceptanceEvidence.d.ts +22 -0
  125. package/dist/sistemasInterativos/acceptanceEvidence.js +345 -0
  126. package/dist/sistemasInterativos/engineObservation.d.ts +12 -0
  127. package/dist/sistemasInterativos/engineObservation.js +438 -0
  128. package/dist/sistemasInterativos/jobOrchestration.d.ts +2 -0
  129. package/dist/sistemasInterativos/jobOrchestration.js +204 -0
  130. package/dist/sistemasInterativos/operationPrimitives.d.ts +21 -0
  131. package/dist/sistemasInterativos/operationPrimitives.js +194 -0
  132. package/dist/sistemasInterativos/operations.d.ts +4 -39
  133. package/dist/sistemasInterativos/operations.js +5 -1164
  134. package/dist/skillCommand.d.ts +5 -0
  135. package/dist/skillCommand.js +88 -0
  136. package/dist/sync/index.js +35 -35
  137. package/docs/README.md +11 -7
  138. package/docs/ai-integration.md +18 -11
  139. package/docs/ai-onboarding.md +81 -62
  140. package/docs/ai-workflow.md +10 -4
  141. package/docs/auth.md +26 -26
  142. package/docs/cli.md +197 -79
  143. package/docs/commands.md +30 -6
  144. package/docs/database.md +15 -15
  145. package/docs/deploy.md +54 -41
  146. package/docs/documentation.md +11 -10
  147. package/docs/drift-cache.md +108 -0
  148. package/docs/env.md +16 -16
  149. package/docs/frontend.md +41 -41
  150. package/docs/getting-started.md +82 -57
  151. package/docs/i18n.md +15 -15
  152. package/docs/repositories.md +60 -43
  153. package/docs/rollback.md +38 -31
  154. package/docs/security.md +54 -32
  155. package/docs/sistemas-interativos.md +27 -27
  156. package/docs/support.md +8 -8
  157. package/docs/testing.md +123 -17
  158. package/docs/vocabulary.md +29 -29
  159. package/exemplos/agendamento.sema +1 -1
  160. package/exemplos/assinatura.sema +1 -1
  161. package/exemplos/auditoria.sema +1 -1
  162. package/exemplos/autenticacao.sema +1 -1
  163. package/exemplos/author_obra_comum.sema +1 -1
  164. package/exemplos/author_tema_sensivel.sema +1 -1
  165. package/exemplos/automacao.sema +1 -1
  166. package/exemplos/cadastro_usuario.sema +1 -1
  167. package/exemplos/calculadora.sema +1 -1
  168. package/exemplos/crud_simples.sema +1 -1
  169. package/exemplos/estoque.sema +1 -1
  170. package/exemplos/exportacao.sema +1 -1
  171. package/exemplos/fila.sema +1 -1
  172. package/exemplos/integracao_externa.sema +1 -1
  173. package/exemplos/multi_tenant.sema +1 -1
  174. package/exemplos/notificacao.sema +1 -1
  175. package/exemplos/operacao_estrategia.sema +132 -132
  176. package/exemplos/operacao_estrategia_discovery.sema +220 -220
  177. package/exemplos/operacao_estrategia_fluxo.sema +114 -114
  178. package/exemplos/operacao_estrategia_gates.sema +106 -106
  179. package/exemplos/operacao_estrategia_quarentena.sema +133 -133
  180. package/exemplos/operacao_estrategia_rollout.sema +124 -124
  181. package/exemplos/pagamento.sema +1 -1
  182. package/exemplos/pagamento_dominio.sema +1 -1
  183. package/exemplos/pedido.sema +1 -1
  184. package/exemplos/permissao.sema +1 -1
  185. package/exemplos/persistencia_vendor_first.sema +1 -1
  186. package/exemplos/profile_conversas.sema +165 -165
  187. package/exemplos/profile_game.sema +1 -1
  188. package/exemplos/profile_legal.sema +1 -1
  189. package/exemplos/profile_ops.sema +1 -1
  190. package/exemplos/profile_research.sema +1 -1
  191. package/exemplos/profile_software.sema +1 -1
  192. package/exemplos/profile_workflow_n8n.sema +1 -1
  193. package/exemplos/relatorio.sema +1 -1
  194. package/exemplos/replica_analitica_erp.sema +1 -1
  195. package/exemplos/testes_embutidos.sema +1 -1
  196. package/exemplos/tratamento_erro.sema +1 -1
  197. package/exemplos/upload_arquivo.sema +1 -1
  198. package/exemplos/webhook.sema +1 -1
  199. package/node_modules/@sema/gerador-cpp/dist/index.js +176 -176
  200. package/node_modules/@sema/gerador-css/dist/index.part01.js +10 -10
  201. package/node_modules/@sema/gerador-css/dist/index.part02.js +460 -460
  202. package/node_modules/@sema/gerador-dotnet/dist/index.js +169 -169
  203. package/node_modules/@sema/gerador-html/dist/index.js +17 -17
  204. package/node_modules/@sema/gerador-python/dist/index.part02.js +3 -3
  205. package/node_modules/@sema/gerador-typescript/dist/index.part02.js +11 -11
  206. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +42 -42
  207. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -0
  208. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1 -0
  209. package/package.json +7 -2
  210. package/scripts/postinstall.mjs +148 -0
  211. package/skills/sema/SKILL.md +199 -0
  212. package/skills/sema/agents/openai.yaml +4 -0
  213. package/node_modules/@sema/gerador-cpp/dist/index.js.map +0 -1
  214. package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
  215. package/node_modules/@sema/gerador-css/dist/index.part01.js.map +0 -1
  216. package/node_modules/@sema/gerador-css/dist/index.part02.js.map +0 -1
  217. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  218. package/node_modules/@sema/gerador-dotnet/dist/index.js.map +0 -1
  219. package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
  220. package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
  221. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  222. package/node_modules/@sema/gerador-php/dist/index.js.map +0 -1
  223. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  224. package/node_modules/@sema/gerador-python/dist/index.part01.js.map +0 -1
  225. package/node_modules/@sema/gerador-python/dist/index.part02.js.map +0 -1
  226. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  227. package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +0 -1
  228. package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +0 -1
  229. package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +0 -1
  230. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  231. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  232. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +0 -1
  233. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +0 -1
  234. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  235. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +0 -1
  236. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +0 -1
  237. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  238. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  239. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +0 -1
  240. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +0 -1
  241. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +0 -1
  242. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  243. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  244. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  245. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +0 -1
  246. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  247. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +0 -1
  248. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +0 -1
  249. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +0 -1
  250. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +0 -1
  251. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
  252. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  253. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +0 -1
  254. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +0 -1
  255. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +0 -1
  256. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +0 -1
  257. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +0 -1
  258. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +0 -1
  259. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +0 -1
  260. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +0 -1
  261. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  262. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +0 -1
  263. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +0 -1
  264. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +0 -1
  265. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  266. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  267. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
@@ -1,198 +1,198 @@
1
1
  // SEMA-GOVERNED: sema.governanca_ia_contexto
2
2
  // Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
3
3
  import { templateApiRest, templateAuthCompleto, templateCrudSimples } from "./templates.part01.js";
4
- export const templateWorkflow = (moduloNome) => `module ${moduloNome} {
5
- docs {
6
- resumo: "Workflow de automacao com trigger, acoes e condicoes."
7
- }
8
-
9
- entity Workflow {
10
- fields {
11
- id: Id
12
- nome: Texto
13
- ativo: Booleano
14
- trigger_tipo: Texto
15
- trigger_config: Texto
16
- acoes: Lista<Texto>
17
- criado_em: Timestamp
18
- }
19
- }
20
-
21
- task executar_workflow {
22
- input {
23
- workflow_id: Id required
24
- payload: Texto required
25
- contexto: Mapa<Texto, Texto> optional
26
- }
27
- output {
28
- execucao_id: Id
29
- resultado: Texto
30
- status: Texto
31
- duracao_ms: Inteiro
32
- }
33
- rules {
34
- workflow_id deve_ser valido
35
- payload deve_ser json_valido
36
- }
37
- effects {
38
- consulta Workflow
39
- consulta workflow_runtime
40
- persistencia execucao_log
41
- auditoria workflow_executado
42
- }
43
- execucao {
44
- timeout: "30s"
45
- retry: "ate 3 tentativas"
46
- idempotencia: verdadeiro
47
- }
48
- guarantees {
49
- execucao_id existe
50
- status em ["sucesso", "falha", "timeout"]
51
- }
52
- error {
53
- workflow_nao_encontrado: "Workflow nao encontrado."
54
- workflow_inativo: "Workflow esta desativado."
55
- execucao_timeout: "Workflow excedeu tempo limite."
56
- }
57
- }
58
-
59
- flow orquestracao_workflow {
60
- workflow_id: Id
61
- payload: Texto
62
- etapa validar usa executar_workflow com workflow_id = workflow_id, payload = payload em_sucesso processar em_erro registrar_falha
63
- etapa processar usa processar_resultado com execucao_id = validar.execucao_id depende_de validar
64
- etapa registrar_falha usa log_erro_workflow com workflow_id = workflow_id, erro = validar.error depende_de validar
65
- }
4
+ export const templateWorkflow = (moduloNome) => `module ${moduloNome} {
5
+ docs {
6
+ resumo: "Workflow de automacao com trigger, acoes e condicoes."
7
+ }
8
+
9
+ entity Workflow {
10
+ fields {
11
+ id: Id
12
+ nome: Texto
13
+ ativo: Booleano
14
+ trigger_tipo: Texto
15
+ trigger_config: Texto
16
+ acoes: Lista<Texto>
17
+ criado_em: Timestamp
18
+ }
19
+ }
20
+
21
+ task executar_workflow {
22
+ input {
23
+ workflow_id: Id required
24
+ payload: Texto required
25
+ contexto: Mapa<Texto, Texto> optional
26
+ }
27
+ output {
28
+ execucao_id: Id
29
+ resultado: Texto
30
+ status: Texto
31
+ duracao_ms: Inteiro
32
+ }
33
+ rules {
34
+ workflow_id deve_ser valido
35
+ payload deve_ser json_valido
36
+ }
37
+ effects {
38
+ consulta Workflow
39
+ consulta workflow_runtime
40
+ persistencia execucao_log
41
+ auditoria workflow_executado
42
+ }
43
+ execucao {
44
+ timeout: "30s"
45
+ retry: "ate 3 tentativas"
46
+ idempotencia: verdadeiro
47
+ }
48
+ guarantees {
49
+ execucao_id existe
50
+ status em ["sucesso", "falha", "timeout"]
51
+ }
52
+ error {
53
+ workflow_nao_encontrado: "Workflow nao encontrado."
54
+ workflow_inativo: "Workflow esta desativado."
55
+ execucao_timeout: "Workflow excedeu tempo limite."
56
+ }
57
+ }
58
+
59
+ flow orquestracao_workflow {
60
+ workflow_id: Id
61
+ payload: Texto
62
+ etapa validar usa executar_workflow com workflow_id = workflow_id, payload = payload em_sucesso processar em_erro registrar_falha
63
+ etapa processar usa processar_resultado com execucao_id = validar.execucao_id depende_de validar
64
+ etapa registrar_falha usa log_erro_workflow com workflow_id = workflow_id, erro = validar.error depende_de validar
65
+ }
66
66
  }`;
67
- export const templatePedido = (moduloNome) => `module ${moduloNome} {
68
- entity Pedido {
69
- fields {
70
- id: Id
71
- cliente_id: Id
72
- itens: Lista<Texto>
73
- valor_total: Decimal
74
- status: Texto
75
- criado_em: Timestamp
76
- }
77
- }
78
-
79
- task criar_pedido {
80
- input {
81
- cliente_id: Id required
82
- itens: Lista<Texto> required
83
- }
84
- output {
85
- pedido: Pedido
86
- }
87
- rules {
88
- cliente_id deve_ser valido
89
- itens deve_ser nao_vazio
90
- }
91
- effects {
92
- persistencia Pedido
93
- evento pedido_criado
94
- }
95
- guarantees {
96
- pedido existe
97
- pedido.status == "pendente"
98
- }
99
- }
67
+ export const templatePedido = (moduloNome) => `module ${moduloNome} {
68
+ entity Pedido {
69
+ fields {
70
+ id: Id
71
+ cliente_id: Id
72
+ itens: Lista<Texto>
73
+ valor_total: Decimal
74
+ status: Texto
75
+ criado_em: Timestamp
76
+ }
77
+ }
78
+
79
+ task criar_pedido {
80
+ input {
81
+ cliente_id: Id required
82
+ itens: Lista<Texto> required
83
+ }
84
+ output {
85
+ pedido: Pedido
86
+ }
87
+ rules {
88
+ cliente_id deve_ser valido
89
+ itens deve_ser nao_vazio
90
+ }
91
+ effects {
92
+ persistencia Pedido
93
+ evento pedido_criado
94
+ }
95
+ guarantees {
96
+ pedido existe
97
+ pedido.status == "pendente"
98
+ }
99
+ }
100
100
  }`;
101
- export const templateUsuario = (moduloNome) => `module ${moduloNome} {
102
- entity Usuario {
103
- fields {
104
- id: Id
105
- nome: Texto
106
- email: Email
107
- ativo: Booleano
108
- }
109
- }
110
-
111
- task criar_usuario {
112
- input {
113
- nome: Texto required
114
- email: Email required
115
- }
116
- output {
117
- usuario: Usuario
118
- }
119
- rules {
120
- nome deve_ser preenchido
121
- email deve_ser email_valido
122
- email deve_ser unico em Usuario.email
123
- }
124
- effects {
125
- persistencia Usuario
126
- evento usuario_criado
127
- auditoria cadastro_usuario
128
- }
129
- guarantees {
130
- usuario existe
131
- persistencia concluida
132
- }
133
- error {
134
- email_duplicado: "Ja existe usuario com este email."
135
- entrada_invalida: "Os dados informados nao atendem as regras."
136
- }
137
- tests {
138
- caso "cria usuario valido" {
139
- given {
140
- nome: "Ana"
141
- email: "ana@empresa.com"
142
- }
143
- expect {
144
- sucesso: verdadeiro
145
- }
146
- }
147
- }
148
- }
101
+ export const templateUsuario = (moduloNome) => `module ${moduloNome} {
102
+ entity Usuario {
103
+ fields {
104
+ id: Id
105
+ nome: Texto
106
+ email: Email
107
+ ativo: Booleano
108
+ }
109
+ }
110
+
111
+ task criar_usuario {
112
+ input {
113
+ nome: Texto required
114
+ email: Email required
115
+ }
116
+ output {
117
+ usuario: Usuario
118
+ }
119
+ rules {
120
+ nome deve_ser preenchido
121
+ email deve_ser email_valido
122
+ email deve_ser unico em Usuario.email
123
+ }
124
+ effects {
125
+ persistencia Usuario
126
+ evento usuario_criado
127
+ auditoria cadastro_usuario
128
+ }
129
+ guarantees {
130
+ usuario existe
131
+ persistencia concluida
132
+ }
133
+ error {
134
+ email_duplicado: "Ja existe usuario com este email."
135
+ entrada_invalida: "Os dados informados nao atendem as regras."
136
+ }
137
+ tests {
138
+ caso "cria usuario valido" {
139
+ given {
140
+ nome: "Ana"
141
+ email: "ana@empresa.com"
142
+ }
143
+ expect {
144
+ sucesso: verdadeiro
145
+ }
146
+ }
147
+ }
148
+ }
149
149
  }`;
150
- export const templateUpload = (moduloNome) => `module ${moduloNome} {
151
- entity Arquivo {
152
- fields {
153
- id: Id
154
- nome_original: Texto
155
- mime_type: Texto
156
- tamanho_bytes: Inteiro
157
- url: Texto
158
- upload_por: Id
159
- criado_em: Timestamp
160
- }
161
- }
162
-
163
- task upload_arquivo {
164
- input {
165
- arquivo_binario: Texto required
166
- nome_original: Texto required
167
- mime_type: Texto required
168
- }
169
- output {
170
- arquivo: Arquivo
171
- url_acesso: Texto
172
- }
173
- rules {
174
- tamanho_bytes deve_ser <= 10485760 // 10MB
175
- mime_type em ["image/jpeg", "image/png", "application/pdf", "text/plain"]
176
- }
177
- effects {
178
- persistencia Arquivo
179
- storage.write arquivo_binario
180
- auditoria arquivo_uploadado
181
- }
182
- forbidden {
183
- executar_arquivo_uploadado
184
- armazenar_exe_ou_script
185
- permitir_upload_anonimo_sem_rate_limit
186
- }
187
- guarantees {
188
- arquivo existe
189
- url_acesso existe
190
- }
191
- error {
192
- arquivo_muito_grande: "Arquivo excede 10MB."
193
- tipo_nao_permitido: "Tipo de arquivo nao permitido."
194
- }
195
- }
150
+ export const templateUpload = (moduloNome) => `module ${moduloNome} {
151
+ entity Arquivo {
152
+ fields {
153
+ id: Id
154
+ nome_original: Texto
155
+ mime_type: Texto
156
+ tamanho_bytes: Inteiro
157
+ url: Texto
158
+ upload_por: Id
159
+ criado_em: Timestamp
160
+ }
161
+ }
162
+
163
+ task upload_arquivo {
164
+ input {
165
+ arquivo_binario: Texto required
166
+ nome_original: Texto required
167
+ mime_type: Texto required
168
+ }
169
+ output {
170
+ arquivo: Arquivo
171
+ url_acesso: Texto
172
+ }
173
+ rules {
174
+ tamanho_bytes deve_ser <= 10485760 // 10MB
175
+ mime_type em ["image/jpeg", "image/png", "application/pdf", "text/plain"]
176
+ }
177
+ effects {
178
+ persistencia Arquivo
179
+ storage.write arquivo_binario
180
+ auditoria arquivo_uploadado
181
+ }
182
+ forbidden {
183
+ executar_arquivo_uploadado
184
+ armazenar_exe_ou_script
185
+ permitir_upload_anonimo_sem_rate_limit
186
+ }
187
+ guarantees {
188
+ arquivo existe
189
+ url_acesso existe
190
+ }
191
+ error {
192
+ arquivo_muito_grande: "Arquivo excede 10MB."
193
+ tipo_nao_permitido: "Tipo de arquivo nao permitido."
194
+ }
195
+ }
196
196
  }`;
197
197
  export const templatesDisponiveis = {
198
198
  "crud-simples": {
@@ -11,7 +11,11 @@ async function sincronizarKitIaInicial(cwd) {
11
11
  import("./index.part04.js"),
12
12
  import("./agentEntryPoints.js"),
13
13
  ]);
14
- const resumoProjeto = await gerarResumoProjetoIa(cwd, undefined, true);
14
+ const resumoProjeto = await gerarResumoProjetoIa(cwd, undefined, true, {
15
+ modo: "fresh",
16
+ executar: true,
17
+ avisos: [],
18
+ });
15
19
  const indexJson = JSON.parse(fs.readFileSync(path.join(resumoProjeto.pastaSaida, "SEMA_INDEX.json"), "utf8"));
16
20
  const codex = await sincronizarEntrypointCodex(resumoProjeto.baseProjeto, indexJson.agentContextPack);
17
21
  return {
@@ -8,19 +8,19 @@ export function arquivosInitTemplatesBackend(template, arquivosBase) {
8
8
  arquivos = [
9
9
  {
10
10
  caminhoRelativo: "sema.config.json",
11
- conteudo: `{
12
- "origens": ["./contratos"],
13
- "saida": "./generated/nestjs",
14
- "alvos": ["typescript"],
15
- "alvoPadrao": "typescript",
16
- "estruturaSaida": "backend",
17
- "framework": "nestjs",
18
- "modoEstrito": true,
19
- "diretoriosSaidaPorAlvo": {
20
- "typescript": "./generated/nestjs"
21
- },
22
- "convencoesGeracaoPorProjeto": "backend"
23
- }
11
+ conteudo: `{
12
+ "origens": ["./contratos"],
13
+ "saida": "./generated/nestjs",
14
+ "alvos": ["typescript"],
15
+ "alvoPadrao": "typescript",
16
+ "estruturaSaida": "backend",
17
+ "framework": "nestjs",
18
+ "modoEstrito": true,
19
+ "diretoriosSaidaPorAlvo": {
20
+ "typescript": "./generated/nestjs"
21
+ },
22
+ "convencoesGeracaoPorProjeto": "backend"
23
+ }
24
24
  `,
25
25
  },
26
26
  { caminhoRelativo: "src/.gitkeep", conteudo: "" },
@@ -32,19 +32,19 @@ export function arquivosInitTemplatesBackend(template, arquivosBase) {
32
32
  arquivos = [
33
33
  {
34
34
  caminhoRelativo: "sema.config.json",
35
- conteudo: `{
36
- "origens": ["./contratos"],
37
- "saida": "./generated/fastapi",
38
- "alvos": ["python"],
39
- "alvoPadrao": "python",
40
- "estruturaSaida": "backend",
41
- "framework": "fastapi",
42
- "modoEstrito": true,
43
- "diretoriosSaidaPorAlvo": {
44
- "python": "./generated/fastapi"
45
- },
46
- "convencoesGeracaoPorProjeto": "backend"
47
- }
35
+ conteudo: `{
36
+ "origens": ["./contratos"],
37
+ "saida": "./generated/fastapi",
38
+ "alvos": ["python"],
39
+ "alvoPadrao": "python",
40
+ "estruturaSaida": "backend",
41
+ "framework": "fastapi",
42
+ "modoEstrito": true,
43
+ "diretoriosSaidaPorAlvo": {
44
+ "python": "./generated/fastapi"
45
+ },
46
+ "convencoesGeracaoPorProjeto": "backend"
47
+ }
48
48
  `,
49
49
  },
50
50
  { caminhoRelativo: "app/.gitkeep", conteudo: "" },
@@ -56,65 +56,65 @@ export function arquivosInitTemplatesBackend(template, arquivosBase) {
56
56
  arquivos = [
57
57
  {
58
58
  caminhoRelativo: "sema.config.json",
59
- conteudo: `{
60
- "origens": ["./contratos"],
61
- "saida": "./generated",
62
- "alvos": ["typescript"],
63
- "alvoPadrao": "typescript",
64
- "estruturaSaida": "modulos",
65
- "framework": "base",
66
- "modoEstrito": true,
67
- "diretoriosCodigo": ["./src"],
68
- "fontesLegado": ["nextjs", "typescript"],
69
- "diretoriosSaidaPorAlvo": {
70
- "typescript": "./generated/typescript"
71
- },
72
- "convencoesGeracaoPorProjeto": "base"
73
- }
59
+ conteudo: `{
60
+ "origens": ["./contratos"],
61
+ "saida": "./generated",
62
+ "alvos": ["typescript"],
63
+ "alvoPadrao": "typescript",
64
+ "estruturaSaida": "modulos",
65
+ "framework": "base",
66
+ "modoEstrito": true,
67
+ "diretoriosCodigo": ["./src"],
68
+ "fontesLegado": ["nextjs", "typescript"],
69
+ "diretoriosSaidaPorAlvo": {
70
+ "typescript": "./generated/typescript"
71
+ },
72
+ "convencoesGeracaoPorProjeto": "base"
73
+ }
74
74
  `,
75
75
  },
76
76
  {
77
77
  caminhoRelativo: "contratos/health.sema",
78
- conteudo: `module app.health {
79
- task get_api_health {
80
- output {
81
- status: Texto
82
- runtime: Texto
83
- }
84
- impl {
85
- ts: src.app.api.health.route.GET
86
- }
87
- guarantees {
88
- status existe
89
- runtime existe
90
- }
91
- }
92
-
93
- route get_api_health_publico {
94
- metodo: GET
95
- caminho: /api/health
96
- task: get_api_health
97
- }
98
- }
78
+ conteudo: `module app.health {
79
+ task get_api_health {
80
+ output {
81
+ status: Texto
82
+ runtime: Texto
83
+ }
84
+ impl {
85
+ ts: src.app.api.health.route.GET
86
+ }
87
+ guarantees {
88
+ status existe
89
+ runtime existe
90
+ }
91
+ }
92
+
93
+ route get_api_health_publico {
94
+ metodo: GET
95
+ caminho: /api/health
96
+ task: get_api_health
97
+ }
98
+ }
99
99
  `,
100
100
  },
101
101
  {
102
102
  caminhoRelativo: "src/app/api/health/route.ts",
103
- conteudo: `export async function GET() {
104
- return Response.json({
105
- status: "ok",
106
- runtime: "nextjs",
107
- });
108
- }
103
+ conteudo: `export async function GET() {
104
+ return Response.json({
105
+ status: "ok",
106
+ runtime: "nextjs",
107
+ });
108
+ }
109
109
  `,
110
110
  },
111
111
  {
112
112
  caminhoRelativo: "README.md",
113
- conteudo: `# Starter Next.js API + Sema
114
-
115
- - Contratos em \`contratos/\`
116
- - Handlers App Router em \`src/app/api/\`
117
- - Rota de exemplo validada por \`drift\`
113
+ conteudo: `# Starter Next.js API + Sema
114
+
115
+ - Contratos em \`contratos/\`
116
+ - Handlers App Router em \`src/app/api/\`
117
+ - Rota de exemplo validada por \`drift\`
118
118
  `,
119
119
  },
120
120
  ];
@@ -1,4 +1,4 @@
1
- // SEMA-GOVERNED: sema.produto.cli_init_templates
1
+ // SEMA-GOVERNED: sema.produto.cli_init_templates, sema.produto.governanca_ia.drift.cache.modos
2
2
  // Descrição: contrato base e dispatcher dos templates Codex-native de inicialização.
3
3
  import { arquivosInitTemplatesBackend } from "./initTemplatesBackend.js";
4
4
  import { arquivosInitTemplatesWeb } from "./initTemplatesWeb.js";
@@ -73,12 +73,14 @@ Este projeto foi inicializado com Sema.
73
73
  Antes de alterar codigo, contrato ou documentacao:
74
74
 
75
75
  1. leia \`AGENTS.md\`;
76
- 2. rode \`sema --version\`;
77
- 3. rode \`sema resumo\`;
78
- 4. rode \`sema docs-impacto --intencao "<acao>" --json\`;
76
+ 2. rode \`sema --version\`; se o shell não localizar o comando, use \`$HOME/.sema/bin/sema\` no macOS/Linux; no Windows, PowerShell usa \`sema.ps1\` no PATH, cmd.exe usa \`sema.cmd\`, e o fallback absoluto é \`& "$env:SystemRoot\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "$HOME\\.sema\\bin\\sema-managed.ps1" --version\`;
77
+ 3. rode \`sema resumo --drift none\` para contexto contratual; score, confiança e implementação ficam não avaliados;
78
+ 4. rode \`sema docs-impacto --intencao "<acao>" --json\`;
79
79
  5. leia \`docs/commands.md\` antes de escolher comando ou interpretar \`--saida\`;
80
80
  6. use \`sema descobrir recomendar --intencao "<objetivo>" --json\` quando não souber qual capacidade ou pipeline aplicar;
81
- 7. use \`exemplos/\` e \`docs/syntax.md\` antes de criar ou corrigir \`.sema\`.
81
+ 7. use \`exemplos/\` e \`docs/syntax.md\` antes de criar ou corrigir \`.sema\`.
82
+
83
+ Quando precisar comprovar o código vivo, rode \`sema drift <contrato.sema> --escopo modulo --cache fresh --json\`. Cache acelera navegação, mas não é prova final de fechamento.
82
84
 
83
85
  ## Estrutura criada
84
86