@semacode/cli 1.5.17 → 1.5.19
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 +268 -260
- package/LICENSE +22 -22
- package/README.md +93 -61
- package/SEMA_BRIEF.curto.txt +8 -6
- package/SEMA_BRIEF.md +71 -22
- package/SEMA_BRIEF.micro.txt +7 -5
- package/SEMA_INDEX.json +931 -193
- package/dist/controleComercialSupabase.d.ts +326 -0
- package/dist/controleComercialSupabase.js +310 -0
- package/dist/controleComercialSupabase.js.map +1 -0
- package/dist/docs.js +48 -20
- package/dist/docs.js.map +1 -1
- package/dist/drift.d.ts +5 -3
- package/dist/drift.js +119 -116
- package/dist/drift.js.map +1 -1
- package/dist/importador.d.ts +1 -1
- package/dist/importador.js +1 -200
- package/dist/importador.js.map +1 -1
- package/dist/index.js +1924 -493
- package/dist/index.js.map +1 -1
- package/dist/mcpRemoto.d.ts +32 -0
- package/dist/mcpRemoto.js +61 -0
- package/dist/mcpRemoto.js.map +1 -0
- package/dist/projeto.js +3 -21
- package/dist/projeto.js.map +1 -1
- package/dist/tipos.d.ts +1 -1
- package/docs/AGENT_STARTER.md +109 -102
- package/docs/cli.md +89 -33
- package/docs/como-ensinar-a-sema-para-ia.md +42 -36
- package/docs/deploy.md +231 -43
- package/docs/documentacao.md +61 -36
- package/docs/env.md +63 -14
- package/docs/extensao-vscode.md +12 -4
- package/docs/fluxo-pratico-ia-sema.md +45 -35
- package/docs/instalacao-e-primeiro-uso.md +52 -30
- package/docs/integracao-com-ia.md +44 -35
- package/docs/mcp.md +270 -31
- package/docs/pagamento-ponta-a-ponta.md +40 -24
- package/docs/persistencia-vendor-first.md +11 -5
- package/docs/prompt-base-ia-sema.md +18 -11
- package/docs/rollback.md +17 -15
- package/docs/sintaxe.md +37 -229
- package/exemplos/agendamento.sema +105 -106
- package/exemplos/assinatura.sema +133 -136
- package/exemplos/auditoria.sema +89 -88
- package/exemplos/autenticacao.sema +125 -125
- package/exemplos/author_obra_comum.sema +294 -0
- package/exemplos/author_tema_sensivel.sema +264 -0
- package/exemplos/automacao.sema +107 -107
- package/exemplos/cadastro_usuario.sema +54 -54
- package/exemplos/calculadora.sema +78 -78
- package/exemplos/crud_simples.sema +89 -89
- package/exemplos/estoque.sema +127 -126
- package/exemplos/exportacao.sema +94 -94
- package/exemplos/fila.sema +130 -131
- package/exemplos/integracao_externa.sema +94 -94
- package/exemplos/multi_tenant.sema +140 -140
- package/exemplos/notificacao.sema +149 -98
- package/exemplos/operacao_estrategia.sema +633 -402
- package/exemplos/pagamento.sema +434 -222
- package/exemplos/pagamento_dominio.sema +35 -35
- package/exemplos/pedido.sema +255 -119
- package/exemplos/permissao.sema +121 -121
- package/exemplos/persistencia_vendor_first.sema +86 -86
- package/exemplos/profile_game.sema +114 -0
- package/exemplos/profile_legal.sema +105 -0
- package/exemplos/profile_ops.sema +110 -0
- package/exemplos/profile_research.sema +104 -0
- package/exemplos/profile_software.sema +123 -0
- package/exemplos/profile_workflow_n8n.sema +99 -0
- package/exemplos/relatorio.sema +93 -93
- package/exemplos/replica_analitica_erp.sema +160 -0
- package/exemplos/testes_embutidos.sema +45 -45
- package/exemplos/tratamento_erro.sema +157 -157
- package/exemplos/upload_arquivo.sema +93 -93
- package/exemplos/webhook.sema +94 -96
- package/llms-full.txt +34 -34
- package/llms.txt +17 -17
- package/node_modules/@sema/gerador-css/dist/index.js +563 -563
- 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/dist/index.js +90 -90
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/dist/index.js +122 -96
- package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -4
- package/node_modules/@sema/nucleo/dist/formatador/index.js +26 -46
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +9 -204
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -35
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -21
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -40
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +6 -5
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +76 -307
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +2 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +32 -2
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.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 +15 -15
package/docs/cli.md
CHANGED
|
@@ -1,20 +1,57 @@
|
|
|
1
|
-
# CLI
|
|
1
|
+
# Sema CLI
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## English
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The Sema CLI is the public npm package for local semantic governance. It validates `.sema` contracts, checks drift, maps impact, prepares AI-first context, resolves documentation gates, and runs profile validators before an agent continues.
|
|
6
|
+
|
|
7
|
+
Current public version: `1.5.19`.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @semacode/cli
|
|
11
|
+
sema --version
|
|
12
|
+
sema validar contratos/pedidos.sema --json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Português
|
|
16
|
+
|
|
17
|
+
A CLI da Sema é o pacote público no npm para governança semântica local. Ela valida contratos `.sema`, verifica drift, mapeia impacto, prepara contexto IA-first, resolve gates de documentação e roda validadores de profiles antes de um agente continuar.
|
|
18
|
+
|
|
19
|
+
Versão pública atual: `1.5.19`.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g @semacode/cli
|
|
23
|
+
sema --version
|
|
24
|
+
sema validar contratos/pedidos.sema --json
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Español
|
|
28
|
+
|
|
29
|
+
La CLI de Sema es el paquete público en npm para gobernanza semántica local. Valida contratos `.sema`, verifica drift, mapea impacto, prepara contexto IA-first, resuelve gates de documentación y ejecuta validadores de profiles antes de que un agente continúe.
|
|
30
|
+
|
|
31
|
+
Versión pública actual: `1.5.19`.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install -g @semacode/cli
|
|
35
|
+
sema --version
|
|
36
|
+
sema validar contratos/pedidos.sema --json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Referência Operacional
|
|
40
|
+
|
|
41
|
+
### Papel da CLI
|
|
42
|
+
|
|
43
|
+
A CLI é a interface oficial da Sema para:
|
|
6
44
|
|
|
7
45
|
- validar contratos `.sema`
|
|
8
46
|
- exportar AST e IR
|
|
9
|
-
- medir `drift` entre contrato e
|
|
10
|
-
- importar legado para rascunho
|
|
11
|
-
- gerar
|
|
47
|
+
- medir `drift` entre contrato e código vivo
|
|
48
|
+
- importar legado para rascunho revisável
|
|
49
|
+
- gerar código derivado
|
|
12
50
|
- preparar contexto IA-first
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- verificar multiplos alvos de geracao
|
|
51
|
+
- resolver docs obrigatórias por intenção antes de editar ou operar
|
|
52
|
+
- verificar múltiplos alvos de geração
|
|
16
53
|
|
|
17
|
-
|
|
54
|
+
### Três Modos De Operação
|
|
18
55
|
|
|
19
56
|
Projeto novo:
|
|
20
57
|
|
|
@@ -23,52 +60,48 @@ Projeto novo:
|
|
|
23
60
|
- `sema compilar`
|
|
24
61
|
- `sema verificar`
|
|
25
62
|
|
|
26
|
-
Projeto
|
|
63
|
+
Projeto já semantizado:
|
|
27
64
|
|
|
28
65
|
- `sema inspecionar`
|
|
29
66
|
- `sema resumo`
|
|
30
67
|
- `sema drift`
|
|
31
68
|
- `sema contexto-ia`
|
|
32
69
|
|
|
33
|
-
|
|
70
|
+
Adoção incremental:
|
|
34
71
|
|
|
35
72
|
- `sema importar`
|
|
36
73
|
- `sema formatar`
|
|
37
74
|
- `sema validar`
|
|
38
75
|
- `sema drift`
|
|
39
76
|
|
|
40
|
-
##
|
|
77
|
+
## Persistência vendor-first
|
|
41
78
|
|
|
42
|
-
A linha
|
|
79
|
+
A linha 1.5.19 mantém persistência vendor-first como seção canônica no contrato, no semântico, na IR e no formatador, além de `drift` com escopo real, `impacto`, renomeação semântica assistida, `verificar` mais coerente nos alvos gerados, match de métodos JS/TS definidos via `Object.assign(...prototype...)`, leitura de `Preferences`/`localStorage`/`sessionStorage`, fallback para `angular-consumer` standalone sem `.routes`, limpeza de runtime da CLI pública no Windows, Sema Author oficial e MCP remoto desmembrado da distribuição pública.
|
|
43
80
|
|
|
44
|
-
Cobertura
|
|
81
|
+
Cobertura pública:
|
|
45
82
|
|
|
46
83
|
- `postgres`: `table`, `relationship`, `query`, `schema`, capacidades relacionais
|
|
47
|
-
- `mysql`: `table`, `index`, consultas SQL e
|
|
84
|
+
- `mysql`: `table`, `index`, consultas SQL e diferenças operacionais do engine
|
|
48
85
|
- `sqlite`: `table`, `retention`, uso local e edge
|
|
49
86
|
- `mongodb`: `collection`, `document`, `query` em `pipeline`
|
|
50
|
-
- `redis`: `keyspace`, `stream`, `retention`, TTL e
|
|
87
|
+
- `redis`: `keyspace`, `stream`, `retention`, TTL e superfícies de estado
|
|
51
88
|
|
|
52
|
-
## Drift e
|
|
89
|
+
## Drift e código vivo
|
|
53
90
|
|
|
54
91
|
`sema drift` agora cruza contrato com recursos reais encontrados em:
|
|
55
92
|
|
|
56
|
-
-
|
|
57
|
-
- codigo Lua usado como runtime ou bridge
|
|
58
|
-
- codigo PHP usado como backend, controller, runtime ou bridge
|
|
93
|
+
- código de backend
|
|
59
94
|
- DDL `.sql`
|
|
60
95
|
- schema `.prisma`
|
|
61
96
|
- uso de MongoDB
|
|
62
97
|
- uso de Redis, incluindo keyspaces e streams
|
|
63
98
|
|
|
64
|
-
O objetivo
|
|
99
|
+
O objetivo não é adivinhar tudo; é produzir um score explicável com lacunas claras.
|
|
65
100
|
|
|
66
101
|
## Ajuda IA-first
|
|
67
102
|
|
|
68
103
|
- `sema ajuda-ia`
|
|
69
104
|
- `sema starter-ia`
|
|
70
|
-
- `sema author`
|
|
71
|
-
- `sema author exemplo --sensivel --json`
|
|
72
105
|
- `sema resumo <arquivo-ou-pasta> --micro|--curto|--medio`
|
|
73
106
|
- `sema prompt-curto <arquivo-ou-pasta> --micro|--curto|--medio`
|
|
74
107
|
- `sema contexto-ia <arquivo.sema> --saida <diretorio>`
|
|
@@ -76,7 +109,35 @@ O objetivo nao e adivinhar tudo; e produzir um score explicavel com lacunas clar
|
|
|
76
109
|
- `sema docs-impacto --intencao <acao> --criar-ausentes --json`
|
|
77
110
|
- `sema finalizar-mudanca --intencao <acao> --doc-lida <caminho> --json`
|
|
78
111
|
|
|
79
|
-
##
|
|
112
|
+
## Profiles Semânticos
|
|
113
|
+
|
|
114
|
+
Profiles oficiais usam contrato Sema normal e um gate de requisitos obrigatórios. O requisito comum é contrato primeiro: criar, editar ou remover contrato antes de qualquer ação. Se o contrato não declara o mínimo do domínio, o comando falha.
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
sema profile validar software contratos/sema/software.sema --json
|
|
118
|
+
sema profile validar workflow contratos/sema/workflow_ops.sema --json
|
|
119
|
+
sema profile validar ops contratos/sema/workflow_ops.sema --json
|
|
120
|
+
sema profile validar game contratos/sema/game.sema --json
|
|
121
|
+
sema profile validar legal contratos/sema/legal.sema --json
|
|
122
|
+
sema profile validar research contratos/sema/research.sema --json
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Sema Author
|
|
126
|
+
|
|
127
|
+
Author é um profile oficial para governança autoral IA-first. Ele usa a mesma DSL, sem palavra-chave nova, e organiza contratos em core, agents e flow. Se obra, tom, limite, público ou política muda, edite o contrato antes de gerar ou revisar texto.
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
sema author iniciar --saida contratos/author.sema
|
|
131
|
+
sema author iniciar --tema-sensivel --saida contratos/author.sema
|
|
132
|
+
sema author validar contratos/author.sema --json
|
|
133
|
+
sema author briefing contratos/author.sema --json
|
|
134
|
+
sema author revisar-cliches contratos/author.sema --texto "O escolhido predestinado aceitou a missão." --json
|
|
135
|
+
sema author validar-narrativa contratos/author.sema --texto "Mara perdeu a chave para salvar Raul. Por isso, o capitulo seguinte muda a promessa dela." --texto-anterior "Mara prometeu proteger a chave." --json
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
O comando `author iniciar` usa os exemplos oficiais `author_obra_comum.sema` ou `author_tema_sensivel.sema` como starter. Ele não sobrescreve contrato existente.
|
|
139
|
+
|
|
140
|
+
## Importadores Públicos
|
|
80
141
|
|
|
81
142
|
- `nestjs`
|
|
82
143
|
- `fastapi`
|
|
@@ -87,7 +148,6 @@ O objetivo nao e adivinhar tudo; e produzir um score explicavel com lacunas clar
|
|
|
87
148
|
- `angular-consumer`
|
|
88
149
|
- `flutter-consumer`
|
|
89
150
|
- `firebase`
|
|
90
|
-
- `php`
|
|
91
151
|
- `dotnet`
|
|
92
152
|
- `java`
|
|
93
153
|
- `go`
|
|
@@ -96,7 +156,6 @@ O objetivo nao e adivinhar tudo; e produzir um score explicavel com lacunas clar
|
|
|
96
156
|
- `typescript`
|
|
97
157
|
- `python`
|
|
98
158
|
- `dart`
|
|
99
|
-
- `lua`
|
|
100
159
|
|
|
101
160
|
## Comandos mais usados
|
|
102
161
|
|
|
@@ -104,16 +163,13 @@ O objetivo nao e adivinhar tudo; e produzir um score explicavel com lacunas clar
|
|
|
104
163
|
sema validar <arquivo-ou-pasta> --json
|
|
105
164
|
sema diagnosticos <arquivo.sema> --json
|
|
106
165
|
sema ir <arquivo.sema> --json
|
|
107
|
-
sema author --help
|
|
108
|
-
sema author exemplo --sensivel --json
|
|
109
166
|
sema drift <arquivo-ou-pasta> --json
|
|
167
|
+
sema author briefing <arquivo.sema> --json
|
|
168
|
+
sema author revisar-cliches <arquivo.sema> --texto <texto> --json
|
|
169
|
+
sema author validar-narrativa <arquivo.sema> --texto <texto> [--texto-anterior <texto>] --json
|
|
110
170
|
sema importar <fonte> <diretorio> --saida <diretorio> --json
|
|
111
171
|
sema docs-impacto --intencao "fazer deploy" --criar-ausentes --json
|
|
112
172
|
sema finalizar-mudanca --intencao "fazer deploy" --doc-lida docs/deploy.md --json
|
|
113
173
|
sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua> --saida <diretorio>
|
|
114
174
|
sema verificar <arquivo-ou-pasta> --saida <diretorio>
|
|
115
175
|
```
|
|
116
|
-
|
|
117
|
-
`sema author --help` lista as regras automaticas gerais do Author. No `--json`, o campo `regrasAutomaticas` entrega essas regras para agentes e fluxos externos aplicarem sem depender de prompt solto.
|
|
118
|
-
|
|
119
|
-
Quando um contrato Author gera `contexto-ia`, `resumo`, `prompt-curto` ou `SEMA_BRIEF`, os artefatos compactos tambem incluem `AUTHOR_RULES_AUTO` e `briefing.min.json.regrasAuthorAutomaticas`, para que uma IA com contexto pequeno aplique o piso editorial sem precisar abrir `ir.json`.
|
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
# Como Ensinar a Sema para IA
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
|
|
9
|
+
Este documento explica como fazer uma IA entender a Sema sem depender de memória prévia do modelo. A estratégia correta não é presumir que a IA "já conhece a linguagem", e sim entregar contexto suficiente para ela operar com segurança.
|
|
10
|
+
|
|
11
|
+
Leia isso do ponto de vista da CLI pública. A IA não deve assumir que está dentro do monorepo da Sema, nem que precisa chamar `node pacotes/cli/dist/index.js`.
|
|
6
12
|
|
|
7
13
|
## Principio central
|
|
8
14
|
|
|
9
15
|
Uma IA entende uma linguagem nova quando recebe quatro camadas de contexto:
|
|
10
16
|
|
|
11
17
|
1. sintaxe
|
|
12
|
-
2.
|
|
18
|
+
2. semântica
|
|
13
19
|
3. estrutura intermediaria estavel
|
|
14
20
|
4. exemplos reais
|
|
15
21
|
|
|
16
|
-
Sem essas quatro camadas, o modelo comeca a adivinhar.
|
|
22
|
+
Sem essas quatro camadas, o modelo comeca a adivinhar. É adivinhação em linguagem de contrato e pedir para nascer bug feio.
|
|
17
23
|
|
|
18
|
-
Antes de qualquer outra coisa, a IA
|
|
24
|
+
Antes de qualquer outra coisa, a IA também precisa receber a **moldura correta**:
|
|
19
25
|
|
|
20
|
-
- a Sema
|
|
21
|
-
- a Sema foi feita para IA,
|
|
22
|
-
- a Sema
|
|
26
|
+
- a Sema é um contrato semântico IA-first para agentes operarem software vivo
|
|
27
|
+
- a Sema foi feita para IA, não para ergonomia humana
|
|
28
|
+
- a Sema não foi feita para "automatizar tudo"
|
|
23
29
|
- a Sema existe para explicitar, alinhar e verificar contrato contra sistema vivo
|
|
24
|
-
-
|
|
30
|
+
- humanos sao autores, revisores e aprovadores; agentes sao consumidores primarios
|
|
25
31
|
|
|
26
|
-
Se a IA errar essa moldura, ela vai cobrar da ferramenta a coisa errada e operar
|
|
32
|
+
Se a IA errar essa moldura, ela vai cobrar da ferramenta a coisa errada e operar por adivinhação.
|
|
27
33
|
|
|
28
34
|
## Camada 1. Sintaxe
|
|
29
35
|
|
|
@@ -33,33 +39,33 @@ Fontes principais:
|
|
|
33
39
|
|
|
34
40
|
- [README.md](../README.md)
|
|
35
41
|
- [sintaxe.md](./sintaxe.md)
|
|
36
|
-
- [
|
|
42
|
+
- [integração-com-ia.md](./integracao-com-ia.md)
|
|
37
43
|
|
|
38
44
|
Objetivo dessa camada:
|
|
39
45
|
|
|
40
46
|
- reconhecer blocos validos
|
|
41
47
|
- entender delimitadores
|
|
42
|
-
-
|
|
48
|
+
- não inventar palavras-chave
|
|
43
49
|
- respeitar a organizacao canonicamente formatada
|
|
44
50
|
|
|
45
|
-
## Camada 2.
|
|
51
|
+
## Camada 2. Semântica
|
|
46
52
|
|
|
47
53
|
Depois de saber ler, a IA precisa saber o que cada bloco significa.
|
|
48
54
|
|
|
49
55
|
Fontes principais:
|
|
50
56
|
|
|
51
57
|
- [README.md](../README.md)
|
|
52
|
-
- [
|
|
58
|
+
- [integração-com-ia.md](./integracao-com-ia.md)
|
|
53
59
|
- [pagamento-ponta-a-ponta.md](./pagamento-ponta-a-ponta.md)
|
|
54
60
|
|
|
55
61
|
Objetivo dessa camada:
|
|
56
62
|
|
|
57
63
|
- distinguir contrato interno de `task`
|
|
58
|
-
- distinguir contrato
|
|
64
|
+
- distinguir contrato público de `route`
|
|
59
65
|
- entender `effects`, `guarantees`, `error`, `state` e `flow`
|
|
60
|
-
- operar na linguagem como especificacao executavel,
|
|
66
|
+
- operar na linguagem como especificacao executavel, não como texto decorativo
|
|
61
67
|
- entender que `importar` e bootstrap
|
|
62
|
-
- entender que `drift` e regua de
|
|
68
|
+
- entender que `drift` e regua de coerência contra o runtime
|
|
63
69
|
- entender que `impl` e ponte rastreavel para simbolo vivo
|
|
64
70
|
|
|
65
71
|
## Camada 3. Estrutura intermediaria estavel
|
|
@@ -81,18 +87,18 @@ sema verificar arquivo-ou-pasta --json --saida ./.tmp/verificacao-ia
|
|
|
81
87
|
|
|
82
88
|
Como cada comando ajuda:
|
|
83
89
|
|
|
84
|
-
- `resumo`: entrega cartao
|
|
85
|
-
- `validar --json`: diz se a base
|
|
90
|
+
- `resumo`: entrega cartao semântico pequeno para IA com janela curta
|
|
91
|
+
- `validar --json`: diz se a base está semanticamente valida
|
|
86
92
|
- `diagnosticos --json`: devolve erros e avisos como contrato estruturado
|
|
87
93
|
- `ast --json`: mostra a forma sintatica escrita
|
|
88
|
-
- `ir --json`: mostra a forma
|
|
94
|
+
- `ir --json`: mostra a forma semântica resolvida
|
|
89
95
|
- `verificar --json`: mostra o estado operacional do projeto
|
|
90
96
|
|
|
91
|
-
Se a IA puder consumir `ir --json`, melhor ainda.
|
|
97
|
+
Se a IA puder consumir `ir --json`, melhor ainda. É ali que a linguagem fica menos ambigua e mais utilizavel para automacao. Para modelo pequeno, comece em `resumo` e `briefing.min.json`.
|
|
92
98
|
|
|
93
99
|
## Camada 4. Exemplos reais
|
|
94
100
|
|
|
95
|
-
Modelo aprende muito por
|
|
101
|
+
Modelo aprende muito por padrão. Por isso, bons exemplos valem quase tanto quanto especificacao.
|
|
96
102
|
|
|
97
103
|
Arquivos recomendados:
|
|
98
104
|
|
|
@@ -102,27 +108,27 @@ Arquivos recomendados:
|
|
|
102
108
|
- [tratamento_erro.sema](../exemplos/tratamento_erro.sema)
|
|
103
109
|
- [crud_simples.sema](../exemplos/crud_simples.sema)
|
|
104
110
|
|
|
105
|
-
O vertical oficial de pagamento deve ser tratado como a
|
|
111
|
+
O vertical oficial de pagamento deve ser tratado como a referência principal.
|
|
106
112
|
|
|
107
|
-
## O que a IA
|
|
113
|
+
## O que a IA não deve fazer
|
|
108
114
|
|
|
109
|
-
- inventar palavras-chave fora da
|
|
115
|
+
- inventar palavras-chave fora da gramática
|
|
110
116
|
- introduzir blocos inexistentes
|
|
111
|
-
- assumir
|
|
112
|
-
- tratar draft importado como contrato final
|
|
113
|
-
- tratar a Sema como gerador
|
|
117
|
+
- assumir semântica que não aparece na especificacao
|
|
118
|
+
- tratar draft importado como contrato final só porque veio da CLI
|
|
119
|
+
- tratar a Sema como gerador mágico de sistema completo
|
|
114
120
|
- editar `.sema` sem rodar `sema formatar`
|
|
115
121
|
- encerrar alteracao sem consultar `diagnosticos` quando houver falha
|
|
116
122
|
|
|
117
123
|
## O que a IA deve fazer
|
|
118
124
|
|
|
119
|
-
- usar a
|
|
120
|
-
- usar a IR como fonte de verdade
|
|
121
|
-
- usar
|
|
125
|
+
- usar a gramática e os exemplos como fonte de estilo
|
|
126
|
+
- usar a IR como fonte de verdade semântica sempre que possóvel
|
|
127
|
+
- usar diagnósticos estruturados como guia de correcao
|
|
122
128
|
- rodar o formatador antes de considerar o trabalho pronto
|
|
123
129
|
- validar e verificar a mudanca no mesmo fluxo
|
|
124
130
|
|
|
125
|
-
##
|
|
131
|
+
## Estratégia recomendada
|
|
126
132
|
|
|
127
133
|
Se voce for instruir uma IA para trabalhar com Sema, entregue o contexto nesta ordem:
|
|
128
134
|
|
|
@@ -131,19 +137,19 @@ Se voce for instruir uma IA para trabalhar com Sema, entregue o contexto nesta o
|
|
|
131
137
|
3. [pagamento-ponta-a-ponta.md](./pagamento-ponta-a-ponta.md)
|
|
132
138
|
4. [prompt-base-ia-sema.md](./prompt-base-ia-sema.md)
|
|
133
139
|
5. `sema resumo --micro` ou `sema resumo --curto`, conforme a capacidade da IA
|
|
134
|
-
6. `ast --json`, `ir --json` e `diagnosticos --json` do
|
|
140
|
+
6. `ast --json`, `ir --json` e `diagnosticos --json` do módulo alvo, se a capacidade aguentar
|
|
135
141
|
|
|
136
142
|
Essa ordem faz a IA ir de contexto geral para contexto operacional, em vez de cair direto num arquivo cru e sair chutando.
|
|
137
143
|
|
|
138
144
|
## Regra de ouro
|
|
139
145
|
|
|
140
|
-
A Sema foi desenhada para ser entendida por IA, mas isso
|
|
146
|
+
A Sema foi desenhada para ser entendida por IA, mas isso não significa que a IA vai adivinhar sozinha.
|
|
141
147
|
|
|
142
148
|
Ela entende bem quando recebe:
|
|
143
149
|
|
|
144
150
|
- especificacao
|
|
145
151
|
- exemplos
|
|
146
152
|
- JSON estrutural
|
|
147
|
-
- feedback
|
|
153
|
+
- feedback automático
|
|
148
154
|
|
|
149
|
-
Sem isso,
|
|
155
|
+
Sem isso, até o modelo mais caro vira estagiário emocionado.
|
package/docs/deploy.md
CHANGED
|
@@ -1,70 +1,258 @@
|
|
|
1
1
|
# Deploy
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final.
|
|
4
7
|
|
|
5
|
-
##
|
|
8
|
+
## EN
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
- `sema inspecionar contratos/sema/governanca_ia.sema --json` executado para confirmar o contrato relacionado.
|
|
9
|
-
- `sema drift contratos/sema/governanca_ia.sema --escopo modulo --json` sem diagnosticos bloqueantes.
|
|
10
|
-
- `sema docs-impacto --intencao "<release>" --criar-ausentes --json` executado e todos os docs obrigatorios lidos.
|
|
11
|
-
- `npm whoami` autenticado com uma conta que pode publicar `@semacode/cli` e `@semacode/mcp`.
|
|
12
|
-
- `gh auth status` autenticado com permissao de push e release em `gerlanss/Sema`.
|
|
13
|
-
- Workspace revisado para nao incluir lixo local, caches ou artefatos temporarios fora de `.tmp/`.
|
|
10
|
+
This runbook covers two different deploy surfaces for Sema:
|
|
14
11
|
|
|
15
|
-
|
|
12
|
+
- Sema public website and private MCP server at `https://sema.otimitare.online`.
|
|
13
|
+
- Public package releases for CLI/VSIX/NPM/GitHub.
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
2. Atualize `package.json`, workspaces, lockfiles, changelog e docs antes de empacotar.
|
|
19
|
-
3. Rode `npm run build`.
|
|
20
|
-
4. Rode os testes focados e checagens de release.
|
|
21
|
-
5. Rode `npm run release:preparar-publica` para gerar `.tmp/release-assets`.
|
|
22
|
-
6. Publique NPM com `npm run release:publicar-npm`.
|
|
23
|
-
7. Instale a CLI e o MCP publicados para smoke test.
|
|
24
|
-
8. Empacote e instale a VSIX localmente para smoke test da extensao.
|
|
25
|
-
9. Rode `sema finalizar-mudanca` com as docs lidas antes de concluir.
|
|
26
|
-
10. Commit, push, tag e GitHub Release com os assets gerados.
|
|
15
|
+
The production website/MCP target is the **Sema VPS**, not the OtimiTare application VPS.
|
|
27
16
|
|
|
28
|
-
|
|
17
|
+
### Sema Production VPS
|
|
18
|
+
|
|
19
|
+
Operational facts:
|
|
20
|
+
|
|
21
|
+
- Domain: `sema.otimitare.online`
|
|
22
|
+
- Current public DNS target: resolve the domain before deploy, do not trust an old IP.
|
|
23
|
+
- SSH user: use the operational server user configured outside this repository.
|
|
24
|
+
- SSH identity: resolve it from local SSH config or a secret manager outside this repository.
|
|
25
|
+
- Static site root: `/srv/sema/site`
|
|
26
|
+
- Caddy config in this repo: `deploy/caddy/sema-site.Caddyfile`
|
|
27
|
+
- MCP service: `sema-mcp.service`
|
|
28
|
+
- MCP upstream: `127.0.0.1:3010`
|
|
29
|
+
|
|
30
|
+
Do not use the stale `otimitare` SSH alias for Sema deploy. It points to an old host/key pair and is not the source of truth.
|
|
31
|
+
|
|
32
|
+
Never commit private key content, private-key filenames, local key paths, IPs that are not already public DNS, or secret inventory details.
|
|
33
|
+
|
|
34
|
+
### Website Deploy
|
|
35
|
+
|
|
36
|
+
Before publishing:
|
|
37
|
+
|
|
38
|
+
```powershell
|
|
39
|
+
node pacotes\cli\dist\index.js validar contratos\sema\site_publico.sema --json
|
|
40
|
+
node pacotes\cli\dist\index.js drift contratos\sema\site_publico.sema --escopo modulo --json
|
|
41
|
+
npm run build
|
|
42
|
+
npm run format:check
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Confirm the target:
|
|
46
|
+
|
|
47
|
+
```powershell
|
|
48
|
+
Resolve-DnsName sema.otimitare.online
|
|
49
|
+
ssh sema-vps "hostname; systemctl is-active sema-mcp.service; ls -ld /srv/sema/site"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Create a remote backup and publish static files:
|
|
53
|
+
|
|
54
|
+
```powershell
|
|
55
|
+
$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
|
|
56
|
+
ssh sema-vps "mkdir -p /srv/sema/backups/site-$stamp && cp -a /srv/sema/site/. /srv/sema/backups/site-$stamp/"
|
|
57
|
+
scp -r site\sema\* sema-vps:/srv/sema/site/
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Validate after deploy:
|
|
61
|
+
|
|
62
|
+
```powershell
|
|
63
|
+
curl.exe -k -fsS https://sema.otimitare.online/healthz
|
|
64
|
+
curl.exe -k -fsS https://sema.otimitare.online/painel.html
|
|
65
|
+
curl.exe -k -fsS -D - https://sema.otimitare.online/mcp -o NUL
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Expected result:
|
|
69
|
+
|
|
70
|
+
- `/healthz` returns healthy.
|
|
71
|
+
- `/painel.html` serves the current static panel.
|
|
72
|
+
- `/mcp` without token does not expose data; it should return an auth challenge or unauthorized response.
|
|
73
|
+
|
|
74
|
+
### Public Package Release
|
|
75
|
+
|
|
76
|
+
Before publishing a CLI or VSIX release:
|
|
29
77
|
|
|
30
78
|
```bash
|
|
31
79
|
npm run build
|
|
32
80
|
npm run format:check
|
|
33
81
|
npm run status:check
|
|
34
|
-
node --import tsx --test --test-name-pattern "docs operacionais|ajuda de ia
|
|
82
|
+
node --import tsx --test --test-name-pattern "docs operacionais|ajuda de ia" testes/integracao/cli-json-e-editor.test.ts
|
|
35
83
|
sema validar contratos/sema/governanca_ia.sema --json
|
|
36
84
|
sema drift contratos/sema/governanca_ia.sema --escopo modulo --json
|
|
85
|
+
npm run release:verificar-versao
|
|
37
86
|
```
|
|
38
87
|
|
|
39
|
-
|
|
88
|
+
Then:
|
|
40
89
|
|
|
41
90
|
```bash
|
|
91
|
+
npm run release:preparar-publica
|
|
92
|
+
npm run release:publicar-npm
|
|
42
93
|
npm view @semacode/cli version
|
|
43
|
-
npm view @semacode/mcp version
|
|
44
94
|
npm install -g @semacode/cli@<versao>
|
|
45
|
-
npm install -g @semacode/mcp@<versao>
|
|
46
95
|
sema --version
|
|
47
|
-
|
|
48
|
-
sema-mcp --help
|
|
96
|
+
npm run release:verificar-publica
|
|
49
97
|
```
|
|
50
98
|
|
|
51
|
-
|
|
99
|
+
Stop if NPM already has the version, `gh auth status` fails, `npm whoami` fails, Sema validation fails, or release verification finds a mismatch.
|
|
52
100
|
|
|
53
|
-
|
|
101
|
+
## PT
|
|
54
102
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
- `sema
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
103
|
+
Este runbook cobre duas superfícies diferentes de deploy da Sema:
|
|
104
|
+
|
|
105
|
+
- site público e servidor MCP privado em `https://sema.otimitare.online`;
|
|
106
|
+
- releases públicos de CLI/VSIX/NPM/GitHub.
|
|
107
|
+
|
|
108
|
+
O alvo de produção do site/MCP é a **VPS da Sema**, não a VPS da aplicação OtimiTare.
|
|
109
|
+
|
|
110
|
+
### VPS de Produção da Sema
|
|
111
|
+
|
|
112
|
+
Fatos operacionais:
|
|
113
|
+
|
|
114
|
+
- Domínio: `sema.otimitare.online`
|
|
115
|
+
- DNS público atual: resolva o domínio antes do deploy; não confie em IP antigo.
|
|
116
|
+
- Usuário SSH: use o usuário operacional do servidor configurado fora deste repositório.
|
|
117
|
+
- Identidade SSH: resolva pelo SSH config local ou secret manager fora deste repositório.
|
|
118
|
+
- Raiz do site estático: `/srv/sema/site`
|
|
119
|
+
- Configuração Caddy neste repositório: `deploy/caddy/sema-site.Caddyfile`
|
|
120
|
+
- Serviço MCP: `sema-mcp.service`
|
|
121
|
+
- Upstream MCP: `127.0.0.1:3010`
|
|
122
|
+
|
|
123
|
+
Não use o alias SSH antigo `otimitare` para deploy da Sema. Ele aponta para host/chave antigos e não é fonte da verdade.
|
|
124
|
+
|
|
125
|
+
Nunca commite conteúdo de chave privada, nomes de arquivos de chave privada, caminhos locais de chave, IPs que não sejam DNS público ou detalhes do inventário de segredos.
|
|
126
|
+
|
|
127
|
+
### Deploy do Site
|
|
128
|
+
|
|
129
|
+
Antes de publicar:
|
|
130
|
+
|
|
131
|
+
```powershell
|
|
132
|
+
node pacotes\cli\dist\index.js validar contratos\sema\site_publico.sema --json
|
|
133
|
+
node pacotes\cli\dist\index.js drift contratos\sema\site_publico.sema --escopo modulo --json
|
|
134
|
+
npm run build
|
|
135
|
+
npm run format:check
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Confirme o alvo:
|
|
139
|
+
|
|
140
|
+
```powershell
|
|
141
|
+
Resolve-DnsName sema.otimitare.online
|
|
142
|
+
ssh sema-vps "hostname; systemctl is-active sema-mcp.service; ls -ld /srv/sema/site"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Crie backup remoto e publique os arquivos estáticos:
|
|
146
|
+
|
|
147
|
+
```powershell
|
|
148
|
+
$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
|
|
149
|
+
ssh sema-vps "mkdir -p /srv/sema/backups/site-$stamp && cp -a /srv/sema/site/. /srv/sema/backups/site-$stamp/"
|
|
150
|
+
scp -r site\sema\* sema-vps:/srv/sema/site/
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Valide depois do deploy:
|
|
154
|
+
|
|
155
|
+
```powershell
|
|
156
|
+
curl.exe -k -fsS https://sema.otimitare.online/healthz
|
|
157
|
+
curl.exe -k -fsS https://sema.otimitare.online/painel.html
|
|
158
|
+
curl.exe -k -fsS -D - https://sema.otimitare.online/mcp -o NUL
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Resultado esperado:
|
|
162
|
+
|
|
163
|
+
- `/healthz` responde saudável.
|
|
164
|
+
- `/painel.html` serve o painel estático atual.
|
|
165
|
+
- `/mcp` sem token não expõe dados; deve devolver desafio de autenticação ou não autorizado.
|
|
166
|
+
|
|
167
|
+
### Release Público
|
|
168
|
+
|
|
169
|
+
Antes de publicar CLI ou VSIX:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npm run build
|
|
173
|
+
npm run format:check
|
|
174
|
+
npm run status:check
|
|
175
|
+
node --import tsx --test --test-name-pattern "docs operacionais|ajuda de ia" testes/integracao/cli-json-e-editor.test.ts
|
|
176
|
+
sema validar contratos/sema/governanca_ia.sema --json
|
|
177
|
+
sema drift contratos/sema/governanca_ia.sema --escopo modulo --json
|
|
178
|
+
npm run release:verificar-versao
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Depois:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
npm run release:preparar-publica
|
|
185
|
+
npm run release:publicar-npm
|
|
186
|
+
npm view @semacode/cli version
|
|
187
|
+
npm install -g @semacode/cli@<versao>
|
|
188
|
+
sema --version
|
|
189
|
+
npm run release:verificar-publica
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Pare se a versão já existir no NPM, `gh auth status` falhar, `npm whoami` falhar, a validação Sema falhar ou a verificação de release encontrar desalinhamento.
|
|
193
|
+
|
|
194
|
+
## ES
|
|
195
|
+
|
|
196
|
+
Este runbook cubre dos superficies distintas de despliegue de Sema:
|
|
197
|
+
|
|
198
|
+
- sitio público y servidor MCP privado en `https://sema.otimitare.online`;
|
|
199
|
+
- releases públicos de CLI/VSIX/NPM/GitHub.
|
|
200
|
+
|
|
201
|
+
El destino de producción del sitio/MCP es la **VPS de Sema**, no la VPS de la aplicación OtimiTare.
|
|
202
|
+
|
|
203
|
+
### VPS de Producción de Sema
|
|
204
|
+
|
|
205
|
+
Datos operativos:
|
|
206
|
+
|
|
207
|
+
- Dominio: `sema.otimitare.online`
|
|
208
|
+
- DNS público actual: resuelve el dominio antes del despliegue; no confíes en una IP antigua.
|
|
209
|
+
- Usuario SSH: usa el usuario operativo del servidor configurado fuera de este repositorio.
|
|
210
|
+
- Identidad SSH: resuélvela desde el SSH config local o secret manager fuera de este repositorio.
|
|
211
|
+
- Raíz del sitio estático: `/srv/sema/site`
|
|
212
|
+
- Configuración Caddy en este repositorio: `deploy/caddy/sema-site.Caddyfile`
|
|
213
|
+
- Servicio MCP: `sema-mcp.service`
|
|
214
|
+
- Upstream MCP: `127.0.0.1:3010`
|
|
215
|
+
|
|
216
|
+
No uses el alias SSH antiguo `otimitare` para desplegar Sema. Apunta a un host/par de llaves antiguo y no es la fuente de verdad.
|
|
217
|
+
|
|
218
|
+
Nunca hagas commit del contenido de la llave privada, nombres de archivos de llave privada, rutas locales de llaves, IPs que no sean DNS público o detalles del inventario de secretos.
|
|
219
|
+
|
|
220
|
+
### Despliegue del Sitio
|
|
221
|
+
|
|
222
|
+
Antes de publicar:
|
|
223
|
+
|
|
224
|
+
```powershell
|
|
225
|
+
node pacotes\cli\dist\index.js validar contratos\sema\site_publico.sema --json
|
|
226
|
+
node pacotes\cli\dist\index.js drift contratos\sema\site_publico.sema --escopo modulo --json
|
|
227
|
+
npm run build
|
|
228
|
+
npm run format:check
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Confirma el destino:
|
|
232
|
+
|
|
233
|
+
```powershell
|
|
234
|
+
Resolve-DnsName sema.otimitare.online
|
|
235
|
+
ssh sema-vps "hostname; systemctl is-active sema-mcp.service; ls -ld /srv/sema/site"
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Crea backup remoto y publica los archivos estáticos:
|
|
239
|
+
|
|
240
|
+
```powershell
|
|
241
|
+
$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
|
|
242
|
+
ssh sema-vps "mkdir -p /srv/sema/backups/site-$stamp && cp -a /srv/sema/site/. /srv/sema/backups/site-$stamp/"
|
|
243
|
+
scp -r site\sema\* sema-vps:/srv/sema/site/
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Valida después del despliegue:
|
|
247
|
+
|
|
248
|
+
```powershell
|
|
249
|
+
curl.exe -k -fsS https://sema.otimitare.online/healthz
|
|
250
|
+
curl.exe -k -fsS https://sema.otimitare.online/painel.html
|
|
251
|
+
curl.exe -k -fsS -D - https://sema.otimitare.online/mcp -o NUL
|
|
252
|
+
```
|
|
63
253
|
|
|
64
|
-
|
|
254
|
+
Resultado esperado:
|
|
65
255
|
|
|
66
|
-
-
|
|
67
|
-
- `
|
|
68
|
-
- `
|
|
69
|
-
- `sema validar`, `sema drift`, build ou testes falham.
|
|
70
|
-
- `release:preparar-publica` encontra versoes desalinhadas entre root, CLI, MCP e extensao.
|
|
256
|
+
- `/healthz` responde saludable.
|
|
257
|
+
- `/painel.html` sirve el panel estático actual.
|
|
258
|
+
- `/mcp` sin token no expone datos; debe devolver desafío de autenticación o no autorizado.
|