@semacode/cli 1.5.16 → 1.5.18

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 (181) hide show
  1. package/AGENTS.md +272 -0
  2. package/LICENSE +22 -0
  3. package/README.md +104 -112
  4. package/SEMA_BRIEF.curto.txt +9 -0
  5. package/SEMA_BRIEF.md +63 -0
  6. package/SEMA_BRIEF.micro.txt +7 -0
  7. package/SEMA_INDEX.json +783 -0
  8. package/dist/angular-consumer-standalone.d.ts +6 -0
  9. package/dist/angular-consumer-standalone.js.map +1 -0
  10. package/dist/cpp-symbols.d.ts +10 -0
  11. package/dist/cpp-symbols.js.map +1 -0
  12. package/dist/docs.d.ts +56 -0
  13. package/dist/docs.js.map +1 -0
  14. package/dist/dotnet-http.d.ts +23 -0
  15. package/dist/dotnet-http.js.map +1 -0
  16. package/dist/drift.d.ts +225 -0
  17. package/dist/drift.js +5 -111
  18. package/dist/drift.js.map +1 -0
  19. package/dist/go-http.d.ts +23 -0
  20. package/dist/go-http.js.map +1 -0
  21. package/dist/importador.d.ts +31 -0
  22. package/dist/importador.js +1 -200
  23. package/dist/importador.js.map +1 -0
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.js +59 -479
  26. package/dist/index.js.map +1 -0
  27. package/dist/java-http.d.ts +23 -0
  28. package/dist/java-http.js.map +1 -0
  29. package/dist/lua-symbols.d.ts +10 -0
  30. package/dist/lua-symbols.js.map +1 -0
  31. package/dist/php-symbols.d.ts +24 -0
  32. package/dist/php-symbols.js.map +1 -0
  33. package/dist/projeto.d.ts +53 -0
  34. package/dist/projeto.js +0 -20
  35. package/dist/projeto.js.map +1 -0
  36. package/dist/python-http.d.ts +23 -0
  37. package/dist/python-http.js.map +1 -0
  38. package/dist/rust-http.d.ts +23 -0
  39. package/dist/rust-http.js.map +1 -0
  40. package/dist/tipos.d.ts +3 -0
  41. package/dist/tipos.js.map +1 -0
  42. package/dist/typescript-http.d.ts +35 -0
  43. package/dist/typescript-http.js.map +1 -0
  44. package/docs/AGENT_STARTER.md +103 -0
  45. package/docs/cli.md +106 -0
  46. package/docs/como-ensinar-a-sema-para-ia.md +149 -0
  47. package/docs/deploy.md +70 -0
  48. package/docs/documentacao.md +63 -0
  49. package/docs/env.md +56 -0
  50. package/docs/extensao-vscode.md +45 -0
  51. package/docs/fluxo-pratico-ia-sema.md +181 -0
  52. package/docs/instalacao-e-primeiro-uso.md +112 -0
  53. package/docs/integracao-com-ia.md +103 -0
  54. package/docs/mcp.md +51 -0
  55. package/docs/pagamento-ponta-a-ponta.md +165 -0
  56. package/docs/persistencia-vendor-first.md +145 -0
  57. package/docs/prompt-base-ia-sema.md +105 -0
  58. package/docs/rollback.md +47 -0
  59. package/docs/sintaxe.md +212 -0
  60. package/exemplos/agendamento.sema +105 -0
  61. package/exemplos/assinatura.sema +133 -0
  62. package/exemplos/auditoria.sema +89 -0
  63. package/exemplos/autenticacao.sema +125 -0
  64. package/exemplos/automacao.sema +107 -0
  65. package/exemplos/cadastro_usuario.sema +54 -0
  66. package/exemplos/calculadora.sema +78 -0
  67. package/exemplos/crud_simples.sema +89 -0
  68. package/exemplos/estoque.sema +127 -0
  69. package/exemplos/exportacao.sema +94 -0
  70. package/exemplos/fila.sema +130 -0
  71. package/exemplos/integracao_externa.sema +94 -0
  72. package/exemplos/multi_tenant.sema +140 -0
  73. package/exemplos/notificacao.sema +149 -0
  74. package/exemplos/operacao_estrategia.sema +633 -0
  75. package/exemplos/pagamento.sema +434 -0
  76. package/exemplos/pagamento_dominio.sema +35 -0
  77. package/exemplos/pedido.sema +255 -0
  78. package/exemplos/permissao.sema +121 -0
  79. package/exemplos/persistencia_vendor_first.sema +86 -0
  80. package/exemplos/relatorio.sema +93 -0
  81. package/exemplos/replica_analitica_erp.sema +160 -0
  82. package/exemplos/testes_embutidos.sema +45 -0
  83. package/exemplos/tratamento_erro.sema +157 -0
  84. package/exemplos/upload_arquivo.sema +93 -0
  85. package/exemplos/webhook.sema +94 -0
  86. package/llms-full.txt +34 -0
  87. package/llms.txt +17 -0
  88. package/node_modules/@sema/gerador-css/dist/index.d.ts +3 -0
  89. package/node_modules/@sema/gerador-css/dist/index.js +592 -0
  90. package/node_modules/@sema/gerador-css/dist/index.js.map +1 -0
  91. package/node_modules/@sema/gerador-css/package.json +7 -0
  92. package/node_modules/@sema/gerador-dart/dist/index.d.ts +3 -0
  93. package/node_modules/@sema/gerador-dart/dist/index.js +44 -0
  94. package/node_modules/@sema/gerador-dart/dist/index.js.map +1 -0
  95. package/node_modules/@sema/gerador-dart/package.json +7 -0
  96. package/node_modules/@sema/gerador-html/dist/index.d.ts +3 -0
  97. package/node_modules/@sema/gerador-html/dist/index.js +163 -0
  98. package/node_modules/@sema/gerador-html/dist/index.js.map +1 -0
  99. package/node_modules/@sema/gerador-html/package.json +7 -0
  100. package/node_modules/@sema/gerador-javascript/dist/index.d.ts +3 -0
  101. package/node_modules/@sema/gerador-javascript/dist/index.js +421 -0
  102. package/node_modules/@sema/gerador-javascript/dist/index.js.map +1 -0
  103. package/node_modules/@sema/gerador-javascript/package.json +7 -0
  104. package/node_modules/@sema/gerador-lua/dist/index.d.ts +3 -0
  105. package/node_modules/@sema/gerador-lua/dist/index.js +328 -0
  106. package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -0
  107. package/node_modules/@sema/gerador-lua/package.json +7 -0
  108. package/node_modules/@sema/gerador-python/dist/index.d.ts +6 -0
  109. package/node_modules/@sema/gerador-python/dist/index.js +729 -0
  110. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -0
  111. package/node_modules/@sema/gerador-python/package.json +7 -0
  112. package/node_modules/@sema/gerador-typescript/dist/index.d.ts +6 -0
  113. package/node_modules/@sema/gerador-typescript/dist/index.js +793 -0
  114. package/node_modules/@sema/gerador-typescript/dist/index.js.map +1 -0
  115. package/node_modules/@sema/gerador-typescript/package.json +7 -0
  116. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +123 -0
  117. package/node_modules/@sema/nucleo/dist/ast/tipos.js +2 -0
  118. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +1 -0
  119. package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +21 -0
  120. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +12 -0
  121. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +1 -0
  122. package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +9 -0
  123. package/node_modules/@sema/nucleo/dist/formatador/index.js +460 -0
  124. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -0
  125. package/node_modules/@sema/nucleo/dist/index.d.ts +35 -0
  126. package/node_modules/@sema/nucleo/dist/index.js +96 -0
  127. package/node_modules/@sema/nucleo/dist/index.js.map +1 -0
  128. package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +5 -0
  129. package/node_modules/@sema/nucleo/dist/ir/conversor.js +877 -0
  130. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -0
  131. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +345 -0
  132. package/node_modules/@sema/nucleo/dist/ir/modelos.js +2 -0
  133. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +1 -0
  134. package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +7 -0
  135. package/node_modules/@sema/nucleo/dist/lexer/lexer.js +122 -0
  136. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +1 -0
  137. package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +8 -0
  138. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +61 -0
  139. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -0
  140. package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +9 -0
  141. package/node_modules/@sema/nucleo/dist/parser/parser.js +767 -0
  142. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -0
  143. package/node_modules/@sema/nucleo/dist/persistencia/contratos.d.ts +39 -0
  144. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +294 -0
  145. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +1 -0
  146. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +59 -0
  147. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1681 -0
  148. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -0
  149. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +106 -0
  150. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +475 -0
  151. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -0
  152. package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +91 -0
  153. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +258 -0
  154. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +1 -0
  155. package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +2 -0
  156. package/node_modules/@sema/nucleo/dist/util/arquivos.js +25 -0
  157. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +1 -0
  158. package/node_modules/@sema/nucleo/package.json +7 -0
  159. package/node_modules/@sema/padroes/dist/index.d.ts +25 -0
  160. package/node_modules/@sema/padroes/dist/index.js +316 -0
  161. package/node_modules/@sema/padroes/dist/index.js.map +1 -0
  162. package/node_modules/@sema/padroes/package.json +7 -0
  163. package/package.json +32 -23
  164. package/semacode-cli-1.3.1.tgz +0 -0
  165. package/src/angular-consumer-standalone.ts +0 -312
  166. package/src/cpp-symbols.ts +0 -82
  167. package/src/docs.ts +0 -535
  168. package/src/dotnet-http.ts +0 -355
  169. package/src/drift.ts +0 -4933
  170. package/src/go-http.ts +0 -118
  171. package/src/importador.ts +0 -3891
  172. package/src/index.ts +0 -5641
  173. package/src/java-http.ts +0 -247
  174. package/src/lua-symbols.ts +0 -114
  175. package/src/php-symbols.ts +0 -462
  176. package/src/projeto.ts +0 -862
  177. package/src/python-http.ts +0 -258
  178. package/src/rust-http.ts +0 -125
  179. package/src/tipos.ts +0 -24
  180. package/src/typescript-http.ts +0 -1076
  181. package/tsconfig.json +0 -20
