@semacode/cli 1.5.18 → 1.5.19

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 (93) hide show
  1. package/AGENTS.md +268 -260
  2. package/LICENSE +22 -22
  3. package/README.md +144 -104
  4. package/SEMA_BRIEF.curto.txt +7 -5
  5. package/SEMA_BRIEF.md +60 -4
  6. package/SEMA_BRIEF.micro.txt +6 -4
  7. package/SEMA_INDEX.json +917 -41
  8. package/dist/controleComercialSupabase.d.ts +326 -0
  9. package/dist/controleComercialSupabase.js +310 -0
  10. package/dist/controleComercialSupabase.js.map +1 -0
  11. package/dist/docs.js +48 -20
  12. package/dist/docs.js.map +1 -1
  13. package/dist/drift.d.ts +5 -3
  14. package/dist/drift.js +123 -14
  15. package/dist/drift.js.map +1 -1
  16. package/dist/index.js +1889 -38
  17. package/dist/index.js.map +1 -1
  18. package/dist/mcpRemoto.d.ts +32 -0
  19. package/dist/mcpRemoto.js +61 -0
  20. package/dist/mcpRemoto.js.map +1 -0
  21. package/dist/projeto.js +3 -1
  22. package/dist/projeto.js.map +1 -1
  23. package/docs/AGENT_STARTER.md +103 -97
  24. package/docs/cli.md +175 -106
  25. package/docs/como-ensinar-a-sema-para-ia.md +41 -35
  26. package/docs/deploy.md +231 -43
  27. package/docs/documentacao.md +61 -36
  28. package/docs/env.md +105 -56
  29. package/docs/extensao-vscode.md +12 -4
  30. package/docs/fluxo-pratico-ia-sema.md +182 -176
  31. package/docs/instalacao-e-primeiro-uso.md +52 -30
  32. package/docs/integracao-com-ia.md +108 -101
  33. package/docs/mcp.md +292 -51
  34. package/docs/pagamento-ponta-a-ponta.md +34 -28
  35. package/docs/persistencia-vendor-first.md +11 -5
  36. package/docs/prompt-base-ia-sema.md +13 -7
  37. package/docs/rollback.md +17 -15
  38. package/docs/sintaxe.md +180 -174
  39. package/exemplos/agendamento.sema +105 -105
  40. package/exemplos/assinatura.sema +133 -133
  41. package/exemplos/auditoria.sema +89 -89
  42. package/exemplos/autenticacao.sema +125 -125
  43. package/exemplos/author_obra_comum.sema +294 -0
  44. package/exemplos/author_tema_sensivel.sema +264 -0
  45. package/exemplos/automacao.sema +107 -107
  46. package/exemplos/cadastro_usuario.sema +54 -54
  47. package/exemplos/calculadora.sema +78 -78
  48. package/exemplos/crud_simples.sema +89 -89
  49. package/exemplos/estoque.sema +127 -127
  50. package/exemplos/exportacao.sema +94 -94
  51. package/exemplos/fila.sema +130 -130
  52. package/exemplos/integracao_externa.sema +94 -94
  53. package/exemplos/multi_tenant.sema +140 -140
  54. package/exemplos/notificacao.sema +149 -149
  55. package/exemplos/operacao_estrategia.sema +633 -633
  56. package/exemplos/pagamento.sema +434 -434
  57. package/exemplos/pagamento_dominio.sema +35 -35
  58. package/exemplos/pedido.sema +255 -255
  59. package/exemplos/permissao.sema +121 -121
  60. package/exemplos/persistencia_vendor_first.sema +86 -86
  61. package/exemplos/profile_game.sema +114 -0
  62. package/exemplos/profile_legal.sema +105 -0
  63. package/exemplos/profile_ops.sema +110 -0
  64. package/exemplos/profile_research.sema +104 -0
  65. package/exemplos/profile_software.sema +123 -0
  66. package/exemplos/profile_workflow_n8n.sema +99 -0
  67. package/exemplos/relatorio.sema +93 -93
  68. package/exemplos/replica_analitica_erp.sema +160 -160
  69. package/exemplos/testes_embutidos.sema +45 -45
  70. package/exemplos/tratamento_erro.sema +157 -157
  71. package/exemplos/upload_arquivo.sema +93 -93
  72. package/exemplos/webhook.sema +94 -94
  73. package/llms-full.txt +34 -34
  74. package/llms.txt +17 -17
  75. package/node_modules/@sema/gerador-css/dist/index.js +563 -563
  76. package/node_modules/@sema/gerador-css/package.json +1 -1
  77. package/node_modules/@sema/gerador-dart/package.json +1 -1
  78. package/node_modules/@sema/gerador-html/dist/index.js +90 -90
  79. package/node_modules/@sema/gerador-html/package.json +1 -1
  80. package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
  81. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  82. package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
  83. package/node_modules/@sema/gerador-lua/package.json +1 -1
  84. package/node_modules/@sema/gerador-python/dist/index.js +122 -96
  85. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
  86. package/node_modules/@sema/gerador-python/package.json +1 -1
  87. package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
  88. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  89. package/node_modules/@sema/nucleo/dist/formatador/index.js +12 -4
  90. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  91. package/node_modules/@sema/nucleo/package.json +1 -1
  92. package/node_modules/@sema/padroes/package.json +1 -1
  93. package/package.json +11 -11
