@semacode/cli 4.1.2 → 4.2.0

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 (39) hide show
  1. package/dist/agentBootstrap.d.ts +4 -0
  2. package/dist/agentBootstrap.js +44 -0
  3. package/dist/agentContext.d.ts +1 -1
  4. package/dist/agentContext.js +5 -5
  5. package/dist/agentContextPack.js +22 -31
  6. package/dist/agentEntryPoints.d.ts +1 -3
  7. package/dist/agentEntryPoints.js +16 -262
  8. package/dist/cliArgs.js +1 -0
  9. package/dist/cliGrammar.js +8 -4
  10. package/dist/cliHelpTexto.js +5 -4
  11. package/dist/comandoSessao.d.ts +0 -33
  12. package/dist/comandoSessao.js +71 -70
  13. package/dist/contextBudget.d.ts +15 -0
  14. package/dist/contextBudget.js +64 -0
  15. package/dist/docs.part01.js +0 -1
  16. package/dist/docs.part02.js +11 -23
  17. package/dist/docsRelations.d.ts +2 -0
  18. package/dist/docsRelations.js +83 -0
  19. package/dist/geracaoCore.d.ts +1 -1
  20. package/dist/index.part07.d.ts +1 -0
  21. package/dist/index.part07.js +54 -31
  22. package/dist/index.part08.js +3 -3
  23. package/dist/indexPack.d.ts +1 -0
  24. package/dist/indexPack.js +1 -1
  25. package/dist/initCommand.d.ts +1 -0
  26. package/dist/initCommand.js +10 -1
  27. package/dist/sessionContext.d.ts +13 -0
  28. package/dist/sessionContext.js +41 -0
  29. package/dist/verificacaoPythonLocal.d.ts +17 -0
  30. package/dist/verificacaoPythonLocal.js +46 -0
  31. package/docs/ai-integration.md +5 -13
  32. package/docs/ai-workflow.md +8 -6
  33. package/docs/commands.md +1 -1
  34. package/docs/documentation.md +33 -0
  35. package/docs/testing.md +18 -0
  36. package/exemplos/python_verificacao.sema +68 -68
  37. package/node_modules/@sema/gerador-python/dist/runtime.js +65 -65
  38. package/package.json +1 -1
  39. package/skills/sema/SKILL.md +82 -169
@@ -0,0 +1,4 @@
1
+ import type { AgentContextPack } from "./agentContextTipos.js";
2
+ export declare function renderizarInstrucaoCodexSema(_pack: AgentContextPack): string;
3
+ export declare function renderizarSemaBoot(_pack: AgentContextPack): string;
4
+ export declare function renderizarSemaSmallModel(_pack: AgentContextPack): string;
@@ -0,0 +1,44 @@
1
+ const FALLBACK = 'No Windows, tente & "$env:SystemRoot\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "$HOME\\.sema\\bin\\sema-managed.ps1" --version; em macOS/Linux, $HOME/.sema/bin/sema --version. Só então declare a CLI indisponível.';
2
+ export function renderizarInstrucaoCodexSema(_pack) {
3
+ return `# Sema para Codex
4
+
5
+ Use diretamente a CLI local na raiz do workspace. Sema governa; a IA executa.
6
+ 1. Rode \`sema --version\` e \`sema sessao "<intenção>" --json\`.
7
+ 2. Se a sessão pedir a janela de contexto, obtenha o valor realmente configurado. Não adivinhe pelo nome ou tamanho do modelo. Repita com \`--janela-contexto <tokens> --salvar-perfil\`; orçamento e reserva de saída são ajustáveis. Reconfigure ao trocar de modelo.
8
+ 3. Leia \`SEMA_BOOT.md\` uma vez. Siga os contratos e caminhos indicados pela sessão; resolva ambiguidades antes de editar. Se o índice estiver desatualizado, rode \`sema sync-codex --json\`.
9
+ 4. No contrato selecionado: \`sema inspecionar <contrato> --drift none --json\`, \`sema docs-impacto --intencao "<intenção>" --arquivo <contrato> --json\`, \`sema drift <contrato> --cache fresh --json\` e \`sema impacto <contrato> --alvo <símbolo> --mudanca "<mudança>" --json\`.
10
+ 5. Preserve SEMA-GOVERNED, impl e vinculos. Valide contrato alterado, teste o comportamento, confira drift fresh e feche com \`sema finalizar-mudanca\`, informando o arquivo e as docs efetivamente lidas.
11
+
12
+ SEMA_INDEX.json e AGENT_CONTEXT_PACK.json são bases internas da CLI, sem leitura integral obrigatória. Expanda pelo contrato indicado; não carregue o projeto inteiro. Cache acelera, não é prova final.
13
+ Falha do Sema, vínculo quebrado, rota divergente ou impl quebrada impedem conclusão. Score não substitui evidência. Sema não autoriza deploy, mensagens, dinheiro, segredos, destruição nem bypass de políticas.
14
+ Use PT-BR com acentos quando esse for o idioma do usuário. Confirme escopo fora do workspace.
15
+ ${FALLBACK}
16
+ `;
17
+ }
18
+ export function renderizarSemaBoot(_pack) {
19
+ return `# SEMA_BOOT
20
+
21
+ Comece por \`sema --version\` e \`sema sessao "<intenção>" --json\`. O retorno é navegação, não autorização de execução. A skill global só prepara a adoção/reparo e delega a este protocolo.
22
+ Declare a janela real com \`--janela-contexto <tokens>\`. Use \`--salvar-perfil\` para lembrar neste workspace; \`--orcamento-contexto\` limita a resposta estimada e \`--reserva-saida\` reserva geração. A estimativa por caracteres não é tokenização exata e não mede o contexto já usado pela conversa.
23
+
24
+ Leia somente o contrato selecionado, suas dependências declaradas e as docs bloqueantes da mudança. Referências recomendadas ficam disponíveis sob demanda. SEMA_INDEX.json e AGENT_CONTEXT_PACK.json são consultados internamente; não os carregue integralmente. Para aprofundar: \`sema resumo <contrato> --micro --para mudanca --drift none --json\`. Uma consulta com --drift none não comprova código; valores nulos são não avaliados.
25
+
26
+ Antes de editar: inspecionar o contrato, docs-impacto com intenção e arquivo exato, drift fresh e impacto. Para sintaxe .sema, leia exemplos/; use instalar-exemplos se ausente. Módulo novo: contrato validado -> compilar no alvo padrão -> implementação real -> verificar. Preserve SEMA-GOVERNED, impl e vinculos. Sem contrato aplicável, modele e vincule antes do código.
27
+ Antes de concluir: validar contrato alterado, verificar/testes pertinentes, drift --cache fresh e finalizar-mudanca com --arquivo e --doc-lida. Cache acelera, não é prova final. sucesso:false, vinculos_quebrados, rotas_divergentes e impls_quebrados bloqueiam fechamento; vinculos_fora_do_escopo é informativo. Avalie payload, não só ok. Scores, regex e validação inline não substituem evidência física e comportamental.
28
+
29
+ Divida por responsabilidade: código avisa acima de 1000 linhas e bloqueia acima de 2000; .sema avisa acima de 300 e bloqueia acima de 500. Não use parte_1/parte_2. Payload inline acima de 262144 caracteres exige divisão, não retry.
30
+ UI/CLI: acabamento moderno e contextual, estados e responsividade; prove desktop/mobile sem overflow horizontal a 390px e smoke de saída, erro e ajuda no terminal. Preserve acentos no texto humano.
31
+ Timeout do agente não é falha do Sema: reduza escopo e tente 120s -> 300s -> 600s. Se indisponível, pare antes de editar. ${FALLBACK}
32
+ Sema não concede autorização externa nem contorna políticas da plataforma. Confirme caminhos fora do workspace, não invente evidência e não use --force sem decisão humana explícita.
33
+ `;
34
+ }
35
+ export function renderizarSemaSmallModel(_pack) {
36
+ return `# SEMA_SMALL_MODEL
37
+
38
+ Use a mesma entrada curta de qualquer IA: AGENTS.md -> sema sessao "<intenção>" --json.
39
+ Informe a janela efetiva quando solicitado. O perfil controla o orçamento; fraca/média/forte não substitui quantidade de tokens. Leia SEMA_BOOT.md uma vez e depois somente o contrato indicado. Não carregue SEMA_INDEX.json, AGENT_CONTEXT_PACK.json ou o código inteiro.
40
+ Consulta: --drift none. Fechamento: --cache fresh; cache não é prova final. Preserve SEMA-GOVERNED, os testes e os gates. Pare em ambiguidade, falha ou dependência não resolvida e solicite um recorte menor.
41
+ ${FALLBACK}
42
+ `;
43
+ }
44
+ //# sourceMappingURL=agentBootstrap.js.map
@@ -1,7 +1,7 @@
1
1
  import { type GuiaCapacidadeIaMap } from './agentContextTipos.js';
