@semacode/cli 1.5.29 → 1.5.30

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 (85) hide show
  1. package/dist/comandos.js +36 -0
  2. package/dist/comandos.js.map +1 -1
  3. package/dist/guard.d.ts +35 -0
  4. package/dist/guard.js +164 -0
  5. package/dist/guard.js.map +1 -0
  6. package/exemplos/.prepack-generated +1 -0
  7. package/node_modules/@sema/gerador-css/package.json +14 -7
  8. package/node_modules/@sema/gerador-css/src/index.ts +605 -0
  9. package/node_modules/@sema/gerador-css/tsconfig.json +13 -0
  10. package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +1 -0
  11. package/node_modules/@sema/gerador-dart/package.json +14 -7
  12. package/node_modules/@sema/gerador-dart/src/index.ts +52 -0
  13. package/node_modules/@sema/gerador-dart/tsconfig.json +13 -0
  14. package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +1 -0
  15. package/node_modules/@sema/gerador-html/package.json +14 -7
  16. package/node_modules/@sema/gerador-html/src/index.ts +185 -0
  17. package/node_modules/@sema/gerador-html/tsconfig.json +13 -0
  18. package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +1 -0
  19. package/node_modules/@sema/gerador-javascript/package.json +14 -7
  20. package/node_modules/@sema/gerador-javascript/src/index.ts +461 -0
  21. package/node_modules/@sema/gerador-javascript/tsconfig.json +13 -0
  22. package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +1 -0
  23. package/node_modules/@sema/gerador-lua/package.json +14 -7
  24. package/node_modules/@sema/gerador-lua/src/index.ts +359 -0
  25. package/node_modules/@sema/gerador-lua/tsconfig.json +13 -0
  26. package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +1 -0
  27. package/node_modules/@sema/gerador-python/package.json +14 -7
  28. package/node_modules/@sema/gerador-python/src/index.ts +850 -0
  29. package/node_modules/@sema/gerador-python/tsconfig.json +13 -0
  30. package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +1 -0
  31. package/node_modules/@sema/gerador-typescript/package.json +14 -7
  32. package/node_modules/@sema/gerador-typescript/src/index.ts +876 -0
  33. package/node_modules/@sema/gerador-typescript/tsconfig.json +13 -0
  34. package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +1 -0
  35. package/node_modules/@sema/nucleo/package.json +10 -7
  36. package/node_modules/@sema/nucleo/src/ast/tipos.ts +207 -0
  37. package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +43 -0
  38. package/node_modules/@sema/nucleo/src/formatador/index.ts +530 -0
  39. package/node_modules/@sema/nucleo/src/index.ts +183 -0
  40. package/node_modules/@sema/nucleo/src/ir/conversor.ts +1037 -0
  41. package/node_modules/@sema/nucleo/src/ir/modelos.ts +403 -0
  42. package/node_modules/@sema/nucleo/src/lexer/lexer.ts +166 -0
  43. package/node_modules/@sema/nucleo/src/lexer/tokens.ts +79 -0
  44. package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +41 -0
  45. package/node_modules/@sema/nucleo/src/parser/parser.ts +936 -0
  46. package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +379 -0
  47. package/node_modules/@sema/nucleo/src/semantico/analisador.ts +3126 -0
  48. package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +665 -0
  49. package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +362 -0
  50. package/node_modules/@sema/nucleo/src/util/arquivos.ts +28 -0
  51. package/node_modules/@sema/nucleo/tsconfig.json +9 -0
  52. package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +1 -0
  53. package/node_modules/@sema/padroes/package.json +10 -7
  54. package/node_modules/@sema/padroes/src/index.ts +382 -0
  55. package/node_modules/@sema/padroes/tsconfig.json +9 -0
  56. package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +1 -0
  57. package/package.json +74 -75
  58. package/AGENTS.md +0 -294
  59. package/AGENT_CONTEXT_PACK.json +0 -164
  60. package/LICENSE +0 -22
  61. package/SEMA_BRIEF.curto.txt +0 -11
  62. package/SEMA_BRIEF.md +0 -511
  63. package/SEMA_BRIEF.micro.txt +0 -9
  64. package/SEMA_INDEX.json +0 -7588
  65. package/docs/AGENT_STARTER.md +0 -109
  66. package/docs/api.md +0 -82
  67. package/docs/cli.md +0 -175
  68. package/docs/como-ensinar-a-sema-para-ia.md +0 -155
  69. package/docs/deploy.md +0 -93
  70. package/docs/documentacao.md +0 -88
  71. package/docs/env.md +0 -105
  72. package/docs/extensao-vscode.md +0 -53
  73. package/docs/fluxo-pratico-ia-sema.md +0 -187
  74. package/docs/instalacao-e-primeiro-uso.md +0 -134
  75. package/docs/integracao-com-ia.md +0 -110
  76. package/docs/mcp.md +0 -292
  77. package/docs/pagamento-ponta-a-ponta.md +0 -171
  78. package/docs/persistencia-vendor-first.md +0 -151
  79. package/docs/prompt-base-ia-sema.md +0 -111
  80. package/docs/repositories.md +0 -54
  81. package/docs/rollback.md +0 -49
  82. package/docs/seguranca.md +0 -126
  83. package/docs/sintaxe.md +0 -218
  84. package/llms-full.txt +0 -35
  85. package/llms.txt +0 -18
