@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.
- package/AGENTS.md +2 -2
- package/README.md +61 -41
- package/dist/drift.d.ts +98 -4
- package/dist/drift.js +1881 -546
- 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 +108 -9
- 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 +109 -196
- package/docs/integracao-com-ia.md +47 -198
- 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,77 @@
|
|
|
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:
|
|
33
|
+
- `ast.json`
|
|
181
34
|
|
|
182
|
-
|
|
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
|
-
|
|
37
|
+
Se o agente usa MCP:
|
|
190
38
|
|
|
191
39
|
```bash
|
|
192
|
-
|
|
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
|
-
|
|
43
|
+
Depois configure:
|
|
199
44
|
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
sema
|
|
204
|
-
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"mcpServers": {
|
|
48
|
+
"sema": {
|
|
49
|
+
"command": "npx",
|
|
50
|
+
"args": ["-y", "@semacode/mcp"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
205
54
|
```
|
|
206
55
|
|
|
207
|
-
|
|
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
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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
|
-
|
|
62
|
+
## Regras praticas
|
|
219
63
|
|
|
220
|
-
|
|
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
|
-
|
|
70
|
+
## Arquivos uteis no repo
|
|
223
71
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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
|