@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.
Files changed (111) hide show
  1. package/AGENTS.md +268 -260
  2. package/LICENSE +22 -22
  3. package/README.md +93 -61
  4. package/SEMA_BRIEF.curto.txt +8 -6
  5. package/SEMA_BRIEF.md +71 -22
  6. package/SEMA_BRIEF.micro.txt +7 -5
  7. package/SEMA_INDEX.json +931 -193
  8. package/dist/controleComercialSupabase.d.ts +326 -0
  9. package/dist/controleComercialSupabase.js +310 -0
  10. package/dist/controleComercialSupabase.js.map +1 -0
  11. package/dist/docs.js +48 -20
  12. package/dist/docs.js.map +1 -1
  13. package/dist/drift.d.ts +5 -3
  14. package/dist/drift.js +119 -116
  15. package/dist/drift.js.map +1 -1
  16. package/dist/importador.d.ts +1 -1
  17. package/dist/importador.js +1 -200
  18. package/dist/importador.js.map +1 -1
  19. package/dist/index.js +1924 -493
  20. package/dist/index.js.map +1 -1
  21. package/dist/mcpRemoto.d.ts +32 -0
  22. package/dist/mcpRemoto.js +61 -0
  23. package/dist/mcpRemoto.js.map +1 -0
  24. package/dist/projeto.js +3 -21
  25. package/dist/projeto.js.map +1 -1
  26. package/dist/tipos.d.ts +1 -1
  27. package/docs/AGENT_STARTER.md +109 -102
  28. package/docs/cli.md +89 -33
  29. package/docs/como-ensinar-a-sema-para-ia.md +42 -36
  30. package/docs/deploy.md +231 -43
  31. package/docs/documentacao.md +61 -36
  32. package/docs/env.md +63 -14
  33. package/docs/extensao-vscode.md +12 -4
  34. package/docs/fluxo-pratico-ia-sema.md +45 -35
  35. package/docs/instalacao-e-primeiro-uso.md +52 -30
  36. package/docs/integracao-com-ia.md +44 -35
  37. package/docs/mcp.md +270 -31
  38. package/docs/pagamento-ponta-a-ponta.md +40 -24
  39. package/docs/persistencia-vendor-first.md +11 -5
  40. package/docs/prompt-base-ia-sema.md +18 -11
  41. package/docs/rollback.md +17 -15
  42. package/docs/sintaxe.md +37 -229
  43. package/exemplos/agendamento.sema +105 -106
  44. package/exemplos/assinatura.sema +133 -136
  45. package/exemplos/auditoria.sema +89 -88
  46. package/exemplos/autenticacao.sema +125 -125
  47. package/exemplos/author_obra_comum.sema +294 -0
  48. package/exemplos/author_tema_sensivel.sema +264 -0
  49. package/exemplos/automacao.sema +107 -107
  50. package/exemplos/cadastro_usuario.sema +54 -54
  51. package/exemplos/calculadora.sema +78 -78
  52. package/exemplos/crud_simples.sema +89 -89
  53. package/exemplos/estoque.sema +127 -126
  54. package/exemplos/exportacao.sema +94 -94
  55. package/exemplos/fila.sema +130 -131
  56. package/exemplos/integracao_externa.sema +94 -94
  57. package/exemplos/multi_tenant.sema +140 -140
  58. package/exemplos/notificacao.sema +149 -98
  59. package/exemplos/operacao_estrategia.sema +633 -402
  60. package/exemplos/pagamento.sema +434 -222
  61. package/exemplos/pagamento_dominio.sema +35 -35
  62. package/exemplos/pedido.sema +255 -119
  63. package/exemplos/permissao.sema +121 -121
  64. package/exemplos/persistencia_vendor_first.sema +86 -86
  65. package/exemplos/profile_game.sema +114 -0
  66. package/exemplos/profile_legal.sema +105 -0
  67. package/exemplos/profile_ops.sema +110 -0
  68. package/exemplos/profile_research.sema +104 -0
  69. package/exemplos/profile_software.sema +123 -0
  70. package/exemplos/profile_workflow_n8n.sema +99 -0
  71. package/exemplos/relatorio.sema +93 -93
  72. package/exemplos/replica_analitica_erp.sema +160 -0
  73. package/exemplos/testes_embutidos.sema +45 -45
  74. package/exemplos/tratamento_erro.sema +157 -157
  75. package/exemplos/upload_arquivo.sema +93 -93
  76. package/exemplos/webhook.sema +94 -96
  77. package/llms-full.txt +34 -34
  78. package/llms.txt +17 -17
  79. package/node_modules/@sema/gerador-css/dist/index.js +563 -563
  80. package/node_modules/@sema/gerador-css/package.json +1 -1
  81. package/node_modules/@sema/gerador-dart/package.json +1 -1
  82. package/node_modules/@sema/gerador-html/dist/index.js +90 -90
  83. package/node_modules/@sema/gerador-html/package.json +1 -1
  84. package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
  85. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  86. package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
  87. package/node_modules/@sema/gerador-lua/package.json +1 -1
  88. package/node_modules/@sema/gerador-python/dist/index.js +122 -96
  89. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
  90. package/node_modules/@sema/gerador-python/package.json +1 -1
  91. package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
  92. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  93. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -4
  94. package/node_modules/@sema/nucleo/dist/formatador/index.js +26 -46
  95. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  96. package/node_modules/@sema/nucleo/dist/ir/conversor.js +9 -204
  97. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  98. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -35
  99. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -21
  100. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
  101. package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -40
  102. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  103. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +6 -5
  104. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +76 -307
  105. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  106. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +2 -0
  107. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +32 -2
  108. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -1
  109. package/node_modules/@sema/nucleo/package.json +1 -1
  110. package/node_modules/@sema/padroes/package.json +1 -1
  111. package/package.json +15 -15