package/docs/mcp.md DELETED
@@ -1,292 +0,0 @@
1
- # Private MCP
2
-
3
- ## English
4
-
5
- The Sema MCP is a private/commercial remote surface for agents that must obey contracts, read the right context, and close changes with traceable verification. It is not shipped in the public npm package and must not be documented as an open server package.
6
-
7
- Use OAuth for browser-based clients such as ChatGPT and Lovable when available. Use bearer keys only for clients that need that fallback. Fixed server tokens must not be the primary path for web apps.
8
-
9
- ## Português
10
-
11
- O MCP da Sema é uma superfície remota privada/comercial para agentes que precisam obedecer contrato, ler contexto certo e fechar mudança com verificação rastreável. Ele não acompanha a release pública, não é publicado como pacote npm aberto e não deve ser documentado como pacote aberto de servidor.
12
-
13
- Use OAuth para clientes baseados em navegador, como ChatGPT e Lovable, quando disponível. Use chaves bearer apenas para clientes que precisam desse fallback. Tokens fixos de servidor não devem ser o caminho principal em apps web.
14
-
15
- ## Español
16
-
17
- El MCP de Sema es una superficie remota privada/comercial para agentes que deben obedecer contratos, leer el contexto correcto y cerrar cambios con verificación trazable. No se distribuye en el paquete público de npm y no debe documentarse como paquete abierto de servidor.
18
-
19
- Usa OAuth para clientes basados en navegador, como ChatGPT y Lovable, cuando esté disponible. Usa claves bearer solo para clientes que necesitan ese fallback. Los tokens fijos de servidor no deben ser el camino principal en apps web.
20
-
21
- ## Referência Operacional
22
-
23
- O repositório público documenta apenas o contrato de uso do serviço. A implementacao fica no pacote privado mantido fora deste monorepo.
24
-
25
- ## Modelo de distribuição
26
-
27
- - Público: CLI, núcleo, geradores, contratos, exemplos, docs e extensao VS Code.
28
- - Privado: servidor MCP, OAuth, bearer, roots permitidas, deploy remoto, healthcheck e ferramentas remotas.
29
- - Consumo externo: ChatGPT, Codex, n8n, backends e outros agentes acessam um endpoint HTTPS `/mcp` operado por quem controla o serviço.
30
-
31
- Não use mais `npm install -g @semacode/mcp` nem `npx -y @semacode/mcp` em documentação pública. Esses caminhos eram validos enquanto o MCP era distribuido como pacote aberto; agora a integração correta e via URL remota autorizada.
32
-
33
- ## Endpoint remoto
34
-
35
- Para ChatGPT Apps ou conectores baseados em MCP, a URL deve apontar para:
36
-
37
- ```text
38
- https://sema.exemplo.com/mcp
39
- ```
40
-
41
- Para clientes legados que ainda pedem SSE:
42
-
43
- ```text
44
- https://sema.exemplo.com/sse
45
- ```
46
-
47
- Endpoints esperados do serviço remoto:
48
-
49
- - `GET /healthz`: healthcheck sem segredo para proxy e deploy.
50
- - `GET /logo.png`: logo pública do servidor MCP.
51
- - `POST /mcp`: MCP Streamable HTTP.
52
- - `GET /mcp` e `DELETE /mcp`: continuidade/fechamento de sessão quando o cliente usa `mcp-session-id`.
53
- - `GET /sse` e `POST /message`: SSE legado.
54
- - `GET /.well-known/oauth-protected-resource`: metadata OAuth para recursos protegidos.
55
- - `GET /.well-known/oauth-authorization-server`: metadata do authorization server.
56
- - `POST /oauth/register`: dynamic client registration.
57
- - `GET|POST /oauth/authorize`: autorizacao com passcode.
58
- - `POST /oauth/token`: emissao e refresh de tokens.
59
-
60
- ## ChatGPT
61
-
62
- No ChatGPT normal, em **Settings -> Apps & Connectors -> Advanced settings -> Create**:
63
-
64
- - Icone: PNG quadrado, mínimo `128x128`, maximo `10 KB`.
65
- - Nome: `Sema`.
66
- - Descricao: `Contrato semantico IA-first para agentes validarem, inspecionarem e operarem software vivo com drift, impacto e garantias.`
67
- - URL do servidor MCP: `https://sema.exemplo.com/mcp`.
68
- - Autenticação: `OAuth`.
69
-
70
- O ChatGPT abre a página de autorizacao do Sema, o operador digita o passcode privado e o servidor emite tokens proprios para o app. Nunca coloque bearer, OAuth secret ou passcode em README, AGENTS, release notes, prints ou logs.
71
-
72
- ## Regra Zero Do MCP
73
-
74
- O MCP deve deixar claro, em toda orientacao operacional, que contrato vem antes da ação. Antes de código, deploy, geracao, revisão, texto Author, workflow, ops, game, legal, research ou qualquer outro profile, a IA precisa criar, editar ou remover o contrato `.sema` aplicavel.
75
-
76
- Se não existe contrato, a próxima ação e criar contrato. Se a intenção muda comportamento, a próxima ação e editar contrato. Se a funcionalidade deixa de existir, a próxima ação e remover ou aposentar o contrato. Só depois disso entram drift, impacto, código vivo, artefatos, deploy ou texto gerado.
77
-
78
- Essa regra vale para Software, Author, Workflow, Ops, Game, Legal, Research e qualquer profile futuro. Um MCP que permite agir sem ciclo de contrato virou autocomplete com cracha, não Sema.
79
-
80
- ## Codex É Outros Agentes
81
-
82
- Para ambientes que aceitam MCP HTTP, configure o endpoint remoto e armazene a chave comercial `sema_mcp_*` no mecanismo de segredo do cliente. Essa chave identifica o workspace/projeto e alimenta o billing; ela nao e um token fixo global do servidor.
83
-
84
- No Windows, a CLI pode gravar a chave como variavel do usuario sem colocar o segredo em argumento de processo:
85
-
86
- ```powershell
87
- Get-Clipboard | sema mcp-instalar-chave --stdin --json
88
- ```
89
-
90
- No VS Code oficial, use o comando `Sema: Instalar Chave MCP` e cole a chave gerada no painel. A extensao chama a CLI por stdin, grava `SEMA_MCP_AUTH_TOKEN` no usuario e orienta reabrir o cliente.
91
-
92
- Exemplo de `~/.codex/config.toml`:
93
-
94
- ```toml
95
- [mcp_servers.sema]
96
- url = "https://sema.exemplo.com/mcp"
97
- bearer_token_env_var = "SEMA_MCP_AUTH_TOKEN"
98
- tool_timeout_sec = 90
99
- ```
100
-
101
- Para ambientes sem suporte a bearer do cliente, use OAuth quando disponivel. OAuth nao deve reutilizar uma chave fixa de servidor.
102
-
103
- ## IDE Local Vs App Remoto
104
-
105
- O MCP só deve ler arquivos do ambiente onde ele roda.
106
-
107
- - Em IDE/plugin com workspace local, o fluxo preferencial e enviar um snapshot tipado para `sema_contratos_sincronizar`: `contratos`, `arquivos_codigo`, `documentacao` e `indice`. Quando a tarefa precisar verificar implementacao, envie código selecionado, nunca o projeto inteiro.
108
- - Em ChatGPT/app remoto, o MCP roda no servidor e só enxerga roots do servidor, como `/srv/sema/projetos/...`. Caminho local de IDE não deve cair silenciosamente para outro projeto.
109
- - Toda chamada operacional deve enviar `projeto` com um caminho existente no servidor ou com o caminho retornado pelo espelho de contratos. Em HTTP remoto, `projeto` vazio ou `.` deve falhar com `workspace_atual_nao_informado`; cair em `/srv/sema/projetos/Sema` seria validar o repositório errado.
110
- - Quando o workspace não vier no contexto, a IA deve pedir ou usar a sincronizacao de contratos remotos e código selecionado. MCP local/stdio e opcional e deve ser reservado para drift contra código vivo completo.
111
- - Quando o arquivo veio de upload, anexo ou sandbox do chat, use `conteudo` inline.
112
- - Para `sema_drift`, `escopo = arquivo` ou `escopo = modulo` exige alvo explícito. Envie `arquivo` ou `contrato_alvo` com o `.sema` alvo dentro do `projeto`; se enviar apenas o diretorio do projeto, o MCP remoto deve retornar `contrato_alvo_nao_informado`. Use `escopo = projeto` somente quando a auditoria global for intencional.
113
-
114
- Se uma IA pedir `C:\GitHub\Gestech` para um MCP remoto Linux, o servidor deve responder erro claro de caminho local inacessivel e orientar sincronizar contratos e código selecionado com `sema_contratos_sincronizar`. MCP local/stdio só entra quando a tarefa exige ler código local completo.
115
-
116
- Exemplo de drift remoto focado:
117
-
118
- ```json
119
- {
120
- "projeto": "/srv/sema/projetos/_contratos_remotos/github-gestech-0e2eb48843",
121
- "arquivo": "contratos/promocoes.sema",
122
- "escopo": "modulo",
123
- "json": true
124
- }
125
- ```
126
-
127
- ## Ferramentas Expostas
128
-
129
- A lista concreta depende da versão privada implantada, mas o contrato atual espera:
130
-
131
- - `sema_mcp_doctor`
132
- - `sema_resumo`
133
- - `sema_contratos_sincronizar`
134
- - `sema_contrato_salvar`
135
- - `sema_contrato_remover`
136
- - `sema_listar_contratos`
137
- - `sema_ler_contrato`
138
- - `sema_validar`
139
- - `sema_drift`
140
- - `sema_impacto`
141
- - `sema_renomear_semantico`
142
- - `sema_inspecionar`
143
- - `sema_ir`
144
- - `sema_verificar`
145
- - `sema_contexto_ia`
146
- - `sema_prompt_ia`
147
- - `sema_author_iniciar`
148
- - `sema_author_validar`
149
- - `sema_author_briefing`
150
- - `sema_author_revisar_cliches`
151
- - `sema_profile_validar`
152
- - `sema_sync_ai_entrypoints`
153
- - `sema_instalar_exemplos`
154
- - `sema_docs_impacto`
155
- - `sema_finalizar_mudanca`
156
-
157
- O doctor operacional do MCP privado fica no backlog do serviço comercial. Quando existir, ele deve retornar versão do MCP, versão da CLI, transporte, `cwd` do processo, `cwd` efetivo, raiz detectada, roots permitidas, endpoints e marcadores do projeto sem expor tokens, secrets ou passcodes.
158
-
159
- ## Arquivos Enviados No ChatGPT
160
-
161
- O MCP remoto roda no servidor e não le caminhos do sandbox do ChatGPT como `/mnt/data/pedido.sema`. Para esses casos, ferramentas de contrato devem aceitar `conteudo` inline:
162
-
163
- ```json
164
- {
165
- "conteudo": "module exemplo { ... }",
166
- "nome_arquivo": "pedido.sema"
167
- }
168
- ```
169
-
170
- Use `conteudo` em `sema_validar`, `sema_ir`, `sema_inspecionar`, `sema_contexto_ia`, `sema_author_validar`, `sema_author_briefing` e `sema_author_revisar_cliches` quando o contrato vier de upload, anexo ou texto colado.
171
-
172
- Use `arquivo` apenas quando o caminho existir dentro das roots permitidas no servidor. Se uma IA enviar `/mnt/data/...`, o servidor deve orientar repetir a chamada usando `conteudo`.
173
-
174
- ## Espelho De Contratos Da IDE
175
-
176
- Para IDEs e plugins, o MCP remoto não precisa ler o projeto inteiro para
177
- governar a mudanca. O cliente deve enviar um snapshot tipado:
178
-
179
- ```json
180
- {
181
- "projeto_id": "C:\\GitHub\\Gestech",
182
- "nome_projeto": "Gestech",
183
- "contratos": [
184
- {
185
- "caminho": "contratos/produtos_catalogo.sema",
186
- "conteudo": "module ... { ... }"
187
- }
188
- ],
189
- "arquivos_codigo": [
190
- {
191
- "caminho": "routes/produtos.py",
192
- "conteudo": "def listar_produtos(...): ..."
193
- },
194
- {
195
- "caminho": "tests/test_produtos.py",
196
- "conteudo": "def test_listar_produtos(...): ..."
197
- }
198
- ],
199
- "documentacao": [
200
- {
201
- "caminho": "AGENTS.md",
202
- "tipo": "operacional",
203
- "conteudo": "# Regras do projeto..."
204
- },
205
- {
206
- "caminho": "docs/VPS_DEPLOY.md",
207
- "tipo": "deploy",
208
- "conteudo": "# Deploy..."
209
- }
210
- ],
211
- "indice": [
212
- {
213
- "caminho": "routes/produtos.py",
214
- "tipo": "codigo",
215
- "hash": "sha256:...",
216
- "mtime": "2026-05-16T12:00:00Z",
217
- "resumo": "Rotas de produtos"
218
- }
219
- ]
220
- }
221
- ```
222
-
223
- O servidor grava em uma pasta Linux dedicada contendo contratos, metadados
224
- mínimos e apenas os arquivos de código enviados. A resposta traz `projeto`;
225
- esse caminho deve ser usado nas proximas chamadas. Se o Sema criar, editar ou
226
- remover um contrato, a IDE deve trazer a alteracao de volta para o workspace
227
- local antes de qualquer código.
228
-
229
- O código enviado deve ser selecionado por criterio: arquivos citados em `impl`,
230
- `vinculos`, routes, effects, services/repos proximos e testes relacionados. O
231
- MCP deve bloquear `.env`, tokens, chaves, `node_modules`, `.git`, build/cache,
232
- uploads, dependências instaladas e snapshots de repo inteiro. Quando nenhum
233
- código for enviado, o Sema deve declarar `contratos_apenas` e trocar lacunas de
234
- implementacao por `implementacao_nao_enviada` ou
235
- `codigo_nao_verificado_neste_modo`. Quando código parcial for enviado, deve
236
- declarar `codigo_selecionado` e limitar a conclusóo ao snapshot.
237
-
238
- Documentação enviada deve ser operacional ou de negócio: `AGENTS.md`,
239
- `README.md`, docs do módulo mexido, notas de deploy quando a tarefa envolve
240
- VPS, runbooks em incidentes e exemplos Sema quando a IA estiver criando
241
- contrato. O índice deve conter mapa de arquivos relevantes, hashes, timestamps
242
- é resumo curto sem conteúdo sensível.
243
-
244
- Toda conclusóo precisa declarar sua fonte: `contrato`, `codigo`,
245
- `documentacao` ou `indice`. Exemplos de leitura: bloqueado pelo contrato;
246
- divergente do código; regra documentada mas sem contrato; documentação
247
- contradiz implementacao; escopo inferido pelo índice.
248
-
249
- `sema_author_revisar_cliches` opera como validador bloqueante: violacao de politica Author deve retornar `aprovado: false`, `bloqueado: true` e `sucesso: false`. Um contrato narrativo que não bloqueia drift, voz genérica ou tema sensível sem autorizacao não deve ser tratado como contrato.
250
-
251
- ## Segurança Operacional
252
-
253
- O servidor privado deve rodar com:
254
-
255
- - HTTPS no reverse proxy.
256
- - Chave comercial bearer por request ou OAuth obrigatorio.
257
- - Passcode OAuth configurado para ChatGPT.
258
- - Roots restritas a uma pasta dedicada, por exemplo `/srv/sema/projetos`.
259
- - Logs sem tokens, passcodes, secrets ou conteúdo sensível desnecessário.
260
- - Rotacao imediata da chave comercial ou segredo OAuth se qualquer valor aparecer em terminal compartilhado, print, chat ou log.
261
-
262
- Nunca publique `/mcp` ou `/sse` sem autenticação e raiz restrita.
263
-
264
- ## Fluxo Obrigatorio Para Agentes
265
-
266
- Antes de uma ação operacional, a IA deve declarar a intenção e resolver o contrato:
267
-
268
- 1. `sema_resumo` para descobrir o estado do projeto.
269
- 2. `sema_listar_contratos` e `sema_ler_contrato` quando disponiveis, ou `sema_inspecionar` no `.sema` mais próximo.
270
- 3. Criar, editar ou remover o contrato aplicavel antes de tocar código, docs operacionais, deploy, texto Author, workflow, jogo, juridico, pesquisa ou ops.
271
- 4. `sema_validar` no contrato alterado.
272
- 5. `sema_drift`, `sema_impacto` ou gate de profile/Author conforme o tipo.
273
-
274
- Depois do ciclo de contrato, a IA deve chamar:
275
-
276
- ```bash
277
- sema docs-impacto --intencao "fazer deploy" --criar-ausentes --json
278
- ```
279
-
280
- Via MCP privado, use `sema_docs_impacto` com a mesma intenção. A resposta contem `leituraObrigatoria` com caminhos, motivos e conteúdo dos documentos existentes.
281
-
282
- Antes de concluir:
283
-
284
- ```bash
285
- sema finalizar-mudanca --intencao "fazer deploy" --doc-lida docs/deploy.md --json
286
- ```
287
-
288
- Via MCP privado, use `sema_finalizar_mudanca`.
289
-
290
- ## Relação Com Contratos
291
-
292
- Essas ferramentas não substituem `sema_resumo`, `sema_inspecionar`, `sema_drift` ou `sema_validar`. Elas adicionam a camada remota privada para agentes fora da máquina local. O contrato continua sendo o portao: criar, editar ou remover contrato antes de qualquer ação e obrigatorio em todo tipo de Sema.
@@ -1,171 +0,0 @@
1
- # Pagamento Ponta a Ponta na Sema
2
-
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.
7
-
8
-
9
- Este documento descreve o vertical oficial de pagamento da Sema no fluxo público atual.
10
-
11
- O objetivo não é mostrar um exemplo fofo. O objetivo e demonstrar que a linguagem já consegue modelar um fluxo de negócio real com:
12
-
13
- - contrato público
14
- - segurança e autorizacao
15
- - classificacao de dados
16
- - segredos e proibicoes explicitas
17
- - regras
18
- - efeitos operacionais
19
- - execução, idempotencia, retry e compensacao
20
- - transicoes de estado
21
- - orquestração
22
- - erros publicos
23
- - testes executaveis com saída, status ou erro observavel
24
-
25
- ## Arquivos de referência
26
-
27
- - `exemplos/pagamento_dominio.sema`
28
- - `exemplos/pagamento.sema`
29
-
30
- ## Como o vertical foi dividido
31
-
32
- ### `exemplos.pagamento.dominio`
33
-
34
- Centraliza os contratos compartilhados:
35
-
36
- - `entity Pagamento`
37
- - `enum StatusPagamento`
38
- - `state ciclo_pagamento`
39
-
40
- ### `exemplos.pagamento`
41
-
42
- Centraliza a operação do vertical:
43
-
44
- - `task processar_pagamento`
45
- - `task confirmar_pagamento`
46
- - `task notificar_falha_pagamento`
47
- - `task registrar_timeout_pagamento`
48
- - `flow orquestracao_pagamento`
49
- - `route processar_pagamento_publico`
50
-
51
- ## Narrativa do caso
52
-
53
- ### Entrada pública
54
-
55
- A operação entra por:
56
-
57
- - `route processar_pagamento_publico`
58
-
59
- Esse contrato pública:
60
-
61
- - `pagamento_id`
62
- - `valor`
63
- - `token`
64
-
65
- É expoe:
66
-
67
- - `pagamento`
68
- - `status`
69
- - erros publicos coerentes com a `task`
70
-
71
- ### Task interna
72
-
73
- A `task processar_pagamento` faz o trabalho central:
74
-
75
- - exige `authz`
76
- - classifica `dados`
77
- - declara `segredos`, `audit` e `forbidden`
78
- - valida entrada
79
- - consulta o gateway
80
- - persiste o pagamento
81
- - emite evento
82
- - notifica comprovante
83
- - registra auditoria
84
- - declara `execucao` com idempotencia, timeout, retry, compensacao e criticidade
85
- - garante consistencia da saída
86
-
87
- ### Estado e transicoes
88
-
89
- O `state ciclo_pagamento` ancora o contrato de transicao:
90
-
91
- - `PENDENTE -> AUTORIZADO`
92
- - `AUTORIZADO -> PROCESSADO`
93
- - `PENDENTE -> RECUSADO`
94
-
95
- A `task` explícita quais transicoes ela realmente usa.
96
-
97
- ### Flow de orquestração
98
-
99
- O `flow orquestracao_pagamento` demonstra:
100
-
101
- - passagem de contexto
102
- - confirmação em caso de sucesso
103
- - notificação em caso de recusa
104
- - registro de timeout em caso de indisponibilidade
105
- - ramificacao por erro tipado
106
-
107
- ### Efeitos operacionais
108
-
109
- O vertical usa as 5 categorias oficiais da Sema:
110
-
111
- - `persistencia`
112
- - `consulta`
113
- - `evento`
114
- - `notificacao`
115
- - `auditoria`
116
-
117
- Também usa `criticidade` para deixar claro o peso operacional do efeito.
118
-
119
- ### Falhas reais
120
-
121
- O vertical cobre explicitamente:
122
-
123
- - autorizacao negada
124
- - saldo insuficiente
125
- - timeout de gateway
126
-
127
- ## Fluxo de trabalho recomendado
128
-
129
- ### 1. Escrever ou ajustar os arquivos `.sema`
130
-
131
- Use o domínio compartilhado em um módulo e a operação em outro módulo.
132
-
133
- ### 2. Aplicar o formato canônico
134
-
135
- ```bash
136
- sema formatar exemplos
137
- ```
138
-
139
- ### 3. Validar semanticamente
140
-
141
- ```bash
142
- sema validar exemplos/pagamento.sema
143
- ```
144
-
145
- ### 4. Gerar código
146
-
147
- ```bash
148
- sema compilar exemplos/pagamento.sema --alvo typescript --saida ./.tmp/pagamento-ts
149
- sema compilar exemplos/pagamento.sema --alvo python --saida ./.tmp/pagamento-py
150
- ```
151
-
152
- ### 5. Verificar o vertical completo
153
-
154
- ```bash
155
- sema verificar exemplos/pagamento.sema --json --saida ./.tmp/verificacao-pagamento
156
- ```
157
-
158
- ## O que esse vertical prova
159
-
160
- Se esse vertical passa, a Sema já consegue demonstrar que:
161
-
162
- - modela contrato público
163
- - modela superficie sensível sem deixar segurança invisível
164
- - modela efeitos operacionais
165
- - modela falhas reais
166
- - modulariza domínio com `use`
167
- - declara idempotencia e execução crítica sem criar sintaxe nova
168
- - gera artefatos coerentes para TypeScript e Python
169
- - executa testes gerados sem gambiarra conceitual
170
-
171
- Esse e o criterio pratico que sustenta o uso público do vertical de pagamento como referência para IA e geracao.
@@ -1,151 +0,0 @@
1
- # Persistência Vendor-First
2
-
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.
7
-
8
-
9
- Sema 1.5.29 trata banco como superficie semântica de primeira classe. Isso significa assumir diferenças reais entre engines e coloca-las no contrato, no semântico, na IR, no drift, no impact map, na renomeacao assistida, no `verificar` e na extensao. Nesta linha, o `drift` também materializa persistência local real em `Preferences`, `localStorage` e `sessionStorage` quando a task está ancorada no arquivo que usa essas APIs, preservando o framing IA-first da release atual.
10
-
11
- ## Engines publicas
12
-
13
- - `postgres`
14
- - `mysql`
15
- - `sqlite`
16
- - `mongodb`
17
- - `redis`
18
-
19
- ## Exemplo PostgreSQL
20
-
21
- ```sema
22
- database principal_postgres {
23
- engine: postgres
24
- schema: public
25
- consistency: forte
26
- durability: alta
27
- transaction_model: mvcc
28
- query_model: sql
29
- capabilities {
30
- joins
31
- views
32
- foreign_keys
33
- }
34
- table pedidos {
35
- entity: Pedido
36
- }
37
- relationship pedido_cliente {
38
- from: Pedido
39
- to: Cliente
40
- }
41
- query buscar_pedidos {
42
- mode: sql
43
- }
44
- }
45
- ```
46
-
47
- ## Exemplo MySQL
48
-
49
- ```sema
50
- database principal_mysql {
51
- engine: mysql
52
- consistency: forte
53
- durability: alta
54
- transaction_model: bloqueio
55
- query_model: sql
56
- table faturamento {
57
- table: faturamento
58
- }
59
- index faturamento_status {
60
- table: faturamento
61
- }
62
- query buscar_faturas {
63
- mode: sql
64
- }
65
- }
66
- ```
67
-
68
- ## Exemplo SQLite
69
-
70
- ```sema
71
- database principal_sqlite {
72
- engine: sqlite
73
- consistency: snapshot
74
- durability: media
75
- transaction_model: single_thread
76
- query_model: sql
77
- table cache_local {
78
- table: cache_local
79
- }
80
- retention limpeza_local {
81
- retention: "7d"
82
- }
83
- }
84
- ```
85
-
86
- ## Exemplo MongoDB
87
-
88
- ```sema
89
- database principal_mongodb {
90
- engine: mongodb
91
- consistency: eventual
92
- durability: alta
93
- transaction_model: documento
94
- query_model: documento
95
- collection pedidos {
96
- collection: pedidos
97
- }
98
- document pedido_snapshot {
99
- entity: PedidoSnapshot
100
- }
101
- query pipeline_pedido {
102
- mode: pipeline
103
- }
104
- }
105
- ```
106
-
107
- ## Exemplo Redis
108
-
109
- ```sema
110
- database principal_redis {
111
- engine: redis
112
- consistency: eventual
113
- durability: media
114
- transaction_model: single_thread
115
- query_model: chave_valor
116
- keyspace cache_pedidos {
117
- ttl: "300s"
118
- }
119
- stream eventos_pedido {
120
- surface: fila
121
- }
122
- retention expurgo_cache {
123
- retention: "300s"
124
- }
125
- }
126
- ```
127
-
128
- ## Compatibilidade calculada
129
-
130
- Cada recurso recebe compatibilidade por engine:
131
-
132
- - `nativo`
133
- - `adaptado`
134
- - `parcial`
135
- - `invalido`
136
-
137
- Isso deixa explícito quando o contrato está pedindo portabilidade falsa, por exemplo:
138
-
139
- - `table` em `redis`
140
- - `foreign_keys` em engine sem suporte equivalente
141
- - transação multi-documento tratada como universal
142
-
143
- ## Onde isso aparece
144
-
145
- - parser e AST
146
- - IR canonica
147
- - analisador semântico
148
- - formatador
149
- - `sema drift`
150
- - `sema importar`
151
- - extensao VS Code