@semacode/cli 1.5.27 → 1.5.29

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 (81) hide show
  1. package/AGENTS.md +279 -265
  2. package/AGENT_CONTEXT_PACK.json +164 -0
  3. package/README.md +144 -144
  4. package/SEMA_BRIEF.curto.txt +7 -7
  5. package/SEMA_BRIEF.md +464 -65
  6. package/SEMA_BRIEF.micro.txt +6 -6
  7. package/SEMA_INDEX.json +6723 -667
  8. package/dist/bridge.d.ts +52 -0
  9. package/dist/bridge.js +318 -0
  10. package/dist/bridge.js.map +1 -0
  11. package/dist/comandos.d.ts +11 -0
  12. package/dist/comandos.js +110 -0
  13. package/dist/comandos.js.map +1 -0
  14. package/dist/contexto.d.ts +34 -0
  15. package/dist/contexto.js +197 -0
  16. package/dist/contexto.js.map +1 -0
  17. package/dist/drift.d.ts +1 -1
  18. package/dist/drift.js +32 -5
  19. package/dist/drift.js.map +1 -1
  20. package/dist/index.js +391 -64
  21. package/dist/index.js.map +1 -1
  22. package/dist/lua-symbols.d.ts +0 -6
  23. package/dist/lua-symbols.js +11 -78
  24. package/dist/lua-symbols.js.map +1 -1
  25. package/dist/projeto.js +6 -0
  26. package/dist/projeto.js.map +1 -1
  27. package/dist/tipos.d.ts +1 -1
  28. package/docs/AGENT_STARTER.md +109 -109
  29. package/docs/api.md +82 -0
  30. package/docs/cli.md +175 -175
  31. package/docs/como-ensinar-a-sema-para-ia.md +155 -155
  32. package/docs/deploy.md +93 -0
  33. package/docs/documentacao.md +88 -88
  34. package/docs/env.md +105 -105
  35. package/docs/extensao-vscode.md +53 -53
  36. package/docs/fluxo-pratico-ia-sema.md +187 -187
  37. package/docs/instalacao-e-primeiro-uso.md +134 -134
  38. package/docs/integracao-com-ia.md +110 -110
  39. package/docs/mcp.md +292 -292
  40. package/docs/pagamento-ponta-a-ponta.md +171 -171
  41. package/docs/persistencia-vendor-first.md +151 -151
  42. package/docs/prompt-base-ia-sema.md +111 -111
  43. package/docs/repositories.md +54 -54
  44. package/docs/rollback.md +49 -49
  45. package/docs/seguranca.md +126 -126
  46. package/docs/sintaxe.md +218 -218
  47. package/exemplos/author_obra_comum.sema +294 -294
  48. package/exemplos/author_tema_sensivel.sema +264 -264
  49. package/exemplos/profile_game.sema +114 -114
  50. package/exemplos/profile_legal.sema +105 -105
  51. package/exemplos/profile_ops.sema +110 -110
  52. package/exemplos/profile_research.sema +104 -104
  53. package/exemplos/profile_software.sema +123 -123
  54. package/exemplos/profile_workflow_n8n.sema +99 -99
  55. package/llms-full.txt +10 -9
  56. package/llms.txt +8 -7
  57. package/node_modules/@sema/gerador-css/package.json +1 -1
  58. package/node_modules/@sema/gerador-dart/package.json +1 -1
  59. package/node_modules/@sema/gerador-html/package.json +1 -1
  60. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  61. package/node_modules/@sema/gerador-lua/package.json +1 -1
  62. package/node_modules/@sema/gerador-python/package.json +1 -1
  63. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  64. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +1 -1
  65. package/node_modules/@sema/nucleo/dist/index.d.ts +17 -0
  66. package/node_modules/@sema/nucleo/dist/index.js +28 -0
  67. package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
  68. package/node_modules/@sema/nucleo/dist/ir/conversor.js +4 -0
  69. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  70. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
  71. package/node_modules/@sema/nucleo/dist/parser/parser.js +2 -0
  72. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  73. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -2
  74. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +3 -1
  75. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  76. package/node_modules/@sema/nucleo/package.json +1 -1
  77. package/node_modules/@sema/padroes/package.json +1 -1
  78. package/package.json +11 -10
  79. package/dist/php-symbols.d.ts +0 -24
  80. package/dist/php-symbols.js +0 -375
  81. package/dist/php-symbols.js.map +0 -1
package/docs/sintaxe.md CHANGED
@@ -1,218 +1,218 @@
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
-
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.
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
-
43
- ## Subblocos comuns
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`
65
- - `expect`
66
-
67
- ## Tipos primitivos
68
-
69
- Tipos primitivos reconhecidos diretamente:
70
-
71
- - `Texto`
72
- - `Numero`
73
- - `Inteiro`
74
- - `Decimal`
75
- - `Booleano`
76
- - `Data`
77
- - `Timestamp`
78
- - `Objeto`
79
- - `Id`
80
- - `Email`
81
- - `Json`
82
-
83
- `Timestamp` e `Objeto` funcionam como aliases primitivos suportados e preservam o texto original na IR.
84
-
85
- ## Tipos compostos
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
-
96
- Formas suportadas:
97
-
98
- - `Lista<T>`
99
- - `Mapa<K, V>`
100
- - `Opcional<T>`
101
- - `T1|T2`
102
- - `T?`
103
-
104
- ## Predicados normalizados
105
-
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`.
107
-
108
- Exemplo:
109
-
110
- ```sema
111
- rules {
112
- email deve_ser email_valido
113
- nome deve_ser preenchido
114
- }
115
- ```
116
-
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.
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
+
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.
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
+
43
+ ## Subblocos comuns
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`
65
+ - `expect`
66
+
67
+ ## Tipos primitivos
68
+
69
+ Tipos primitivos reconhecidos diretamente:
70
+
71
+ - `Texto`
72
+ - `Numero`
73
+ - `Inteiro`
74
+ - `Decimal`
75
+ - `Booleano`
76
+ - `Data`
77
+ - `Timestamp`
78
+ - `Objeto`
79
+ - `Id`
80
+ - `Email`
81
+ - `Json`
82
+
83
+ `Timestamp` e `Objeto` funcionam como aliases primitivos suportados e preservam o texto original na IR.
84
+
85
+ ## Tipos compostos
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
+
96
+ Formas suportadas:
97
+
98
+ - `Lista<T>`
99
+ - `Mapa<K, V>`
100
+ - `Opcional<T>`
101
+ - `T1|T2`
102
+ - `T?`
103
+
104
+ ## Predicados normalizados
105
+
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`.
107
+
108
+ Exemplo:
109
+
110
+ ```sema
111
+ rules {
112
+ email deve_ser email_valido
113
+ nome deve_ser preenchido
114
+ }
115
+ ```
116
+
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.