@semacode/cli 1.5.28 → 1.5.29

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 (81) hide show
  1. package/AGENTS.md +279 -265
  2. package/AGENT_CONTEXT_PACK.json +164 -0
  3. package/README.md +144 -144
  4. package/SEMA_BRIEF.curto.txt +7 -7
  5. package/SEMA_BRIEF.md +464 -65
  6. package/SEMA_BRIEF.micro.txt +6 -6
  7. package/SEMA_INDEX.json +6723 -669
  8. package/dist/bridge.d.ts +52 -0
  9. package/dist/bridge.js +318 -0
  10. package/dist/bridge.js.map +1 -0
  11. package/dist/comandos.d.ts +11 -0
  12. package/dist/comandos.js +110 -0
  13. package/dist/comandos.js.map +1 -0
  14. package/dist/contexto.d.ts +34 -0
  15. package/dist/contexto.js +197 -0
  16. package/dist/contexto.js.map +1 -0
  17. package/dist/drift.d.ts +1 -1
  18. package/dist/drift.js +32 -5
  19. package/dist/drift.js.map +1 -1
  20. package/dist/index.js +391 -64
  21. package/dist/index.js.map +1 -1
  22. package/dist/lua-symbols.d.ts +0 -6
  23. package/dist/lua-symbols.js +11 -78
  24. package/dist/lua-symbols.js.map +1 -1
  25. package/dist/projeto.js +6 -0
  26. package/dist/projeto.js.map +1 -1
  27. package/dist/tipos.d.ts +1 -1
  28. package/docs/AGENT_STARTER.md +109 -109
  29. package/docs/api.md +82 -0
  30. package/docs/cli.md +175 -175
  31. package/docs/como-ensinar-a-sema-para-ia.md +155 -155
  32. package/docs/deploy.md +93 -93
  33. package/docs/documentacao.md +88 -88
  34. package/docs/env.md +105 -105
  35. package/docs/extensao-vscode.md +53 -53
  36. package/docs/fluxo-pratico-ia-sema.md +187 -187
  37. package/docs/instalacao-e-primeiro-uso.md +134 -134
  38. package/docs/integracao-com-ia.md +110 -110
  39. package/docs/mcp.md +292 -292
  40. package/docs/pagamento-ponta-a-ponta.md +171 -171
  41. package/docs/persistencia-vendor-first.md +151 -151
  42. package/docs/prompt-base-ia-sema.md +111 -111
  43. package/docs/repositories.md +54 -54
  44. package/docs/rollback.md +49 -49
  45. package/docs/seguranca.md +126 -126
  46. package/docs/sintaxe.md +218 -218
  47. package/exemplos/author_obra_comum.sema +294 -294
  48. package/exemplos/author_tema_sensivel.sema +264 -264
  49. package/exemplos/profile_game.sema +114 -114
  50. package/exemplos/profile_legal.sema +105 -105
  51. package/exemplos/profile_ops.sema +110 -110
  52. package/exemplos/profile_research.sema +104 -104
  53. package/exemplos/profile_software.sema +123 -123
  54. package/exemplos/profile_workflow_n8n.sema +99 -99
  55. package/llms-full.txt +10 -9
  56. package/llms.txt +8 -7
  57. package/node_modules/@sema/gerador-css/package.json +1 -1
  58. package/node_modules/@sema/gerador-dart/package.json +1 -1
  59. package/node_modules/@sema/gerador-html/package.json +1 -1
  60. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  61. package/node_modules/@sema/gerador-lua/package.json +1 -1
  62. package/node_modules/@sema/gerador-python/package.json +1 -1
  63. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  64. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +1 -1
  65. package/node_modules/@sema/nucleo/dist/index.d.ts +17 -0
  66. package/node_modules/@sema/nucleo/dist/index.js +28 -0
  67. package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
  68. package/node_modules/@sema/nucleo/dist/ir/conversor.js +4 -0
  69. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  70. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
  71. package/node_modules/@sema/nucleo/dist/parser/parser.js +2 -0
  72. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  73. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -2
  74. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +3 -1
  75. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  76. package/node_modules/@sema/nucleo/package.json +1 -1
  77. package/node_modules/@sema/padroes/package.json +1 -1
  78. package/package.json +11 -10
  79. package/dist/php-symbols.d.ts +0 -24
  80. package/dist/php-symbols.js +0 -375
  81. package/dist/php-symbols.js.map +0 -1
package/docs/mcp.md CHANGED
@@ -1,292 +1,292 @@
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
+ # 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.