@@ -1,22 +1,28 @@
1
1
  # Pagamento Ponta a Ponta na Sema
2
2
 
3
- Este documento descreve o vertical oficial de pagamento da Sema no fluxo publico atual.
3
+ <!-- sema:i18n -->
4
+ > EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
5
+ > PT: Português depois, com acentos preservados.
6
+ > ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
4
7
 
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
8
 
7
- - contrato publico
8
- - seguranca e autorizacao
9
+ Este documento descreve o vertical oficial de pagamento da Sema no fluxo público atual.
10
+
11
+ O objetivo não é mostrar um exemplo fofo. O objetivo e demonstrar que a linguagem já consegue modelar um fluxo de negócio real com:
12
+
13
+ - contrato público
14
+ - segurança e autorizacao
9
15
  - classificacao de dados
10
16
  - segredos e proibicoes explicitas
11
17
  - regras
12
18
  - efeitos operacionais
13
- - execucao, idempotencia, retry e compensacao
19
+ - execução, idempotencia, retry e compensacao
14
20
  - transicoes de estado
15
- - orquestracao
21
+ - orquestração
16
22
  - erros publicos
17
- - testes executaveis com saida, status ou erro observavel
23
+ - testes executaveis com saída, status ou erro observavel
18
24
 
19
- ## Arquivos de referencia
25
+ ## Arquivos de referência
20
26
 
21
27
  - `exemplos/pagamento_dominio.sema`
22
28
  - `exemplos/pagamento.sema`
@@ -33,7 +39,7 @@ Centraliza os contratos compartilhados:
33
39
 
34
40
  ### `exemplos.pagamento`
35
41
 
36
- Centraliza a operacao do vertical:
42
+ Centraliza a operação do vertical:
37
43
 
38
44
  - `task processar_pagamento`
39
45
  - `task confirmar_pagamento`
@@ -44,19 +50,19 @@ Centraliza a operacao do vertical:
44
50
 
45
51
  ## Narrativa do caso
46
52
 
47
- ### Entrada publica
53
+ ### Entrada pública
48
54
 
49
- A operacao entra por:
55
+ A operação entra por:
50
56
 
51
57
  - `route processar_pagamento_publico`
52
58
 
53
- Esse contrato publica:
59
+ Esse contrato pública:
54
60
 
55
61
  - `pagamento_id`
56
62
  - `valor`
57
63
  - `token`
58
64
 
59
- E expoe:
65
+ É expoe:
60
66
 
61
67
  - `pagamento`
62
68
  - `status`
@@ -76,7 +82,7 @@ A `task processar_pagamento` faz o trabalho central:
76
82
  - notifica comprovante
77
83
  - registra auditoria
78
84
  - declara `execucao` com idempotencia, timeout, retry, compensacao e criticidade
79
- - garante consistencia da saida
85
+ - garante consistencia da saída
80
86
 
81
87
  ### Estado e transicoes
82
88
 
