@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
@@ -0,0 +1,165 @@
1
+ # Pagamento Ponta a Ponta na Sema
2
+
3
+ Este documento descreve o vertical oficial de pagamento da Sema no fluxo publico atual.
4
+
5
+ O objetivo nao e mostrar um exemplo fofo. O objetivo e demonstrar que a linguagem ja consegue modelar um fluxo de negocio real com:
6
+
7
+ - contrato publico
8
+ - seguranca e autorizacao
9
+ - classificacao de dados
10
+ - segredos e proibicoes explicitas
11
+ - regras
12
+ - efeitos operacionais
13
+ - execucao, idempotencia, retry e compensacao
14
+ - transicoes de estado
15
+ - orquestracao
16
+ - erros publicos
17
+ - testes executaveis com saida, status ou erro observavel
18
+
19
+ ## Arquivos de referencia
20
+
21
+ - `exemplos/pagamento_dominio.sema`
22
+ - `exemplos/pagamento.sema`
23
+
24
+ ## Como o vertical foi dividido
25
+
26
+ ### `exemplos.pagamento.dominio`
27
+
28
+ Centraliza os contratos compartilhados:
29
+
30
+ - `entity Pagamento`
31
+ - `enum StatusPagamento`
32
+ - `state ciclo_pagamento`
33
+
34
+ ### `exemplos.pagamento`
35
+
36
+ Centraliza a operacao do vertical:
37
+
38
+ - `task processar_pagamento`
39
+ - `task confirmar_pagamento`
40
+ - `task notificar_falha_pagamento`
41
+ - `task registrar_timeout_pagamento`
42
+ - `flow orquestracao_pagamento`
43
+ - `route processar_pagamento_publico`
44
+
45
+ ## Narrativa do caso
46
+
47
+ ### Entrada publica
48
+
49
+ A operacao entra por:
50
+
51
+ - `route processar_pagamento_publico`
52
+
53
+ Esse contrato publica:
54
+
55
+ - `pagamento_id`
56
+ - `valor`
57
+ - `token`
58
+
59
+ E expoe:
60
+
61
+ - `pagamento`
62
+ - `status`
63
+ - erros publicos coerentes com a `task`
64
+
65
+ ### Task interna
66
+
67
+ A `task processar_pagamento` faz o trabalho central:
68
+
69
+ - exige `authz`
70
+ - classifica `dados`
71
+ - declara `segredos`, `audit` e `forbidden`
72
+ - valida entrada
73
+ - consulta o gateway
74
+ - persiste o pagamento
75
+ - emite evento
76
+ - notifica comprovante
77
+ - registra auditoria
78
+ - declara `execucao` com idempotencia, timeout, retry, compensacao e criticidade
79
+ - garante consistencia da saida
80
+
81
+ ### Estado e transicoes
82
+
83
+ O `state ciclo_pagamento` ancora o contrato de transicao:
84
+
85
+ - `PENDENTE -> AUTORIZADO`
86
+ - `AUTORIZADO -> PROCESSADO`
87
+ - `PENDENTE -> RECUSADO`
88
+
89
+ A `task` explicita quais transicoes ela realmente usa.
90
+
91
+ ### Flow de orquestracao
92
+
93
+ O `flow orquestracao_pagamento` demonstra:
94
+
95
+ - passagem de contexto
96
+ - confirmacao em caso de sucesso
97
+ - notificacao em caso de recusa
98
+ - registro de timeout em caso de indisponibilidade
99
+ - ramificacao por erro tipado
100
+
101
+ ### Efeitos operacionais
102
+
103
+ O vertical usa as 5 categorias oficiais da Sema:
104
+
105
+ - `persistencia`
106
+ - `consulta`
107
+ - `evento`
108
+ - `notificacao`
109
+ - `auditoria`
110
+
111
+ Tambem usa `criticidade` para deixar claro o peso operacional do efeito.
112
+
113
+ ### Falhas reais
114
+
115
+ O vertical cobre explicitamente:
116
+
117
+ - autorizacao negada
118
+ - saldo insuficiente
119
+ - timeout de gateway
120
+
121
+ ## Fluxo de trabalho recomendado
122
+
123
+ ### 1. Escrever ou ajustar os arquivos `.sema`
124
+
125
+ Use o dominio compartilhado em um modulo e a operacao em outro modulo.
126
+
127
+ ### 2. Aplicar o formato canonico
128
+
129
+ ```bash
130
+ sema formatar exemplos
131
+ ```
132
+
133
+ ### 3. Validar semanticamente
134
+
135
+ ```bash
136
+ sema validar exemplos/pagamento.sema
137
+ ```
138
+
139
+ ### 4. Gerar codigo
140
+
141
+ ```bash
142
+ sema compilar exemplos/pagamento.sema --alvo typescript --saida ./.tmp/pagamento-ts
143
+ sema compilar exemplos/pagamento.sema --alvo python --saida ./.tmp/pagamento-py
144
+ ```
145
+
146
+ ### 5. Verificar o vertical completo
147
+
148
+ ```bash
149
+ sema verificar exemplos/pagamento.sema --json --saida ./.tmp/verificacao-pagamento
150
+ ```
151
+
152
+ ## O que esse vertical prova
153
+
154
+ Se esse vertical passa, a Sema ja consegue demonstrar que:
155
+
156
+ - modela contrato publico
157
+ - modela superficie sensivel sem deixar seguranca invisivel
158
+ - modela efeitos operacionais
159
+ - modela falhas reais
160
+ - modulariza dominio com `use`
161
+ - declara idempotencia e execucao critica sem criar sintaxe nova
162
+ - gera artefatos coerentes para TypeScript e Python
163
+ - executa testes gerados sem gambiarra conceitual
164
+
165
+ Esse e o criterio pratico que sustenta o uso publico do vertical de pagamento como referencia para IA e geracao.
@@ -0,0 +1,145 @@
1
+ # Persistencia Vendor-First
2
+
3
+ Sema 1.5.18 trata banco como superficie semantica de primeira classe. Isso significa assumir diferencas reais entre engines e coloca-las no contrato, no semantico, na IR, no drift, no impact map, na renomeacao assistida, no `verificar` e na extensao. Nesta linha, o `drift` tambem materializa persistencia local real em `Preferences`, `localStorage` e `sessionStorage` quando a task esta ancorada no arquivo que usa essas APIs, preservando o framing IA-first da release atual.
4
+
5
+ ## Engines publicas
6
+
7
+ - `postgres`
8
+ - `mysql`
9
+ - `sqlite`
10
+ - `mongodb`
11
+ - `redis`
12
+
13
+ ## Exemplo PostgreSQL
14
+
15
+ ```sema
16
+ database principal_postgres {
17
+ engine: postgres
18
+ schema: public
19
+ consistency: forte
20
+ durability: alta
21
+ transaction_model: mvcc
22
+ query_model: sql
23
+ capabilities {
24
+ joins
25
+ views
26
+ foreign_keys
27
+ }
28
+ table pedidos {
29
+ entity: Pedido
30
+ }
31
+ relationship pedido_cliente {
32
+ from: Pedido
33
+ to: Cliente
34
+ }
35
+ query buscar_pedidos {
36
+ mode: sql
37
+ }
38
+ }
39
+ ```
40
+
41
+ ## Exemplo MySQL
42
+
43
+ ```sema
44
+ database principal_mysql {
45
+ engine: mysql
46
+ consistency: forte
47
+ durability: alta
48
+ transaction_model: bloqueio
49
+ query_model: sql
50
+ table faturamento {
51
+ table: faturamento
52
+ }
53
+ index faturamento_status {
54
+ table: faturamento
55
+ }
56
+ query buscar_faturas {
57
+ mode: sql
58
+ }
59
+ }
60
+ ```
61
+
62
+ ## Exemplo SQLite
63
+
64
+ ```sema
65
+ database principal_sqlite {
66
+ engine: sqlite
67
+ consistency: snapshot
68
+ durability: media
69
+ transaction_model: single_thread
70
+ query_model: sql
71
+ table cache_local {
72
+ table: cache_local
73
+ }
74
+ retention limpeza_local {
75
+ retention: "7d"
76
+ }
77
+ }
78
+ ```
79
+
80
+ ## Exemplo MongoDB
81
+
82
+ ```sema
83
+ database principal_mongodb {
84
+ engine: mongodb
85
+ consistency: eventual
86
+ durability: alta
87
+ transaction_model: documento
88
+ query_model: documento
89
+ collection pedidos {
90
+ collection: pedidos
91
+ }
92
+ document pedido_snapshot {
93
+ entity: PedidoSnapshot
94
+ }
95
+ query pipeline_pedido {
96
+ mode: pipeline
97
+ }
98
+ }
99
+ ```
100
+
101
+ ## Exemplo Redis
102
+
103
+ ```sema
104
+ database principal_redis {
105
+ engine: redis
106
+ consistency: eventual
107
+ durability: media
108
+ transaction_model: single_thread
109
+ query_model: chave_valor
110
+ keyspace cache_pedidos {
111
+ ttl: "300s"
112
+ }
113
+ stream eventos_pedido {
114
+ surface: fila
115
+ }
116
+ retention expurgo_cache {
117
+ retention: "300s"
118
+ }
119
+ }
120
+ ```
121
+
122
+ ## Compatibilidade calculada
123
+
124
+ Cada recurso recebe compatibilidade por engine:
125
+
126
+ - `nativo`
127
+ - `adaptado`
128
+ - `parcial`
129
+ - `invalido`
130
+
131
+ Isso deixa explicito quando o contrato esta pedindo portabilidade falsa, por exemplo:
132
+
133
+ - `table` em `redis`
134
+ - `foreign_keys` em engine sem suporte equivalente
135
+ - transacao multi-documento tratada como universal
136
+
137
+ ## Onde isso aparece
138
+
139
+ - parser e AST
140
+ - IR canonica
141
+ - analisador semantico
142
+ - formatador
143
+ - `sema drift`
144
+ - `sema importar`
145
+ - extensao VS Code
@@ -0,0 +1,105 @@
1
+ # Prompt-Base Oficial para IA Trabalhar com Sema
2
+
3
+ Este arquivo serve como prompt-base oficial para qualquer IA que precise ler, escrever, revisar ou transformar arquivos `.sema`.
4
+
5
+ O objetivo nao e fazer a IA "improvisar bonito". O objetivo e fazer a IA operar a linguagem com previsibilidade. A Sema nao foi desenhada para ergonomia humana como prioridade; ela foi desenhada para IA. Humanos escrevem, revisam e aprovam; o consumidor primario e o agente.
6
+
7
+ ## Prompt-base
8
+
9
+ Use o texto abaixo como base:
10
+
11
+ ```text
12
+ Voce esta trabalhando com Sema, um contrato semantico IA-first para agentes operarem software vivo.
13
+
14
+ Tecnicamente, a Sema funciona como linguagem de intencao orientada a contrato. Operacionalmente, ela existe para governar semantica acima da stack e traduzir intencao operacional para IA, nao para substituir arquitetura, design ou aprovacao humana.
15
+
16
+ Trate a Sema como contrato semantico executavel e protocolo de governanca IA-first. Nao invente sintaxe, palavras-chave ou blocos fora da gramatica e dos exemplos oficiais.
17
+
18
+ Fontes de verdade, em ordem:
19
+ 1. se o projeto expuser `SEMA_CONTEXT.md`, comece por ele
20
+ 2. `SEMA_BRIEF.md`
21
+ 3. `SEMA_INDEX.json`
22
+ 4. README do projeto
23
+ 5. gramatica e documentacao de sintaxe da Sema
24
+ 6. especificacao semantica da linguagem
25
+ 7. exemplos oficiais, com prioridade para o vertical de pagamento
26
+ 8. `sema resumo` e `briefing.min.json` quando a IA for pequena
27
+ 9. AST, IR e diagnosticos exportados pela CLI em JSON quando a capacidade aguentar
28
+
29
+ Regras de operacao:
30
+ - preserve o significado semantico
31
+ - use o formatador oficial da Sema como fonte unica de estilo
32
+ - use diagnosticos estruturados como contrato de correcao
33
+ - use a IR como fonte de verdade semantica quando houver duvida
34
+ - use `predicadoCanonico` como normalizacao opcional; preserve o `predicado` original
35
+ - nao conclua uma alteracao sem validar e verificar o modulo
36
+ - trate `importar` como bootstrap revisavel, nao como contrato final automatico
37
+ - trate `drift` como medicao de verdade contra codigo vivo
38
+ - trate `impl` como ponte entre task e simbolo real
39
+ - nao invente regra de negocio que o contrato e o codigo nao sustentem
40
+
41
+ Antes de editar `.sema`, entenda:
42
+ - o module alvo
43
+ - os contratos de task, route, error, effects, guarantees, state e flow
44
+ - os exemplos oficiais relacionados
45
+
46
+ Depois de editar `.sema`, execute este fluxo:
47
+ 1. formatar
48
+ 2. validar
49
+ 3. diagnosticar, se houver falha
50
+ 4. verificar
51
+
52
+ Se houver conflito entre texto livre e IR/diagnosticos, priorize a IR e os diagnosticos da CLI.
53
+
54
+ Se algo nao estiver claro, siga a forma ja usada nos exemplos oficiais. Nao improvise sem base.
55
+ ```
56
+
57
+ ## Variacao curta
58
+
59
+ Se voce quiser um prompt menor para uso frequente:
60
+
61
+ ```text
62
+ Trabalhe com Sema como contrato semantico IA-first orientado a agente. Nao invente sintaxe. Use os exemplos oficiais e a gramatica como referencia de escrita. Use `ir --json` como fonte de verdade semantica, `diagnosticos --json` como fonte de correcao e `sema formatar` como fonte unica de estilo. Antes de encerrar, rode validacao e verificacao.
63
+ ```
64
+
65
+ Se voce quiser um prompt ainda mais curto e pronto para colar, use:
66
+
67
+ ```bash
68
+ sema prompt-curto caminho/arquivo.sema --curto --para mudanca
69
+ ```
70
+
71
+ ## Variacao para revisao
72
+
73
+ Use esta versao quando a IA for revisar `.sema` em vez de criar:
74
+
75
+ ```text
76
+ Revise este modulo Sema como contrato semantico executavel. Procure incoerencias entre input, output, rules, effects, guarantees, state, flow, route e error. Considere a IR e os diagnosticos da CLI como fonte de verdade. Nao critique estilo fora do que o formatador oficial resolveria automaticamente.
77
+ ```
78
+
79
+ ## Variacao para geracao
80
+
81
+ Use esta versao quando a IA for escrever modulo novo:
82
+
83
+ ```text
84
+ Gere um modulo Sema seguindo a gramatica oficial, os exemplos do projeto e o estilo do formatador canonico. Estruture o modulo como contrato semantico executavel, com blocos explicitos para entrada, saida, regras, efeitos, garantias, erros, estado, fluxo e testes quando fizer sentido. Nao use sintaxe fora do repertorio ja suportado pela linguagem.
85
+ ```
86
+
87
+ ## Variacao para correcao guiada por diagnostico
88
+
89
+ Use esta versao quando a IA ja tiver erro concreto para corrigir:
90
+
91
+ ```text
92
+ Corrija este modulo Sema a partir dos diagnosticos estruturados da CLI. Preserve a intencao do contrato e altere apenas o necessario para eliminar as falhas. Depois da correcao, aplique o formatador oficial e revalide.
93
+ ```
94
+
95
+ ## O que sempre anexar junto do prompt
96
+
97
+ Idealmente, acompanhe o prompt com:
98
+
99
+ - o arquivo `.sema` alvo
100
+ - o resultado de `sema ast --json`
101
+ - o resultado de `sema ir --json`
102
+ - o resultado de `sema diagnosticos --json`, se houver erro
103
+ - um exemplo oficial parecido
104
+
105
+ Sem isso, a IA pode ate acertar. Com isso, ela trabalha direito.
@@ -0,0 +1,47 @@
1
+ # Rollback
2
+
3
+ Rollback de release publica da Sema deve preservar rastreabilidade. NPM nao deve ser tratado como pasta temporaria: apagar versao publicada e medida extrema e limitada.
4
+
5
+ ## Quando aplicar
6
+
7
+ - CLI ou MCP publicados quebram instalacao basica.
8
+ - VSIX publicada nao inicia ou quebra o Language Server.
9
+ - Instaladores baixam asset errado.
10
+ - Release notes ou checksums apontam para artefato invalido.
11
+
12
+ ## Primeira resposta
13
+
14
+ 1. Marque o problema no GitHub Release.
15
+ 2. Reponte `latest` no NPM para a ultima versao boa, quando necessario:
16
+
17
+ ```bash
18
+ npm dist-tag add @semacode/cli@<versao-boa> latest
19
+ npm dist-tag add @semacode/mcp@<versao-boa> latest
20
+ ```
21
+
22
+ 3. Se o problema for so VSIX ou asset de release, substitua o asset no GitHub Release ou publique uma release patch.
23
+ 4. Prefira publicar patch corretivo (`1.5.18`, por exemplo) quando o pacote ja saiu para usuarios.
24
+
25
+ ## Validacao de rollback
26
+
27
+ ```bash
28
+ npm view @semacode/cli dist-tags --json
29
+ npm view @semacode/mcp dist-tags --json
30
+ npm install -g @semacode/cli@latest
31
+ npm install -g @semacode/mcp@latest
32
+ sema --version
33
+ sema-mcp --help
34
+ ```
35
+
36
+ ## Git
37
+
38
+ Se o commit foi empurrado mas a release falhou antes de publicar NPM, corrija com novo commit. Evite reescrever `main` depois de push publico.
39
+
40
+ Se o tag foi criado errado e ainda nao existe release consumida:
41
+
42
+ ```bash
43
+ git tag -d v<versao>
44
+ git push origin :refs/tags/v<versao>
45
+ ```
46
+
47
+ Use isso somente antes de usuarios consumirem o tag.
@@ -0,0 +1,212 @@
1
+ # Sintaxe Canonica
2
+
3
+ A Sema usa blocos declarativos previsiveis para reduzir ambiguidade no parser, na IR, no drift e no contexto de IA. A escrita humana pode ser legivel, mas o alvo principal da sintaxe e gerar contrato consumivel por agente.
4
+
5
+ ## Regras basicas
6
+
7
+ - um arquivo `.sema` contem um `module` principal
8
+ - cada bloco abre com palavra-chave e fecha com `}`
9
+ - campos usam `nome: valor`
10
+ - blocos declarativos podem aparecer aninhados quando o contrato exigir
11
+ - `tests` usa blocos `caso`
12
+
13
+ ## Blocos de primeira classe
14
+
15
+ - `module`
16
+ - `use`
17
+ - `database`
18
+ - `type`
19
+ - `entity`
20
+ - `enum`
21
+ - `state`
22
+ - `task`
23
+ - `flow`
24
+ - `route`
25
+ - `worker`
26
+ - `evento`
27
+ - `fila`
28
+ - `cron`
29
+ - `webhook`
30
+ - `cache`
31
+ - `storage`
32
+ - `policy`
33
+ - `tests`
34
+ - `docs`
35
+ - `comments`
36
+
37
+ ## Subblocos comuns
38
+
39
+ - `input`
40
+ - `output`
41
+ - `rules`
42
+ - `effects`
43
+ - `auth`
44
+ - `authz`
45
+ - `dados`
46
+ - `audit`
47
+ - `segredos`
48
+ - `forbidden`
49
+ - `impl`
50
+ - `vinculos`
51
+ - `execucao`
52
+ - `guarantees`
53
+ - `error`
54
+ - `fields`
55
+ - `invariants`
56
+ - `transitions`
57
+ - `given`
58
+ - `when`
59
+ - `expect`
60
+
61
+ ## Tipos primitivos
62
+
63
+ Tipos primitivos reconhecidos diretamente:
64
+
65
+ - `Texto`
66
+ - `Numero`
67
+ - `Inteiro`
68
+ - `Decimal`
69
+ - `Booleano`
70
+ - `Data`
71
+ - `Timestamp`
72
+ - `Objeto`
73
+ - `Id`
74
+ - `Email`
75
+ - `Json`
76
+
77
+ `Timestamp` e `Objeto` funcionam como aliases primitivos suportados e preservam o texto original na IR.
78
+
79
+ ## Tipos compostos
80
+
81
+ ```sema
82
+ input {
83
+ ids: Lista<Id> required
84
+ metadata: Mapa<Texto, Texto>
85
+ responsavel: Opcional<Usuario>
86
+ chave_publica: Texto|Id
87
+ }
88
+ ```
89
+
90
+ Formas suportadas:
91
+
92
+ - `Lista<T>`
93
+ - `Mapa<K, V>`
94
+ - `Opcional<T>`
95
+ - `T1|T2`
96
+ - `T?`
97
+
98
+ ## Predicados normalizados
99
+
100
+ Predicados escritos em contrato preservam o texto original em `predicado`. Quando a CLI reconhece uma forma comum, a expressao estruturada pode expor tambem `predicadoCanonico`.
101
+
102
+ Exemplo:
103
+
104
+ ```sema
105
+ rules {
106
+ email deve_ser email_valido
107
+ nome deve_ser preenchido
108
+ }
109
+ ```
110
+
111
+ Na IR, `email_valido` continua existindo como escrito e pode receber uma normalizacao como `valid_email`; `preenchido` pode receber `filled`. Esse campo e opcional e serve a agente/automacao, nao muda a sintaxe publica.
112
+
113
+ ## Persistencia vendor-first
114
+
115
+ O bloco `database` modela banco e recursos persistidos sem apagar as diferencas entre engines.
116
+
117
+ Estrutura base:
118
+
119
+ ```sema
120
+ database principal_postgres {
121
+ engine: postgres
122
+ consistency: forte
123
+ durability: alta
124
+ transaction_model: mvcc
125
+ query_model: sql
126
+ }
127
+ ```
128
+
129
+ Recursos canonicamente suportados:
130
+
131
+ - `table`
132
+ - `index`
133
+ - `relationship`
134
+ - `query`
135
+ - `retention`
136
+ - `lock`
137
+ - `replication`
138
+ - `collection`
139
+ - `document`
140
+ - `keyspace`
141
+ - `stream`
142
+ - `capabilities`
143
+
144
+ Exemplo relacional:
145
+
146
+ ```sema
147
+ database principal_postgres {
148
+ engine: postgres
149
+ schema: public
150
+ capabilities {
151
+ joins
152
+ views
153
+ foreign_keys
154
+ }
155
+ table pedidos {
156
+ entity: Pedido
157
+ }
158
+ relationship pedido_cliente {
159
+ from: Pedido
160
+ to: Cliente
161
+ }
162
+ query buscar_pedidos {
163
+ mode: sql
164
+ }
165
+ }
166
+ ```
167
+
168
+ Exemplo documental:
169
+
170
+ ```sema
171
+ database principal_mongodb {
172
+ engine: mongodb
173
+ query_model: documento
174
+ collection pedidos {
175
+ collection: pedidos
176
+ }
177
+ document pedido_snapshot {
178
+ entity: PedidoSnapshot
179
+ }
180
+ query pipeline_pedido {
181
+ mode: pipeline
182
+ }
183
+ }
184
+ ```
185
+
186
+ Exemplo key-value:
187
+
188
+ ```sema
189
+ database principal_redis {
190
+ engine: redis
191
+ query_model: chave_valor
192
+ keyspace cache_pedidos {
193
+ ttl: "300s"
194
+ }
195
+ stream eventos_pedido {
196
+ surface: fila
197
+ }
198
+ }
199
+ ```
200
+
201
+ ## Compatibilidade declarada
202
+
203
+ O IR de persistencia calcula compatibilidade por recurso com quatro estados:
204
+
205
+ - `nativo`
206
+ - `adaptado`
207
+ - `parcial`
208
+ - `invalido`
209
+
210
+ Isso existe para deixar explicito quando um contrato esta pedindo de um banco algo que ele nao entrega do mesmo jeito.
211
+
212
+ O mesmo principio vale para runtime de orquestracao. Superficies como `webhook`, `cron`, `worker`, `evento` e `fila` podem ser medidas contra familias como `n8n`, mas o contrato continua canonicamente modelado em Sema, sem rebaixar a linguagem para a sintaxe do adapter alvo.