@semacode/cli 1.3.7 → 1.5.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 (47) hide show
  1. package/AGENTS.md +2 -2
  2. package/README.md +61 -41
  3. package/dist/drift.d.ts +98 -4
  4. package/dist/drift.js +1881 -546
  5. package/dist/drift.js.map +1 -1
  6. package/dist/importador.d.ts +2 -0
  7. package/dist/importador.js +166 -7
  8. package/dist/importador.js.map +1 -1
  9. package/dist/index.js +108 -9
  10. package/dist/index.js.map +1 -1
  11. package/dist/projeto.d.ts +6 -1
  12. package/dist/projeto.js.map +1 -1
  13. package/docs/cli.md +101 -0
  14. package/docs/instalacao-e-primeiro-uso.md +109 -196
  15. package/docs/integracao-com-ia.md +47 -198
  16. package/docs/persistencia-vendor-first.md +145 -0
  17. package/docs/sintaxe.md +67 -251
  18. package/exemplos/persistencia_vendor_first.sema +86 -0
  19. package/node_modules/@sema/gerador-css/package.json +1 -1
  20. package/node_modules/@sema/gerador-dart/package.json +1 -1
  21. package/node_modules/@sema/gerador-html/package.json +1 -1
  22. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  23. package/node_modules/@sema/gerador-lua/package.json +1 -1
  24. package/node_modules/@sema/gerador-python/package.json +1 -1
  25. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  26. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -1
  27. package/node_modules/@sema/nucleo/dist/formatador/index.js +32 -17
  28. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  29. package/node_modules/@sema/nucleo/dist/index.d.ts +1 -0
  30. package/node_modules/@sema/nucleo/dist/index.js +1 -0
  31. package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
  32. package/node_modules/@sema/nucleo/dist/ir/conversor.js +94 -0
  33. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  34. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +60 -0
  35. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +15 -0
  36. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
  37. package/node_modules/@sema/nucleo/dist/parser/parser.js +98 -3
  38. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  39. package/node_modules/@sema/nucleo/dist/persistencia/contratos.d.ts +39 -0
  40. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +294 -0
  41. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +1 -0
  42. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -1
  43. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +118 -2
  44. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  45. package/node_modules/@sema/nucleo/package.json +1 -1
  46. package/node_modules/@sema/padroes/package.json +1 -1
  47. package/package.json +11 -11
@@ -1,228 +1,77 @@
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:
33
+ - `ast.json`
181
34
 
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
- ```
35
+ ## MCP
188
36
 
189
- Quando a tarefa envolver codigo derivado:
37
+ Se o agente usa MCP:
190
38
 
191
39
  ```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
40
+ npm install -g @semacode/cli @semacode/mcp
196
41
  ```
197
42
 
198
- Quando a tarefa nasce num legado:
43
+ Depois configure:
199
44
 
200
- ```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
45
+ ```json
46
+ {
47
+ "mcpServers": {
48
+ "sema": {
49
+ "command": "npx",
50
+ "args": ["-y", "@semacode/mcp"]
51
+ }
52
+ }
53
+ }
205
54
  ```
206
55
 
207
- ## Showcase oficial do repo
208
-
209
- Se voce estiver no monorepo da Sema, o showcase [showcases/ranking-showroom](../showcases/ranking-showroom/) continua sendo a melhor vitrine do fluxo completo:
56
+ Ferramentas mais uteis no fluxo de mudanca:
210
57
 
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
216
- ```
58
+ - `sema_drift` para medir coerencia viva
59
+ - `sema_impacto` para dizer o que tocar
60
+ - `sema_renomear_semantico` para guiar troca de nomes sem misturar payload antigo e novo
217
61
 
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.
62
+ ## Regras praticas
219
63
 
220
- ## Fechamento operacional
64
+ - trate `.sema` e IR como fonte de verdade semantica
65
+ - trate `drift` como juiz da adocao incremental
66
+ - use `briefing.min.json` antes de abrir dezenas de arquivos
67
+ - nao invente sintaxe fora da gramatica oficial
68
+ - em persistencia, nao assuma que bancos diferentes tem o mesmo contrato operacional
221
69
 
222
- Quando a IA terminar a mudanca fora do monorepo:
70
+ ## Arquivos uteis no repo
223
71
 
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
- ```
72
+ - `AGENTS.md`
73
+ - `llms.txt`
74
+ - `llms-full.txt`
75
+ - `SEMA_BRIEF.md`
76
+ - `SEMA_INDEX.json`
77
+ - `docs/persistencia-vendor-first.md`
@@ -0,0 +1,145 @@
1
+ # Persistencia Vendor-First
2
+
3
+ Sema 1.5.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, no impact map, na renomeacao assistida 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