@@ -86,15 +92,15 @@ O `state ciclo_pagamento` ancora o contrato de transicao:
86
92
  - `AUTORIZADO -> PROCESSADO`
87
93
  - `PENDENTE -> RECUSADO`
88
94
 
89
- A `task` explicita quais transicoes ela realmente usa.
95
+ A `task` explícita quais transicoes ela realmente usa.
90
96
 
91
- ### Flow de orquestracao
97
+ ### Flow de orquestração
92
98
 
93
99
  O `flow orquestracao_pagamento` demonstra:
94
100
 
95
101
  - passagem de contexto
96
- - confirmacao em caso de sucesso
97
- - notificacao em caso de recusa
102
+ - confirmação em caso de sucesso
103
+ - notificação em caso de recusa
98
104
  - registro de timeout em caso de indisponibilidade
99
105
  - ramificacao por erro tipado
100
106
 
@@ -108,7 +114,7 @@ O vertical usa as 5 categorias oficiais da Sema:
108
114
  - `notificacao`
109
115
  - `auditoria`
110
116
 
111
- Tambem usa `criticidade` para deixar claro o peso operacional do efeito.
117
+ Também usa `criticidade` para deixar claro o peso operacional do efeito.
112
118
 
113
119
  ### Falhas reais
114
120
 
@@ -122,9 +128,9 @@ O vertical cobre explicitamente:
122
128
 
123
129
  ### 1. Escrever ou ajustar os arquivos `.sema`
124
130
 
125
- Use o dominio compartilhado em um modulo e a operacao em outro modulo.
131
+ Use o domínio compartilhado em um módulo e a operação em outro módulo.
126
132
 
127
- ### 2. Aplicar o formato canonico
133
+ ### 2. Aplicar o formato canônico
128
134
 
129
135
  ```bash
130
136
  sema formatar exemplos
@@ -136,7 +142,7 @@ sema formatar exemplos
136
142
  sema validar exemplos/pagamento.sema
137
143
  ```
138
144
 
139
- ### 4. Gerar codigo
145
+ ### 4. Gerar código
140
146
 
141
147
  ```bash
142
148
  sema compilar exemplos/pagamento.sema --alvo typescript --saida ./.tmp/pagamento-ts
@@ -151,15 +157,15 @@ sema verificar exemplos/pagamento.sema --json --saida ./.tmp/verificacao-pagamen
151
157
 
152
158
  ## O que esse vertical prova
153
159
 
154
- Se esse vertical passa, a Sema ja consegue demonstrar que:
160
+ Se esse vertical passa, a Sema consegue demonstrar que:
155
161
 
156
- - modela contrato publico
157
- - modela superficie sensivel sem deixar seguranca invisivel
162
+ - modela contrato público
163
+ - modela superficie sensível sem deixar segurança invisível
158
164
  - modela efeitos operacionais
159
165
  - modela falhas reais
160
- - modulariza dominio com `use`
161
- - declara idempotencia e execucao critica sem criar sintaxe nova
166
+ - modulariza domínio com `use`
167
+ - declara idempotencia e execução crítica sem criar sintaxe nova
162
168
  - gera artefatos coerentes para TypeScript e Python
163
169
  - executa testes gerados sem gambiarra conceitual
164
170
 
165
- Esse e o criterio pratico que sustenta o uso publico do vertical de pagamento como referencia para IA e geracao.
171
+ Esse e o criterio pratico que sustenta o uso público do vertical de pagamento como referência para IA e geracao.
@@ -1,6 +1,12 @@
1
- # Persistencia Vendor-First
1
+ # Persistência Vendor-First
2
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.
3
+ <!-- sema:i18n -->
4
+ > EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
5
+ > PT: Português depois, com acentos preservados.
6
+ > ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
7
+
8
+
9
+ Sema 1.5.19 trata banco como superficie semântica de primeira classe. Isso significa assumir diferenças reais entre engines e coloca-las no contrato, no semântico, na IR, no drift, no impact map, na renomeacao assistida, no `verificar` e na extensao. Nesta linha, o `drift` também materializa persistência local real em `Preferences`, `localStorage` e `sessionStorage` quando a task está ancorada no arquivo que usa essas APIs, preservando o framing IA-first da release atual.
4
10
 
5
11
  ## Engines publicas
6
12
 
@@ -128,17 +134,17 @@ Cada recurso recebe compatibilidade por engine:
128
134
  - `parcial`
129
135
  - `invalido`
130
136
 
131
- Isso deixa explicito quando o contrato esta pedindo portabilidade falsa, por exemplo:
137
+ Isso deixa explícito quando o contrato está pedindo portabilidade falsa, por exemplo:
132
138
 
133
139
  - `table` em `redis`
134
140
  - `foreign_keys` em engine sem suporte equivalente
135
- - transacao multi-documento tratada como universal
141
+ - transação multi-documento tratada como universal
136
142
 
137
143
  ## Onde isso aparece
138
144
 
139
145
  - parser e AST
140
146
  - IR canonica
141
- - analisador semantico
147
+ - analisador semântico
142
148
  - formatador
143
149
  - `sema drift`
144
150
  - `sema importar`
@@ -1,8 +1,14 @@
1
1
  # Prompt-Base Oficial para IA Trabalhar com Sema
2
2
 
3
+ <!-- sema:i18n -->
4
+ > EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
5
+ > PT: Português depois, com acentos preservados.
6
+ > ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
7
+
8
+
3
9
  Este arquivo serve como prompt-base oficial para qualquer IA que precise ler, escrever, revisar ou transformar arquivos `.sema`.
4
10
 
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.
11
+ O objetivo não é fazer a IA "improvisar bonito". O objetivo e fazer a IA operar a linguagem com previsibilidade. A Sema não foi desenhada para ergonomia humana como prioridade; ela foi desenhada para IA. Humanos escrevem, revisam e aprovam; o consumidor primário e o agente.
6
12
 
7
13
  ## Prompt-base
8
14
 
@@ -68,9 +74,9 @@ Se voce quiser um prompt ainda mais curto e pronto para colar, use:
68
74
  sema prompt-curto caminho/arquivo.sema --curto --para mudanca
69
75
  ```
