@semacode/cli 1.5.14 → 1.5.16
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 +2 -1
- package/dist/index.js +76 -43
- package/package.json +26 -35
- package/semacode-cli-1.3.1.tgz +0 -0
- package/src/angular-consumer-standalone.ts +312 -0
- package/src/cpp-symbols.ts +82 -0
- package/src/docs.ts +535 -0
- package/src/dotnet-http.ts +355 -0
- package/src/drift.ts +4933 -0
- package/src/go-http.ts +118 -0
- package/src/importador.ts +3891 -0
- package/src/index.ts +5641 -0
- package/src/java-http.ts +247 -0
- package/src/lua-symbols.ts +114 -0
- package/src/php-symbols.ts +462 -0
- package/src/projeto.ts +862 -0
- package/src/python-http.ts +258 -0
- package/src/rust-http.ts +125 -0
- package/src/tipos.ts +24 -0
- package/src/typescript-http.ts +1076 -0
- package/tsconfig.json +20 -0
- package/AGENTS.md +0 -272
- package/LICENSE +0 -22
- package/SEMA_BRIEF.curto.txt +0 -9
- package/SEMA_BRIEF.md +0 -63
- package/SEMA_BRIEF.micro.txt +0 -7
- package/SEMA_INDEX.json +0 -799
- package/dist/angular-consumer-standalone.d.ts +0 -6
- package/dist/angular-consumer-standalone.js.map +0 -1
- package/dist/cpp-symbols.d.ts +0 -10
- package/dist/cpp-symbols.js.map +0 -1
- package/dist/docs.d.ts +0 -56
- package/dist/docs.js.map +0 -1
- package/dist/dotnet-http.d.ts +0 -23
- package/dist/dotnet-http.js.map +0 -1
- package/dist/drift.d.ts +0 -225
- package/dist/drift.js.map +0 -1
- package/dist/go-http.d.ts +0 -23
- package/dist/go-http.js.map +0 -1
- package/dist/importador.d.ts +0 -31
- package/dist/importador.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/java-http.d.ts +0 -23
- package/dist/java-http.js.map +0 -1
- package/dist/lua-symbols.d.ts +0 -10
- package/dist/lua-symbols.js.map +0 -1
- package/dist/php-symbols.d.ts +0 -24
- package/dist/php-symbols.js.map +0 -1
- package/dist/projeto.d.ts +0 -53
- package/dist/projeto.js.map +0 -1
- package/dist/python-http.d.ts +0 -23
- package/dist/python-http.js.map +0 -1
- package/dist/rust-http.d.ts +0 -23
- package/dist/rust-http.js.map +0 -1
- package/dist/tipos.d.ts +0 -3
- package/dist/tipos.js.map +0 -1
- package/dist/typescript-http.d.ts +0 -35
- package/dist/typescript-http.js.map +0 -1
- package/docs/AGENT_STARTER.md +0 -102
- package/docs/cli.md +0 -117
- package/docs/como-ensinar-a-sema-para-ia.md +0 -149
- package/docs/deploy.md +0 -70
- package/docs/documentacao.md +0 -63
- package/docs/env.md +0 -56
- package/docs/extensao-vscode.md +0 -45
- package/docs/fluxo-pratico-ia-sema.md +0 -177
- package/docs/instalacao-e-primeiro-uso.md +0 -112
- package/docs/integracao-com-ia.md +0 -101
- package/docs/mcp.md +0 -53
- package/docs/pagamento-ponta-a-ponta.md +0 -155
- package/docs/persistencia-vendor-first.md +0 -145
- package/docs/prompt-base-ia-sema.md +0 -104
- package/docs/rollback.md +0 -47
- package/docs/sintaxe.md +0 -410
- package/exemplos/agendamento.sema +0 -106
- package/exemplos/assinatura.sema +0 -136
- package/exemplos/auditoria.sema +0 -88
- package/exemplos/autenticacao.sema +0 -125
- package/exemplos/automacao.sema +0 -107
- package/exemplos/cadastro_usuario.sema +0 -54
- package/exemplos/calculadora.sema +0 -78
- package/exemplos/crud_simples.sema +0 -89
- package/exemplos/estoque.sema +0 -126
- package/exemplos/exportacao.sema +0 -94
- package/exemplos/fila.sema +0 -131
- package/exemplos/integracao_externa.sema +0 -94
- package/exemplos/multi_tenant.sema +0 -140
- package/exemplos/notificacao.sema +0 -98
- package/exemplos/operacao_estrategia.sema +0 -402
- package/exemplos/pagamento.sema +0 -222
- package/exemplos/pagamento_dominio.sema +0 -35
- package/exemplos/pedido.sema +0 -119
- package/exemplos/permissao.sema +0 -121
- package/exemplos/persistencia_vendor_first.sema +0 -86
- package/exemplos/relatorio.sema +0 -93
- package/exemplos/testes_embutidos.sema +0 -45
- package/exemplos/tratamento_erro.sema +0 -157
- package/exemplos/upload_arquivo.sema +0 -93
- package/exemplos/webhook.sema +0 -96
- package/llms-full.txt +0 -34
- package/llms.txt +0 -17
- package/node_modules/@sema/gerador-css/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-css/dist/index.js +0 -592
- package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-css/package.json +0 -7
- package/node_modules/@sema/gerador-dart/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-dart/dist/index.js +0 -44
- package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-dart/package.json +0 -7
- package/node_modules/@sema/gerador-html/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-html/dist/index.js +0 -163
- package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-html/package.json +0 -7
- package/node_modules/@sema/gerador-javascript/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-javascript/dist/index.js +0 -421
- package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-javascript/package.json +0 -7
- package/node_modules/@sema/gerador-lua/dist/index.d.ts +0 -3
- package/node_modules/@sema/gerador-lua/dist/index.js +0 -328
- package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-lua/package.json +0 -7
- package/node_modules/@sema/gerador-python/dist/index.d.ts +0 -6
- package/node_modules/@sema/gerador-python/dist/index.js +0 -729
- package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-python/package.json +0 -7
- package/node_modules/@sema/gerador-typescript/dist/index.d.ts +0 -6
- package/node_modules/@sema/gerador-typescript/dist/index.js +0 -793
- package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/package.json +0 -7
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +0 -125
- package/node_modules/@sema/nucleo/dist/ast/tipos.js +0 -2
- package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +0 -21
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +0 -12
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +0 -9
- package/node_modules/@sema/nucleo/dist/formatador/index.js +0 -487
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/index.d.ts +0 -35
- package/node_modules/@sema/nucleo/dist/index.js +0 -96
- package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +0 -5
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +0 -1058
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +0 -377
- package/node_modules/@sema/nucleo/dist/ir/modelos.js +0 -2
- package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +0 -7
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js +0 -122
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +0 -8
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -82
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +0 -9
- package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -807
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.d.ts +0 -39
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +0 -294
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +0 -58
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +0 -1912
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +0 -104
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +0 -445
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +0 -91
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +0 -258
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +0 -2
- package/node_modules/@sema/nucleo/dist/util/arquivos.js +0 -25
- package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
- package/node_modules/@sema/nucleo/package.json +0 -7
- package/node_modules/@sema/padroes/dist/index.d.ts +0 -25
- package/node_modules/@sema/padroes/dist/index.js +0 -316
- package/node_modules/@sema/padroes/dist/index.js.map +0 -1
- package/node_modules/@sema/padroes/package.json +0 -7
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# Persistencia Vendor-First
|
|
2
|
-
|
|
3
|
-
Sema 1.5.7 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, no `verificar` e na extensao. Nesta linha, o `drift` tambem materializa persistencia local real em `Preferences`, `localStorage` e `sessionStorage` quando a task esta ancorada no arquivo que usa essas APIs.
|
|
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
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# Prompt-Base Oficial para IA Trabalhar com Sema
|
|
2
|
-
|
|
3
|
-
Este arquivo serve como prompt-base oficial para qualquer IA que precise ler, escrever, revisar ou transformar arquivos `.sema`.
|
|
4
|
-
|
|
5
|
-
O objetivo nao e fazer a IA "improvisar bonito". O objetivo e fazer a IA operar a linguagem com previsibilidade. A Sema nao foi desenhada para ergonomia humana como prioridade; ela foi desenhada para IA.
|
|
6
|
-
|
|
7
|
-
## Prompt-base
|
|
8
|
-
|
|
9
|
-
Use o texto abaixo como base:
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
Voce esta trabalhando com Sema, um Protocolo de Governanca de Intencao para IA e backend vivo.
|
|
13
|
-
|
|
14
|
-
Tecnicamente, a Sema funciona como linguagem de intencao orientada a contrato. Operacionalmente, ela existe para governar semantica acima da stack e reduzir ambiguidade para IA, nao para substituir arquitetura, design ou curadoria humana.
|
|
15
|
-
|
|
16
|
-
Trate a Sema como linguagem de especificacao executavel e protocolo de governanca semantica. Nao invente sintaxe, palavras-chave ou blocos fora da gramatica e dos exemplos oficiais.
|
|
17
|
-
|
|
18
|
-
Fontes de verdade, em ordem:
|
|
19
|
-
1. se o projeto expuser `SEMA_CONTEXT.md`, comece por ele
|
|
20
|
-
2. `SEMA_BRIEF.md`
|
|
21
|
-
3. `SEMA_INDEX.json`
|
|
22
|
-
4. README do projeto
|
|
23
|
-
5. gramatica e documentacao de sintaxe da Sema
|
|
24
|
-
6. especificacao semantica da linguagem
|
|
25
|
-
7. exemplos oficiais, com prioridade para o vertical de pagamento
|
|
26
|
-
8. `sema resumo` e `briefing.min.json` quando a IA for pequena
|
|
27
|
-
9. AST, IR e diagnosticos exportados pela CLI em JSON quando a capacidade aguentar
|
|
28
|
-
|
|
29
|
-
Regras de operacao:
|
|
30
|
-
- preserve o significado semantico
|
|
31
|
-
- use o formatador oficial da Sema como fonte unica de estilo
|
|
32
|
-
- use diagnosticos estruturados como contrato de correcao
|
|
33
|
-
- use a IR como fonte de verdade semantica quando houver duvida
|
|
34
|
-
- nao conclua uma alteracao sem validar e verificar o modulo
|
|
35
|
-
- trate `importar` como bootstrap revisavel, nao como contrato final automatico
|
|
36
|
-
- trate `drift` como medicao de verdade contra codigo vivo
|
|
37
|
-
- trate `impl` como ponte entre task e simbolo real
|
|
38
|
-
- nao invente regra de negocio que o contrato e o codigo nao sustentem
|
|
39
|
-
|
|
40
|
-
Antes de editar `.sema`, entenda:
|
|
41
|
-
- o module alvo
|
|
42
|
-
- os contratos de task, route, error, effects, guarantees, state e flow
|
|
43
|
-
- os exemplos oficiais relacionados
|
|
44
|
-
|
|
45
|
-
Depois de editar `.sema`, execute este fluxo:
|
|
46
|
-
1. formatar
|
|
47
|
-
2. validar
|
|
48
|
-
3. diagnosticar, se houver falha
|
|
49
|
-
4. verificar
|
|
50
|
-
|
|
51
|
-
Se houver conflito entre texto livre e IR/diagnosticos, priorize a IR e os diagnosticos da CLI.
|
|
52
|
-
|
|
53
|
-
Se algo nao estiver claro, siga a forma ja usada nos exemplos oficiais. Nao improvise sem base.
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## Variacao curta
|
|
57
|
-
|
|
58
|
-
Se voce quiser um prompt menor para uso frequente:
|
|
59
|
-
|
|
60
|
-
```text
|
|
61
|
-
Trabalhe com Sema como DSL semantica orientada a contrato. Nao invente sintaxe. Use os exemplos oficiais e a gramatica como referencia de escrita. Use `ir --json` como fonte de verdade semantica, `diagnosticos --json` como fonte de correcao e `sema formatar` como fonte unica de estilo. Antes de encerrar, rode validacao e verificacao.
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Se voce quiser um prompt ainda mais curto e pronto para colar, use:
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
sema prompt-curto caminho/arquivo.sema --curto --para mudanca
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## Variacao para revisao
|
|
71
|
-
|
|
72
|
-
Use esta versao quando a IA for revisar `.sema` em vez de criar:
|
|
73
|
-
|
|
74
|
-
```text
|
|
75
|
-
Revise este modulo Sema como contrato semantico executavel. Procure incoerencias entre input, output, rules, effects, guarantees, state, flow, route e error. Considere a IR e os diagnosticos da CLI como fonte de verdade. Nao critique estilo fora do que o formatador oficial resolveria automaticamente.
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Variacao para geracao
|
|
79
|
-
|
|
80
|
-
Use esta versao quando a IA for escrever modulo novo:
|
|
81
|
-
|
|
82
|
-
```text
|
|
83
|
-
Gere um modulo Sema seguindo a gramatica oficial, os exemplos do projeto e o estilo do formatador canonico. Estruture o modulo como contrato semantico executavel, com blocos explicitos para entrada, saida, regras, efeitos, garantias, erros, estado, fluxo e testes quando fizer sentido. Nao use sintaxe fora do repertorio ja suportado pela linguagem.
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Variacao para correcao guiada por diagnostico
|
|
87
|
-
|
|
88
|
-
Use esta versao quando a IA ja tiver erro concreto para corrigir:
|
|
89
|
-
|
|
90
|
-
```text
|
|
91
|
-
Corrija este modulo Sema a partir dos diagnosticos estruturados da CLI. Preserve a intencao do contrato e altere apenas o necessario para eliminar as falhas. Depois da correcao, aplique o formatador oficial e revalide.
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## O que sempre anexar junto do prompt
|
|
95
|
-
|
|
96
|
-
Idealmente, acompanhe o prompt com:
|
|
97
|
-
|
|
98
|
-
- o arquivo `.sema` alvo
|
|
99
|
-
- o resultado de `sema ast --json`
|
|
100
|
-
- o resultado de `sema ir --json`
|
|
101
|
-
- o resultado de `sema diagnosticos --json`, se houver erro
|
|
102
|
-
- um exemplo oficial parecido
|
|
103
|
-
|
|
104
|
-
Sem isso, a IA pode ate acertar. Com isso, ela trabalha direito.
|
package/docs/rollback.md
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# Rollback
|
|
2
|
-
|
|
3
|
-
Rollback de release publica da Sema deve preservar rastreabilidade. NPM nao deve ser tratado como pasta temporaria: apagar versao publicada e medida extrema e limitada.
|
|
4
|
-
|
|
5
|
-
## Quando aplicar
|
|
6
|
-
|
|
7
|
-
- CLI ou MCP publicados quebram instalacao basica.
|
|
8
|
-
- VSIX publicada nao inicia ou quebra o Language Server.
|
|
9
|
-
- Instaladores baixam asset errado.
|
|
10
|
-
- Release notes ou checksums apontam para artefato invalido.
|
|
11
|
-
|
|
12
|
-
## Primeira resposta
|
|
13
|
-
|
|
14
|
-
1. Marque o problema no GitHub Release.
|
|
15
|
-
2. Reponte `latest` no NPM para a ultima versao boa, quando necessario:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
npm dist-tag add @semacode/cli@<versao-boa> latest
|
|
19
|
-
npm dist-tag add @semacode/mcp@<versao-boa> latest
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
3. Se o problema for so VSIX ou asset de release, substitua o asset no GitHub Release ou publique uma release patch.
|
|
23
|
-
4. Prefira publicar patch corretivo (`1.5.10`, por exemplo) quando o pacote ja saiu para usuarios.
|
|
24
|
-
|
|
25
|
-
## Validacao de rollback
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npm view @semacode/cli dist-tags --json
|
|
29
|
-
npm view @semacode/mcp dist-tags --json
|
|
30
|
-
npm install -g @semacode/cli@latest
|
|
31
|
-
npm install -g @semacode/mcp@latest
|
|
32
|
-
sema --version
|
|
33
|
-
sema-mcp --help
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Git
|
|
37
|
-
|
|
38
|
-
Se o commit foi empurrado mas a release falhou antes de publicar NPM, corrija com novo commit. Evite reescrever `main` depois de push publico.
|
|
39
|
-
|
|
40
|
-
Se o tag foi criado errado e ainda nao existe release consumida:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
git tag -d v<versao>
|
|
44
|
-
git push origin :refs/tags/v<versao>
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Use isso somente antes de usuarios consumirem o tag.
|
package/docs/sintaxe.md
DELETED
|
@@ -1,410 +0,0 @@
|
|
|
1
|
-
# Sintaxe Canonica
|
|
2
|
-
|
|
3
|
-
A Sema usa blocos declarativos previsiveis para reduzir ambiguidade no parser, na IR, no drift e no contexto de IA.
|
|
4
|
-
|
|
5
|
-
## Regras basicas
|
|
6
|
-
|
|
7
|
-
- um arquivo `.sema` contem um `module` principal
|
|
8
|
-
- cada bloco abre com palavra-chave e fecha com `}`
|
|
9
|
-
- campos usam `nome: valor`
|
|
10
|
-
- blocos declarativos podem aparecer aninhados quando o contrato exigir
|
|
11
|
-
- `tests` usa blocos `caso`
|
|
12
|
-
|
|
13
|
-
## Blocos de primeira classe
|
|
14
|
-
|
|
15
|
-
- `module`
|
|
16
|
-
- `use`
|
|
17
|
-
- `database`
|
|
18
|
-
- `type`
|
|
19
|
-
- `entity`
|
|
20
|
-
- `enum`
|
|
21
|
-
- `state`
|
|
22
|
-
- `book`
|
|
23
|
-
- `work`
|
|
24
|
-
- `part`
|
|
25
|
-
- `chapter`
|
|
26
|
-
- `section`
|
|
27
|
-
- `scene`
|
|
28
|
-
- `character`
|
|
29
|
-
- `arc`
|
|
30
|
-
- `audience`
|
|
31
|
-
- `thesis`
|
|
32
|
-
- `argument`
|
|
33
|
-
- `claim`
|
|
34
|
-
- `source`
|
|
35
|
-
- `concept`
|
|
36
|
-
- `example`
|
|
37
|
-
- `voice`
|
|
38
|
-
- `style_rule`
|
|
39
|
-
- `lexicon`
|
|
40
|
-
- `motif`
|
|
41
|
-
- `canon`
|
|
42
|
-
- `agent`
|
|
43
|
-
- `task`
|
|
44
|
-
- `flow`
|
|
45
|
-
- `route`
|
|
46
|
-
- `worker`
|
|
47
|
-
- `evento`
|
|
48
|
-
- `fila`
|
|
49
|
-
- `cron`
|
|
50
|
-
- `webhook`
|
|
51
|
-
- `cache`
|
|
52
|
-
- `storage`
|
|
53
|
-
- `policy`
|
|
54
|
-
- `tests`
|
|
55
|
-
- `docs`
|
|
56
|
-
- `comments`
|
|
57
|
-
|
|
58
|
-
## Subblocos comuns
|
|
59
|
-
|
|
60
|
-
- `input`
|
|
61
|
-
- `output`
|
|
62
|
-
- `rules`
|
|
63
|
-
- `effects`
|
|
64
|
-
- `auth`
|
|
65
|
-
- `authz`
|
|
66
|
-
- `dados`
|
|
67
|
-
- `audit`
|
|
68
|
-
- `segredos`
|
|
69
|
-
- `forbidden`
|
|
70
|
-
- `impl`
|
|
71
|
-
- `vinculos`
|
|
72
|
-
- `execucao`
|
|
73
|
-
- `guarantees`
|
|
74
|
-
- `error`
|
|
75
|
-
- `fields`
|
|
76
|
-
- `invariants`
|
|
77
|
-
- `transitions`
|
|
78
|
-
- `given`
|
|
79
|
-
- `when`
|
|
80
|
-
- `expect`
|
|
81
|
-
|
|
82
|
-
## Tipos compostos
|
|
83
|
-
|
|
84
|
-
```sema
|
|
85
|
-
input {
|
|
86
|
-
ids: Lista<Id> required
|
|
87
|
-
metadata: Mapa<Texto, Texto>
|
|
88
|
-
responsavel: Opcional<Usuario>
|
|
89
|
-
chave_publica: Texto|Id
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Formas suportadas:
|
|
94
|
-
|
|
95
|
-
- `Lista<T>`
|
|
96
|
-
- `Mapa<K, V>`
|
|
97
|
-
- `Opcional<T>`
|
|
98
|
-
- `T1|T2`
|
|
99
|
-
- `T?`
|
|
100
|
-
|
|
101
|
-
## Profiles Author e Agents
|
|
102
|
-
|
|
103
|
-
O profile Author modela obra autoral, nao apenas romance. Ele pode descrever ficcao, nao-ficcao, livro tecnico, ensaio, manual, biografia, pesquisa narrada, curso em formato de livro ou manifesto. A ideia e governar intencao, publico, promessa, voz, estrutura, argumentos, fontes, continuidade e regras de estilo.
|
|
104
|
-
|
|
105
|
-
Blocos Author suportados:
|
|
106
|
-
|
|
107
|
-
- `book` ou `work`: obra inteira
|
|
108
|
-
- `part`, `chapter`, `section`: estrutura editorial
|
|
109
|
-
- `scene`, `character`, `arc`: narrativa quando a obra tiver ficcao ou relato
|
|
110
|
-
- `audience`, `thesis`, `argument`, `claim`, `source`, `concept`, `example`: nao-ficcao, ensino, pesquisa e argumentacao
|
|
111
|
-
- `voice`, `style_rule`, `lexicon`, `motif`, `canon`: voz, vocabulario, repeticoes, proibicoes e continuidade
|
|
112
|
-
|
|
113
|
-
`style_rule` aceita subblocos livres como `proibido`, `evitar`, `ecos`, `preferir`, `require` e `tolerancia`. Isso cobre frases cliches, muletas, ecos repetidos e limites de repeticao sem prender a linguagem a um genero literario.
|
|
114
|
-
|
|
115
|
-
Todo modulo com blocos Author tambem recebe no IR a regra sintetica `regras_gerais_author`. Ela aplica automaticamente o piso editorial geral: mostrar por evidencia, causa e consequencia, cena com dupla funcao, exposicao com atrito, dialogo com subtexto, final sem slogan, morte com peso estrutural, especificidade sensorial, voz distinta e anti-cliche adaptativa. Regras locais da obra podem ser mais fortes, mas nao devem apagar esse piso.
|
|
116
|
-
|
|
117
|
-
Quando a obra declara um tema sensivel ou factual, como `autismo`, `saude`, `diagnostico`, `neurodiversidade`, `educacao inclusiva`, `juridico` ou `financeiro`, o contrato deixa de ser apenas orientativo. A validacao exige `book/work`, `audience`, `claim`, `source`, `style_rule`, `agent` e um `flow` chamando esse agent. Claims sensiveis precisam declarar `source/fonte/evidencia` e `confidence/confianca`.
|
|
118
|
-
|
|
119
|
-
```sema
|
|
120
|
-
module livro.tecnico.ia {
|
|
121
|
-
work protocolo_ia {
|
|
122
|
-
titulo: "Sistemas para IA"
|
|
123
|
-
proposito: "ensinar governanca de agentes"
|
|
124
|
-
tipo: nao_ficcao
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
audience devs {
|
|
128
|
-
nivel: intermediario
|
|
129
|
-
promessa: "sair com um protocolo aplicavel"
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
claim contratos_reduzem_adivinhacao {
|
|
133
|
-
source: pesquisa_interna
|
|
134
|
-
confidence: media
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
voice didatica {
|
|
138
|
-
tom: claro
|
|
139
|
-
ritmo: progressivo
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
style_rule anti_texto_raso {
|
|
143
|
-
proibido {
|
|
144
|
-
frase: "de alguma forma"
|
|
145
|
-
cliche: "o tempo parecia parar"
|
|
146
|
-
}
|
|
147
|
-
ecos {
|
|
148
|
-
palavra: "eco"
|
|
149
|
-
}
|
|
150
|
-
tolerancia {
|
|
151
|
-
max_repeticao_palavra_por_trecho: 2
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
agent revisor_estilo {
|
|
156
|
-
role: editor_author
|
|
157
|
-
goal: cortar_cliche_e_eco
|
|
158
|
-
tools {
|
|
159
|
-
ler_contrato
|
|
160
|
-
analisar_trecho
|
|
161
|
-
}
|
|
162
|
-
memory {
|
|
163
|
-
canon
|
|
164
|
-
style_rule
|
|
165
|
-
}
|
|
166
|
-
policy {
|
|
167
|
-
nao_reescrever_sem_aprovacao
|
|
168
|
-
citar_trechos_afetados
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
flow revisar_secao {
|
|
173
|
-
trecho: Texto
|
|
174
|
-
etapa estilo usa revisor_estilo com trecho = trecho
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
`agent` e bloco de primeira classe. Um agent precisa declarar ao menos `role`/`goal`, `tools` e `policy`; `memory` gera aviso quando ausente, porque agente sem memoria declarada tende a improvisar contexto.
|
|
180
|
-
|
|
181
|
-
Exemplo de obra sensivel:
|
|
182
|
-
|
|
183
|
-
```sema
|
|
184
|
-
module livro.autismo {
|
|
185
|
-
work guia_autismo {
|
|
186
|
-
titulo: "Autismo sem reducionismo"
|
|
187
|
-
proposito: "orientar familias sem substituir avaliacao clinica"
|
|
188
|
-
tema: autismo
|
|
189
|
-
sensivel: verdadeiro
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
audience familias_e_educadores {
|
|
193
|
-
publico: pais_educadores_pessoas_autistas
|
|
194
|
-
limites: "nao substitui avaliacao clinica"
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
claim autismo_e_espectro {
|
|
198
|
-
texto: "autismo e um espectro com manifestacoes variadas"
|
|
199
|
-
source: dsm5_tr
|
|
200
|
-
confidence: alta
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
source dsm5_tr {
|
|
204
|
-
tipo: referencia_clinica
|
|
205
|
-
confianca: alta
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
style_rule linguagem_respeitosa {
|
|
209
|
-
proibido {
|
|
210
|
-
generalizacao: "todo autista"
|
|
211
|
-
infantilizacao: "anjinho especial"
|
|
212
|
-
promessa: "cura garantida"
|
|
213
|
-
}
|
|
214
|
-
evitar {
|
|
215
|
-
frase: "superar o autismo"
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
agent checador_sensibilidade {
|
|
220
|
-
role: revisor_sensibilidade
|
|
221
|
-
goal: checar_fontes_linguagem_e_generalizacoes
|
|
222
|
-
tools {
|
|
223
|
-
ler_contrato
|
|
224
|
-
verificar_claim
|
|
225
|
-
revisar_trecho
|
|
226
|
-
}
|
|
227
|
-
memory {
|
|
228
|
-
source
|
|
229
|
-
style_rule
|
|
230
|
-
audience
|
|
231
|
-
}
|
|
232
|
-
policy {
|
|
233
|
-
nao_diagnosticar
|
|
234
|
-
nao_prometer_tratamento
|
|
235
|
-
citar_trechos_afetados
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
flow revisar_capitulo {
|
|
240
|
-
trecho: Texto
|
|
241
|
-
etapa sensibilidade usa checador_sensibilidade com trecho = trecho
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
## Persistencia vendor-first
|
|
247
|
-
|
|
248
|
-
O bloco `database` modela banco e recursos persistidos sem apagar as diferencas entre engines.
|
|
249
|
-
|
|
250
|
-
Estrutura base:
|
|
251
|
-
|
|
252
|
-
```sema
|
|
253
|
-
database principal_postgres {
|
|
254
|
-
engine: postgres
|
|
255
|
-
consistency: forte
|
|
256
|
-
durability: alta
|
|
257
|
-
transaction_model: mvcc
|
|
258
|
-
query_model: sql
|
|
259
|
-
}
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
Recursos canonicamente suportados:
|
|
263
|
-
|
|
264
|
-
- `table`
|
|
265
|
-
- `index`
|
|
266
|
-
- `relationship`
|
|
267
|
-
- `query`
|
|
268
|
-
- `retention`
|
|
269
|
-
- `lock`
|
|
270
|
-
- `replication`
|
|
271
|
-
- `collection`
|
|
272
|
-
- `document`
|
|
273
|
-
- `keyspace`
|
|
274
|
-
- `stream`
|
|
275
|
-
- `capabilities`
|
|
276
|
-
|
|
277
|
-
Exemplo relacional:
|
|
278
|
-
|
|
279
|
-
```sema
|
|
280
|
-
database principal_postgres {
|
|
281
|
-
engine: postgres
|
|
282
|
-
schema: public
|
|
283
|
-
capabilities {
|
|
284
|
-
joins
|
|
285
|
-
views
|
|
286
|
-
foreign_keys
|
|
287
|
-
}
|
|
288
|
-
table pedidos {
|
|
289
|
-
entity: Pedido
|
|
290
|
-
}
|
|
291
|
-
relationship pedido_cliente {
|
|
292
|
-
from: Pedido
|
|
293
|
-
to: Cliente
|
|
294
|
-
}
|
|
295
|
-
query buscar_pedidos {
|
|
296
|
-
mode: sql
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
Exemplo documental:
|
|
302
|
-
|
|
303
|
-
```sema
|
|
304
|
-
database principal_mongodb {
|
|
305
|
-
engine: mongodb
|
|
306
|
-
query_model: documento
|
|
307
|
-
collection pedidos {
|
|
308
|
-
collection: pedidos
|
|
309
|
-
}
|
|
310
|
-
document pedido_snapshot {
|
|
311
|
-
entity: PedidoSnapshot
|
|
312
|
-
}
|
|
313
|
-
query pipeline_pedido {
|
|
314
|
-
mode: pipeline
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
Exemplo key-value:
|
|
320
|
-
|
|
321
|
-
```sema
|
|
322
|
-
database principal_redis {
|
|
323
|
-
engine: redis
|
|
324
|
-
query_model: chave_valor
|
|
325
|
-
keyspace cache_pedidos {
|
|
326
|
-
ttl: "300s"
|
|
327
|
-
}
|
|
328
|
-
stream eventos_pedido {
|
|
329
|
-
surface: fila
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
## Compatibilidade declarada
|
|
335
|
-
|
|
336
|
-
O IR de persistencia calcula compatibilidade por recurso com quatro estados:
|
|
337
|
-
|
|
338
|
-
- `nativo`
|
|
339
|
-
- `adaptado`
|
|
340
|
-
- `parcial`
|
|
341
|
-
- `invalido`
|
|
342
|
-
|
|
343
|
-
Isso existe para deixar explicito quando um contrato esta pedindo de um banco algo que ele nao entrega do mesmo jeito.
|
|
344
|
-
|
|
345
|
-
O mesmo principio vale para runtime de orquestracao. Superficies como `webhook`, `cron`, `worker`, `evento` e `fila` podem ser medidas contra familias como `n8n`, mas o contrato continua canonicamente modelado em Sema, sem rebaixar a linguagem para a sintaxe do adapter alvo.
|
|
346
|
-
|
|
347
|
-
## Interop e implementacao externa
|
|
348
|
-
|
|
349
|
-
`use` e `impl` aceitam origens de codigo vivo quando o contrato precisa rastrear runtime real. As origens semanticas suportadas sao:
|
|
350
|
-
|
|
351
|
-
- `ts`
|
|
352
|
-
- `py`
|
|
353
|
-
- `dart`
|
|
354
|
-
- `lua`
|
|
355
|
-
- `php`
|
|
356
|
-
- `cs`
|
|
357
|
-
- `java`
|
|
358
|
-
- `go`
|
|
359
|
-
- `rust`
|
|
360
|
-
- `cpp`
|
|
361
|
-
|
|
362
|
-
Exemplo com Lua:
|
|
363
|
-
|
|
364
|
-
```sema
|
|
365
|
-
module app.runtime {
|
|
366
|
-
use lua src.runtime
|
|
367
|
-
|
|
368
|
-
task processar_snapshot {
|
|
369
|
-
input {
|
|
370
|
-
payload: Json required
|
|
371
|
-
}
|
|
372
|
-
output {
|
|
373
|
-
resultado: Json
|
|
374
|
-
}
|
|
375
|
-
impl {
|
|
376
|
-
lua: src.runtime.RuntimeBridge.processSnapshot
|
|
377
|
-
}
|
|
378
|
-
guarantees {
|
|
379
|
-
resultado existe
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
Para Lua, o `drift` resolve funcoes declaradas como `function nome(...)`, `local function nome(...)`, `function Tabela.metodo(...)`, `function Tabela:metodo(...)` e atribuicoes `Tabela.metodo = function(...)`. A forma com `:` e normalizada para ponto no contrato.
|
|
386
|
-
|
|
387
|
-
Exemplo com PHP:
|
|
388
|
-
|
|
389
|
-
```sema
|
|
390
|
-
module app.php {
|
|
391
|
-
use php App.Http.Controllers.UserController
|
|
392
|
-
|
|
393
|
-
task criar_usuario {
|
|
394
|
-
input {
|
|
395
|
-
payload: Json required
|
|
396
|
-
}
|
|
397
|
-
output {
|
|
398
|
-
resultado: Json
|
|
399
|
-
}
|
|
400
|
-
impl {
|
|
401
|
-
php: App.Http.Controllers.UserController.store
|
|
402
|
-
}
|
|
403
|
-
guarantees {
|
|
404
|
-
resultado existe
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
Para PHP, o `drift` resolve namespaces, classes, traits, interfaces, enums, metodos, funcoes, closures atribuidas, rotas Laravel/Slim (`Route::get`, `Route::post`, `$app->get`) e atributos HTTP no estilo Symfony/PHP 8 (`#[Route]`, `#[Get]`, `#[Post]`). `Route::resource` e `Route::apiResource` sao expandidos para acoes REST canonicas.
|