@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.
- package/dist/comandos.js +36 -0
- package/dist/comandos.js.map +1 -1
- package/dist/guard.d.ts +35 -0
- package/dist/guard.js +164 -0
- package/dist/guard.js.map +1 -0
- package/exemplos/.prepack-generated +1 -0
- package/node_modules/@sema/gerador-css/package.json +14 -7
- package/node_modules/@sema/gerador-css/src/index.ts +605 -0
- package/node_modules/@sema/gerador-css/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-dart/package.json +14 -7
- package/node_modules/@sema/gerador-dart/src/index.ts +52 -0
- package/node_modules/@sema/gerador-dart/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-html/package.json +14 -7
- package/node_modules/@sema/gerador-html/src/index.ts +185 -0
- package/node_modules/@sema/gerador-html/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-javascript/package.json +14 -7
- package/node_modules/@sema/gerador-javascript/src/index.ts +461 -0
- package/node_modules/@sema/gerador-javascript/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-lua/package.json +14 -7
- package/node_modules/@sema/gerador-lua/src/index.ts +359 -0
- package/node_modules/@sema/gerador-lua/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-python/package.json +14 -7
- package/node_modules/@sema/gerador-python/src/index.ts +850 -0
- package/node_modules/@sema/gerador-python/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-typescript/package.json +14 -7
- package/node_modules/@sema/gerador-typescript/src/index.ts +876 -0
- package/node_modules/@sema/gerador-typescript/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/nucleo/package.json +10 -7
- package/node_modules/@sema/nucleo/src/ast/tipos.ts +207 -0
- package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +43 -0
- package/node_modules/@sema/nucleo/src/formatador/index.ts +530 -0
- package/node_modules/@sema/nucleo/src/index.ts +183 -0
- package/node_modules/@sema/nucleo/src/ir/conversor.ts +1037 -0
- package/node_modules/@sema/nucleo/src/ir/modelos.ts +403 -0
- package/node_modules/@sema/nucleo/src/lexer/lexer.ts +166 -0
- package/node_modules/@sema/nucleo/src/lexer/tokens.ts +79 -0
- package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +41 -0
- package/node_modules/@sema/nucleo/src/parser/parser.ts +936 -0
- package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +379 -0
- package/node_modules/@sema/nucleo/src/semantico/analisador.ts +3126 -0
- package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +665 -0
- package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +362 -0
- package/node_modules/@sema/nucleo/src/util/arquivos.ts +28 -0
- package/node_modules/@sema/nucleo/tsconfig.json +9 -0
- package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/padroes/package.json +10 -7
- package/node_modules/@sema/padroes/src/index.ts +382 -0
- package/node_modules/@sema/padroes/tsconfig.json +9 -0
- package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +1 -0
- package/package.json +74 -75
- package/AGENTS.md +0 -294
- package/AGENT_CONTEXT_PACK.json +0 -164
- package/LICENSE +0 -22
- package/SEMA_BRIEF.curto.txt +0 -11
- package/SEMA_BRIEF.md +0 -511
- package/SEMA_BRIEF.micro.txt +0 -9
- package/SEMA_INDEX.json +0 -7588
- package/docs/AGENT_STARTER.md +0 -109
- package/docs/api.md +0 -82
- package/docs/cli.md +0 -175
- package/docs/como-ensinar-a-sema-para-ia.md +0 -155
- package/docs/deploy.md +0 -93
- package/docs/documentacao.md +0 -88
- package/docs/env.md +0 -105
- package/docs/extensao-vscode.md +0 -53
- package/docs/fluxo-pratico-ia-sema.md +0 -187
- package/docs/instalacao-e-primeiro-uso.md +0 -134
- package/docs/integracao-com-ia.md +0 -110
- package/docs/mcp.md +0 -292
- package/docs/pagamento-ponta-a-ponta.md +0 -171
- package/docs/persistencia-vendor-first.md +0 -151
- package/docs/prompt-base-ia-sema.md +0 -111
- package/docs/repositories.md +0 -54
- package/docs/rollback.md +0 -49
- package/docs/seguranca.md +0 -126
- package/docs/sintaxe.md +0 -218
- package/llms-full.txt +0 -35
- 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
|