package/AGENTS.md ADDED
@@ -0,0 +1,272 @@
1
+ # Sema — Regras obrigatorias para IA
2
+
3
+ O Sema e o protocolo de governanca de intencao deste projeto.
4
+ Toda IA deve consultar o Sema antes de qualquer acao sobre codigo ou contratos.
5
+
6
+ ## Mentalidade
7
+
8
+ Pense como IA, nao como humano. Voce nao esta "programando" — esta consumindo e produzindo contratos semanticos estruturados. Ao ler um arquivo .sema, trate cada bloco como um no de grafo com entradas, saidas, efeitos e garantias. Ao gerar codigo, derive tudo do contrato — nunca invente logica que nao esteja declarada. O Sema existe para que voce opere com precisao, rastreabilidade e zero adivinhacao.
9
+
10
+ ## Regras
11
+
12
+ 1. Ao abrir o projeto, chame sema_resumo para entender o estado atual.
13
+ 2. Antes de criar qualquer modulo, rota, task ou contrato, chame sema_inspecionar no arquivo .sema mais proximo.
14
+ 3. Antes de editar codigo existente, chame sema_drift para verificar divergencias entre contrato e implementacao.
15
+ 4. Ao criar ou editar um arquivo .sema, chame sema_validar ao final.
16
+ 5. Nunca invente contratos — use o Sema para descobrir o que ja existe.
17
+ 6. Se qualquer ferramenta Sema retornar erro, corrija o problema antes de prosseguir — nao avance com codigo enquanto houver erros Sema pendentes.
18
+
19
+ ## MCP
20
+
21
+ O servidor MCP do Sema roda localmente via: npx -y @semacode/mcp
22
+ Use as ferramentas: sema_resumo, sema_validar, sema_drift, sema_impacto, sema_renomear_semantico, sema_inspecionar, sema_ir, sema_verificar, sema_contexto_ia, sema_prompt_ia, sema_sync_ai_entrypoints, sema_instalar_exemplos, sema_docs_impacto, sema_finalizar_mudanca.
23
+
24
+ ## Contratos e exemplos
25
+
26
+ - Sempre salve arquivos .sema na pasta `contratos/` do projeto.
27
+ - Crie um arquivo .sema por modulo ou contexto de negocio. Exemplo: `contratos/pedido.sema`, `contratos/pagamento.sema`, `contratos/usuario.sema`. Nunca coloque modulos de contextos diferentes no mesmo arquivo.
28
+ - Antes de criar qualquer arquivo .sema, leia todos os arquivos da pasta `exemplos/` para entender o formato correto da linguagem.
29
+ - Nunca edite os arquivos da pasta `exemplos/`.
30
+
31
+ ## Quando o projeto nao tem .sema
32
+
33
+ Pergunte ao usuario se deseja semantizar o projeto e sugira: sema iniciar
34
+
35
+ ## Exemplos de arquivos .sema (referencia de formato)
36
+
37
+ ### 1. Task simples com testes
38
+ ```
39
+ module exemplos.calculadora {
40
+ task somar {
41
+ input {
42
+ a: Numero required
43
+ b: Numero required
44
+ }
45
+ output {
46
+ resultado: Numero
47
+ }
48
+ rules {
49
+ a deve_ser numero_valido
50
+ b deve_ser numero_valido
51
+ }
52
+ effects {
53
+ auditoria operacao soma
54
+ }
55
+ guarantees {
56
+ resultado existe
57
+ }
58
+ error {
59
+ entrada_invalida: "Os valores precisam ser numericos."
60
+ }
61
+ tests {
62
+ caso "soma basica" {
63
+ given { a: 2 b: 3 }
64
+ expect { sucesso: verdadeiro }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ ```
70
+
71
+ ### 2. Entity + CRUD com route
72
+ ```
73
+ module exemplos.crud.simples {
74
+ entity Produto {
75
+ fields {
76
+ id: Id
77
+ nome: Texto
78
+ preco: Decimal
79
+ ativo: Booleano
80
+ }
81
+ }
82
+
83
+ task criar_produto {
84
+ input {
85
+ nome: Texto required
86
+ preco: Decimal required
87
+ }
88
+ output {
89
+ produto: Produto
90
+ }
91
+ rules {
92
+ nome deve_ser preenchido
93
+ preco deve_ser positivo
94
+ }
95
+ effects {
96
+ persistencia Produto
97
+ auditoria produto_criado
98
+ }
99
+ guarantees {
100
+ produto existe
101
+ }
102
+ tests {
103
+ caso "cria produto" {
104
+ given { nome: "Caneca" preco: 39.9 }
105
+ expect { sucesso: verdadeiro }
106
+ }
107
+ }
108
+ }
109
+
110
+ route produtos {
111
+ metodo: POST
112
+ caminho: /produtos
113
+ task: criar_produto
114
+ finalidade: cadastro_produto
115
+ input { nome: Texto preco: Decimal }
116
+ output { produto: Produto }
117
+ }
118
+ }
119
+ ```
120
+
121
+ ### 3. Cadastro com validacoes e unicidade
122
+ ```
123
+ module exemplos.cadastro.usuario {
124
+ entity Usuario {
125
+ fields {
126
+ id: Id
127
+ nome: Texto
128
+ email: Email
129
+ ativo: Booleano
130
+ }
131
+ }
132
+
133
+ task criar_usuario {
134
+ input {
135
+ nome: Texto required
136
+ email: Email required
137
+ }
138
+ output {
139
+ usuario: Usuario
140
+ }
141
+ rules {
142
+ nome deve_ser preenchido
143
+ email deve_ser email_valido
144
+ email deve_ser unico em Usuario.email
145
+ }
146
+ effects {
147
+ persistencia Usuario
148
+ evento usuario_criado
149
+ auditoria cadastro_usuario
150
+ }
151
+ guarantees {
152
+ usuario existe
153
+ persistencia concluida
154
+ }
155
+ error {
156
+ email_duplicado: "Ja existe usuario com este email."
157
+ entrada_invalida: "Os dados informados nao atendem as regras."
158
+ }
159
+ tests {
160
+ caso "cria usuario valido" {
161
+ given { nome: "Ana" email: "ana@empresa.com" }
162
+ expect { sucesso: verdadeiro }
163
+ }
164
+ }
165
+ }
166
+ }
167
+ ```
168
+
169
+ ### 4. Pagamento com state e flow
170
+ ```
171
+ module exemplos.pagamento {
172
+ task processar_pagamento {
173
+ input {
174
+ pagamento_id: Id required
175
+ valor: Decimal required
176
+ token: Texto required
177
+ }
178
+ output {
179
+ pagamento: Pagamento
180
+ status: StatusPagamento
181
+ }
182
+ rules {
183
+ valor > 0
184
+ token deve_ser valido
185
+ }
186
+ effects {
187
+ consulta gateway_pagamento criticidade = alta
188
+ persistencia Pagamento criticidade = alta
189
+ evento pagamento_autorizado criticidade = media
190
+ auditoria pagamento criticidade = alta
191
+ }
192
+ state ciclo_pagamento {
193
+ transitions {
194
+ PENDENTE -> AUTORIZADO
195
+ AUTORIZADO -> PROCESSADO
196
+ }
197
+ }
198
+ guarantees {
199
+ pagamento existe
200
+ status em [AUTORIZADO, PROCESSADO]
201
+ }
202
+ error {
203
+ autorizacao_negada: "Recusado pelo gateway."
204
+ timeout_gateway: "Gateway nao respondeu."
205
+ }
206
+ tests {
207
+ caso "pagamento autorizado" {
208
+ given { pagamento_id: "pag_1" valor: 199.9 token: "tok_ok" }
209
+ expect { sucesso: verdadeiro }
210
+ }
211
+ caso "pagamento recusado" {
212
+ given { pagamento_id: "pag_err" valor: 10 token: "tok_recusado" }
213
+ expect { sucesso: falso }
214
+ error { tipo: "autorizacao_negada" }
215
+ }
216
+ }
217
+ }
218
+
219
+ flow orquestracao_pagamento {
220
+ pagamento_id: Id
221
+ valor: Decimal
222
+ token: Texto
223
+ etapa autorizar usa processar_pagamento com pagamento_id = pagamento_id, valor = valor, token = token em_sucesso confirmar em_erro registrar_falha
224
+ etapa confirmar usa confirmar_pagamento com pagamento_id = pagamento_id depende_de autorizar
225
+ etapa registrar_falha usa registrar_timeout_pagamento com pagamento_id = pagamento_id depende_de autorizar
226
+ }
227
+ }
228
+ ```
229
+
230
+ ### 5. Tratamento de erro com flow ramificado
231
+ ```
232
+ module exemplos.tratamento.erro {
233
+ task executar_operacao_sensivel {
234
+ input {
235
+ chave: Texto required
236
+ }
237
+ output {
238
+ protocolo: Id
239
+ }
240
+ rules {
241
+ chave deve_ser preenchida
242
+ }
243
+ effects {
244
+ consulta cofre
245
+ auditoria falha_operacao_sensivel
246
+ }
247
+ guarantees {
248
+ protocolo existe
249
+ }
250
+ error {
251
+ acesso_negado: "A chave nao tem permissao."
252
+ recurso_indisponivel: "Servico temporariamente indisponivel."
253
+ }
254
+ tests {
255
+ caso "falha por acesso negado" {
256
+ given { chave: "sem_permissao" }
257
+ expect { sucesso: falso }
258
+ error { tipo: "acesso_negado" }
259
+ }
260
+ }
261
+ }
262
+
263
+ flow resposta_segura {
264
+ chave: Texto
265
+ etapa tentar usa executar_operacao_sensivel com chave = chave em_sucesso concluir em_erro registrar_falha por_erro acesso_negado = tratar_acesso_negado, recurso_indisponivel = agendar_retentativa
266
+ etapa tratar_acesso_negado usa responder_acesso_negado com chave = chave depende_de tentar
267
+ etapa agendar_retentativa usa responder_retentativa com chave = chave depende_de tentar
268
+ etapa registrar_falha usa registrar_auditoria_falha com chave = chave depende_de tentar
269
+ etapa concluir usa registrar_sucesso com protocolo = tentar.protocolo depende_de tentar
270
+ }
271
+ }
272
+ ```
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sema
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
package/README.md CHANGED
@@ -1,112 +1,104 @@
1
- # Sema CLI
2
-
3
- `@semacode/cli` e a interface publica principal da Sema.
4
-
5
- Ela valida contratos `.sema`, mede `drift` entre contrato e codigo vivo, importa legado, gera codigo derivado, produz contexto IA-first e agora governa persistencia vendor-first para `postgres`, `mysql`, `sqlite`, `mongodb` e `redis`.
6
-
7
- Lua e suportado como alvo de geracao e como origem semantica de codigo vivo em `use`, `impl`, IR, `drift` e `sema importar`.
8
- PHP tambem e suportado como origem semantica de codigo vivo em `use`, `impl`, IR, `drift` e `sema importar`, incluindo controllers, funcoes, rotas Laravel/Slim e atributos Symfony/PHP 8.
9
- `sema author` expoe o profile Author para obra, capitulos, cenas, personagens, continuidade, fontes, estilo, agents e flow editorial.
10
- O comando tambem expoe `regrasAutomaticas` com o piso geral do Author: mostrar por evidencia, causa e consequencia, cena com dupla funcao, exposicao com atrito, dialogo com subtexto, final sem slogan e anti-cliche adaptativa.
11
- Em pacotes de contexto e resumos de projeto, os artefatos compactos (`resumo.micro.txt`, `resumo.curto.txt`, `prompt-curto.txt`, `briefing.min.json` e `SEMA_BRIEF.*`) tambem expõem `AUTHOR_RULES_AUTO` para IA pequena nao perder essas regras.
12
-
13
- Tambem resolve documentacao obrigatoria por intencao para impedir IA de agir sem ler ou criar docs relacionadas.
14
-
15
- ## Instalar
16
-
17
- Global:
18
-
19
- ```bash
20
- npm install -g @semacode/cli
21
- sema --help
22
- sema doctor
23
- ```
24
-
25
- Local ao projeto:
26
-
27
- ```bash
28
- npm install @semacode/cli
29
- npx sema --help
30
- ```
31
-
32
- Tarball da release:
33
-
34
- ```bash
35
- npm install -g https://github.com/gerlanss/Sema/releases/latest/download/sema-cli-latest.tgz
36
- ```
37
-
38
- ## Fluxos principais
39
-
40
- Projeto novo:
41
-
42
- ```bash
43
- sema iniciar
44
- sema validar contratos/pedidos.sema --json
45
- sema compilar contratos --alvo typescript --saida ./generated/typescript
46
- sema verificar contratos --json
47
- ```
48
-
49
- Projeto que ja usa Sema:
50
-
51
- ```bash
52
- sema inspecionar . --json
53
- sema resumo contratos/pedidos.sema --micro --para mudanca
54
- sema drift contratos/pedidos.sema --json
55
- sema docs-impacto --intencao "alterar pedidos" --arquivo contratos/pedidos.sema --json
56
- sema contexto-ia contratos/pedidos.sema --saida ./.tmp/contexto --json
57
- ```
58
-
59
- Adocao incremental em legado:
60
-
61
- ```bash
62
- sema importar nextjs ./app --saida ./contratos-importados --json
63
- sema formatar ./contratos-importados
64
- sema validar ./contratos-importados --json
65
- sema drift ./contratos-importados --json
66
- ```
67
-
68
- ## Persistencia vendor-first
69
-
70
- A CLI atual entende blocos `database` e recursos de persistencia no IR, no formatador, no semantico, na importacao, no drift, no impact map, na renomeacao semantica assistida e no `verificar`. O objetivo nao e esconder diferencas entre bancos, e sim capturar essas diferencas no contrato.
71
-
72
- Nesta linha, o `drift` tambem passa a resolver melhor metodos JS/TS browser-side definidos via `Object.assign(...prototype...)` e a entrada padrao da CLI para de tropeçar em `exemplos/` quando o projeto real ja tem `contratos/`, `sema/` ou arquivos `.sema` na raiz.
73
-
74
- Nesta linha, o `drift` tambem passa a enxergar `Preferences`, `localStorage` e `sessionStorage` como persistencia local real, distinguir `ancoragemVinculo` herdada do modulo e cobrir `angular-consumer` standalone mesmo quando o app nao tem `.routes`.
75
-
76
- Nesta linha, o `verificar/typescript` tambem deixa de depender de `tsx`: a CLI transpila os testes gerados com `typescript` e roda `node --test`, evitando `fsevents` e `node-gyp` na instalacao global do Windows.
77
-
78
- Cobertura publica:
79
-
80
- - `postgres`: tabela, relacao, query SQL, schema e capacidades relacionais
81
- - `mysql`: tabela, indice e diferencas operacionais do engine
82
- - `sqlite`: armazenamento local, retencao curta e modos de transacao simples
83
- - `mongodb`: `collection`, `document`, pipeline e indices documentais
84
- - `redis`: `keyspace`, `stream`, TTL e superficies de estado/cache
85
-
86
- ## Pacote publico
87
-
88
- O tarball publico da CLI inclui:
89
-
90
- - `dist/`
91
- - docs IA-first e docs de operacao
92
- - pasta `exemplos/`
93
- - `AGENTS.md`, `llms.txt`, `SEMA_BRIEF.*` e `SEMA_INDEX.json`
94
-
95
- ## Comandos uteis
96
-
97
- - `sema validar <arquivo-ou-pasta> --json`
98
- - `sema drift <arquivo-ou-pasta> --json`
99
- - `sema resumo <arquivo-ou-pasta> --micro --para onboarding`
100
- - `sema prompt-curto <arquivo-ou-pasta> --curto --para mudanca`
101
- - `sema author --help`
102
- - `sema author exemplo [--sensivel] [--json]`
103
- - `sema contexto-ia <arquivo.sema> --saida <diretorio> --json`
104
- - `sema docs-impacto --intencao <acao> [--arquivo <caminho>] [--criar-ausentes] --json`
105
- - `sema finalizar-mudanca --intencao <acao> [--doc-lida <caminho>] --json`
106
- - `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua> --saida <diretorio>`
107
- - `sema verificar <arquivo-ou-pasta> --saida <diretorio>`
108
-
109
- ## Links
110
-
111
- - repositorio: <https://github.com/gerlanss/Sema>
112
- - docs: <https://github.com/gerlanss/Sema/tree/main/docs>
1
+ # Sema CLI
2
+
3
+ `@semacode/cli` e a interface publica principal da Sema.
4
+
5
+ Ela valida contratos `.sema`, mede `drift` entre contrato e codigo vivo, importa legado, gera codigo derivado, produz contexto IA-first e agora governa persistencia vendor-first para `postgres`, `mysql`, `sqlite`, `mongodb` e `redis`.
6
+
7
+ Tambem resolve documentacao obrigatoria por intencao para impedir IA de agir sem ler ou criar docs relacionadas.
8
+
9
+ ## Instalar
10
+
11
+ Global:
12
+
13
+ ```bash
14
+ npm install -g @semacode/cli
15
+ sema --help
16
+ sema doctor
17
+ ```
18
+
19
+ Local ao projeto:
20
+
21
+ ```bash
22
+ npm install @semacode/cli
23
+ npx sema --help
24
+ ```
25
+
26
+ Tarball da release:
27
+
28
+ ```bash
29
+ npm install -g https://github.com/gerlanss/Sema/releases/latest/download/sema-cli-latest.tgz
30
+ ```
31
+
32
+ ## Fluxos principais
33
+
34
+ Projeto novo:
35
+
36
+ ```bash
37
+ sema iniciar
38
+ sema validar contratos/pedidos.sema --json
39
+ sema compilar contratos --alvo typescript --saida ./generated/typescript
40
+ sema verificar contratos --json
41
+ ```
42
+
43
+ Projeto que ja usa Sema:
44
+
45
+ ```bash
46
+ sema inspecionar . --json
47
+ sema resumo contratos/pedidos.sema --micro --para mudanca
48
+ sema drift contratos/pedidos.sema --json
49
+ sema docs-impacto --intencao "alterar pedidos" --arquivo contratos/pedidos.sema --json
50
+ sema contexto-ia contratos/pedidos.sema --saida ./.tmp/contexto --json
51
+ ```
52
+
53
+ Adocao incremental em legado:
54
+
55
+ ```bash
56
+ sema importar nextjs ./app --saida ./contratos-importados --json
57
+ sema formatar ./contratos-importados
58
+ sema validar ./contratos-importados --json
59
+ sema drift ./contratos-importados --json
60
+ ```
61
+
62
+ ## Persistencia vendor-first
63
+
64
+ A CLI 1.5.18 entende blocos `database` e recursos de persistencia na IR, no formatador, no semantico, na importacao, no drift, no impact map, na renomeacao semantica assistida e no `verificar`. O objetivo nao e esconder diferencas entre bancos, e sim capturar essas diferencas no contrato.
65
+
66
+ Nesta linha, o `drift` tambem passa a resolver melhor metodos JS/TS browser-side definidos via `Object.assign(...prototype...)` e a entrada padrao da CLI para de tropeçar em `exemplos/` quando o projeto real ja tem `contratos/`, `sema/` ou arquivos `.sema` na raiz.
67
+
68
+ Nesta linha, o `drift` tambem passa a enxergar `Preferences`, `localStorage` e `sessionStorage` como persistencia local real, distinguir `ancoragemVinculo` herdada do modulo e cobrir `angular-consumer` standalone mesmo quando o app nao tem `.routes`.
69
+
70
+ Nesta linha, o pacote publico da CLI tambem deixa `tsx` fora das dependencias de runtime para evitar ruído de instalacao global no Windows.
71
+
72
+ Cobertura publica:
73
+
74
+ - `postgres`: tabela, relacao, query SQL, schema e capacidades relacionais
75
+ - `mysql`: tabela, indice e diferencas operacionais do engine
76
+ - `sqlite`: armazenamento local, retencao curta e modos de transacao simples
77
+ - `mongodb`: `collection`, `document`, pipeline e indices documentais
78
+ - `redis`: `keyspace`, `stream`, TTL e superficies de estado/cache
79
+
80
+ ## Pacote publico
81
+
82
+ O tarball publico da CLI inclui:
83
+
84
+ - `dist/`
85
+ - docs IA-first e docs de operacao
86
+ - pasta `exemplos/`
87
+ - `AGENTS.md`, `llms.txt`, `SEMA_BRIEF.*` e `SEMA_INDEX.json`
88
+
89
+ ## Comandos uteis
90
+
91
+ - `sema validar <arquivo-ou-pasta> --json`
92
+ - `sema drift <arquivo-ou-pasta> --json`
93
+ - `sema resumo <arquivo-ou-pasta> --micro --para onboarding`
94
+ - `sema prompt-curto <arquivo-ou-pasta> --curto --para mudanca`
95
+ - `sema contexto-ia <arquivo.sema> --saida <diretorio> --json`
96
+ - `sema docs-impacto --intencao <acao> [--arquivo <caminho>] [--criar-ausentes] --json`
97
+ - `sema finalizar-mudanca --intencao <acao> [--doc-lida <caminho>] --json`
98
+ - `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua> --saida <diretorio>`
99
+ - `sema verificar <arquivo-ou-pasta> --saida <diretorio>`
100
+
101
+ ## Links
102
+
103
+ - repositorio: <https://github.com/gerlanss/Sema>
104
+ - docs: <https://github.com/gerlanss/Sema/tree/main/docs>
@@ -0,0 +1,9 @@
1
+ PROJETO: Sema
2
+ BASE: C:\GitHub\Sema
3
+ MODULOS: 6
4
+ ENTRADA_IA: llms.txt -> SEMA_BRIEF.curto.txt -> SEMA_INDEX.json -> AGENTS.md -> README.md
5
+ TOP_MODULOS: app.pedidos, sema.produto.ergonomia_e_dominio, sema.produto.geradores_web, sema.produto.governanca_ia, sema.produto.linguagem_composta, sema.produto.persistencia_vendor_first
6
+ TOP_RISCOS: assistir_renomeacao_semantica:alto, carregar_configuracao_de_persistencia:medio, consultar_scorecard_compatibilidade:medio, converter_bloco_composto_para_ir:alto, converter_persistencia_para_ir_canonico:alto, criar_pedido:alto (+22)
7
+ TOP_LACUNAS: sem_impl, vinculo_quebrado
8
+ TOP_ARQUIVOS: C:\GitHub\Sema\pacotes\cli\src\docs.ts, C:\GitHub\Sema\pacotes\cli\src\drift.ts, C:\GitHub\Sema\pacotes\cli\src\importador.ts, C:\GitHub\Sema\pacotes\cli\src\index.ts, C:\GitHub\Sema\pacotes\cli\src\projeto.ts, C:\GitHub\Sema\pacotes\editor-vscode\extension.js (+11)
9
+ GERADO_EM: 2026-05-15T21:54:48.396Z
package/SEMA_BRIEF.md ADDED
@@ -0,0 +1,63 @@
1
+ # SEMA_BRIEF
2
+
3
+ Sema e IA-first. Este arquivo existe para IA achar o ponto de entrada do projeto sem varrer o repo inteiro no escuro.
4
+
5
+ - Gerado em: `2026-05-15T21:54:48.396Z`
6
+ - Modulos: `6`
7
+
8
+ ## Entrada canonica para IA
9
+
10
+ - Ordem minima: llms.txt -> SEMA_BRIEF.md -> SEMA_INDEX.json -> AGENTS.md -> README.md -> llms-full.txt
11
+ - IA pequena: llms.txt -> SEMA_BRIEF.micro.txt -> SEMA_INDEX.json -> AGENTS.md
12
+ - IA media: llms.txt -> SEMA_BRIEF.curto.txt -> SEMA_INDEX.json -> AGENTS.md -> README.md
13
+ - IA grande: llms-full.txt -> SEMA_BRIEF.md -> SEMA_INDEX.json -> AGENTS.md -> README.md
14
+
15
+ ## Guia por capacidade
16
+
17
+ - pequena: IA gratuita ou com contexto curto. Leia so o cartao semantico e o briefing minimo. Artefatos: resumo.micro.txt, briefing.min.json, prompt-curto.txt.
18
+ - media: IA com contexto medio. Aguenta resumo expandido, briefing minimo e drift. Artefatos: resumo.curto.txt, briefing.min.json, drift.json, prompt-curto.txt.
19
+ - grande: IA com contexto grande ou tool use. Pode consumir o pacote completo. Artefatos: README.md, resumo.md, briefing.json, drift.json, ir.json, ast.json.
20
+
21
+ ## Modulos
22
+
23
+ ### app.pedidos
24
+ - Faz: governa 1 rota(s), 1 task(s) com foco em criar pedido publico
25
+ - Publico: POST /pedidos
26
+ - Tocar: C:\GitHub\Sema\testes\integracao\drift-legado.test.ts
27
+ - Score: 50 | Confianca: media | Risco: alto
28
+ - Lacunas: sem_impl, vinculo_quebrado
29
+
30
+ ### sema.produto.ergonomia_e_dominio
31
+ - Faz: governa 2 superficie(s), 5 task(s) com foco em scorecard atualizado
32
+ - Publico: evento:scorecard_atualizado, policy:compatibilidade_publica
33
+ - Tocar: C:\GitHub\Sema\pacotes\cli\src\projeto.ts, C:\GitHub\Sema\pacotes\nucleo\src\formatador\index.ts, C:\GitHub\Sema\pacotes\nucleo\src\ir\conversor.ts, C:\GitHub\Sema\pacotes\nucleo\src\semantico\analisador.ts
34
+ - Score: 90 | Confianca: alta | Risco: alto
35
+ - Lacunas: sem_impl, vinculo_quebrado
36
+
37
+ ### sema.produto.geradores_web
38
+ - Faz: governa 3 task(s) com foco em gerar contrato javascript
39
+ - Publico: nenhum
40
+ - Tocar: C:\GitHub\Sema\pacotes\gerador-css\src\index.ts, C:\GitHub\Sema\pacotes\gerador-html\src\index.ts, C:\GitHub\Sema\pacotes\gerador-javascript\src\index.ts
41
+ - Score: 90 | Confianca: alta | Risco: medio
42
+ - Lacunas: sem_impl, vinculo_quebrado
43
+
44
+ ### sema.produto.governanca_ia
45
+ - Faz: governa 2 superficie(s), 13 task(s) com foco em preparar briefing contextual
46
+ - Publico: webhook:confirmar_contexto_publico, worker:preparar_briefing_contextual
47
+ - Tocar: C:\GitHub\Sema\pacotes\cli\src\docs.ts, C:\GitHub\Sema\pacotes\cli\src\drift.ts, C:\GitHub\Sema\pacotes\cli\src\index.ts, C:\GitHub\Sema\pacotes\cli\src\projeto.ts (+4)
48
+ - Score: 92 | Confianca: alta | Risco: alto
49
+ - Lacunas: sem_impl, vinculo_quebrado
50
+
51
+ ### sema.produto.linguagem_composta
52
+ - Faz: governa 1 superficie(s), 5 task(s) com foco em regressao composta
53
+ - Publico: storage:regressao_composta
54
+ - Tocar: C:\GitHub\Sema\pacotes\gerador-python\src\index.ts, C:\GitHub\Sema\pacotes\gerador-typescript\src\index.ts, C:\GitHub\Sema\pacotes\nucleo\src\formatador\index.ts, C:\GitHub\Sema\pacotes\nucleo\src\ir\conversor.ts (+1)
55
+ - Score: 90 | Confianca: alta | Risco: alto
56
+ - Lacunas: sem_impl, vinculo_quebrado
57
+
58
+ ### sema.produto.persistencia_vendor_first
59
+ - Faz: governa 6 task(s) com foco em validar compatibilidade vendor first
60
+ - Publico: nenhum
61
+ - Tocar: C:\GitHub\Sema\pacotes\cli\src\drift.ts, C:\GitHub\Sema\pacotes\cli\src\importador.ts, C:\GitHub\Sema\pacotes\cli\src\projeto.ts, C:\GitHub\Sema\pacotes\nucleo\src\formatador\index.ts (+2)
62
+ - Score: 90 | Confianca: alta | Risco: alto
63
+ - Lacunas: sem_impl, vinculo_quebrado
@@ -0,0 +1,7 @@
1
+ PROJETO: Sema
2
+ MODULOS: 6
3
+ ENTRADA_IA: llms.txt -> SEMA_BRIEF.micro.txt -> SEMA_INDEX.json -> AGENTS.md
4
+ TOP_MODULOS: app.pedidos, sema.produto.ergonomia_e_dominio, sema.produto.geradores_web (+3)
5
+ TOP_RISCOS: assistir_renomeacao_semantica:alto, carregar_configuracao_de_persistencia:medio, consultar_scorecard_compatibilidade:medio (+25)
6
+ TOP_LACUNAS: sem_impl, vinculo_quebrado
7
+ GERADO_EM: 2026-05-15T21:54:48.396Z