@semacode/cli 1.3.7 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +61 -41
  2. package/dist/drift.d.ts +5 -3
  3. package/dist/drift.js +532 -27
  4. package/dist/drift.js.map +1 -1
  5. package/dist/importador.d.ts +2 -0
  6. package/dist/importador.js +166 -7
  7. package/dist/importador.js.map +1 -1
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/projeto.d.ts +6 -1
  11. package/dist/projeto.js.map +1 -1
  12. package/docs/cli.md +101 -0
  13. package/docs/instalacao-e-primeiro-uso.md +108 -196
  14. package/docs/integracao-com-ia.md +43 -200
  15. package/docs/persistencia-vendor-first.md +145 -0
  16. package/docs/sintaxe.md +67 -251
  17. package/exemplos/persistencia_vendor_first.sema +86 -0
  18. package/node_modules/@sema/gerador-css/package.json +1 -1
  19. package/node_modules/@sema/gerador-dart/package.json +1 -1
  20. package/node_modules/@sema/gerador-html/package.json +1 -1
  21. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  22. package/node_modules/@sema/gerador-lua/package.json +1 -1
  23. package/node_modules/@sema/gerador-python/package.json +1 -1
  24. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  25. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -1
  26. package/node_modules/@sema/nucleo/dist/formatador/index.js +32 -17
  27. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  28. package/node_modules/@sema/nucleo/dist/index.d.ts +1 -0
  29. package/node_modules/@sema/nucleo/dist/index.js +1 -0
  30. package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
  31. package/node_modules/@sema/nucleo/dist/ir/conversor.js +94 -0
  32. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  33. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +60 -0
  34. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +15 -0
  35. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
  36. package/node_modules/@sema/nucleo/dist/parser/parser.js +98 -3
  37. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  38. package/node_modules/@sema/nucleo/dist/persistencia/contratos.d.ts +39 -0
  39. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +294 -0
  40. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +1 -0
  41. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -1
  42. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +118 -2
  43. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  44. package/node_modules/@sema/nucleo/package.json +1 -1
  45. package/node_modules/@sema/padroes/package.json +1 -1
  46. package/package.json +11 -11
@@ -1,228 +1,71 @@
1
1
  # Integracao com IA
2
2
 
3
- A Sema foi desenhada para IA editar backend vivo com menos chute. O ponto nao e "a IA gera tudo"; o ponto e deixar contrato, vinculo e contexto operacional estruturados o bastante para a IA nao trabalhar igual um bicho tonto. Leitura humana continua possivel, mas nao e o centro do desenho.
3
+ Sema foi feita para IA operar software vivo com menos adivinhacao.
4
4
 
5
- ## Moldura correta
5
+ ## Ordem recomendada
6
6
 
7
- Se uma IA tratar a Sema como enfeite declarativo, ela vai usar mal. A moldura certa e esta:
7
+ 1. `sema inspecionar . --json`
8
+ 2. `sema resumo <arquivo-ou-pasta> --micro --para onboarding`
9
+ 3. `sema drift <arquivo-ou-pasta> --json`
10
+ 4. `sema contexto-ia <arquivo.sema> --saida <diretorio> --json`
8
11
 
9
- - `impl` liga intencao a simbolo executavel
10
- - `vinculos` ligam contrato a arquivo, simbolo, recurso e superficie real
11
- - `execucao` explicita timeout, retry, compensacao e criticidade
12
- - `drift` mede verdade contra codigo vivo
13
- - `contexto-ia` empacota briefing operacional antes da edicao
12
+ Nao comece cavando codigo bruto quando a ferramenta ja consegue te dar contrato, score, lacuna e superficie viva.
14
13
 
15
- Em resumo: a Sema nao serve para a IA adivinhar melhor. Ela serve para a IA precisar adivinhar menos.
14
+ ## Por capacidade do modelo
16
15
 
17
- ## Fluxo recomendado
16
+ IA pequena:
18
17
 
