@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.
- package/README.md +61 -41
- package/dist/drift.d.ts +5 -3
- package/dist/drift.js +532 -27
- package/dist/drift.js.map +1 -1
- package/dist/importador.d.ts +2 -0
- package/dist/importador.js +166 -7
- package/dist/importador.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/projeto.d.ts +6 -1
- package/dist/projeto.js.map +1 -1
- package/docs/cli.md +101 -0
- package/docs/instalacao-e-primeiro-uso.md +108 -196
- package/docs/integracao-com-ia.md +43 -200
- package/docs/persistencia-vendor-first.md +145 -0
- package/docs/sintaxe.md +67 -251
- package/exemplos/persistencia_vendor_first.sema +86 -0
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.js +32 -17
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/index.d.ts +1 -0
- package/node_modules/@sema/nucleo/dist/index.js +1 -0
- package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +94 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +60 -0
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +15 -0
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.js +98 -3
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.d.ts +39 -0
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +294 -0
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +118 -2
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/package.json +1 -1
- package/node_modules/@sema/padroes/package.json +1 -1
- package/package.json +11 -11
|
@@ -1,228 +1,71 @@
|
|
|
1
1
|
# Integracao com IA
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Sema foi feita para IA operar software vivo com menos adivinhacao.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Ordem recomendada
|
|
6
6
|
|
|
7
|
-
|
|
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
|
-
|
|
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
|
-
|
|
14
|
+
## Por capacidade do modelo
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
IA pequena:
|
|
18
17
|
|
|
19
|
-
|
|
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
|
-
|
|
22
|
+
IA media:
|
|
53
23
|
|
|
54
|
-
- `resumo
|
|
55
|
-
- `briefing.min.json`
|
|
24
|
+
- `sema resumo --curto`
|
|
56
25
|
- `drift.json`
|
|
26
|
+
- `briefing.min.json`
|
|
57
27
|
|
|
58
|
-
|
|
28
|
+
IA grande:
|
|
59
29
|
|
|
60
|
-
- `
|
|
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
|
-
- `
|
|
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
|
-
|
|
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
|
-
|
|
37
|
+
Se o agente usa MCP:
|
|
199
38
|
|
|
200
39
|
```bash
|
|
201
|
-
|
|
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
|
-
|
|
43
|
+
Depois configure:
|
|
208
44
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"mcpServers": {
|
|
48
|
+
"sema": {
|
|
49
|
+
"command": "npx",
|
|
50
|
+
"args": ["-y", "@semacode/mcp"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
216
54
|
```
|
|
217
55
|
|
|
218
|
-
|
|
56
|
+
## Regras praticas
|
|
219
57
|
|
|
220
|
-
|
|
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
|
-
|
|
64
|
+
## Arquivos uteis no repo
|
|
223
65
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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
|