70
76
 
71
- ## Variacao para revisao
77
+ ## Variacao para revisão
72
78
 
73
- Use esta versao quando a IA for revisar `.sema` em vez de criar:
79
+ Use está versão quando a IA for revisar `.sema` em vez de criar:
74
80
 
75
81
  ```text
76
82
  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.
@@ -78,15 +84,15 @@ Revise este modulo Sema como contrato semantico executavel. Procure incoerencias
78
84
 
79
85
  ## Variacao para geracao
80
86
 
81
- Use esta versao quando a IA for escrever modulo novo:
87
+ Use está versão quando a IA for escrever módulo novo:
82
88
 
83
89
  ```text
84
90
  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
91
  ```
86
92
 
87
- ## Variacao para correcao guiada por diagnostico
93
+ ## Variacao para correcao guiada por diagnóstico
88
94
 
89
- Use esta versao quando a IA ja tiver erro concreto para corrigir:
95
+ Use está versão quando a IA tiver erro concreto para corrigir:
90
96
 
91
97
  ```text
92
98
  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.
@@ -102,4 +108,4 @@ Idealmente, acompanhe o prompt com:
102
108
  - o resultado de `sema diagnosticos --json`, se houver erro
103
109
  - um exemplo oficial parecido
104
110
 
105
- Sem isso, a IA pode ate acertar. Com isso, ela trabalha direito.
111
+ Sem isso, a IA pode até acertar. Com isso, ela trabalha direito.
package/docs/rollback.md CHANGED
@@ -1,47 +1,49 @@
1
1
  # Rollback
2
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.
3
+ <!-- sema:i18n -->
4
+ > EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
5
+ > PT: Português depois, com acentos preservados.
6
+ > ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
7
+
8
+
9
+ Rollback de release pública da Sema deve preservar rastreabilidade. NPM não deve ser tratado como pasta temporaria: apagar versão publicada e medida extrema e limitada.
4
10
 
5
11
  ## Quando aplicar
6
12
 
7
- - CLI ou MCP publicados quebram instalacao basica.
8
- - VSIX publicada nao inicia ou quebra o Language Server.
13
+ - CLI publicada quebra instalação básica.
14
+ - VSIX publicada não inicia ou quebra o Language Server.
9
15
  - Instaladores baixam asset errado.