19
- Quando o trabalho cair em projeto vivo, o fluxo canonico agora e:
20
-
21
- ```bash
22
- sema inspecionar . --json
23
- sema resumo contratos/modulo.sema --micro --para mudanca
24
- sema drift contratos/modulo.sema --json
25
- sema contexto-ia contratos/modulo.sema --saida ./.tmp/contexto --json
26
- ```
27
-
28
- Leitura rapida:
29
-
30
- 1. `inspecionar` descobre base do projeto, diretorios de codigo, fontes legado e modulos relevantes.
31
- 2. `resumo` entrega o menor cartao semantico util para a IA atual.
32
- 3. `drift` mede impls, vinculos, rotas, recursos, score semantico e confianca.
33
- 4. `contexto-ia` gera o pacote que a IA deveria ler antes de editar.
34
-
35
- ## Capacidade da IA
36
-
37
- A Sema agora assume explicitamente que nem toda IA aguenta o pacote completo.
38
-
39
- - IA pequena ou gratuita: comece em `resumo.micro.txt`, `briefing.min.json` e `prompt-curto.txt`
40
- - IA media: suba para `resumo.curto.txt`, `briefing.min.json` e `drift.json`
41
- - IA grande ou com tool use: leia `README.md`, `resumo.md`, `briefing.json`, `drift.json`, `ir.json` e `ast.json`
42
-
43
- Se voce joga `ast.json` inteiro em modelo pequeno e depois reclama da resposta, foi voce que fez cagada operacional.
44
-
45
- ## O que a IA deve consumir
46
-
47
- No minimo, para IA pequena:
48
-
49
- - `resumo.micro.txt`
18
+ - `sema resumo --micro`
50
19
  - `briefing.min.json`
20
+ - `prompt-curto.txt`
51
21
 
52
- No minimo, para IA media:
22
+ IA media:
53
23
 
54
- - `resumo.curto.txt`
55
- - `briefing.min.json`
24
+ - `sema resumo --curto`
56
25
  - `drift.json`
26
+ - `briefing.min.json`
57
27
 
58
- No minimo, para IA grande:
28
+ IA grande:
59
29
 
60
- - `ir.json`
61
- - `drift.json`
30
+ - `sema contexto-ia`
62
31
  - `briefing.json`
63
- - o proprio contrato `.sema`
64
-
65
- O `briefing.json` agora e a peca mais operacional do pacote. Ele responde perguntas que agente serio precisa responder antes de mexer em codigo:
66
-
67
- - o que tocar
68
- - o que validar
69
- - o que esta frouxo
70
- - o que foi inferido
71
- - quais simbolos estao relacionados
72
- - quais superficies publicas podem ser afetadas
73
- - quais testes minimos rodar
74
-
75
- ## Saida relevante do pacote `contexto-ia`
76
-
77
- Hoje o pacote pode incluir:
78
-
79
- - `resumo.micro.txt`
80
- - `resumo.curto.txt`
81
- - `resumo.md`
82
- - `briefing.min.json`
83
- - `prompt-curto.txt`
84
- - `ast.json`
85
32
  - `ir.json`
86
- - `diagnosticos.json`
87
- - `drift.json`
88
- - `briefing.json`
89
- - `README.md`
90
- - `impl.<origem>.txt` quando existir implementacao vinculada
91
-
92
- ## Score, confianca e risco
93
-
94
- `drift`, `inspecionar` e `contexto-ia` passam a expor sinais que ajudam a IA a nao tratar rascunho como verdade absoluta:
95
-
96
- - `scoreSemantico`
97
- - `confiancaVinculo`
98
- - `riscoOperacional`
99
- - `lacunas`
100
- - `vinculos_validos`
101
- - `vinculos_quebrados`
102
-
103
- Leitura pratica:
104
-
105
- - score alto + confianca alta: a IA pode editar com trilha boa
106
- - score medio: ainda precisa ler contrato e conferir codigo vivo
107
- - vinculo quebrado: a IA deve reduzir ousadia e consertar rastreabilidade antes de refatorar igual doida
108
-
109
- ## Superficies que a IA pode esperar
110
-
111
- A linguagem agora trata estas bordas como primeira classe:
112
-
113
- - `route`
114
- - `worker`
115
- - `evento`
116
- - `fila`
117
- - `cron`
118
- - `webhook`
119
- - `cache`
120
- - `storage`
121
- - `policy`
122
-
123
- Isso importa porque backend real nao vive so de HTTP. Se a IA vai editar stack viva, ela precisa enxergar job, evento, webhook e recurso assincrono como parte do contrato, nao como sobra esquecida no runtime.
124
-
125
- ## Contrato operacional
126
-
127
- Dentro de `task` e superficies, a IA deve prestar atencao em:
128
-
129
- - `input`
130
- - `output`
131
- - `effects`
132
- - `impl`
133
- - `vinculos`
134
- - `execucao`
135
- - `guarantees`
136
- - `error`
137
-
138
- Exemplo minimo:
139
-
140
- ```sema
141
- task medir_drift {
142
- input {
143
- contrato: Texto required
144
- }
145
- output {
146
- score: Decimal
147
- }
148
- impl {
149
- ts: cli.src.drift.analisarDriftLegado
150
- }
151
- vinculos {
152
- arquivo: "pacotes/cli/src/drift.ts"
153
- simbolo: cli.src.drift.analisarDriftLegado
154
- }
155
- execucao {
156
- timeout: "30s"
157
- retry: "3x exponencial"
158
- criticidade_operacional: alta
159
- }
160
- guarantees {
161
- score existe
162
- }
163
- }
164
- ```
165
-
166
- ## Comandos que agente serio nao deveria ignorar
167
-
168
- - `sema ast arquivo.sema --json`
169
- - `sema ir arquivo.sema --json`
170
- - `sema validar arquivo.sema --json`
171
- - `sema diagnosticos arquivo.sema --json`
172
- - `sema formatar arquivo.sema`
173
- - `sema inspecionar [arquivo-ou-pasta] --json`
174
- - `sema drift [arquivo-ou-pasta] --json`
175
- - `sema contexto-ia arquivo.sema [--saida <diretorio>] --json`
176
- - `sema verificar [arquivo-ou-pasta] --json`
177
-
178
- ## Fluxos comuns
179
-
180
- Quando a tarefa for so modelagem:
181
-
182
- ```bash
183
- sema ast contratos/pedidos.sema --json
184
- sema ir contratos/pedidos.sema --json
185
- sema formatar contratos/pedidos.sema
186
- sema validar contratos/pedidos.sema --json
187
- ```
188
-
189
- Quando a tarefa envolver codigo derivado:
33
+ - `ast.json`
190
34
 