package/docs/cli.md CHANGED
@@ -1,20 +1,57 @@
1
- # CLI da Sema
1
+ # Sema CLI
2
2
 
3
- ## Papel da CLI
3
+ ## English
4
4
 
5
- A CLI e a interface oficial da Sema para:
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 codigo vivo
10
- - importar legado para rascunho revisavel
11
- - gerar codigo derivado
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
- - expor profiles operacionais como `sema author`
14
- - resolver docs obrigatorias por intencao antes de editar ou operar
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
- ## Tres modos de operacao
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 ja semantizado:
63
+ Projeto semantizado:
27
64
 
28
65
  - `sema inspecionar`
29
66
  - `sema resumo`
30
67
  - `sema drift`
31
68
  - `sema contexto-ia`
32
69
 
33
- Adocao incremental:
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
- ## Persistencia vendor-first
77
+ ## Persistência vendor-first
41
78
 
42
- A linha atual adiciona uma secao canonica de persistencia no contrato, no semantico, no IR e no formatador, alem de `drift` com escopo real, `impacto`, renomeacao semantica assistida, `verificar` mais coerente nos alvos gerados, match de metodos JS/TS definidos via `Object.assign(...prototype...)`, leitura de `Preferences`/`localStorage`/`sessionStorage`, fallback para `angular-consumer` standalone sem `.routes`, compatibilidade PHP como codigo vivo e limpeza de runtime da CLI publica para reduzir atrito de instalacao no Windows.
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 publica:
81
+ Cobertura pública:
45
82
 
46
83
  - `postgres`: `table`, `relationship`, `query`, `schema`, capacidades relacionais
47
- - `mysql`: `table`, `index`, consultas SQL e diferencas operacionais do engine
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 superficies de estado
87
+ - `redis`: `keyspace`, `stream`, `retention`, TTL e superfícies de estado
51
88
 
52
- ## Drift e codigo vivo
89
+ ## Drift e código vivo
53
90
 
54
91
  `sema drift` agora cruza contrato com recursos reais encontrados em:
55
92
 
56
- - codigo de backend
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 nao e adivinhar tudo; e produzir um score explicavel com lacunas claras.
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
- ## Importadores publicos
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
- Este documento explica como fazer uma IA entender a Sema sem depender de memoria previa do modelo. A estrategia correta nao e presumir que a IA "ja conhece a linguagem", e sim entregar contexto suficiente para ela operar com seguranca.
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
- Leia isso do ponto de vista da CLI publica. A IA nao deve assumir que esta dentro do monorepo da Sema, nem que precisa chamar `node pacotes/cli/dist/index.js`.
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. semantica
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. E adivinhacao em linguagem de contrato e pedir para nascer bug feio.
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 tambem precisa receber a **moldura correta**:
24
+ Antes de qualquer outra coisa, a IA também precisa receber a **moldura correta**:
19
25
 