2
2
  export declare function criarEntradaCanonicaProjeto(guiaPorCapacidade: GuiaCapacidadeIaMap): {
3
3
  descricao: string;
4
- ordemLeitura: ("AGENTS.md" | "SEMA_BOOT.md" | "SEMA_SMALL_MODEL.md" | "AGENT_CONTEXT_PACK.json" | "SEMA_BRIEF.micro.txt" | "SEMA_BRIEF.curto.txt" | "SEMA_BRIEF.md" | "SEMA_INDEX.json" | "README.md")[];
4
+ ordemLeitura: string[];
5
5
  porCapacidade: {
6
6
  fraca: string[];
7
7
  pequena: string[];
@@ -1,15 +1,15 @@
1
1
  // SEMA-GOVERNED: sema.produto.governanca_ia.contexto
2
2
  // Descrição: compõe a entrada canônica do projeto para cada capacidade de IA.
3
3
  import { criarAgentContextPack } from './agentContextPack.js';
4
- import { ALIASES_CAPACIDADE_IA, ARQUIVO_AGENT_CONTEXT_PACK, ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL, ARQUIVOS_CANONICOS_IA_RAIZ, DOCUMENTOS_SUPORTE_IA, } from './agentContextTipos.js';
4
+ import { ALIASES_CAPACIDADE_IA, ARQUIVO_SEMA_BOOT, DOCUMENTOS_SUPORTE_IA, } from './agentContextTipos.js';
5
5
  export function criarEntradaCanonicaProjeto(guiaPorCapacidade) {
6
6
  const agentContextPack = criarAgentContextPack(guiaPorCapacidade);
7
- const fraca = [ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL, ARQUIVO_AGENT_CONTEXT_PACK, 'SEMA_BRIEF.micro.txt', 'SEMA_INDEX.json', 'AGENTS.md'];
8
- const media = [ARQUIVO_SEMA_BOOT, ARQUIVO_AGENT_CONTEXT_PACK, 'SEMA_BRIEF.curto.txt', 'SEMA_INDEX.json', 'AGENTS.md', 'README.md'];
9
- const forte = [ARQUIVO_SEMA_BOOT, ARQUIVO_AGENT_CONTEXT_PACK, 'SEMA_BRIEF.md', 'SEMA_INDEX.json', 'AGENTS.md', 'README.md'];
7
+ const fraca = ['AGENTS.md', ARQUIVO_SEMA_BOOT];
8
+ const media = ['AGENTS.md', ARQUIVO_SEMA_BOOT];
9
+ const forte = ['AGENTS.md', ARQUIVO_SEMA_BOOT];
10
10
  return {
11
11
  descricao: 'Entrada canônica do repositório para IA. O repo não é human-first; a IA deve começar por esses artefatos antes de abrir código cru.',
12
- ordemLeitura: [...ARQUIVOS_CANONICOS_IA_RAIZ],
12
+ ordemLeitura: ['AGENTS.md', ARQUIVO_SEMA_BOOT],
13
13
  porCapacidade: {
14
14
  fraca,
15
15
  pequena: fraca,
@@ -7,20 +7,20 @@ export const LIMITE_CARACTERES_PAYLOAD_INLINE = 262144;
7
7
  export function criarGuiaCapacidadeIa() {
8
8
  const fraca = {
9
9
  descricao: "IA fraca, gratuita, local pequena ou com disciplina baixa. Leia o boot card, pare cedo e chame Sema antes de agir.",
10
- artefatos: [ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL, ARQUIVO_AGENT_CONTEXT_PACK, "SEMA_BRIEF.micro.txt", "SEMA_INDEX.json", "AGENTS.md"],
11
- ordemLeitura: [ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL, ARQUIVO_AGENT_CONTEXT_PACK, "SEMA_BRIEF.micro.txt", "SEMA_INDEX.json", "AGENTS.md"],
10
+ artefatos: ["AGENTS.md", ARQUIVO_SEMA_BOOT],
11
+ ordemLeitura: ["AGENTS.md", ARQUIVO_SEMA_BOOT],
12
12
  evitar: ["ast.json", "ir.json", "diagnosticos.json"],
13
13
  };
14
14
  const media = {
15
15
  descricao: "IA média. Aguenta boot, resumo expandido, briefing mínimo, drift e documentação curta.",
16
- artefatos: [ARQUIVO_SEMA_BOOT, ARQUIVO_AGENT_CONTEXT_PACK, "SEMA_BRIEF.curto.txt", "SEMA_INDEX.json", "AGENTS.md", "README.md"],
17
- ordemLeitura: [ARQUIVO_SEMA_BOOT, ARQUIVO_AGENT_CONTEXT_PACK, "SEMA_BRIEF.curto.txt", "SEMA_INDEX.json", "AGENTS.md", "README.md"],
16
+ artefatos: ["AGENTS.md", ARQUIVO_SEMA_BOOT],
17
+ ordemLeitura: ["AGENTS.md", ARQUIVO_SEMA_BOOT],
18
18
  evitar: ["ast.json"],
19
19
  };
20
20
  const forte = {
21
- descricao: "IA forte, com tool use bom e contexto grande. Pode consumir o pacote completo, mas ainda deve começar pelo boot e pelos gates Sema.",
22
- artefatos: [ARQUIVO_SEMA_BOOT, ARQUIVO_AGENT_CONTEXT_PACK, "SEMA_BRIEF.md", "SEMA_INDEX.json", "AGENTS.md", "README.md"],
23
- ordemLeitura: [ARQUIVO_SEMA_BOOT, ARQUIVO_AGENT_CONTEXT_PACK, "SEMA_BRIEF.md", "SEMA_INDEX.json", "AGENTS.md", "README.md"],
21
+ descricao: "IA forte. Comece pela mesma entrada curta e expanda somente conforme a tarefa e o orçamento de contexto declarado.",
22
+ artefatos: ["AGENTS.md", ARQUIVO_SEMA_BOOT],
23
+ ordemLeitura: ["AGENTS.md", ARQUIVO_SEMA_BOOT],
24
24
  evitar: ["ast.json", "ir.json", "drift.json"],
25
25
  };
26
26
  return {
@@ -202,7 +202,7 @@ export function criarAgentContextPack(guiaPorCapacidade) {
202
202
  caminho: ARQUIVO_SEMA_SMALL_MODEL,
203
203
  tipo: "entrypoint",
204
204
  prioridade: 2,
205
- obrigatorio: true,
205
+ obrigatorio: false,
206
206
  quandoUsar: "Codex operando com pouco contexto, tarefa curta ou necessidade de instrução compacta",
207
207
  incluirTextoBrutoQuando: "a IA tende a ignorar instruções longas ou copiar a estética ASCII da DSL",
208
208
  },
@@ -210,15 +210,15 @@ export function criarAgentContextPack(guiaPorCapacidade) {
210
210
  caminho: ARQUIVO_AGENT_CONTEXT_PACK,
211
211
  tipo: "entrypoint",
212
212
  prioridade: 3,
213
- obrigatorio: true,
214
- quandoUsar: "sempre antes de decidir quais documentos ou exemplos abrir",
215
- incluirTextoBrutoQuando: "a IA precisa auditar regras, proibições, prioridades e fontes de verdade",
213
+ obrigatorio: false,
214
+ quandoUsar: "consulta interna da CLI; auditoria direcionada das políticas quando necessária",
215
+ incluirTextoBrutoQuando: "somente trechos pertinentes solicitados; não carregar integralmente na abertura",
216
216
  },
217
217
  {
218
218
  caminho: "SEMA_BRIEF.micro.txt",
219
219
  tipo: "resumo",
220
220
  prioridade: 4,
221
- obrigatorio: true,
221
+ obrigatorio: false,
222
222
  quandoUsar: "IA fraca, onboarding, chat remoto ou primeiro triage",
223
223
  incluirTextoBrutoQuando: "a tarefa cabe em contexto curto",
224
224
  },
@@ -226,7 +226,7 @@ export function criarAgentContextPack(guiaPorCapacidade) {
226
226
  caminho: "SEMA_BRIEF.curto.txt",
227
227
  tipo: "resumo",
228
228
  prioridade: 5,
229
- obrigatorio: true,
229
+ obrigatorio: false,
230
230
  quandoUsar: "IA média, mudança pequena ou review rápido",
231
231
  incluirTextoBrutoQuando: "o módulo alvo ainda não está claro pelo micro",
232
232
  },
@@ -234,9 +234,9 @@ export function criarAgentContextPack(guiaPorCapacidade) {
234
234
  caminho: "SEMA_INDEX.json",
235
235
  tipo: "indice",
236
236
  prioridade: 6,
237
- obrigatorio: true,
238
- quandoUsar: "antes de abrir código cru ou escolher contrato alvo",
239
- incluirTextoBrutoQuando: "a IA precisa mapear módulos, lacunas, riscos ou arquivos prováveis",
237
+ obrigatorio: false,
238
+ quandoUsar: "consulta interna da CLI para localizar contrato e arquivos vinculados",
239
+ incluirTextoBrutoQuando: "não enviar o índice bruto; usar a navegação de sema sessao",
240
240
  },
241
241
  {
242
242
  caminho: "AGENTS.md",
@@ -250,8 +250,8 @@ export function criarAgentContextPack(guiaPorCapacidade) {
250
250
  caminho: "docs/commands.md",
251
251
  tipo: "docs",
252
252
  prioridade: 8,
253
- obrigatorio: true,
254
- quandoUsar: "antes de escolher comando Sema, interpretar --saida de sema compilar ou destravar Sema Codigo",
253
+ obrigatorio: false,
254
+ quandoUsar: "quando houver dúvida de comando, gate ou --saida; consultar apenas a seção pertinente",
255
255
  incluirTextoBrutoQuando: "a IA precisa entender comandos, gates, saida gerada e proximo passo governado",
256
256
  },
257
257
  {
@@ -291,21 +291,12 @@ export function criarAgentContextPack(guiaPorCapacidade) {
291
291
  nome: "Agent Context Pack",
292
292
  versao: 7,
293
293
  objetivo: "Dar a agentes IA uma entrada curta, estruturada e auditável antes de abrir código cru ou inventar contexto.",
294
- ordemLeitura: [
295
- ARQUIVO_SEMA_BOOT,
296
- ARQUIVO_AGENT_CONTEXT_PACK,
297
- ARQUIVO_SEMA_SMALL_MODEL,
298
- "SEMA_BRIEF.micro.txt",
299
- "SEMA_INDEX.json",
300
- "AGENTS.md",
301
- "docs/commands.md",
302
- "exemplos/",
303
- ],
294
+ ordemLeitura: ["AGENTS.md", ARQUIVO_SEMA_BOOT],
304
295
  regrasObrigatorias: [
305
296
  "Contrato vem antes da ação.",
306
- "Leia SEMA_BOOT.md antes de qualquer outro artefato de IA.",
297
+ "Comece por AGENTS.md e sema sessao; leia SEMA_BOOT.md uma vez e expanda somente pelo contrato indicado.",
307
298
  "Leia AGENTS.md antes de editar código, contrato, docs operacionais, release ou deploy.",
308
- "Leia docs/commands.md antes de escolher comando Sema, interpretar um gate ou usar --saida de sema compilar.",
299
+ "Use o help do comando ou a seção pertinente de docs/commands.md quando houver dúvida de sintaxe, gate ou --saida.",
309
300
  "Quando a intenção não deixar claro qual profile, workflow, pipeline, gerador ou adapter usar, rode `sema descobrir recomendar --intencao \"<objetivo>\" --json`; a recomendação informa, mas nunca se autoexecuta.",
310
301
  "Em workspace local, rode sema --version; se o shell falhar, use $HOME/.sema/bin/sema no macOS/Linux. No Windows, PowerShell usa sema.ps1 no PATH e cmd.exe usa sema.cmd; use & \"$env:SystemRoot\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File \"$HOME\\.sema\\bin\\sema-managed.ps1\" --version como fallback. Só depois peça instalação ou reparo.",
311
302
  "`sema resumo` e `sema inspecionar` usam análise `none` por padrão: não executam drift e mantêm score, confiança, implementação e superfícies derivadas como nulos/não avaliados; use `--drift cache|fresh` somente quando precisar dessa evidência.",
@@ -313,7 +304,7 @@ export function criarAgentContextPack(guiaPorCapacidade) {
313
304
  "Na CLI 3.0.0, `sema --version` continua texto SemVer exato; com `--json`, help e falhas de controle usam o envelope exato `sema.cli.control/v1`, enquanto todo comando sintaticamente válido usa o envelope exato de oito campos `sema.cli.result/v1`, mantém o resultado do comando em `payload` e não confunde `ok` de transporte com o veredito de domínio dentro desse payload.",
314
305
  "Antes de editar, rode `sema inspecionar <contrato.sema> --drift none --json`, `sema drift <contrato.sema> --escopo modulo --cache fresh --json` e `sema impacto <contrato.sema> --alvo <token> --mudanca \"<descricao>\" --json`.",
315
306
  "Use exemplos oficiais antes de criar ou corrigir sintaxe .sema.",
316
- "Use SEMA_INDEX.json para escolher contrato, módulo e arquivos prováveis antes de abrir código cru.",
307
+ "A CLI consulta SEMA_INDEX.json internamente; use sema sessao para escolher contrato e arquivos prováveis sem carregar o índice bruto.",
317
308
  "Valide .sema alterado e rode drift antes de concluir.",
318
309
  "Conclusão só é válida se o `payload` de `sema drift --cache fresh --json` retornar sucesso:true, sem `vinculos_quebrados`, sem `rotas_divergentes` e sem `impls_quebrados`; hit de cache orienta trabalho, mas não substitui evidência fresh de fechamento.",
319
310
  "Quando faltar contrato aplicável ou vínculo semântico do arquivo, inspecione o arquivo, crie/edite o contrato aplicável e vincule antes do código.",
@@ -1,8 +1,7 @@
1
1
  import { type AgentContextPack } from './agentContextTipos.js';
2
+ export { renderizarSemaBoot, renderizarSemaSmallModel } from './agentBootstrap.js';
2
3
  export declare function listarDestinosEntrypointCodex(entrypointCodex: string): string[];
3
4
  type StatusArquivoGerenciado = "criado" | "atualizado" | "preservado" | "pendente";
4
- export declare function renderizarSemaBoot(agentContextPack: AgentContextPack): string;
5
- export declare function renderizarSemaSmallModel(agentContextPack: AgentContextPack): string;
6
5
  export declare function renderizarDocumentoAgentesPorCapacidade(agentContextPack: AgentContextPack): string;
7
6
  export declare function sincronizarEntrypointCodex(baseProjeto: string, agentContextPack: AgentContextPack): Promise<{
8
7
  arquivos: Array<{
@@ -35,4 +34,3 @@ export declare function sincronizarEntrypointCodex(baseProjeto: string, agentCon
35
34
  entrypointsLegadosPendentes: string[];
36
35
  entrypointsLegadosLimpos: boolean;
37
36
  }>;
38
- export {};
@@ -5,6 +5,8 @@ import path from 'node:path';
5
5
  import { escreverArquivoWorkspaceSeguro, validarDestinosEscritaWorkspace, } from './workspaceWrite.js';
6
6
  import { LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO, LIMITE_AVISO_LINHAS_CONTRATO_SEMA, LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO, LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA, } from './driftOrcamento.js';
7
7
  import { ARQUIVO_AGENT_CONTEXT_PACK, ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL, } from './agentContextTipos.js';
8
+ import { renderizarInstrucaoCodexSema } from './agentBootstrap.js';
9
+ export { renderizarSemaBoot, renderizarSemaSmallModel } from './agentBootstrap.js';
8
10
  import { LIMITE_CARACTERES_PAYLOAD_INLINE } from './agentContextPack.js';
9
11
  const MARCADOR_SEMA_AGENT_ENTRYPOINT_INICIO = '<!-- sema:agent-entrypoint:start -->';
10
12
  const MARCADOR_SEMA_AGENT_ENTRYPOINT_FIM = '<!-- sema:agent-entrypoint:end -->';
@@ -134,175 +136,6 @@ async function limparEntrypointLegadoNaoCodex(baseProjeto, caminhoRelativo) {
134
136
  });
135
137
  return contemVestigioSemaLegado(conteudoManual) ? "pendente" : "atualizado";
136
138
  }
137
- export function renderizarSemaBoot(agentContextPack) {
138
- const politica = agentContextPack.politicaIdioma;
139
- const politicaCodigo = agentContextPack.politicaCodigoGovernado;
140
- const politicaTimeout = agentContextPack.politicaTimeoutResumo;
141
- const politicaDesign = agentContextPack.politicaDesignVisual;
142
- const politicaPlataforma = agentContextPack.politicaPlataforma;
143
- return `# SEMA_BOOT
144
-
145
- Você está em um projeto governado por Sema. O contrato semântico vem antes de qualquer ação.
146
-
147
- ## Primeira ação
148
-
149
- 1. Confirme \`AGENTS.md\` na raiz e rode \`sema --version\`. Se o shell não localizar o comando, use \`$HOME/.sema/bin/sema\` no macOS/Linux; no Windows, PowerShell usa \`sema.ps1\` no PATH, cmd.exe usa \`sema.cmd\`, e o fallback absoluto é \`& "$env:SystemRoot\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "$HOME\\.sema\\bin\\sema-managed.ps1" --version\`. Só então declare a CLI indisponível.
150
- 2. Use a CLI local diretamente para ler o workspace: \`sema sessao "<intencao>" --json\` na abertura (identidade, frescor, docs bloqueantes e gates em um envelope), depois \`sema resumo --drift none\`, \`sema docs-impacto\`, \`sema inspecionar --drift none\`, \`sema drift --cache fresh\` e \`sema impacto\`. Na 3.0.0, \`sema --version\` continua texto SemVer exato; com \`--json\`, help e falhas de controle usam \`sema.cli.control/v1\`, enquanto comandos sintaticamente válidos usam o envelope exato de oito campos \`sema.cli.result/v1\`, com o resultado aninhado em \`payload\` e \`ok\` separado do veredito de domínio desse payload.
151
- 3. Se não estiver claro qual profile, workflow, pipeline, gerador ou adapter usar, rode \`sema descobrir recomendar --intencao "<objetivo>" --json\`; não execute automaticamente uma recomendação ambígua.
152
- 4. Não use fonte externa de workspace para substituir a CLI local quando ela estiver operacional.
153
- 5. Este boot é para workspace local em disco; se não houver workspace local, pare bloqueado em vez de inventar caminho.
154
- 6. Antes de criar módulo, rota, task ou contrato, inspecione o contrato \`.sema\` aplicável.
155
- 7. Antes de editar código existente, rode \`sema drift --cache fresh\` e impacto pela CLI local.
156
- 8. Para módulo novo com contrato validado, gere o andaime com \`sema compilar\` no alvo padrão, preencha a implementação real mantendo \`impl\`/\`vinculos\` e feche com \`sema verificar\`.
157
- 9. Antes de criar ou corrigir \`.sema\`, use os exemplos oficiais na CLI local.
158
- 10. Se qualquer etapa falhar, pare e diga que está bloqueado.
159
-
160
- Não substitua esse fluxo por leitura manual de \`AGENTS.md\`, \`README.md\`, busca local, inferência pelo nome do projeto, bom senso ou ferramenta não citada aqui.
161
-
162
- ## Políticas da plataforma
163
-
164
- ${politicaPlataforma.regra}
165
-
166
- - Escopo: ${politicaPlataforma.escopoGovernanca}
167
- - Se houver alerta externo: ${politicaPlataforma.quandoHouverBloqueio}
168
- - IA fraca: ${politicaPlataforma.porCapacidade.fraca}
169
- - IA média: ${politicaPlataforma.porCapacidade.media}
170
- - IA forte: ${politicaPlataforma.porCapacidade.forte}
171
-
172
- ## Capacidade do agente
173
-
174
- - Fraca: leia \`${ARQUIVO_SEMA_SMALL_MODEL}\`, \`SEMA_BRIEF.micro.txt\`, \`${ARQUIVO_AGENT_CONTEXT_PACK}\` e só suba contexto se necessário.
175
- - Média: leia este boot, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_BRIEF.curto.txt\`, \`SEMA_INDEX.json\` e a doc indicada pelo Sema.
176
- - Forte: leia este boot, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_BRIEF.md\`, \`SEMA_INDEX.json\`, \`AGENTS.md\` e rode os gates completos.
177
-
178
- ## Código governado
179
-
180
- ${politicaCodigo.regra}
181
-
182
- - Marcador: \`${politicaCodigo.marcador}\`.
183
- - Orçamento de código: arquivo governado acima de ${LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO} linhas gera diagnóstico; acima de ${LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO} bloqueia conclusão, geração e snapshot. Documentação Markdown não entra nesse limite de código.
184
- - Orçamento de contrato .sema: até ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA} linhas é saudável; ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA + 1}-${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA} é diagnóstico; acima de ${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA} bloqueia criação, edição, drift, finalização, geração e snapshot.
185
- - Divida .sema por domínio/capacidade, nunca parte_1/parte_2. Um mesmo arquivo de código pode ter vários contratos governando via vinculos; preserve essa rastreabilidade no Sema Código.
186
- - Payload inline: acima de ${LIMITE_CARACTERES_PAYLOAD_INLINE} caracteres em \`arquivos_codigo.conteudo\` ou \`conteudo\` não é timeout; divida por responsabilidade ou use anexo/caminho de servidor autorizado.
187
- - Validação inline com score alto não substitui cabeçalho no arquivo físico: ela prova o payload enviado, não prepara a próxima IA que vai abrir o arquivo depois.
188
- - Divisão correta é por responsabilidade real. Exemplo web: \`index.html\` para estrutura, \`styles/*.css\` para estilos, \`js/state.js\`, \`js/calc.js\`, \`js/render/*.js\` para comportamento, e \`data/*.json\` para dados.
189
- - Proibido fatiar arquivo em \`index_p1.html\`, \`index_p2.html\` ou similares sem fronteira semântica só para passar no limite.
190
- - IA fraca: ${politicaCodigo.porCapacidade.fraca}
191
- - IA média: ${politicaCodigo.porCapacidade.media}
192
- - IA forte: ${politicaCodigo.porCapacidade.forte}
193
-
194
- ## Sinal, evidência e ritual
195
-
196
- Score composto, \`achados[]\` e \`decisaoAgente\` são sinais para guiar a próxima ação. Abaixo de 80 bloqueia; alvo evolui 0.5 ponto até 100; nada disso basta sozinho.
197
-
198
- - Fraca: se o score passou, confira se cada achado tem evidência concreta; se não souber provar, pare.
199
- - Média: conecte regra, arquivo, contrato e evidência antes de concluir aderência.
200
- - Forte: não transforme regex, palavra-chave ou score 100 em ritual vazio; valide substância, risco e comportamento.
201
- - Consultas honestas: \`resumo\` e \`inspecionar\` usam \`--drift none\` por padrão; score, confiança, implementação, rotas e superfícies não observadas ficam nulos/não avaliados.
202
- - Se uma consulta executar drift explicitamente, \`payload.analiseDrift.sucesso\` expõe o resultado e uma falha solicitada retorna exit code diferente de zero.
203
- - Cache: \`sema drift\` usa \`fresh\` por padrão. \`--cache none\` ainda executa sem persistência; \`cache\` acelera extrações validadas, mas não é prova final.
204
- - Fechamento governado: se o \`payload\` de \`sema drift --cache fresh --json\` retornar \`sucesso:false\`, \`vinculos_quebrados\`, \`rotas_divergentes\` ou \`impls_quebrados\`, não diga que passou limpo. Corrija e rode drift de novo. \`vinculos_fora_do_escopo\` é informativo: o arquivo existe no workspace fora dos \`diretoriosCodigo\`; siga o \`diretorioSugerido\` do registro para incluir o diretório no \`sema.config.json\` — não bloqueia fechamento.
205
- - Experiência governada: se a tarefa cria ou altera site, sistema, app, UI, painel, jogo, CLI/TUI ou terminal, prove acabamento moderno, contextual e não genérico. Em UI estreita (ex. 390px), \`document.documentElement.scrollWidth <= document.documentElement.clientWidth\` precisa ser verdadeiro.
206
- - Caminho fora do workspace local aberto pelo usuário não substitui a pasta local.
207
-
208
- ## Acabamento visual e terminal
209
-
210
- ${politicaDesign.regra}
211
-
212
- - Aplicar quando: ${politicaDesign.aplicarQuando}
213
- - IA fraca: ${politicaDesign.porCapacidade.fraca}
214
- - IA média: ${politicaDesign.porCapacidade.media}
215
- - IA forte: ${politicaDesign.porCapacidade.forte}
216
- - Proibido: ${politicaDesign.proibicoes.slice(0, 5).join(", ")}.
217
-
218
- ## Timeout e retry
219
-
220
- ${politicaTimeout.regra}
221
-
222
- - Timeout inicial recomendado para projeto inteiro: ${politicaTimeout.timeoutInicialSegundos}s.
223
- - Escalonamento: ${politicaTimeout.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")}.
224
- - IA fraca: ${politicaTimeout.porCapacidade.fraca}
225
- - IA média: ${politicaTimeout.porCapacidade.media}
226
- - IA forte: ${politicaTimeout.porCapacidade.forte}
227
- - ${politicaTimeout.ateQuandoTentar}
228
-
229
- ## Idioma humano
230
-
231
- ${politica.regra}
232
-
233
- - Use o idioma falado pelo usuário.
234
- - Em PT-BR, escreva com acentos, cedilha e pontuação normal.
235
- - Use vocabulário Sema canônico para conceitos de produto: pontuação, desvio semântico, trava, pré-checagem, ambiente de execução e perfil.
236
- - Não traduza comandos, rotas, nomes de arquivos, endpoints, variáveis, pacotes, marcas, símbolos de código nem palavras-chave da DSL.
237
-
238
- ## Falha fechada
239
-
240
- ${agentContextPack.failClosed.map((regra) => `- ${regra}`).join("\n")}
241
- `;
242
- }
243
- export function renderizarSemaSmallModel(agentContextPack) {
244
- const politicaTimeout = agentContextPack.politicaTimeoutResumo;
245
- const politicaDesign = agentContextPack.politicaDesignVisual;
246
- const politicaPlataforma = agentContextPack.politicaPlataforma;
247
- return `# SEMA_SMALL_MODEL
248
-
249
- Leia isto primeiro se você tem pouco contexto, pouca memória, pouco tool use ou tendência a ignorar instruções longas.
250
-
251
- 1. Não edite nada antes de chamar Sema.
252
- 2. Em workspace local, rode \`sema --version\`; se o shell falhar, use \`$HOME/.sema/bin/sema\` no macOS/Linux. No Windows, PowerShell usa \`sema.ps1\` no PATH e cmd.exe usa \`sema.cmd\`; o fallback absoluto é \`& "$env:SystemRoot\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "$HOME\\.sema\\bin\\sema-managed.ps1" --version\`. Só então pare e peça instalação ou reparo.
253
- 3. Sema não contorna políticas da plataforma: ele governa contrato, escopo, drift, evidência e qualidade.
254
- 4. Se aparecer alerta de política: pare, explique de forma neutra e não tente burlar filtro.
255
- 5. Se não houver workspace local em disco: pare bloqueado e peça o fluxo apropriado; não invente leitura por caminho.
256
- 6. Se for escrever \`.sema\`: leia \`exemplos/\`; se a pasta estiver ausente, rode \`sema instalar-exemplos --json\` antes.
257
- 7. Se não houver contrato ou vínculo semântico do arquivo: inspecione o arquivo, crie ou edite o contrato aplicável e vincule antes do código.
258
- 8. Se não conseguir chamar Sema: pare e declare bloqueio.
259
- 9. Responda no idioma do usuário. Em PT-BR, use vocabulário Sema: pontuação, desvio semântico, pré-checagem, ambiente de execução e perfil; preserve comandos, endpoints e identificadores.
260
- 10. Se abrir código com \`${agentContextPack.politicaCodigoGovernado.marcador}\`: volte ao contrato, chame Sema e só então edite.
261
- 11. Score 100, achados atendidos ou validação inline são sinais; confira evidência real no contrato e no código.
262
- 12. Validação inline não dispensa cabeçalho \`${agentContextPack.politicaCodigoGovernado.marcador}\` no arquivo físico.
263
- 13. Não crie código governado acima de ${LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO} linhas nem contrato .sema acima de ${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA}; acima de ${LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO} em código ou ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA} em .sema, planeje divisão por responsabilidade.
264
- 14. Divida por função real: HTML, CSS, estado, cálculo, renderização, dados. Não faça \`index_p1.html\` e \`index_p2.html\` sem sentido.
265
- 15. Payload inline acima de ${LIMITE_CARACTERES_PAYLOAD_INLINE} caracteres não é lentidão: divida por responsabilidade; não aumente timeout para tentar passar limite de transporte.
266
- 16. Se aparecer caminho que não pertence ao workspace local aberto pelo usuário, pare e confirme a fonte antes de agir.
267
- 17. Se Sema estourar por timeout local: aumente o timeout e tente de novo. Não trate isso como falha do Sema.
268
- 18. Para fechamento, rode \`sema drift --cache fresh --json\`; cache persistente só acelera navegação e não é prova final. Se o \`payload\` retornar \`sucesso:false\`, \`vinculos_quebrados\`, \`rotas_divergentes\` ou \`impls_quebrados\`, não conclua. \`vinculos_fora_do_escopo\` é informativo com \`diretorioSugerido\` para o \`sema.config.json\`; não bloqueia fechamento. Na 3.0.0, não procure campos de domínio no topo do envelope \`sema.cli.result/v1\` nem use \`ok\` como substituto do veredito do payload.
269
- 19. Se a tarefa tiver site, sistema, app, UI, painel, jogo, CLI/TUI ou terminal: aplique acabamento moderno, contextual, responsivo/ergonômico, com hierarquia clara, estados e evidência. Em UI, valide mobile/desktop e prove \`scrollWidth <= clientWidth\` em viewport estreito como 390px.
270
- 20. Não substitua o contexto Sema por AGENTS.md, README.md, busca local, inferência por nome ou bom senso.
271
-
272
- Ordem curta:
273
-
274
- - \`${ARQUIVO_SEMA_BOOT}\`
275
- - \`SEMA_BRIEF.micro.txt\`
276
- - \`${ARQUIVO_AGENT_CONTEXT_PACK}\`
277
- - \`SEMA_INDEX.json\`
278
- - \`AGENTS.md\`
279
-
280
- Políticas da plataforma:
281
-
282
- - ${politicaPlataforma.regra}
283
- - IA fraca: ${politicaPlataforma.porCapacidade.fraca}
284
- - Se houver bloqueio externo: ${politicaPlataforma.quandoHouverBloqueio}
285
-
286
- Timeout:
287
-
288
- - Timeout local do agente não é falha do Sema.
289
- - Projeto inteiro: comece com ${politicaTimeout.timeoutInicialSegundos}s ou mais.
290
- - Escalonamento: ${politicaTimeout.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")}.
291
- - Se o projeto inteiro for lento, escopar para \`sema resumo <arquivo.sema> --micro --para mudanca --drift none\`.
292
- - ${politicaTimeout.ateQuandoTentar}
293
-
294
- Acabamento visual e terminal:
295
-
296
- - ${politicaDesign.regra}
297
- - IA fraca: ${politicaDesign.porCapacidade.fraca}
298
- - Evidência mínima: ${politicaDesign.evidencias.fraca.join(", ")}.
299
- - Proibido: ${politicaDesign.proibicoes.slice(0, 5).join(", ")}.
300
-
301
- Fail-closed:
302
-
303
- ${agentContextPack.failClosed.map((regra) => `- ${regra}`).join("\n")}
304
- `;
305
- }
306
139
  export function renderizarDocumentoAgentesPorCapacidade(agentContextPack) {
307
140
  const supportedCapacities = Object.keys(agentContextPack.guiaPorCapacidade).join(", ");
308
141
  return [
@@ -368,19 +201,11 @@ export function renderizarDocumentoAgentesPorCapacidade(agentContextPack) {
368
201
  "",
369
202
  "## Codex Context Tiers",
370
203
  "",
371
- "Codex with a small context budget should start with `" + ARQUIVO_SEMA_BOOT + "`,",
372
- "`" + ARQUIVO_SEMA_SMALL_MODEL + "`, `SEMA_BRIEF.micro.txt`,",
373
- "`" + ARQUIVO_AGENT_CONTEXT_PACK + "`, and `SEMA_INDEX.json`. They should stop early",
374
- "when a gate is unclear.",
375
- "",
376
- "Codex with a medium context budget should start with `" + ARQUIVO_SEMA_BOOT + "`,",
377
- "`" + ARQUIVO_AGENT_CONTEXT_PACK + "`, `SEMA_BRIEF.curto.txt`,",
378
- "`SEMA_INDEX.json`, and `AGENTS.md`. They must run docs-impact, drift, and",
379
- "impact before edits.",
380
- "",
381
- "Codex with a large context budget may consume `" + ARQUIVO_AGENT_CONTEXT_PACK + "`, `SEMA_BRIEF.md`,",
382
- "`SEMA_INDEX.json`, AST, IR, drift, and impact outputs, but larger context does",
383
- "not remove the contract-first rule.",
204
+ "All context capacities start with AGENTS.md, SEMA_BOOT.md and sema sessao.",
205
+ "The first session asks for the effective window in tokens. Declare --janela-contexto",
206
+ "and use --salvar-perfil to remember it; --orcamento-contexto and --reserva-saida are adjustable.",
207
+ "SEMA_INDEX.json and AGENT_CONTEXT_PACK.json are internal CLI data, never mandatory full reads.",
208
+ "Read the selected contract and its declared dependencies, then the linked code. Ambiguity requires refinement.",
384
209
  "",
385
210
  "## Governed Code",
386
211
  "",
@@ -430,79 +255,6 @@ export function renderizarDocumentoAgentesPorCapacidade(agentContextPack) {
430
255
  "platform policies, terms of use, permissions, security controls, or laws.",
431
256
  ].join("\n") + "\n";
432
257
  }
433
- function renderizarInstrucaoCodexSema(agentContextPack) {
434
- const capacidade = "media";
435
- const guia = agentContextPack.guiaPorCapacidade[capacidade];
436
- const politicaTimeout = agentContextPack.politicaTimeoutResumo;
437
- const politicaDesign = agentContextPack.politicaDesignVisual;
438
- const politicaPlataforma = agentContextPack.politicaPlataforma;
439
- return `# Sema para Codex
440
-
441
- Este workspace é governado por Sema. Antes de qualquer ação em código, contrato, documentação operacional, workflow, profile ou deploy:
442
-
443
- 1. Leia \`${ARQUIVO_SEMA_BOOT}\`.
444
- 2. Rode \`sema --version\`; se o shell falhar, use \`$HOME/.sema/bin/sema\` no macOS/Linux. No Windows, PowerShell usa \`sema.ps1\` no PATH e cmd.exe usa \`sema.cmd\`; use \`& "$env:SystemRoot\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "$HOME\\.sema\\bin\\sema-managed.ps1" --version\` como fallback absoluto. Só então pare e peça instalação ou reparo.
445
- 3. Abra a sessão com \`sema sessao "<intencao>" --json\`: devolve identidade do workspace, hash dos contratos, frescor dos artefatos gerados, docs bloqueantes da intenção e os gates do ciclo. Se \`frescor.fresco\` for falso, rode o \`sync-codex\` sugerido antes de agir.
446
- 4. Use diretamente a CLI local: \`sema resumo --drift none\`, \`sema docs-impacto\`, \`sema inspecionar --drift none\`, \`sema drift --cache fresh\` e \`sema impacto\`. Na 3.0.0, \`sema --version\` continua texto SemVer exato; com \`--json\`, help e falhas de controle usam \`sema.cli.control/v1\`, enquanto comandos sintaticamente válidos usam o envelope exato de oito campos \`sema.cli.result/v1\`, com resultado em \`payload\` e \`ok\` distinto do veredito de domínio do payload.
447
- 5. Quando a capacidade correta não estiver clara, use \`sema descobrir recomendar --intencao "<objetivo>" --json\`; não autoexecute resultado ambíguo.
448
- 6. Não use fonte externa de workspace para substituir a CLI local quando ela estiver operacional.
449
- 7. Chame docs-impacto com a intenção declarada antes de agir.
450
- 8. Chame inspecionar no contrato \`.sema\` aplicável.
451
- 9. Para módulo novo com contrato validado, gere o andaime com \`sema compilar <contrato> --alvo <alvoPadrao>\`, preencha a implementação real mantendo \`impl\`/\`vinculos\` e feche com \`sema verificar\`.
452
- 10. Antes de editar código existente, rode \`sema drift --cache fresh\` e impacto.
453
- 11. Antes de criar ou editar \`.sema\`, use exemplos oficiais.
454
- 12. Ao concluir mudança de contrato, rode validar.
455
- 13. Antes de finalizar, use finalizar-mudanca com as docs lidas.
456
-
457
- É proibido substituir esse fluxo por leitura manual de \`AGENTS.md\`, \`README.md\`, busca local por arquivos, inferência pelo nome do projeto, bom senso ou ferramenta não citada nesta lista.
458
-
459
- Entrypoint oficial do Codex: \`${agentContextPack.entrypointCodex}\`.
460
- Capacidade padrão do Codex: ${capacidade}.
461
- Ordem de leitura: ${guia.join(" -> ")}.
462
-
463
- Políticas da plataforma:
464
- - ${politicaPlataforma.regra}
465
- - Capacidade ${capacidade}: ${politicaPlataforma.porCapacidade[capacidade]}
466
- - Se houver alerta externo: ${politicaPlataforma.quandoHouverBloqueio}
467
-
468
- Falha fechada:
469
- ${agentContextPack.failClosed.map((regra) => `- ${regra}`).join("\n")}
470
-
471
- Timeout:
472
- - Timeout local do agente não é falha do Sema.
473
- - Se uma chamada Sema estourar, aumente o timeout e tente de novo antes de declarar bloqueio.
474
- - Para projeto inteiro, comece com ${politicaTimeout.timeoutInicialSegundos}s ou mais; se for lento, escale ${politicaTimeout.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")}.
475
- - Se possível, reduza escopo para \`sema resumo <arquivo.sema> --micro --para mudanca --drift none\`.
476
-
477
- Código governado:
478
- - Mantenha o marcador \`${agentContextPack.politicaCodigoGovernado.marcador}\` em código gerado ou governado.
479
- - Ao encontrar esse marcador, volte ao contrato .sema aplicável e chame Sema antes de editar.
480
- - Comentário de código é lembrete curto; não substitui drift, docs-impacto nem finalizar-mudanca.
481
- - Validação inline prova o payload enviado; não dispensa o marcador no arquivo físico sincronizado.
482
- - Payload inline acima de ${LIMITE_CARACTERES_PAYLOAD_INLINE} caracteres não deve virar retry de timeout: modularize por responsabilidade ou use anexo/caminho de servidor autorizado.
483
- - Se um arquivo crescer, divida por responsabilidade real. Em web: \`index.html\`, \`styles/*.css\`, \`js/state.js\`, \`js/calc.js\`, \`js/render/*.js\`, \`data/*.json\`. Não fatie em p1/p2 sem fronteira semântica.
484
-
485
- Sinal e evidência:
486
- - Score composto, \`achados[]\` e \`decisaoAgente\` orientam a ação; abaixo de 80 bloqueia, alvo evolui 0.5 ponto até 100, e nada substitui evidência concreta.
487
- - Palavra-chave ou regex passando não prova governança se contrato, código e comportamento não batem.
488
- - \`resumo\` e \`inspecionar\` usam \`--drift none\` por padrão; campos derivados nulos significam não avaliados, nunca zero.
489
- - \`sema drift --cache fresh --json\` com \`payload.sucesso:false\`, \`payload.vinculos_quebrados\`, \`payload.rotas_divergentes\` ou \`payload.impls_quebrados\` bloqueia fechamento. \`payload.vinculos_fora_do_escopo\` é informativo com \`diretorioSugerido\` para os \`diretoriosCodigo\`; não bloqueia. Cache persistente é aceleração, não prova final.
490
- - Caminho fora do workspace local aberto pelo usuário não substitui a pasta local.
491
-
492
- Acabamento visual e terminal:
493
- - Se houver site, sistema, app, UI, painel, jogo, CLI/TUI ou terminal, acabamento moderno, contextual e não genérico é requisito governado, não enfeite.
494
- - Capacidade ${capacidade}: ${politicaDesign.porCapacidade[capacidade]}
495
- - Evidências: ${politicaDesign.evidencias[capacidade].join(", ")}.
496
- - Responsividade/ergonomia real: valide desktop/mobile e, em viewport estreito como 390px, confirme \`document.documentElement.scrollWidth <= document.documentElement.clientWidth\`; em terminal/CLI/TUI, rode smoke check de saída, erro e ajuda quando aplicável.
497
- - Proibido: ${politicaDesign.proibicoes.slice(0, 5).join(", ")}.
498
-
499
- Idioma:
500
- - Responda no idioma do usuário.
501
- - Em PT-BR, use vocabulário Sema canônico, acentos, cedilha, pontuação e símbolos normais.
502
- - A DSL \`.sema\` pode ser ASCII; texto humano não precisa ser.
503
- - Não traduza comandos, rotas, arquivos, endpoints, variáveis, pacotes, marcas, símbolos de código nem palavras-chave da DSL.
504
- `;
505
- }
506
258
  function renderizarDocSintaxeSemaLocal(_agentContextPack) {
507
259
  return `# Sema Syntax for Codex
508
260
 
@@ -672,10 +424,10 @@ This is the minimum workflow for Codex in a local workspace.
672
424
 
673
425
  1. Read \`${ARQUIVO_SEMA_BOOT}\`.
674
426
  2. Run \`sema --version\`. If the shell cannot find it, use \`$HOME/.sema/bin/sema\` on macOS/Linux. On Windows, PowerShell resolves \`sema.ps1\` from PATH and cmd.exe resolves \`sema.cmd\`; use \`& "$env:SystemRoot\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "$HOME\\.sema\\bin\\sema-managed.ps1" --version\` as the absolute fallback. Only then declare the CLI unavailable.
675
- 3. Run \`sema resumo --drift none\` for contract-only orientation; request \`--drift cache\` or \`--drift fresh\` only when code evidence is needed.
676
- 4. Run \`sema docs-impacto --intencao "<change>" --json\`.
427
+ 3. Run \`sema sessao "<intenção>" --json\`; then \`sema resumo <contrato> --micro --drift none --json\` only for the selected contract.
428
+ 4. Run \`sema docs-impacto --intencao "<change>" --arquivo <contract> --json\`.
677
429
  5. Read every required document returned by the command.
678
- 6. Read \`docs/commands.md\` before selecting a command or interpreting \`--saida\`.
430
+ 6. Consult command help or the relevant section of \`docs/commands.md\` when syntax, a gate or \`--saida\` is unclear.
679
431
  7. If the right capability is unclear, run \`sema descobrir recomendar --intencao "<goal>" --json\`; do not auto-run ambiguous recommendations.
680
432
  8. Use \`exemplos/\` and \`docs/syntax.md\` before creating or editing a contract.
681
433
  9. Run \`sema drift --cache fresh\` and \`sema impacto\` before editing existing code.
@@ -697,9 +449,11 @@ UI rule: if the task involves an interface, minimum evidence includes desktop an
697
449
 
698
450
  ## Codex Context Capacity
699
451
 
700
- - Small context: \`${ARQUIVO_SEMA_SMALL_MODEL}\`, \`SEMA_BRIEF.micro.txt\`, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_INDEX.json\`.
701
- - Medium context: \`${ARQUIVO_SEMA_BOOT}\`, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_BRIEF.curto.txt\`, \`SEMA_INDEX.json\`, \`AGENTS.md\`.
702
- - Large context: \`${ARQUIVO_SEMA_BOOT}\`, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_BRIEF.md\`, \`SEMA_INDEX.json\`, AST, IR, drift, and impact.
452
+ All capacities use AGENTS.md -> SEMA_BOOT.md -> the contract returned by \`sema sessao\`.
453
+ The first session asks for the configured token window; declare \`--janela-contexto <tokens> --salvar-perfil\`.
454
+ Use \`--orcamento-contexto\` and \`--reserva-saida\` to allocate space. Counts use characters / 4, not the model tokenizer.
455
+ The CLI reads SEMA_INDEX.json internally. Do not load the full index, global pack, or unrelated modules.
456
+ An explicit \`--arquivo\` selects its contract and declared dependencies. Word matches are optional references.
703
457
 
704
458
  ## When to Generate Code
705
459
 
@@ -739,7 +493,7 @@ Then read every required doc returned by \`docs-impacto\`.
739
493
 
740
494
  ## Session Opening
741
495
 
742
- - \`sema sessao "<intencao>" --json\`: opens a governed session with one compact envelope. It returns workspace identity (\`baseProjeto\`, \`hashContratos\`, CLI version), artifact freshness (\`frescor.fresco\` plus the exact recovery command when stale), the project's contract count and modules, the declared intent's categories with blocking and recommended docs, the four gate commands for the full loop, and concrete next steps. Treat \`frescor.fresco:false\` as a pre-action blocker: run the suggested \`sema sync-codex --json\` before editing, because gates protect the consistency that stale artifacts break.
496
+ - \`sema sessao "<intencao>" [--arquivo <contrato-ou-codigo>] [--janela-contexto <tokens>] [--orcamento-contexto <tokens>] [--reserva-saida <tokens>] [--salvar-perfil] --json\`: asks for the effective window when absent and stores the profile only on explicit request. The compact response contains workspace identity, artifact freshness, matching contracts and linked files, mandatory document paths, scoped gates and next steps. The index stays inside the CLI. The budget estimates the public JSON size using characters/4; it does not measure the conversation or the model's exact tokenizer. Omitted candidates are counted and require scope refinement; mandatory readings are never silently waived. Treat \`frescor.fresco:false\` as a pre-action blocker and run the suggested \`sema sync-codex --json\`. Navigation never authorizes execution.
743
497
 
744
498
  ## Public JSON output
745
499
 
package/dist/cliArgs.js CHANGED
@@ -23,6 +23,7 @@ export function obterOpcoesRepetidas(args, nome) {
23
23
  return valores;
24
24
  }
25
25
  export const OPCOES_COM_VALOR = new Set([
26
+ "--janela-contexto", "--orcamento-contexto", "--reserva-saida",
26
27
  "--template",
27
28
  "--alvo", "-a",
28
29
  "--escopo",
@@ -35,6 +35,7 @@ const ESTRUTURAS = new Set(["flat", "modulos", "backend"]);
35
35
  const ESCOPOS = new Set(["arquivo", "modulo", "projeto"]);
36
36
  const MODOS_CACHE = new Set(["none", "cache", "fresh", "off", "auto", "refresh"]);
37
37
  const MODOS_RESUMO = new Set(["resumo", "onboarding", "review", "mudanca", "bug", "arquitetura"]);
38
+ const OPCOES_CONTEXTO_IA = ["--janela-contexto", "--orcamento-contexto", "--reserva-saida"];
38
39
  const CAPACIDADES_IA = new Set(["fraca", "media", "forte"]);
39
40
  const MATURIDADES = new Set([
40
41
  "draft", "rascunho", "prototype", "prototipo", "production", "producao",
@@ -154,10 +155,10 @@ function validarSemArgumentos(args) {
154
155
  }
155
156
  function validarIniciar(args) {
156
157
  const parsed = parsearArgumentos(args, {
157
- opcoes: ["--template"], flags: ["--force", "--com-exemplos"], maxPosicionais: 0,
158
+ opcoes: ["--template", ...OPCOES_CONTEXTO_IA], flags: ["--force", "--com-exemplos"], maxPosicionais: 0,
158
159
  });
159
160
  const template = parsed ? valorOpcao(parsed, "--template") : undefined;
160
- return parsed !== null && (template === undefined || TEMPLATES_INICIAR.has(template));
161
+ return parsed !== null && (template === undefined || TEMPLATES_INICIAR.has(template)) && OPCOES_CONTEXTO_IA.every((n) => valorOpcao(parsed, n) === undefined || /^[1-9]\d*$/u.test(valorOpcao(parsed, n)));
161
162
  }
162
163
  function validarInit(args) {
163
164
  const parsed = parsearArgumentos(args, {
@@ -461,8 +462,11 @@ function validarComandoBasico(comando, args) {
461
462
  const estrutura = valorOpcao(parsed, "--estrutura"), framework = valorOpcao(parsed, "--framework");
462
463
  return Boolean(alvo && ALVOS_GERACAO.has(alvo)) && (!estrutura || ESTRUTURAS.has(estrutura)) && (!framework || FRAMEWORKS.has(framework));
463
464
  }
464
- case "verificar": return parsearArgumentos(args, { opcoes: ["--saida", "--alvo"], flags: ["--sem-cache"], maxPosicionais: 1 }) !== null;
465
- case "sessao": return parsearArgumentos(args, { flags: ["--json"], maxPosicionais: 2 }) !== null;
465
+ case "verificar": return parsearArgumentos(args, { opcoes: ["--saida", "--alvo"], flags: ["--sem-cache", "--preservar-implementacao"], maxPosicionais: 1 }) !== null;
466
+ case "sessao": {
467
+ const parsed = parsearArgumentos(args, { opcoes: ["--arquivo", ...OPCOES_CONTEXTO_IA], flags: ["--salvar-perfil"], maxPosicionais: 2 });
468
+ return parsed !== null && OPCOES_CONTEXTO_IA.every((n) => valorOpcao(parsed, n) === undefined || /^[1-9]\d*$/u.test(valorOpcao(parsed, n)));
469
+ }
466
470
  case "formatar": return parsearArgumentos(args, { flags: ["--check"], maxPosicionais: 1 }) !== null;
467
471
  case "inspecionar": {
468
472
  const parsed = parsearArgumentos(args, { opcoes: ["--drift", "--cache"], flags: ["--com-drift"], maxPosicionais: 1 });