191
- ```bash
192
- sema inspecionar . --json
193
- sema drift contratos/pedidos.sema --json
194
- sema contexto-ia contratos/pedidos.sema --saida ./.tmp/contexto-pedidos --json
195
- sema compilar contratos/pedidos.sema --alvo typescript --framework nestjs --estrutura backend --saida ./generated/nestjs
196
- ```
35
+ ## MCP
197
36
 
198
- Quando a tarefa nasce num legado:
37
+ Se o agente usa MCP:
199
38
 
200
39
  ```bash
201
- sema importar flask ./backend-flask --saida ./sema/importado --json
202
- sema formatar ./sema/importado
203
- sema validar ./sema/importado --json
204
- sema drift ./sema/importado --json
40
+ npm install -g @semacode/cli @semacode/mcp
205
41
  ```
206
42
 
207
- ## Showcase oficial do repo
43
+ Depois configure:
208
44
 
209
- Se voce estiver no monorepo da Sema, o showcase [showcases/ranking-showroom](../showcases/ranking-showroom/) continua sendo a melhor vitrine do fluxo completo:
210
-
211
- ```bash
212
- cd showcases/ranking-showroom
213
- sema inspecionar . --json
214
- sema drift contratos/ranking_showroom.sema --json
215
- sema contexto-ia contratos/ranking_showroom.sema --saida ./.tmp/contexto-ranking --json
45
+ ```json
46
+ {
47
+ "mcpServers": {
48
+ "sema": {
49
+ "command": "npx",
50
+ "args": ["-y", "@semacode/mcp"]
51
+ }
52
+ }
53
+ }
216
54
  ```
217
55
 
218
- O valor aqui nao e so "validou". O valor e sair com score, confianca, drift e briefing suficientes para editar o backend Flask real sem sair cavando arquivo a esmo.
56
+ ## Regras praticas
219
57
 
220
- ## Fechamento operacional
58
+ - trate `.sema` e IR como fonte de verdade semantica
59
+ - trate `drift` como juiz da adocao incremental
60
+ - use `briefing.min.json` antes de abrir dezenas de arquivos
61
+ - nao invente sintaxe fora da gramatica oficial
62
+ - em persistencia, nao assuma que bancos diferentes tem o mesmo contrato operacional
221
63
 
222
- Quando a IA terminar a mudanca fora do monorepo:
64
+ ## Arquivos uteis no repo
223
65
 
224
- ```bash
225
- sema formatar contratos/modulo.sema
226
- sema validar contratos/modulo.sema --json
227
- sema verificar contratos --json --saida ./.tmp/verificacao-final
228
- ```
66
+ - `AGENTS.md`
67
+ - `llms.txt`
68
+ - `llms-full.txt`
69
+ - `SEMA_BRIEF.md`
70
+ - `SEMA_INDEX.json`
71
+ - `docs/persistencia-vendor-first.md`
@@ -0,0 +1,145 @@
1
+ # Persistencia Vendor-First
2
+
3
+ Sema 1.4.0 trata banco como superficie semantica de primeira classe. Isso significa assumir diferencas reais entre engines e coloca-las no contrato, no semantico, no IR, no drift e na extensao.
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