10
- - Release notes ou checksums apontam para artefato invalido.
16
+ - Release notes ou checksums apontam para artefato inválido.
11
17
 
12
18
  ## Primeira resposta
13
19
 
14
20
  1. Marque o problema no GitHub Release.
15
- 2. Reponte `latest` no NPM para a ultima versao boa, quando necessario:
21
+ 2. Reponte `latest` no NPM para a última versão boa, quando necessário:
16
22
 
17
23
  ```bash
18
24
  npm dist-tag add @semacode/cli@<versao-boa> latest
19
- npm dist-tag add @semacode/mcp@<versao-boa> latest
20
25
  ```
21
26
 
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.
27
+ 3. Se o problema for VSIX ou asset de release, substitua o asset no GitHub Release ou publique uma release patch.
28
+ 4. Prefira publicar patch corretivo (`1.5.19`, por exemplo) quando o pacote saiu para usuários.
24
29
 
25
- ## Validacao de rollback
30
+ ## Validação de rollback
26
31
 
27
32
  ```bash
28
33
  npm view @semacode/cli dist-tags --json
29
- npm view @semacode/mcp dist-tags --json
30
34
  npm install -g @semacode/cli@latest
31
- npm install -g @semacode/mcp@latest
32
35
  sema --version
33
- sema-mcp --help
34
36
  ```
35
37
 
36
38
  ## Git
37
39
 
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.
40
+ Se o commit foi empurrado mas a release falhou antes de publicar NPM, corrija com novo commit. Evite reescrever `main` depois de push público.
39
41
 
40
- Se o tag foi criado errado e ainda nao existe release consumida:
42
+ Se o tag foi criado errado e ainda não existe release consumida:
41
43
 
42
44
  ```bash
43
45
  git tag -d v<versao>
44
46
  git push origin :refs/tags/v<versao>
45
47
  ```
46
48
 
47
- Use isso somente antes de usuarios consumirem o tag.
49
+ Use isso somente antes de usuários consumirem o tag.
package/docs/sintaxe.md CHANGED
@@ -1,61 +1,67 @@
1
- # Sintaxe Canonica
2
-
1
+ # Sintaxe Canonica
2
+
3
+ <!-- sema:i18n -->
4
+ > EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
5
+ > PT: Português depois, com acentos preservados.
6
+ > ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
7
+
8
+
3
9
  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
-
10
+
11
+ ## Regras basicas
12
+
13
+ - um arquivo `.sema` contem um `module` principal
14
+ - cada bloco abre com palavra-chave e fecha com `}`
15
+ - campos usam `nome: valor`
16
+ - blocos declarativos podem aparecer aninhados quando o contrato exigir
17
+ - `tests` usa blocos `caso`
18
+
19
+ ## Blocos de primeira classe
20
+
21
+ - `module`
22
+ - `use`
23
+ - `database`
24
+ - `type`
25
+ - `entity`
26
+ - `enum`
27
+ - `state`
28
+ - `task`
29
+ - `flow`
30
+ - `route`
31
+ - `worker`
32
+ - `evento`
33
+ - `fila`
34
+ - `cron`
35
+ - `webhook`
36
+ - `cache`
37
+ - `storage`
38
+ - `policy`
39
+ - `tests`
40
+ - `docs`
41
+ - `comments`
42
+
37
43
  ## 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`
44
+
45
+ - `input`
46
+ - `output`
47
+ - `rules`
48
+ - `effects`
49
+ - `auth`
50
+ - `authz`
51
+ - `dados`
52
+ - `audit`
53
+ - `segredos`
54
+ - `forbidden`
55
+ - `impl`
56
+ - `vinculos`
57
+ - `execucao`
58
+ - `guarantees`
59
+ - `error`
60
+ - `fields`
61
+ - `invariants`
62
+ - `transitions`
63
+ - `given`
64
+ - `when`
59
65
  - `expect`
60
66
 
61
67
  ## Tipos primitivos
@@ -77,27 +83,27 @@ Tipos primitivos reconhecidos diretamente:
77
83
  `Timestamp` e `Objeto` funcionam como aliases primitivos suportados e preservam o texto original na IR.
