@semacode/cli 1.5.17 → 1.5.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +268 -260
- package/LICENSE +22 -22
- package/README.md +93 -61
- package/SEMA_BRIEF.curto.txt +8 -6
- package/SEMA_BRIEF.md +71 -22
- package/SEMA_BRIEF.micro.txt +7 -5
- package/SEMA_INDEX.json +931 -193
- package/dist/controleComercialSupabase.d.ts +326 -0
- package/dist/controleComercialSupabase.js +310 -0
- package/dist/controleComercialSupabase.js.map +1 -0
- package/dist/docs.js +48 -20
- package/dist/docs.js.map +1 -1
- package/dist/drift.d.ts +5 -3
- package/dist/drift.js +119 -116
- package/dist/drift.js.map +1 -1
- package/dist/importador.d.ts +1 -1
- package/dist/importador.js +1 -200
- package/dist/importador.js.map +1 -1
- package/dist/index.js +1924 -493
- package/dist/index.js.map +1 -1
- package/dist/mcpRemoto.d.ts +32 -0
- package/dist/mcpRemoto.js +61 -0
- package/dist/mcpRemoto.js.map +1 -0
- package/dist/projeto.js +3 -21
- package/dist/projeto.js.map +1 -1
- package/dist/tipos.d.ts +1 -1
- package/docs/AGENT_STARTER.md +109 -102
- package/docs/cli.md +89 -33
- package/docs/como-ensinar-a-sema-para-ia.md +42 -36
- package/docs/deploy.md +231 -43
- package/docs/documentacao.md +61 -36
- package/docs/env.md +63 -14
- package/docs/extensao-vscode.md +12 -4
- package/docs/fluxo-pratico-ia-sema.md +45 -35
- package/docs/instalacao-e-primeiro-uso.md +52 -30
- package/docs/integracao-com-ia.md +44 -35
- package/docs/mcp.md +270 -31
- package/docs/pagamento-ponta-a-ponta.md +40 -24
- package/docs/persistencia-vendor-first.md +11 -5
- package/docs/prompt-base-ia-sema.md +18 -11
- package/docs/rollback.md +17 -15
- package/docs/sintaxe.md +37 -229
- package/exemplos/agendamento.sema +105 -106
- package/exemplos/assinatura.sema +133 -136
- package/exemplos/auditoria.sema +89 -88
- package/exemplos/autenticacao.sema +125 -125
- package/exemplos/author_obra_comum.sema +294 -0
- package/exemplos/author_tema_sensivel.sema +264 -0
- package/exemplos/automacao.sema +107 -107
- package/exemplos/cadastro_usuario.sema +54 -54
- package/exemplos/calculadora.sema +78 -78
- package/exemplos/crud_simples.sema +89 -89
- package/exemplos/estoque.sema +127 -126
- package/exemplos/exportacao.sema +94 -94
- package/exemplos/fila.sema +130 -131
- package/exemplos/integracao_externa.sema +94 -94
- package/exemplos/multi_tenant.sema +140 -140
- package/exemplos/notificacao.sema +149 -98
- package/exemplos/operacao_estrategia.sema +633 -402
- package/exemplos/pagamento.sema +434 -222
- package/exemplos/pagamento_dominio.sema +35 -35
- package/exemplos/pedido.sema +255 -119
- package/exemplos/permissao.sema +121 -121
- package/exemplos/persistencia_vendor_first.sema +86 -86
- package/exemplos/profile_game.sema +114 -0
- package/exemplos/profile_legal.sema +105 -0
- package/exemplos/profile_ops.sema +110 -0
- package/exemplos/profile_research.sema +104 -0
- package/exemplos/profile_software.sema +123 -0
- package/exemplos/profile_workflow_n8n.sema +99 -0
- package/exemplos/relatorio.sema +93 -93
- package/exemplos/replica_analitica_erp.sema +160 -0
- package/exemplos/testes_embutidos.sema +45 -45
- package/exemplos/tratamento_erro.sema +157 -157
- package/exemplos/upload_arquivo.sema +93 -93
- package/exemplos/webhook.sema +94 -96
- package/llms-full.txt +34 -34
- package/llms.txt +17 -17
- package/node_modules/@sema/gerador-css/dist/index.js +563 -563
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/dist/index.js +90 -90
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/dist/index.js +122 -96
- package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -4
- package/node_modules/@sema/nucleo/dist/formatador/index.js +26 -46
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +9 -204
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -35
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -21
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -40
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +6 -5
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +76 -307
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +2 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +32 -2
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -1
- package/node_modules/@sema/nucleo/package.json +1 -1
- package/node_modules/@sema/padroes/package.json +1 -1
- package/package.json +15 -15
|
@@ -1,15 +1,25 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Integração com IA
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Sema foi feita para IA operar software vivo com menos adivinhação. O consumidor principal não é o humano lendo arquivo bonito; e o agente decidindo o que pode tocar, que efeito vai causar e como validar antes de mexer no código vivo.
|
|
10
|
+
|
|
11
|
+
Humanos entram como autores, revisores e aprovadores do contrato. A ponte da Sema e da intenção operacional para um formato que IA consegue consumir sem transformar contexto em chute.
|
|
4
12
|
|
|
5
13
|
## Ordem recomendada
|
|
6
14
|
|
|
7
|
-
1. `sema
|
|
8
|
-
2.
|
|
9
|
-
3.
|
|
10
|
-
4. `sema
|
|
15
|
+
1. `sema resumo <arquivo-ou-pasta> --micro --para onboarding`
|
|
16
|
+
2. Liste ou leia os contratos existentes e inspecione o `.sema` mais próximo.
|
|
17
|
+
3. Crie, edite ou remova o contrato aplicavel antes de qualquer ação.
|
|
18
|
+
4. `sema validar <arquivo.sema> --json`
|
|
19
|
+
5. `sema drift <arquivo-ou-pasta> --json`
|
|
20
|
+
6. `sema contexto-ia <arquivo.sema> --saida <diretorio> --json`
|
|
11
21
|
|
|
12
|
-
|
|
22
|
+
Não comece cavando código bruto quando a ferramenta já consegue te dar contrato, score, lacuna e superficie viva. Contrato primeiro vale para Software, Author, Workflow, Ops, Game, Legal, Research e qualquer profile futuro.
|
|
13
23
|
|
|
14
24
|
## Por capacidade do modelo
|
|
15
25
|
|
|
@@ -19,7 +29,7 @@ IA pequena:
|
|
|
19
29
|
- `briefing.min.json`
|
|
20
30
|
- `prompt-curto.txt`
|
|
21
31
|
|
|
22
|
-
IA
|
|
32
|
+
IA média:
|
|
23
33
|
|
|
24
34
|
- `sema resumo --curto`
|
|
25
35
|
- `drift.json`
|
|
@@ -34,44 +44,41 @@ IA grande:
|
|
|
34
44
|
|
|
35
45
|
## MCP
|
|
36
46
|
|
|
37
|
-
Se o agente usa MCP
|
|
47
|
+
Se o agente usa MCP, configure o endpoint remoto privado fornecido pelo operador do serviço. O MCP não é mais distribuido como pacote npm público neste GitHub. A variavel `SEMA_MCP_AUTH_TOKEN` no cliente deve conter uma chave comercial `sema_mcp_*` do painel, nao um token fixo do servidor.
|
|
38
48
|
|
|
39
|
-
|
|
40
|
-
npm install -g @semacode/cli @semacode/mcp
|
|
41
|
-
```
|
|
49
|
+
Exemplo para clientes que aceitam MCP HTTP:
|
|
42
50
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"sema": {
|
|
49
|
-
"command": "npx",
|
|
50
|
-
"args": ["-y", "@semacode/mcp"]
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
51
|
+
```toml
|
|
52
|
+
[mcp_servers.sema]
|
|
53
|
+
url = "https://sema.exemplo.com/mcp"
|
|
54
|
+
bearer_token_env_var = "SEMA_MCP_AUTH_TOKEN"
|
|
55
|
+
tool_timeout_sec = 90
|
|
54
56
|
```
|
|
55
57
|
|
|
56
|
-
Ferramentas mais
|
|
58
|
+
Ferramentas mais úteis no fluxo de mudanca:
|
|
57
59
|
|
|
58
|
-
- `
|
|
60
|
+
- `sema_resumo` para descobrir o estado do projeto
|
|
61
|
+
- `sema_listar_contratos` e `sema_ler_contrato` quando a versão privada expuser a leitura direta dos contratos
|
|
62
|
+
- `sema_inspecionar` para entender o contrato mais próximo
|
|
63
|
+
- `sema_validar` para bloquear contrato inválido antes da ação
|
|
64
|
+
- `sema_drift` para medir coerência viva
|
|
59
65
|
- `sema_impacto` para dizer o que tocar
|
|
60
66
|
- `sema_renomear_semantico` para guiar troca de nomes sem misturar payload antigo e novo
|
|
67
|
+
- `sema_profile_validar` ou os gates Author para validar o profile especifico
|
|
61
68
|
- `sema_docs_impacto` para obrigar leitura das docs relacionadas antes de agir
|
|
62
|
-
- `sema_finalizar_mudanca` para bloquear
|
|
69
|
+
- `sema_finalizar_mudanca` para bloquear conclusóo sem leitura documental comprovada
|
|
63
70
|
|
|
64
|
-
|
|
71
|
+
O MCP deve repetir a regra sem ambiguidade: se não ha contrato, crie; se a intenção mudou, edite; se a capacidade saiu do sistema, remova ou aposente. Ação sem ciclo de contrato não é fluxo Sema.
|
|
65
72
|
|
|
66
73
|
## Portao documental
|
|
67
74
|
|
|
68
|
-
|
|
75
|
+
Depois de resolver e validar o contrato, declare a intenção documental:
|
|
69
76
|
|
|
70
77
|
```bash
|
|
71
78
|
sema docs-impacto --intencao "fazer deploy" --criar-ausentes --json
|
|
72
79
|
```
|
|
73
80
|
|
|
74
|
-
Leia todos os itens em `leituraObrigatoria`. Se `docsAusentes` vier preenchido, crie ou complete os documentos antes da
|
|
81
|
+
Leia todos os itens em `leituraObrigatoria`. Se `docsAusentes` vier preenchido, crie ou complete os documentos antes da ação.
|
|
75
82
|
|
|
76
83
|
Antes de concluir:
|
|
77
84
|
|
|
@@ -79,17 +86,19 @@ Antes de concluir:
|
|
|
79
86
|
sema finalizar-mudanca --intencao "fazer deploy" --doc-lida docs/deploy.md --json
|
|
80
87
|
```
|
|
81
88
|
|
|
82
|
-
Se houver
|
|
89
|
+
Se houver diagnóstico de severidade 4+, a IA não deve finalizar a mudanca.
|
|
83
90
|
|
|
84
91
|
## Regras praticas
|
|
85
92
|
|
|
86
|
-
- trate `.sema` e IR como fonte de verdade
|
|
87
|
-
- trate
|
|
93
|
+
- trate `.sema` e IR como fonte de verdade semântica
|
|
94
|
+
- trate humanos como donos/aprovadores e agentes como consumidores primarios do contrato
|
|
95
|
+
- trate `drift` como juiz da adoção incremental
|
|
88
96
|
- use `briefing.min.json` antes de abrir dezenas de arquivos
|
|
89
|
-
-
|
|
90
|
-
- em
|
|
97
|
+
- não invente sintaxe fora da gramática oficial
|
|
98
|
+
- em task sensível, teste que valida apenas `sucesso` e fraco; inclua output, erro esperado ou garantia observavel
|
|
99
|
+
- em persistência, não assuma que bancos diferentes tem o mesmo contrato operacional
|
|
91
100
|
|
|
92
|
-
## Arquivos
|
|
101
|
+
## Arquivos úteis no repo
|
|
93
102
|
|
|
94
103
|
- `AGENTS.md`
|
|
95
104
|
- `llms.txt`
|
package/docs/mcp.md
CHANGED
|
@@ -1,53 +1,292 @@
|
|
|
1
|
-
# MCP
|
|
1
|
+
# Private MCP
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## English
|
|
4
4
|
|
|
5
|
-
|
|
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
6
|
|
|
7
|
-
|
|
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
8
|
|
|
9
|
-
|
|
10
|
-
|
|
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
|
|
11
39
|
```
|
|
12
40
|
|
|
13
|
-
|
|
41
|
+
Para clientes legados que ainda pedem SSE:
|
|
14
42
|
|
|
15
|
-
|
|
43
|
+
```text
|
|
44
|
+
https://sema.exemplo.com/sse
|
|
45
|
+
```
|
|
16
46
|
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
19
99
|
```
|
|
20
100
|
|
|
21
|
-
|
|
101
|
+
Para ambientes sem suporte a bearer do cliente, use OAuth quando disponivel. OAuth nao deve reutilizar uma chave fixa de servidor.
|
|
22
102
|
|
|
23
|
-
##
|
|
103
|
+
## IDE Local Vs App Remoto
|
|
24
104
|
|
|
25
|
-
|
|
26
|
-
- `sema_finalizar_mudanca`: bloqueia conclusao sem docs lidas ou docs ausentes.
|
|
105
|
+
O MCP só deve ler arquivos do ambiente onde ele roda.
|
|
27
106
|
|
|
28
|
-
|
|
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.
|
|
29
113
|
|
|
30
|
-
Se
|
|
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.
|
|
31
115
|
|
|
32
|
-
|
|
33
|
-
- rota/API: cria `docs/api.md`.
|
|
34
|
-
- auth: cria `docs/auth.md` e `docs/seguranca.md`.
|
|
35
|
-
- banco: cria `docs/database.md`.
|
|
36
|
-
- MCP: cria `docs/mcp.md`.
|
|
37
|
-
- extensao: cria `docs/extensao-vscode.md`.
|
|
116
|
+
Exemplo de drift remoto focado:
|
|
38
117
|
|
|
39
|
-
|
|
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.
|
|
40
243
|
|
|
41
|
-
|
|
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.
|
|
42
248
|
|
|
43
|
-
|
|
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.
|
|
44
250
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
+
```
|
|
48
287
|
|
|
49
|
-
|
|
288
|
+
Via MCP privado, use `sema_finalizar_mudanca`.
|
|
50
289
|
|
|
51
|
-
|
|
290
|
+
## Relação Com Contratos
|
|
52
291
|
|
|
53
|
-
|
|
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,18 +1,28 @@
|
|
|
1
1
|
# Pagamento Ponta a Ponta na Sema
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
4
7
|
|
|
5
|
-
O objetivo nao e mostrar um exemplo fofo. O objetivo e demonstrar que a linguagem ja consegue modelar um fluxo de negocio real com:
|
|
6
8
|
|
|
7
|
-
|
|
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
|
|
8
17
|
- regras
|
|
9
18
|
- efeitos operacionais
|
|
19
|
+
- execução, idempotencia, retry e compensacao
|
|
10
20
|
- transicoes de estado
|
|
11
|
-
-
|
|
21
|
+
- orquestração
|
|
12
22
|
- erros publicos
|
|
13
|
-
- testes executaveis
|
|
23
|
+
- testes executaveis com saída, status ou erro observavel
|
|
14
24
|
|
|
15
|
-
## Arquivos de
|
|
25
|
+
## Arquivos de referência
|
|
16
26
|
|
|
17
27
|
- `exemplos/pagamento_dominio.sema`
|
|
18
28
|
- `exemplos/pagamento.sema`
|
|
@@ -29,7 +39,7 @@ Centraliza os contratos compartilhados:
|
|
|
29
39
|
|
|
30
40
|
### `exemplos.pagamento`
|
|
31
41
|
|
|
32
|
-
Centraliza a
|
|
42
|
+
Centraliza a operação do vertical:
|
|
33
43
|
|
|
34
44
|
- `task processar_pagamento`
|
|
35
45
|
- `task confirmar_pagamento`
|
|
@@ -40,19 +50,19 @@ Centraliza a operacao do vertical:
|
|
|
40
50
|
|
|
41
51
|
## Narrativa do caso
|
|
42
52
|
|
|
43
|
-
### Entrada
|
|
53
|
+
### Entrada pública
|
|
44
54
|
|
|
45
|
-
A
|
|
55
|
+
A operação entra por:
|
|
46
56
|
|
|
47
57
|
- `route processar_pagamento_publico`
|
|
48
58
|
|
|
49
|
-
Esse contrato
|
|
59
|
+
Esse contrato pública:
|
|
50
60
|
|
|
51
61
|
- `pagamento_id`
|
|
52
62
|
- `valor`
|
|
53
63
|
- `token`
|
|
54
64
|
|
|
55
|
-
|
|
65
|
+
É expoe:
|
|
56
66
|
|
|
57
67
|
- `pagamento`
|
|
58
68
|
- `status`
|
|
@@ -62,13 +72,17 @@ E expoe:
|
|
|
62
72
|
|
|
63
73
|
A `task processar_pagamento` faz o trabalho central:
|
|
64
74
|
|
|
75
|
+
- exige `authz`
|
|
76
|
+
- classifica `dados`
|
|
77
|
+
- declara `segredos`, `audit` e `forbidden`
|
|
65
78
|
- valida entrada
|
|
66
79
|
- consulta o gateway
|
|
67
80
|
- persiste o pagamento
|
|
68
81
|
- emite evento
|
|
69
82
|
- notifica comprovante
|
|
70
83
|
- registra auditoria
|
|
71
|
-
-
|
|
84
|
+
- declara `execucao` com idempotencia, timeout, retry, compensacao e criticidade
|
|
85
|
+
- garante consistencia da saída
|
|
72
86
|
|
|
73
87
|
### Estado e transicoes
|
|
74
88
|
|
|
@@ -78,15 +92,15 @@ O `state ciclo_pagamento` ancora o contrato de transicao:
|
|
|
78
92
|
- `AUTORIZADO -> PROCESSADO`
|
|
79
93
|
- `PENDENTE -> RECUSADO`
|
|
80
94
|
|
|
81
|
-
A `task`
|
|
95
|
+
A `task` explícita quais transicoes ela realmente usa.
|
|
82
96
|
|
|
83
|
-
### Flow de
|
|
97
|
+
### Flow de orquestração
|
|
84
98
|
|
|
85
99
|
O `flow orquestracao_pagamento` demonstra:
|
|
86
100
|
|
|
87
101
|
- passagem de contexto
|
|
88
|
-
-
|
|
89
|
-
-
|
|
102
|
+
- confirmação em caso de sucesso
|
|
103
|
+
- notificação em caso de recusa
|
|
90
104
|
- registro de timeout em caso de indisponibilidade
|
|
91
105
|
- ramificacao por erro tipado
|
|
92
106
|
|
|
@@ -100,7 +114,7 @@ O vertical usa as 5 categorias oficiais da Sema:
|
|
|
100
114
|
- `notificacao`
|
|
101
115
|
- `auditoria`
|
|
102
116
|
|
|
103
|
-
|
|
117
|
+
Também usa `criticidade` para deixar claro o peso operacional do efeito.
|
|
104
118
|
|
|
105
119
|
### Falhas reais
|
|
106
120
|
|
|
@@ -114,9 +128,9 @@ O vertical cobre explicitamente:
|
|
|
114
128
|
|
|
115
129
|
### 1. Escrever ou ajustar os arquivos `.sema`
|
|
116
130
|
|
|
117
|
-
Use o
|
|
131
|
+
Use o domínio compartilhado em um módulo e a operação em outro módulo.
|
|
118
132
|
|
|
119
|
-
### 2. Aplicar o formato
|
|
133
|
+
### 2. Aplicar o formato canônico
|
|
120
134
|
|
|
121
135
|
```bash
|
|
122
136
|
sema formatar exemplos
|
|
@@ -128,7 +142,7 @@ sema formatar exemplos
|
|
|
128
142
|
sema validar exemplos/pagamento.sema
|
|
129
143
|
```
|
|
130
144
|
|
|
131
|
-
### 4. Gerar
|
|
145
|
+
### 4. Gerar código
|
|
132
146
|
|
|
133
147
|
```bash
|
|
134
148
|
sema compilar exemplos/pagamento.sema --alvo typescript --saida ./.tmp/pagamento-ts
|
|
@@ -143,13 +157,15 @@ sema verificar exemplos/pagamento.sema --json --saida ./.tmp/verificacao-pagamen
|
|
|
143
157
|
|
|
144
158
|
## O que esse vertical prova
|
|
145
159
|
|
|
146
|
-
Se esse vertical passa, a Sema
|
|
160
|
+
Se esse vertical passa, a Sema já consegue demonstrar que:
|
|
147
161
|
|
|
148
|
-
- modela contrato
|
|
162
|
+
- modela contrato público
|
|
163
|
+
- modela superficie sensível sem deixar segurança invisível
|
|
149
164
|
- modela efeitos operacionais
|
|
150
165
|
- modela falhas reais
|
|
151
|
-
- modulariza
|
|
166
|
+
- modulariza domínio com `use`
|
|
167
|
+
- declara idempotencia e execução crítica sem criar sintaxe nova
|
|
152
168
|
- gera artefatos coerentes para TypeScript e Python
|
|
153
169
|
- executa testes gerados sem gambiarra conceitual
|
|
154
170
|
|
|
155
|
-
Esse e o criterio pratico que sustenta o uso
|
|
171
|
+
Esse e o criterio pratico que sustenta o uso público do vertical de pagamento como referência para IA e geracao.
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Persistência Vendor-First
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Sema 1.5.19 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.
|
|
4
10
|
|
|
5
11
|
## Engines publicas
|
|
6
12
|
|
|
@@ -128,17 +134,17 @@ Cada recurso recebe compatibilidade por engine:
|
|
|
128
134
|
- `parcial`
|
|
129
135
|
- `invalido`
|
|
130
136
|
|
|
131
|
-
Isso deixa
|
|
137
|
+
Isso deixa explícito quando o contrato está pedindo portabilidade falsa, por exemplo:
|
|
132
138
|
|
|
133
139
|
- `table` em `redis`
|
|
134
140
|
- `foreign_keys` em engine sem suporte equivalente
|
|
135
|
-
-
|
|
141
|
+
- transação multi-documento tratada como universal
|
|
136
142
|
|
|
137
143
|
## Onde isso aparece
|
|
138
144
|
|
|
139
145
|
- parser e AST
|
|
140
146
|
- IR canonica
|
|
141
|
-
- analisador
|
|
147
|
+
- analisador semântico
|
|
142
148
|
- formatador
|
|
143
149
|
- `sema drift`
|
|
144
150
|
- `sema importar`
|