20
- - a Sema e um protocolo de governanca de intencao
21
- - a Sema foi feita para IA, nao para ergonomia humana
22
- - a Sema nao foi feita para "automatizar tudo"
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
- - curadoria humana continua parte da proposta
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 feito um animal apressado.
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
- - [integracao-com-ia.md](./integracao-com-ia.md)
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
- - nao inventar palavras-chave
48
+ - não inventar palavras-chave
43
49
  - respeitar a organizacao canonicamente formatada
44
50
 
45
- ## Camada 2. Semantica
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
- - [integracao-com-ia.md](./integracao-com-ia.md)
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 publico de `route`
64
+ - distinguir contrato público de `route`
59
65
  - entender `effects`, `guarantees`, `error`, `state` e `flow`
60
- - operar na linguagem como especificacao executavel, nao como texto decorativo
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 coerencia contra o runtime
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 semantico pequeno para IA com janela curta
85
- - `validar --json`: diz se a base esta semanticamente valida
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 semantica resolvida
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. E ali que a linguagem fica menos ambigua e mais utilizavel para automacao. Mas nao seja um animal: para modelo pequeno, comece em `resumo` e `briefing.min.json`.
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 padrao. Por isso, bons exemplos valem quase tanto quanto especificacao.
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 referencia principal.
111
+ O vertical oficial de pagamento deve ser tratado como a referência principal.
106
112
 
107
- ## O que a IA nao deve fazer
113
+ ## O que a IA não deve fazer
108
114
 
109
- - inventar palavras-chave fora da gramatica
115
+ - inventar palavras-chave fora da gramática
110
116
  - introduzir blocos inexistentes
111
- - assumir semantica que nao aparece na especificacao
112
- - tratar draft importado como contrato final so porque veio da CLI
113
- - tratar a Sema como gerador magico de sistema completo
117
+ - assumir semântica que não aparece na especificacao
118
+ - tratar draft importado como contrato final 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 gramatica e os exemplos como fonte de estilo
120
- - usar a IR como fonte de verdade semantica sempre que possivel
121
- - usar diagnosticos estruturados como guia de correcao
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
- ## Estrategia recomendada
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 modulo alvo, se a capacidade aguentar
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 nao significa que a IA vai adivinhar sozinha.
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 automatico
153
+ - feedback automático
148
154
 
149
- Sem isso, ate o modelo mais caro vira estagiario emocionado.
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
- Este runbook governa a publicacao publica da Sema: CLI, MCP, VSIX, instaladores e release assets.
3
+ <!-- sema:i18n -->
4
+ > EN: English first.
5
+ > PT: Português depois, com acentos preservados.
6
+ > ES: Español al final.
4
7
 
5
- ## Pre-condicoes
8
+ ## EN
6
9
 
7
- - `sema resumo` executado no projeto antes da mudanca.
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
- ## Sequencia segura
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
- 1. Escolha uma versao que ainda nao exista no NPM.
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
- ## Validacao minima
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|mcp cli responde" testes/integracao/cli-json-e-editor.test.ts
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
- Depois de publicar:
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
- sema docs-impacto --intencao "smoke release" --json
48
- sema-mcp --help
96
+ npm run release:verificar-publica
49
97
  ```
50
98
 
51
- ## Release assets
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
- `npm run release:preparar-publica` deve gerar:
101
+ ## PT
54
102
 
55
- - `sema-cli-<versao>.tgz`
56
- - `sema-cli-latest.tgz`
57
- - `sema-language-tools-<versao>.vsix`
58
- - `sema-language-tools-latest.vsix`
59
- - `install-sema.sh`
60
- - `install-sema.ps1`
61
- - `SHA256SUMS.txt`
62
- - `release-notes.md`
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
- ## Sinais de parada
254
+ Resultado esperado:
65
255
 
66
- - NPM ja tem a versao escolhida.
67
- - `npm whoami` falha.
68
- - `gh auth status` falha.
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.