78
84
 
79
85
  ## 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
-
86
+
87
+ ```sema
88
+ input {
89
+ ids: Lista<Id> required
90
+ metadata: Mapa<Texto, Texto>
91
+ responsavel: Opcional<Usuario>
92
+ chave_publica: Texto|Id
93
+ }
94
+ ```
95
+
90
96
  Formas suportadas:
91
-
92
- - `Lista<T>`
93
- - `Mapa<K, V>`
94
- - `Opcional<T>`
95
- - `T1|T2`
97
+
98
+ - `Lista<T>`
99
+ - `Mapa<K, V>`
100
+ - `Opcional<T>`
101
+ - `T1|T2`
96
102
  - `T?`
97
103
 
98
104
  ## Predicados normalizados
99
105
 
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`.
106
+ Predicados escritos em contrato preservam o texto original em `predicado`. Quando a CLI reconhece uma forma comum, a expressao estruturada pode expor também `predicadoCanonico`.
101
107
 
102
108
  Exemplo:
103
109
 
@@ -108,105 +114,105 @@ rules {
108
114
  }
109
115
  ```
110
116
 
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.
117
+ 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, não muda a sintaxe pública.
118
+
119
+ ## Persistência vendor-first
120
+
121
+ O bloco `database` modela banco e recursos persistidos sem apagar as diferenças entre engines.
122
+
123
+ Estrutura base:
124
+
125
+ ```sema
126
+ database principal_postgres {
127
+ engine: postgres
128
+ consistency: forte
129
+ durability: alta
130
+ transaction_model: mvcc
131
+ query_model: sql
132
+ }
133
+ ```
134
+
135
+ Recursos canonicamente suportados:
136
+
137
+ - `table`
138
+ - `index`
139
+ - `relationship`
140
+ - `query`
141
+ - `retention`
142
+ - `lock`
143
+ - `replication`
144
+ - `collection`
145
+ - `document`
146
+ - `keyspace`
147
+ - `stream`
148
+ - `capabilities`
149
+
150
+ Exemplo relacional:
151
+
152
+ ```sema
153
+ database principal_postgres {
154
+ engine: postgres
155
+ schema: public
156
+ capabilities {
157
+ joins
158
+ views
159
+ foreign_keys
160
+ }
161
+ table pedidos {
162
+ entity: Pedido
163
+ }
164
+ relationship pedido_cliente {
165
+ from: Pedido
166
+ to: Cliente
167
+ }
168
+ query buscar_pedidos {
169
+ mode: sql
170
+ }
171
+ }
172
+ ```
173
+
174
+ Exemplo documental:
175
+
176
+ ```sema
177
+ database principal_mongodb {
178
+ engine: mongodb
179
+ query_model: documento
180
+ collection pedidos {
181
+ collection: pedidos
182
+ }
183
+ document pedido_snapshot {
184
+ entity: PedidoSnapshot
185
+ }
186
+ query pipeline_pedido {
187
+ mode: pipeline
188
+ }
189
+ }
190
+ ```
191
+
192
+ Exemplo key-value:
193
+
194
+ ```sema
195
+ database principal_redis {
196
+ engine: redis
197
+ query_model: chave_valor
198
+ keyspace cache_pedidos {
199
+ ttl: "300s"
200
+ }
201
+ stream eventos_pedido {
202
+ surface: fila
203
+ }
204
+ }
205
+ ```
206
+
207
+ ## Compatibilidade declarada
208
+
209
+ O IR de persistência calcula compatibilidade por recurso com quatro estados:
210
+
211
+ - `nativo`
212
+ - `adaptado`
213
+ - `parcial`
214
+ - `invalido`
215
+
216
+ Isso existe para deixar explícito quando um contrato está pedindo de um banco algo que ele não entrega do mesmo jeito.
217
+
218
+ O mesmo principio vale para runtime de orquestração. Superfícies como `webhook`, `cron`, `worker`, `evento` e `fila` podem ser medidas contra famílias como `n8n`, mas o contrato continua canonicamente modelado em Sema, sem rebaixar a linguagem para a sintaxe do adapter alvo.