@semacode/cli 1.5.48 → 1.5.53
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/LICENSE +39 -21
- package/README.md +47 -48
- package/dist/agentContext.d.ts +2 -2
- package/dist/agentContext.js +1 -1
- package/dist/agentContextPack.d.ts +1 -1
- package/dist/agentContextPack.js +20 -28
- package/dist/agentContextTipos.d.ts +2 -2
- package/dist/agentContextTipos.js +7 -13
- package/dist/agentEntryPoints.js +244 -281
- package/dist/billing/index.d.ts +1 -58
- package/dist/billing/index.js +17 -278
- package/dist/cliArgs.js +0 -3
- package/dist/comandos.js +15 -131
- package/dist/contexto.d.ts +0 -9
- package/dist/contexto.js +59 -109
- package/dist/docs.part01.js +30 -51
- package/dist/drift.part14.js +18 -3
- package/dist/driftOrcamento.js +1 -2
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -6
- package/dist/index.part01.d.ts +1 -1
- package/dist/index.part01.js +1 -3
- package/dist/index.part04.js +4 -4
- package/dist/index.part08.js +1 -22
- package/dist/initTemplatesBase.js +5 -5
- package/dist/sync/index.js +1 -1
- package/docs/README.md +19 -0
- package/docs/ai-integration.md +90 -0
- package/docs/ai-onboarding.md +33 -0
- package/docs/ai-workflow.md +62 -0
- package/docs/auth.md +16 -0
- package/docs/cli.md +36 -95
- package/docs/commands.md +90 -0
- package/docs/database.md +15 -0
- package/docs/deploy.md +6 -38
- package/docs/documentation.md +39 -0
- package/docs/env.md +8 -109
- package/docs/frontend.md +41 -0
- package/docs/getting-started.md +33 -0
- package/docs/i18n.md +15 -0
- package/docs/profiles.md +43 -0
- package/docs/repositories.md +19 -61
- package/docs/rollback.md +9 -20
- package/docs/security.md +24 -0
- package/docs/support.md +8 -0
- package/docs/syntax.md +128 -0
- package/docs/testing.md +17 -0
- package/docs/vocabulary.md +28 -0
- 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/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +10 -0
- package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +1 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.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 -22
- package/AGENTS.md +0 -81
- package/AGENT_CONTEXT_PACK.json +0 -500
- package/SEMA_BRIEF.curto.txt +0 -18
- package/SEMA_BRIEF.md +0 -726
- package/SEMA_BRIEF.micro.txt +0 -16
- package/SEMA_INDEX.json +0 -11078
- package/dist/agentContext.js.map +0 -1
- package/dist/agentContextPack.js.map +0 -1
- package/dist/agentContextTipos.js.map +0 -1
- package/dist/agentEntryPoints.js.map +0 -1
- package/dist/angular-consumer-standalone.js.map +0 -1
- package/dist/authorAnalise.js.map +0 -1
- package/dist/authorPoliticas.js.map +0 -1
- package/dist/billing/index.js.map +0 -1
- package/dist/bridge.d.ts +0 -52
- package/dist/bridge.js +0 -333
- package/dist/bridge.js.map +0 -1
- package/dist/carregarModulos.js.map +0 -1
- package/dist/cliArgs.js.map +0 -1
- package/dist/comandos.js.map +0 -1
- package/dist/contexto.js.map +0 -1
- package/dist/controleComercialSupabase.d.ts +0 -7
- package/dist/controleComercialSupabase.js +0 -6
- package/dist/controleComercialSupabase.js.map +0 -1
- package/dist/controleComercialSupabaseAdmin.d.ts +0 -7
- package/dist/controleComercialSupabaseAdmin.js +0 -138
- package/dist/controleComercialSupabaseAdmin.js.map +0 -1
- package/dist/controleComercialSupabaseCadastro.d.ts +0 -4
- package/dist/controleComercialSupabaseCadastro.js +0 -85
- package/dist/controleComercialSupabaseCadastro.js.map +0 -1
- package/dist/controleComercialSupabaseConstantes.d.ts +0 -28
- package/dist/controleComercialSupabaseConstantes.js +0 -44
- package/dist/controleComercialSupabaseConstantes.js.map +0 -1
- package/dist/controleComercialSupabaseConsumo.d.ts +0 -2
- package/dist/controleComercialSupabaseConsumo.js +0 -77
- package/dist/controleComercialSupabaseConsumo.js.map +0 -1
- package/dist/controleComercialSupabaseConta.d.ts +0 -11
- package/dist/controleComercialSupabaseConta.js +0 -157
- package/dist/controleComercialSupabaseConta.js.map +0 -1
- package/dist/controleComercialSupabaseProfiles.d.ts +0 -4
- package/dist/controleComercialSupabaseProfiles.js +0 -55
- package/dist/controleComercialSupabaseProfiles.js.map +0 -1
- package/dist/controleComercialSupabaseTipos.d.ts +0 -3
- package/dist/controleComercialSupabaseTipos.js +0 -2
- package/dist/controleComercialSupabaseTipos.js.map +0 -1
- package/dist/controleComercialSupabaseTiposAdmin.d.ts +0 -152
- package/dist/controleComercialSupabaseTiposAdmin.js +0 -2
- package/dist/controleComercialSupabaseTiposAdmin.js.map +0 -1
- package/dist/controleComercialSupabaseTiposBase.d.ts +0 -169
- package/dist/controleComercialSupabaseTiposBase.js +0 -2
- package/dist/controleComercialSupabaseTiposBase.js.map +0 -1
- package/dist/controleComercialSupabaseTiposConta.d.ts +0 -220
- package/dist/controleComercialSupabaseTiposConta.js +0 -2
- package/dist/controleComercialSupabaseTiposConta.js.map +0 -1
- package/dist/cpp-symbols.js.map +0 -1
- package/dist/dev/index.js.map +0 -1
- package/dist/dev/watcher.js.map +0 -1
- package/dist/docs/resolver.js.map +0 -1
- package/dist/docs.js.map +0 -1
- package/dist/docs.part01.js.map +0 -1
- package/dist/docs.part02.js.map +0 -1
- package/dist/doctorCommand.js.map +0 -1
- package/dist/dotnet-http.js.map +0 -1
- package/dist/drift.contrato.js.map +0 -1
- package/dist/drift.js.map +0 -1
- package/dist/drift.part01.js.map +0 -1
- package/dist/drift.part02.js.map +0 -1
- package/dist/drift.part03.js.map +0 -1
- package/dist/drift.part04.js.map +0 -1
- package/dist/drift.part05.js.map +0 -1
- package/dist/drift.part06.js.map +0 -1
- package/dist/drift.part07.js.map +0 -1
- package/dist/drift.part08.js.map +0 -1
- package/dist/drift.part09.js.map +0 -1
- package/dist/drift.part10.js.map +0 -1
- package/dist/drift.part11.js.map +0 -1
- package/dist/drift.part12.js.map +0 -1
- package/dist/drift.part13.js.map +0 -1
- package/dist/drift.part14.js.map +0 -1
- package/dist/driftOrcamento.js.map +0 -1
- package/dist/driftScore.js.map +0 -1
- package/dist/execucoesExternas.js.map +0 -1
- package/dist/exemplosOficiais.js.map +0 -1
- package/dist/fsGovernado.js.map +0 -1
- package/dist/geracaoCore.js.map +0 -1
- package/dist/go-http.js.map +0 -1
- package/dist/guard.js.map +0 -1
- package/dist/iaPrompts.js.map +0 -1
- package/dist/importador.js.map +0 -1
- package/dist/importador.part01.js.map +0 -1
- package/dist/importador.part02.js.map +0 -1
- package/dist/importador.part03.js.map +0 -1
- package/dist/importador.part04.js.map +0 -1
- package/dist/importador.part05.js.map +0 -1
- package/dist/importador.part06.js.map +0 -1
- package/dist/importador.part07.js.map +0 -1
- package/dist/importador.part08.js.map +0 -1
- package/dist/importador.part09.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.part01.js.map +0 -1
- package/dist/index.part02.js.map +0 -1
- package/dist/index.part03.js.map +0 -1
- package/dist/index.part04.js.map +0 -1
- package/dist/index.part05.js.map +0 -1
- package/dist/index.part06.js.map +0 -1
- package/dist/index.part07.js.map +0 -1
- package/dist/index.part08.js.map +0 -1
- package/dist/init/index.js.map +0 -1
- package/dist/init/templates.js.map +0 -1
- package/dist/init/templates.part01.js.map +0 -1
- package/dist/init/templates.part02.js.map +0 -1
- package/dist/initCommand.js.map +0 -1
- package/dist/initTemplatesBackend.js.map +0 -1
- package/dist/initTemplatesBase.js.map +0 -1
- package/dist/initTemplatesFlutter.js.map +0 -1
- package/dist/initTemplatesRuntime.js.map +0 -1
- package/dist/initTemplatesWeb.js.map +0 -1
- package/dist/java-http.js.map +0 -1
- package/dist/lua-symbols.js.map +0 -1
- package/dist/mcpInstalarChaveCommand.d.ts +0 -1
- package/dist/mcpInstalarChaveCommand.js +0 -168
- package/dist/mcpInstalarChaveCommand.js.map +0 -1
- package/dist/mcpRemoto.d.ts +0 -32
- package/dist/mcpRemoto.js +0 -61
- package/dist/mcpRemoto.js.map +0 -1
- package/dist/mcp_chave.d.ts +0 -1
- package/dist/mcp_chave.js +0 -4
- package/dist/mcp_chave.js.map +0 -1
- package/dist/profileArtefatoBase.js.map +0 -1
- package/dist/profileArtefatoValidadores.js.map +0 -1
- package/dist/profileAuthorCommand.js.map +0 -1
- package/dist/profileAuthorTipos.js.map +0 -1
- package/dist/profileCatalogo.js.map +0 -1
- package/dist/profileCommand.js.map +0 -1
- package/dist/profileI18nCatalogo.js.map +0 -1
- package/dist/profileI18nVisivel.js.map +0 -1
- package/dist/profileOrquestracao.js.map +0 -1
- package/dist/profileRegras.js.map +0 -1
- package/dist/profileRulePacks.js.map +0 -1
- package/dist/profiles/validate.js.map +0 -1
- package/dist/projeto.js.map +0 -1
- package/dist/projetoBusca.js.map +0 -1
- package/dist/projetoCarregar.js.map +0 -1
- package/dist/projetoConfig.js.map +0 -1
- package/dist/projetoLegado.js.map +0 -1
- package/dist/projetoOrigens.js.map +0 -1
- package/dist/projetoResolucao.js.map +0 -1
- package/dist/projetoTipos.js.map +0 -1
- package/dist/python-http.js.map +0 -1
- package/dist/runnerValidacaoRemota.d.ts +0 -9
- package/dist/runnerValidacaoRemota.js +0 -9
- package/dist/runnerValidacaoRemota.js.map +0 -1
- package/dist/runnerValidacaoRemotaBateria.d.ts +0 -10
- package/dist/runnerValidacaoRemotaBateria.js +0 -117
- package/dist/runnerValidacaoRemotaBateria.js.map +0 -1
- package/dist/runnerValidacaoRemotaCli.d.ts +0 -4
- package/dist/runnerValidacaoRemotaCli.js +0 -86
- package/dist/runnerValidacaoRemotaCli.js.map +0 -1
- package/dist/runnerValidacaoRemotaComandos.d.ts +0 -7
- package/dist/runnerValidacaoRemotaComandos.js +0 -123
- package/dist/runnerValidacaoRemotaComandos.js.map +0 -1
- package/dist/runnerValidacaoRemotaEscopo.d.ts +0 -4
- package/dist/runnerValidacaoRemotaEscopo.js +0 -79
- package/dist/runnerValidacaoRemotaEscopo.js.map +0 -1
- package/dist/runnerValidacaoRemotaExecucao.d.ts +0 -2
- package/dist/runnerValidacaoRemotaExecucao.js +0 -104
- package/dist/runnerValidacaoRemotaExecucao.js.map +0 -1
- package/dist/runnerValidacaoRemotaRelatorio.d.ts +0 -3
- package/dist/runnerValidacaoRemotaRelatorio.js +0 -95
- package/dist/runnerValidacaoRemotaRelatorio.js.map +0 -1
- package/dist/runnerValidacaoRemotaServidor.d.ts +0 -4
- package/dist/runnerValidacaoRemotaServidor.js +0 -185
- package/dist/runnerValidacaoRemotaServidor.js.map +0 -1
- package/dist/runnerValidacaoRemotaSnapshot.d.ts +0 -10
- package/dist/runnerValidacaoRemotaSnapshot.js +0 -219
- package/dist/runnerValidacaoRemotaSnapshot.js.map +0 -1
- package/dist/runnerValidacaoRemotaTipos.d.ts +0 -158
- package/dist/runnerValidacaoRemotaTipos.js +0 -35
- package/dist/runnerValidacaoRemotaTipos.js.map +0 -1
- package/dist/runnerValidacaoRemotaUtil.d.ts +0 -3
- package/dist/runnerValidacaoRemotaUtil.js +0 -18
- package/dist/runnerValidacaoRemotaUtil.js.map +0 -1
- package/dist/runnerValidacaoRemotaWorkspace.d.ts +0 -2
- package/dist/runnerValidacaoRemotaWorkspace.js +0 -115
- package/dist/runnerValidacaoRemotaWorkspace.js.map +0 -1
- package/dist/rust-http.js.map +0 -1
- package/dist/semaChatCommand.d.ts +0 -1
- package/dist/semaChatCommand.js +0 -43
- package/dist/semaChatCommand.js.map +0 -1
- package/dist/semaChatRuntime.d.ts +0 -23
- package/dist/semaChatRuntime.js +0 -202
- package/dist/semaChatRuntime.js.map +0 -1
- package/dist/sync/index.js.map +0 -1
- package/dist/textoListas.js.map +0 -1
- package/dist/tipos.js.map +0 -1
- package/dist/typescript-http-body.js.map +0 -1
- package/dist/typescript-http-expressoes.js.map +0 -1
- package/dist/typescript-http-modelos.js.map +0 -1
- package/dist/typescript-http-rotas.js.map +0 -1
- package/dist/typescript-http-semantica.js.map +0 -1
- package/dist/typescript-http.js.map +0 -1
- package/docs/AGENT_STARTER.md +0 -147
- package/docs/agentes-por-capacidade.md +0 -130
- package/docs/api.md +0 -82
- package/docs/comandos.md +0 -807
- package/docs/como-ensinar-a-sema-para-ia.md +0 -30
- package/docs/documentacao.md +0 -74
- package/docs/extensao-vscode.md +0 -49
- package/docs/fluxo-pratico-ia-sema.md +0 -278
- package/docs/instalacao-e-primeiro-uso.md +0 -60
- package/docs/integracao-com-ia.md +0 -44
- package/docs/mcp.md +0 -69
- package/docs/pagamento-ponta-a-ponta.md +0 -171
- package/docs/persistencia-vendor-first.md +0 -151
- package/docs/prompt-base-ia-sema.md +0 -111
- package/docs/seguranca.md +0 -126
- package/docs/sintaxe.md +0 -390
- package/llms-full.txt +0 -40
- package/llms.txt +0 -23
package/dist/agentEntryPoints.js
CHANGED
|
@@ -4,7 +4,7 @@ import { mkdir, readFile, stat, writeFile } from 'node:fs/promises';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO, LIMITE_AVISO_LINHAS_CONTRATO_SEMA, LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO, LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA, } from './driftOrcamento.js';
|
|
6
6
|
import { ARQUIVO_AGENT_CONTEXT_PACK, ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL, } from './agentContextTipos.js';
|
|
7
|
-
import {
|
|
7
|
+
import { LIMITE_CARACTERES_PAYLOAD_INLINE } from './agentContextPack.js';
|
|
8
8
|
const MARCADOR_SEMA_AGENT_ENTRYPOINT_INICIO = '<!-- sema:agent-entrypoint:start -->';
|
|
9
9
|
const MARCADOR_SEMA_AGENT_ENTRYPOINT_FIM = '<!-- sema:agent-entrypoint:end -->';
|
|
10
10
|
async function statSeguro(caminho) {
|
|
@@ -18,7 +18,7 @@ async function statSeguro(caminho) {
|
|
|
18
18
|
function pareceEntradaSemaLegada(conteudo) {
|
|
19
19
|
return /Sema.*Regras obrigat[oó]rias para IA/is.test(conteudo) ||
|
|
20
20
|
/Sema.*Regras obrigatorias para IA/is.test(conteudo) ||
|
|
21
|
-
/Sema.*Regras
|
|
21
|
+
/Sema.*Regras obrigatórias para IA/is.test(conteudo);
|
|
22
22
|
}
|
|
23
23
|
function montarBlocoGerenciadoSema(conteudo) {
|
|
24
24
|
return `${MARCADOR_SEMA_AGENT_ENTRYPOINT_INICIO}\n${conteudo.trim()}\n${MARCADOR_SEMA_AGENT_ENTRYPOINT_FIM}\n`;
|
|
@@ -68,7 +68,7 @@ Você está em um projeto governado por Sema. O contrato semântico vem antes de
|
|
|
68
68
|
1. Em IDE local, confirme \`AGENTS.md\` na raiz e rode \`sema --version\`; se o comando não existir, pare. A IA não acessa o painel Sema: peça ao humano para instalar a CLI pelo painel.
|
|
69
69
|
2. Chame \`sema preflight resumo --json\`; se \`decisao\` não for \`use_cli_local\`, pare bloqueado.
|
|
70
70
|
3. Use a CLI local para ler o workspace: \`sema resumo\`, \`sema docs-impacto\`, \`sema inspecionar\`, \`sema drift\` e \`sema impacto\`.
|
|
71
|
-
4. Não use
|
|
71
|
+
4. Não use fonte externa de workspace para substituir a CLI local quando a CLI estiver operacional.
|
|
72
72
|
5. Este boot é para workspace local em disco; se não houver workspace local, pare bloqueado em vez de inventar caminho.
|
|
73
73
|
6. Antes de criar módulo, rota, task ou contrato, inspecione o contrato \`.sema\` aplicável.
|
|
74
74
|
7. Antes de editar código existente, rode drift e impacto pelo caminho autorizado da superfície atual.
|
|
@@ -101,7 +101,7 @@ ${politicaCodigo.regra}
|
|
|
101
101
|
- 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.
|
|
102
102
|
- 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.
|
|
103
103
|
- 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.
|
|
104
|
-
- Payload inline: acima de ${
|
|
104
|
+
- 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.
|
|
105
105
|
- 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.
|
|
106
106
|
- 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.
|
|
107
107
|
- Proibido fatiar arquivo em \`index_p1.html\`, \`index_p2.html\` ou similares sem fronteira semântica só para passar no limite.
|
|
@@ -118,7 +118,7 @@ Score composto, \`achados[]\` e \`decisaoAgente\` são sinais para guiar a próx
|
|
|
118
118
|
- Forte: não transforme regex, palavra-chave ou score 100 em ritual vazio; valide substância, risco e comportamento.
|
|
119
119
|
- Fechamento governado: se \`sema drift --json\` retornar \`sucesso:false\`, \`vinculos_quebrados\`, \`rotas_divergentes\` ou impls quebradas, não diga que passou limpo. Corrija e rode drift de novo.
|
|
120
120
|
- 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.
|
|
121
|
-
- Caminho
|
|
121
|
+
- Caminho fora do workspace local aberto pelo usuário não substitui a pasta local.
|
|
122
122
|
|
|
123
123
|
## Acabamento visual e terminal
|
|
124
124
|
|
|
@@ -164,7 +164,7 @@ export function renderizarSemaSmallModel(agentContextPack) {
|
|
|
164
164
|
Leia isto primeiro se você tem pouco contexto, pouca memória, pouco tool use ou tendência a ignorar instruções longas.
|
|
165
165
|
|
|
166
166
|
1. Não edite nada antes de chamar Sema.
|
|
167
|
-
2. Em IDE local, rode \`sema --version\`; se falhar, pare. A IA não acessa o painel Sema: peça ao humano para instalar a CLI pelo painel. Depois rode \`sema preflight resumo --json\`; só continue com \`use_cli_local\`; não use
|
|
167
|
+
2. Em IDE local, rode \`sema --version\`; se falhar, pare. A IA não acessa o painel Sema: peça ao humano para instalar a CLI pelo painel. Depois rode \`sema preflight resumo --json\`; só continue com \`use_cli_local\`; não use fonte externa de workspace para substituir a CLI local.
|
|
168
168
|
3. Sema não contorna políticas da plataforma: ele governa contrato, escopo, drift, evidência e qualidade.
|
|
169
169
|
4. Se aparecer alerta de política: pare, explique de forma neutra e não tente burlar filtro.
|
|
170
170
|
5. Se não houver workspace local em disco: pare bloqueado e peça o fluxo apropriado; não invente leitura por caminho.
|
|
@@ -177,8 +177,8 @@ Leia isto primeiro se você tem pouco contexto, pouca memória, pouco tool use o
|
|
|
177
177
|
12. Validação inline não dispensa cabeçalho \`${agentContextPack.politicaCodigoGovernado.marcador}\` no arquivo físico.
|
|
178
178
|
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.
|
|
179
179
|
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.
|
|
180
|
-
15. Payload inline acima de ${
|
|
181
|
-
16.
|
|
180
|
+
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.
|
|
181
|
+
16. Se aparecer caminho que não pertence ao workspace local aberto pelo usuário, pare e confirme a fonte antes de agir.
|
|
182
182
|
17. Se Sema estourar por timeout local: aumente o timeout e tente de novo. Não trate isso como falha do Sema.
|
|
183
183
|
18. Se \`sema drift --json\` retornar \`sucesso:false\`, \`vinculos_quebrados\`, \`rotas_divergentes\` ou impl quebrada, não conclua. Corrija contrato/código e rode drift de novo.
|
|
184
184
|
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.
|
|
@@ -219,132 +219,99 @@ ${agentContextPack.failClosed.map((regra) => `- ${regra}`).join("\n")}
|
|
|
219
219
|
`;
|
|
220
220
|
}
|
|
221
221
|
export function renderizarDocumentoAgentesPorCapacidade(agentContextPack) {
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
Sema
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
## Forte
|
|
317
|
-
|
|
318
|
-
Use para Codex, Claude e agentes com tool use confiável.
|
|
319
|
-
|
|
320
|
-
- Entrada: \`${ARQUIVO_SEMA_BOOT}\` -> \`${ARQUIVO_AGENT_CONTEXT_PACK}\` -> \`SEMA_BRIEF.md\` -> \`SEMA_INDEX.json\`.
|
|
321
|
-
- Pode consumir AST/IR/drift completos.
|
|
322
|
-
- Ainda deve respeitar contrato primeiro e falha fechada.
|
|
323
|
-
- Não usar contexto grande como desculpa para monólito: IA forte também respeita ${LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO} linhas para código e ${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA} para .sema.
|
|
324
|
-
- Se validar inline, ainda preparar o arquivo físico para a próxima IA com cabeçalho governado e descrição humana.
|
|
325
|
-
- Se o MCP usar caminho Linux, tratar como espelho remoto autorizado, não como leitura local do usuário.
|
|
326
|
-
|
|
327
|
-
## Timeout e Retry
|
|
328
|
-
|
|
329
|
-
${agentContextPack.politicaTimeoutResumo.regra}
|
|
330
|
-
|
|
331
|
-
- Timeout inicial para resumo de projeto inteiro: ${agentContextPack.politicaTimeoutResumo.timeoutInicialSegundos}s.
|
|
332
|
-
- Escalonamento recomendado: ${agentContextPack.politicaTimeoutResumo.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")}.
|
|
333
|
-
- Fraca: ${agentContextPack.politicaTimeoutResumo.porCapacidade.fraca}
|
|
334
|
-
- Média: ${agentContextPack.politicaTimeoutResumo.porCapacidade.media}
|
|
335
|
-
- Forte: ${agentContextPack.politicaTimeoutResumo.porCapacidade.forte}
|
|
336
|
-
- ${agentContextPack.politicaTimeoutResumo.ateQuandoTentar}
|
|
337
|
-
|
|
338
|
-
## Idioma
|
|
339
|
-
|
|
340
|
-
${agentContextPack.politicaIdioma.regra}
|
|
341
|
-
|
|
342
|
-
A gramática Sema pode ter palavras-chave ASCII. Isso não autoriza resposta humana sem acentos.
|
|
343
|
-
|
|
344
|
-
## Clientes
|
|
345
|
-
|
|
346
|
-
${agentContextPack.entrypointsClientes.map((cliente) => `- ${cliente.cliente}: ${cliente.arquivos.join(", ")}. Capacidade padrão: ${cliente.capacidadePadrao}. ${cliente.observacao}`).join("\n")}
|
|
347
|
-
`;
|
|
222
|
+
const supportedCapacities = Object.keys(agentContextPack.guiaPorCapacidade).join(", ");
|
|
223
|
+
return [
|
|
224
|
+
"# AI Integration",
|
|
225
|
+
"",
|
|
226
|
+
"Sema is designed for AI agents with different context sizes and discipline",
|
|
227
|
+
"levels. The public repository documents the local CLI flow only: agents run the",
|
|
228
|
+
"CLI inside the project, read contracts, check drift, map impact, and close the",
|
|
229
|
+
"change with evidence.",
|
|
230
|
+
"",
|
|
231
|
+
`Supported capacity labels: ${supportedCapacities}.`,
|
|
232
|
+
"",
|
|
233
|
+
"## Local-Only Rule",
|
|
234
|
+
"",
|
|
235
|
+
"For a local workspace, use the local CLI:",
|
|
236
|
+
"",
|
|
237
|
+
"```bash",
|
|
238
|
+
"sema --version",
|
|
239
|
+
"sema preflight resumo --json",
|
|
240
|
+
"sema resumo",
|
|
241
|
+
"```",
|
|
242
|
+
"",
|
|
243
|
+
"Continue only when preflight returns `use_cli_local`. Do not replace the local",
|
|
244
|
+
"CLI with an external workspace source, external sync, or project-name guessing.",
|
|
245
|
+
"",
|
|
246
|
+
"## Before Editing",
|
|
247
|
+
"",
|
|
248
|
+
"```bash",
|
|
249
|
+
"sema docs-impacto --intencao \"describe the change\" --json",
|
|
250
|
+
"sema inspecionar contratos/example.sema --json",
|
|
251
|
+
"sema drift contratos/example.sema --escopo modulo --json",
|
|
252
|
+
"sema impacto contratos/example.sema --alvo app.example --mudanca \"describe the change\" --json",
|
|
253
|
+
"```",
|
|
254
|
+
"",
|
|
255
|
+
"Read every document listed by `docs-impacto` before changing code, contracts,",
|
|
256
|
+
"operational docs, generated artifacts, workflows, profiles, or release material.",
|
|
257
|
+
"",
|
|
258
|
+
"## Capacity Tiers",
|
|
259
|
+
"",
|
|
260
|
+
"Weak agents should start with `" + ARQUIVO_SEMA_BOOT + "`,",
|
|
261
|
+
"`" + ARQUIVO_SEMA_SMALL_MODEL + "`, `SEMA_BRIEF.micro.txt`,",
|
|
262
|
+
"`" + ARQUIVO_AGENT_CONTEXT_PACK + "`, and `SEMA_INDEX.json`. They should stop early",
|
|
263
|
+
"when a gate is unclear.",
|
|
264
|
+
"",
|
|
265
|
+
"Medium agents should start with `" + ARQUIVO_SEMA_BOOT + "`,",
|
|
266
|
+
"`" + ARQUIVO_AGENT_CONTEXT_PACK + "`, `SEMA_BRIEF.curto.txt`,",
|
|
267
|
+
"`SEMA_INDEX.json`, and `AGENTS.md`. They must run docs-impact, drift, and",
|
|
268
|
+
"impact before edits.",
|
|
269
|
+
"",
|
|
270
|
+
"Strong agents may consume `" + ARQUIVO_AGENT_CONTEXT_PACK + "`, `SEMA_BRIEF.md`,",
|
|
271
|
+
"`SEMA_INDEX.json`, AST, IR, drift, and impact outputs, but larger context does",
|
|
272
|
+
"not remove the contract-first rule.",
|
|
273
|
+
"",
|
|
274
|
+
"## Governed Code",
|
|
275
|
+
"",
|
|
276
|
+
"Generated or governed code should keep a short `SEMA-GOVERNED` marker that",
|
|
277
|
+
"points back to the applicable contract. The marker is not a substitute for",
|
|
278
|
+
"validation, drift, impact, or finalization gates.",
|
|
279
|
+
"",
|
|
280
|
+
`Governed code above ${LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO} lines requires a`,
|
|
281
|
+
`split plan. Governed code above ${LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO}`,
|
|
282
|
+
"lines blocks closure. Markdown documentation is not counted as governed code",
|
|
283
|
+
"size, but it is still governed by documentation and publication checks.",
|
|
284
|
+
"",
|
|
285
|
+
"## Contract Size",
|
|
286
|
+
"",
|
|
287
|
+
"`.sema` contracts above " + LIMITE_AVISO_LINHAS_CONTRATO_SEMA + " lines require a",
|
|
288
|
+
"split plan. Above " + LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA + " lines, do not keep",
|
|
289
|
+
"editing the same contract before splitting it by real domain or capability.",
|
|
290
|
+
"Never create artificial `parte_1` or `parte_2` files to hide a large contract.",
|
|
291
|
+
"",
|
|
292
|
+
"## Payload Size",
|
|
293
|
+
"",
|
|
294
|
+
"Inline payloads in `arquivos_codigo.conteudo` or `conteudo` are limited to",
|
|
295
|
+
`${LIMITE_CARACTERES_PAYLOAD_INLINE} characters. That is a transport/input limit,`,
|
|
296
|
+
"not an operational timeout. Split by responsibility or use an authorized file",
|
|
297
|
+
"path/attachment strategy instead of increasing timeouts to push the same payload.",
|
|
298
|
+
"",
|
|
299
|
+
"## UI And Terminal Work",
|
|
300
|
+
"",
|
|
301
|
+
"When the task involves a site, app, dashboard, form, game, CLI, TUI, or any",
|
|
302
|
+
"user-facing experience, closure requires evidence:",
|
|
303
|
+
"",
|
|
304
|
+
"- desktop and mobile validation for UI work;",
|
|
305
|
+
"- no horizontal overflow on narrow mobile viewports such as 390px;",
|
|
306
|
+
"- clear loading, empty, success, and error states when relevant;",
|
|
307
|
+
"- structured terminal output, clear errors, help, and smoke checks for CLI/TUI",
|
|
308
|
+
" work.",
|
|
309
|
+
"",
|
|
310
|
+
"## Platform Policy",
|
|
311
|
+
"",
|
|
312
|
+
"Sema governs contract, scope, drift, evidence, and quality. It does not bypass",
|
|
313
|
+
"platform policies, terms of use, permissions, security controls, or laws.",
|
|
314
|
+
].join("\n");
|
|
348
315
|
}
|
|
349
316
|
function renderizarInstrucaoClienteSema(cliente, capacidade, agentContextPack) {
|
|
350
317
|
const guia = agentContextPack.guiaPorCapacidade[capacidade];
|
|
@@ -359,7 +326,7 @@ Este workspace é governado por Sema. Antes de qualquer ação em código, contr
|
|
|
359
326
|
1. Leia \`${ARQUIVO_SEMA_BOOT}\`.
|
|
360
327
|
2. Em IDE local, rode \`sema --version\`; se falhar, pare. A IA não acessa o painel Sema: peça ao humano para instalar a CLI pelo painel. Depois rode \`sema preflight resumo --json\`; se \`decisao\` não for \`use_cli_local\`, pare.
|
|
361
328
|
3. Use CLI local: \`sema resumo\`, \`sema docs-impacto\`, \`sema inspecionar\`, \`sema drift\` e \`sema impacto\`.
|
|
362
|
-
4. Não use
|
|
329
|
+
4. Não use fonte externa de workspace para substituir a CLI local quando a CLI estiver operacional.
|
|
363
330
|
5. Chame docs-impacto com a intenção declarada antes de agir.
|
|
364
331
|
6. Chame inspecionar no contrato \`.sema\` aplicável.
|
|
365
332
|
7. Antes de editar código existente, rode drift e impacto.
|
|
@@ -391,14 +358,14 @@ Código governado:
|
|
|
391
358
|
- Ao encontrar esse marcador, volte ao contrato .sema aplicável e chame Sema antes de editar.
|
|
392
359
|
- Comentário de código é lembrete curto; não substitui drift, docs-impacto nem finalizar-mudanca.
|
|
393
360
|
- Validação inline prova o payload enviado; não dispensa o marcador no arquivo físico sincronizado.
|
|
394
|
-
- Payload inline acima de ${
|
|
361
|
+
- 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.
|
|
395
362
|
- 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.
|
|
396
363
|
|
|
397
364
|
Sinal e evidência:
|
|
398
365
|
- 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.
|
|
399
366
|
- Palavra-chave ou regex passando não prova governança se contrato, código e comportamento não batem.
|
|
400
367
|
- \`sema drift --json\` com \`sucesso:false\`, \`vinculos_quebrados\`, \`rotas_divergentes\` ou impls quebradas bloqueia fechamento. Não diga "drift limpo" até rodar de novo e ficar verde.
|
|
401
|
-
- Caminho
|
|
368
|
+
- Caminho fora do workspace local aberto pelo usuário não substitui a pasta local.
|
|
402
369
|
|
|
403
370
|
Acabamento visual e terminal:
|
|
404
371
|
- 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.
|
|
@@ -415,46 +382,46 @@ Idioma:
|
|
|
415
382
|
`;
|
|
416
383
|
}
|
|
417
384
|
function renderizarDocSintaxeSemaLocal(agentContextPack) {
|
|
418
|
-
return `#
|
|
385
|
+
return `# Sema Syntax for AI Agents
|
|
419
386
|
|
|
420
|
-
Use
|
|
387
|
+
Use this file as a compact reference before creating or fixing \`.sema\` contracts.
|
|
421
388
|
|
|
422
|
-
##
|
|
389
|
+
## Golden Rule
|
|
423
390
|
|
|
424
|
-
|
|
391
|
+
Contract comes before code. Before writing \`.sema\`, read the local examples in \`exemplos/\`.
|
|
425
392
|
|
|
426
|
-
##
|
|
393
|
+
## Minimal Example
|
|
427
394
|
|
|
428
395
|
\`\`\`sema
|
|
429
|
-
module app.
|
|
396
|
+
module app.example {
|
|
430
397
|
entity Item {
|
|
431
398
|
fields {
|
|
432
399
|
id: Id
|
|
433
|
-
|
|
434
|
-
|
|
400
|
+
name: Texto
|
|
401
|
+
active: Booleano
|
|
435
402
|
}
|
|
436
403
|
}
|
|
437
404
|
|
|
438
|
-
task
|
|
405
|
+
task create_item {
|
|
439
406
|
input {
|
|
440
|
-
|
|
407
|
+
name: Texto required
|
|
441
408
|
}
|
|
442
409
|
output {
|
|
443
410
|
item: Item
|
|
444
411
|
}
|
|
445
412
|
rules {
|
|
446
|
-
|
|
413
|
+
name deve_ser preenchido
|
|
447
414
|
}
|
|
448
415
|
effects {
|
|
449
416
|
persistencia Item
|
|
450
|
-
auditoria
|
|
417
|
+
auditoria item_created
|
|
451
418
|
}
|
|
452
419
|
guarantees {
|
|
453
420
|
item existe
|
|
454
421
|
}
|
|
455
422
|
tests {
|
|
456
|
-
caso "
|
|
457
|
-
given {
|
|
423
|
+
caso "creates valid item" {
|
|
424
|
+
given { name: "Item" }
|
|
458
425
|
expect { sucesso: verdadeiro }
|
|
459
426
|
}
|
|
460
427
|
}
|
|
@@ -462,23 +429,23 @@ module app.exemplo {
|
|
|
462
429
|
}
|
|
463
430
|
\`\`\`
|
|
464
431
|
|
|
465
|
-
##
|
|
432
|
+
## Common Blocks
|
|
466
433
|
|
|
467
|
-
- \`docs\`:
|
|
468
|
-
- \`entity\`:
|
|
469
|
-
- \`task\`:
|
|
470
|
-
- \`input\`
|
|
471
|
-
- \`rules\`:
|
|
472
|
-
- \`effects\`:
|
|
473
|
-
- \`guarantees\`:
|
|
474
|
-
- \`error\`:
|
|
475
|
-
- \`tests\`:
|
|
476
|
-
- \`route\`:
|
|
477
|
-
- \`impl\`
|
|
434
|
+
- \`docs\`: module summary and notes.
|
|
435
|
+
- \`entity\`: domain model.
|
|
436
|
+
- \`task\`: governed operation.
|
|
437
|
+
- \`input\` and \`output\`: input and output contracts.
|
|
438
|
+
- \`rules\`: validations and business rules.
|
|
439
|
+
- \`effects\`: persistence, reads, events, audit, and external calls.
|
|
440
|
+
- \`guarantees\`: what the task must provide after success.
|
|
441
|
+
- \`error\`: named errors and messages.
|
|
442
|
+
- \`tests\`: minimal behavior examples.
|
|
443
|
+
- \`route\`: public surface linked to a task.
|
|
444
|
+
- \`impl\` and \`vinculos\`: links between the contract and real code.
|
|
478
445
|
|
|
479
|
-
##
|
|
446
|
+
## Canonical \`use\` and \`impl\` Origins
|
|
480
447
|
|
|
481
|
-
Use
|
|
448
|
+
Use these origins before inventing a new one:
|
|
482
449
|
|
|
483
450
|
- \`ts\` ou \`typescript\`
|
|
484
451
|
- \`js\` ou \`javascript\`
|
|
@@ -491,62 +458,62 @@ Use estas origens em contratos antes de inventar palavra nova:
|
|
|
491
458
|
- \`rust\`
|
|
492
459
|
- \`cpp\`
|
|
493
460
|
|
|
494
|
-
|
|
461
|
+
Examples:
|
|
495
462
|
|
|
496
463
|
\`\`\`sema
|
|
497
|
-
use javascript app.web.
|
|
464
|
+
use javascript app.web.expenses
|
|
498
465
|
|
|
499
466
|
impl {
|
|
500
|
-
js: src.app.
|
|
467
|
+
js: src.app.saveExpense
|
|
501
468
|
}
|
|
502
469
|
\`\`\`
|
|
503
470
|
|
|
504
|
-
\`sema compilar --alvo javascript\`
|
|
471
|
+
\`sema compilar --alvo javascript\` defines a generation target. \`impl { js: ... }\` defines the live-code origin linked to the contract. They are different layers and both are valid.
|
|
505
472
|
|
|
506
|
-
##
|
|
473
|
+
## Small Canonical Lists
|
|
507
474
|
|
|
508
475
|
- \`effects\`: \`persistencia\`, \`consulta\`, \`evento\`, \`auditoria\`, \`db.write\`, \`queue.publish\`, \`fs.write\`, \`network.egress\`, \`secret.read\`, \`shell.exec\`.
|
|
509
476
|
- \`audit.motivo\`: \`obrigatorio\`, \`opcional\`, \`dispensado\`.
|
|
510
477
|
|
|
511
|
-
##
|
|
478
|
+
## Contract Size
|
|
512
479
|
|
|
513
|
-
-
|
|
514
|
-
- ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA + 1}-${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA}
|
|
515
|
-
-
|
|
516
|
-
-
|
|
517
|
-
-
|
|
518
|
-
-
|
|
519
|
-
-
|
|
480
|
+
- up to ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA} lines: healthy
|
|
481
|
+
- ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA + 1}-${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA} lines: diagnostic warning, plan a split
|
|
482
|
+
- above ${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA}: blocks creation, edits, drift, finalization, generation, and snapshots
|
|
483
|
+
- split by real domain/capability, such as \`expenses_entry.sema\`, \`expenses_totals.sema\`, \`expenses_persistence.sema\`
|
|
484
|
+
- never use \`parte_1\`, \`parte_2\`, \`part_3\`, or equivalent names
|
|
485
|
+
- do not remove \`guarantees\`, \`tests\`, \`authz\`, \`dados\`, or \`vinculos\` just to fit under the limit
|
|
486
|
+
- multiple \`.sema\` contracts may govern the same code file through \`vinculos\`; this is expected
|
|
520
487
|
|
|
521
|
-
## JavaScript
|
|
488
|
+
## JavaScript Is Supported
|
|
522
489
|
|
|
523
|
-
|
|
490
|
+
The CLI supports JavaScript generation:
|
|
524
491
|
|
|
525
492
|
\`\`\`bash
|
|
526
|
-
sema compilar contratos/
|
|
493
|
+
sema compilar contratos/orders.sema --alvo javascript --saida ./generated/javascript
|
|
527
494
|
\`\`\`
|
|
528
495
|
|
|
529
|
-
|
|
496
|
+
The project can also generate TypeScript, Python, Dart, Lua, HTML, and CSS when those targets are enabled in \`sema.config.json\`.
|
|
530
497
|
|
|
531
|
-
##
|
|
498
|
+
## Support Files
|
|
532
499
|
|
|
533
|
-
- \`AGENTS.md\`:
|
|
534
|
-
- \`${ARQUIVO_SEMA_BOOT}\`:
|
|
535
|
-
- \`${ARQUIVO_SEMA_SMALL_MODEL}\`:
|
|
536
|
-
- \`${ARQUIVO_AGENT_CONTEXT_PACK}\`:
|
|
537
|
-
- \`SEMA_INDEX.json\`:
|
|
538
|
-
- \`docs/
|
|
539
|
-
- \`exemplos/\`:
|
|
500
|
+
- \`AGENTS.md\`: required agent rules.
|
|
501
|
+
- \`${ARQUIVO_SEMA_BOOT}\`: first read for every AI agent.
|
|
502
|
+
- \`${ARQUIVO_SEMA_SMALL_MODEL}\`: short version for weaker agents.
|
|
503
|
+
- \`${ARQUIVO_AGENT_CONTEXT_PACK}\`: structured agent context pack.
|
|
504
|
+
- \`SEMA_INDEX.json\`: project index.
|
|
505
|
+
- \`docs/commands.md\`: command catalog, gates, and \`--saida\` rule.
|
|
506
|
+
- \`exemplos/\`: official DSL examples.
|
|
540
507
|
|
|
541
|
-
|
|
508
|
+
If an AI agent does not know which shape to use, it must open \`exemplos/calculadora.sema\`, \`exemplos/crud_simples.sema\`, \`exemplos/pagamento.sema\`, or \`exemplos/tratamento_erro.sema\` before inventing syntax.
|
|
542
509
|
|
|
543
|
-
|
|
510
|
+
Platform policy: ${agentContextPack.politicaPlataforma.regra}
|
|
544
511
|
`;
|
|
545
512
|
}
|
|
546
513
|
function renderizarDocFluxoPraticoSemaLocal(agentContextPack) {
|
|
547
|
-
return `#
|
|
514
|
+
return `# Practical AI + Sema Workflow
|
|
548
515
|
|
|
549
|
-
|
|
516
|
+
This is the minimum workflow for agents in a local workspace.
|
|
550
517
|
|
|
551
518
|
1. Leia \`${ARQUIVO_SEMA_BOOT}\`.
|
|
552
519
|
2. Rode \`sema --version\`.
|
|
@@ -554,45 +521,45 @@ Este e o fluxo minimo para agentes em workspace local.
|
|
|
554
521
|
4. Rode \`sema resumo\`.
|
|
555
522
|
5. Rode \`sema docs-impacto --intencao "<acao>" --json\`.
|
|
556
523
|
6. Leia a documentacao obrigatoria retornada.
|
|
557
|
-
7. Antes de escolher comando ou interpretar \`--saida\`, leia \`docs/
|
|
558
|
-
8. Antes de criar ou editar contrato, use \`exemplos/\` e \`docs/
|
|
524
|
+
7. Antes de escolher comando ou interpretar \`--saida\`, leia \`docs/commands.md\`.
|
|
525
|
+
8. Antes de criar ou editar contrato, use \`exemplos/\` e \`docs/syntax.md\`.
|
|
559
526
|
9. Antes de editar codigo existente, rode \`sema drift\` e \`sema impacto\`.
|
|
560
527
|
10. Depois de alterar \`.sema\`, rode \`sema formatar\` e \`sema validar\`.
|
|
561
528
|
11. Antes de concluir, rode \`sema finalizar-mudanca\` com as docs lidas.
|
|
562
529
|
|
|
563
|
-
|
|
530
|
+
Contract edit rule: \`.sema\` has its own size budget. Above ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA} lines, plan a split by domain/capability; above ${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA}, do not create or edit before splitting. Do not use parte_1/parte_2 and do not force a 1:1 contract-to-file relationship; several contracts can govern the same file through \`vinculos\`.
|
|
564
531
|
|
|
565
|
-
|
|
532
|
+
Closing rule: \`sema drift --json\` must return \`sucesso:true\`. If it reports \`sucesso:false\`, \`vinculos_quebrados\`, \`rotas_divergentes\`, or broken impls, the task is still blocked. Passing unit tests do not replace green drift.
|
|
566
533
|
|
|
567
|
-
|
|
534
|
+
UI rule: if the task involves an interface, minimum evidence includes desktop and mobile. On a narrow viewport such as 390px, \`document.documentElement.scrollWidth <= document.documentElement.clientWidth\` must pass; horizontal scroll blocks closure.
|
|
568
535
|
|
|
569
|
-
##
|
|
536
|
+
## Agent Capacity
|
|
570
537
|
|
|
571
|
-
-
|
|
572
|
-
-
|
|
573
|
-
-
|
|
538
|
+
- Weak agent: \`${ARQUIVO_SEMA_SMALL_MODEL}\`, \`SEMA_BRIEF.micro.txt\`, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_INDEX.json\`.
|
|
539
|
+
- Medium agent: \`${ARQUIVO_SEMA_BOOT}\`, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_BRIEF.curto.txt\`, \`SEMA_INDEX.json\`, \`AGENTS.md\`.
|
|
540
|
+
- Strong agent: \`${ARQUIVO_SEMA_BOOT}\`, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_BRIEF.md\`, \`SEMA_INDEX.json\`, AST, IR, drift, and impact.
|
|
574
541
|
|
|
575
|
-
##
|
|
542
|
+
## When to Generate Code
|
|
576
543
|
|
|
577
|
-
|
|
544
|
+
If the delivery includes code derived from a contract, run \`sema compilar\`.
|
|
578
545
|
|
|
579
546
|
\`\`\`bash
|
|
580
|
-
sema compilar contratos/
|
|
547
|
+
sema compilar contratos/orders.sema --alvo javascript --saida ./generated/javascript
|
|
581
548
|
\`\`\`
|
|
582
549
|
|
|
583
|
-
|
|
550
|
+
Replace \`javascript\` with \`typescript\`, \`python\`, \`dart\`, \`lua\`, \`html\`, or \`css\` when appropriate.
|
|
584
551
|
|
|
585
|
-
##
|
|
552
|
+
## Fail Closed
|
|
586
553
|
|
|
587
554
|
${agentContextPack.failClosed.map((regra) => `- ${regra}`).join("\n")}
|
|
588
555
|
`;
|
|
589
556
|
}
|
|
590
557
|
function renderizarDocComandosSemaLocal(agentContextPack) {
|
|
591
|
-
return `#
|
|
558
|
+
return `# Sema Command Catalog
|
|
592
559
|
|
|
593
|
-
Use
|
|
560
|
+
Use this file when an AI agent does not know which command to run. A Sema command is an operational gate; do not replace it with a Markdown report.
|
|
594
561
|
|
|
595
|
-
##
|
|
562
|
+
## Minimum Local Flow
|
|
596
563
|
|
|
597
564
|
\`\`\`bash
|
|
598
565
|
sema --version
|
|
@@ -601,118 +568,115 @@ sema resumo
|
|
|
601
568
|
sema docs-impacto --intencao "<acao>" --json
|
|
602
569
|
\`\`\`
|
|
603
570
|
|
|
604
|
-
|
|
571
|
+
Then read every required doc returned by \`docs-impacto\`.
|
|
605
572
|
|
|
606
|
-
##
|
|
573
|
+
## Contract and Discovery
|
|
607
574
|
|
|
608
|
-
- \`sema iniciar --template <template>\`:
|
|
609
|
-
- \`sema validar <arquivo-ou-pasta> --json\`:
|
|
610
|
-
- \`sema diagnosticos <arquivo.sema> --json\`:
|
|
611
|
-
- \`sema formatar <arquivo-ou-pasta>\`:
|
|
612
|
-
- \`sema inspecionar <arquivo-ou-pasta> --json\`:
|
|
613
|
-
- \`sema ast <arquivo.sema> --json\`:
|
|
614
|
-
- \`sema ir <arquivo.sema> --json\`:
|
|
575
|
+
- \`sema iniciar --template <template>\`: creates a new Sema project with a contract, docs, examples, and AI kit.
|
|
576
|
+
- \`sema validar <arquivo-ou-pasta> --json\`: validates \`.sema\` contracts.
|
|
577
|
+
- \`sema diagnosticos <arquivo.sema> --json\`: details errors and warnings.
|
|
578
|
+
- \`sema formatar <arquivo-ou-pasta>\`: formats contracts.
|
|
579
|
+
- \`sema inspecionar <arquivo-ou-pasta> --json\`: shows modules, tasks, routes, entities, links, and expected files.
|
|
580
|
+
- \`sema ast <arquivo.sema> --json\`: shows AST for syntax debugging.
|
|
581
|
+
- \`sema ir <arquivo.sema> --json\`: shows the IR used by gates and generators.
|
|
615
582
|
|
|
616
|
-
##
|
|
583
|
+
## Change and Closure
|
|
617
584
|
|
|
618
|
-
- \`sema docs-impacto --intencao "<acao>" --json\`:
|
|
619
|
-
- \`sema drift <arquivo-ou-pasta> --escopo modulo --json\`:
|
|
620
|
-
- \`sema impacto <arquivo-ou-pasta> --alvo <token> --mudanca "<descricao>" --json\`:
|
|
621
|
-
- \`sema verificar <arquivo-ou-pasta> --json\`:
|
|
622
|
-
- \`sema finalizar-mudanca --intencao "<acao>" --doc-lida <arquivo> --json\`:
|
|
585
|
+
- \`sema docs-impacto --intencao "<acao>" --json\`: discovers required docs and documentary blockers.
|
|
586
|
+
- \`sema drift <arquivo-ou-pasta> --escopo modulo --json\`: compares contract and implementation.
|
|
587
|
+
- \`sema impacto <arquivo-ou-pasta> --alvo <token> --mudanca "<descricao>" --json\`: maps impact before changing behavior.
|
|
588
|
+
- \`sema verificar <arquivo-ou-pasta> --json\`: runs aggregated final verification.
|
|
589
|
+
- \`sema finalizar-mudanca --intencao "<acao>" --doc-lida <arquivo> --json\`: proves documentation reading before closure.
|
|
623
590
|
|
|
624
|
-
|
|
591
|
+
Honest closure: treat drift JSON as the source of truth. \`sucesso:false\`, \`vinculos_quebrados\`, \`rotas_divergentes\`, or broken impls mean the change is not complete yet. Do not report "clean drift" without green JSON.
|
|
625
592
|
|
|
626
|
-
## Sema
|
|
593
|
+
## Sema Code
|
|
627
594
|
|
|
628
|
-
- \`sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio>\`:
|
|
629
|
-
- \`sema testar <arquivo.sema> --alvo <alvo> --saida <diretorio-temporario>\`:
|
|
630
|
-
- \`sema importar <fonte> <diretorio> --saida <diretorio> --json\`:
|
|
631
|
-
- \`sema renomear-semantico <arquivo-ou-pasta> --de <nome> --para <nome> --json\`:
|
|
595
|
+
- \`sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio>\`: generates starter/support artifacts from the contract.
|
|
596
|
+
- \`sema testar <arquivo.sema> --alvo <alvo> --saida <diretorio-temporario>\`: generates and runs local tests when the target supports it.
|
|
597
|
+
- \`sema importar <fonte> <diretorio> --saida <diretorio> --json\`: imports a legacy project into initial contracts.
|
|
598
|
+
- \`sema renomear-semantico <arquivo-ou-pasta> --de <nome> --para <nome> --json\`: helps rename symbols semantically.
|
|
632
599
|
|
|
633
|
-
|
|
600
|
+
Rule for \`--saida\`: the folder passed to \`sema compilar --saida\` is generated output. It is not the final delivery by itself. The final delivery is the target files/links declared by the contract. If the contract asks for \`index.html\`, \`css/styles.css\`, and \`js/app.js\`, creating only \`saida/expense_control.ts\` does not complete the task.
|
|
634
601
|
|
|
635
|
-
|
|
602
|
+
Sema Code traceability rule: generated artifacts must point back to the source module/contract and preserve that the same final file may be governed by several \`.sema\` contracts through \`vinculos\`. Do not force a 1:1 contract-file relationship and do not treat \`saida/\` as the final project.
|
|
636
603
|
|
|
637
|
-
|
|
604
|
+
Ready UI rule: if the task generates an app, site, dashboard, form, or static HTML, run desktop/mobile visual validation when the surface allows it. On narrow mobile (for example 390px), \`scrollWidth <= clientWidth\` must pass; a layout that stacks but overflows horizontally is not responsive.
|
|
638
605
|
|
|
639
|
-
##
|
|
606
|
+
## Canonical Syntax Lists
|
|
640
607
|
|
|
641
|
-
-
|
|
642
|
-
-
|
|
643
|
-
-
|
|
608
|
+
- Origins for \`use\` and \`impl\`: \`ts/typescript\`, \`js/javascript\`, \`py/python\`, \`dart\`, \`lua\`, \`cs/dotnet\`, \`java\`, \`go\`, \`rust\`, \`cpp\`.
|
|
609
|
+
- Frequent \`effects\` categories: \`persistencia\`, \`consulta\`, \`evento\`, \`auditoria\`, \`db.write\`, \`queue.publish\`, \`fs.write\`, \`network.egress\`, \`secret.read\`, \`shell.exec\`.
|
|
610
|
+
- Accepted \`audit.motivo\` values: \`obrigatorio\`, \`opcional\`, \`dispensado\`.
|
|
644
611
|
|
|
645
|
-
\`sema compilar --alvo javascript\`
|
|
612
|
+
\`sema compilar --alvo javascript\` is a generation target. \`impl { js: ... }\` is the live-code origin. Do not swap one for the other.
|
|
646
613
|
|
|
647
|
-
##
|
|
614
|
+
## AI and Context
|
|
648
615
|
|
|
649
|
-
- \`sema ajuda-ia\`:
|
|
650
|
-
- \`sema starter-ia\`: starter
|
|
651
|
-
- \`sema contexto-ia <arquivo.sema> --saida <dir> --json\`:
|
|
652
|
-
- \`sema prompt-curto <arquivo-ou-pasta> --json\`: prompt
|
|
653
|
-
- \`sema sync-ai-entrypoints --json\`:
|
|
654
|
-
- \`sema instalar-exemplos --json\`:
|
|
655
|
-
- \`sema exemplos-prompt-ia\`:
|
|
616
|
+
- \`sema ajuda-ia\`: short guidance for agents.
|
|
617
|
+
- \`sema starter-ia\`: operational starter.
|
|
618
|
+
- \`sema contexto-ia <arquivo.sema> --saida <dir> --json\`: AI context package.
|
|
619
|
+
- \`sema prompt-curto <arquivo-ou-pasta> --json\`: compact prompt.
|
|
620
|
+
- \`sema sync-ai-entrypoints --json\`: synchronizes AGENTS, boot, pack, and local docs.
|
|
621
|
+
- \`sema instalar-exemplos --json\`: installs official examples in the workspace.
|
|
622
|
+
- \`sema exemplos-prompt-ia\`: shows prompt examples, not \`.sema\` examples.
|
|
656
623
|
|
|
657
624
|
## Profiles e Author
|
|
658
625
|
|
|
659
|
-
- \`sema author iniciar|validar|briefing|revisar-cliches|validar-narrativa|validar-proibicoes\`:
|
|
660
|
-
- \`sema profile validar <software|workflow|ops|game|legal|research|redacao|propostas|conversas> <arquivo> --json\`:
|
|
661
|
-
- \`sema profile capabilities --json\`:
|
|
662
|
-
- \`sema rule-packs --profile <profile> --json\`:
|
|
626
|
+
- \`sema author iniciar|validar|briefing|revisar-cliches|validar-narrativa|validar-proibicoes\`: governs authorial writing.
|
|
627
|
+
- \`sema profile validar <software|workflow|ops|game|legal|research|redacao|propostas|conversas> <arquivo> --json\`: validates an artifact by profile.
|
|
628
|
+
- \`sema profile capabilities --json\`: lists profiles/capabilities.
|
|
629
|
+
- \`sema rule-packs --profile <profile> --json\`: lists rule packs.
|
|
663
630
|
|
|
664
|
-
##
|
|
631
|
+
## Operational
|
|
665
632
|
|
|
666
|
-
- \`sema doctor\`:
|
|
667
|
-
- \`sema chat doctor --json\`: diagnostica Sema Chat/OpenCode local.
|
|
668
|
-
- \`sema mcp-instalar-chave --stdin --json\`: instala chave obtida pelo humano no painel.
|
|
669
|
-
- \`sema runner validar-remoto --snapshot <arquivo.json|-> --saida <dir> --json\`: validacao remota por snapshot.
|
|
633
|
+
- \`sema doctor\`: diagnoses local installation.
|
|
670
634
|
|
|
671
|
-
##
|
|
635
|
+
## Forbidden
|
|
672
636
|
|
|
673
|
-
-
|
|
674
|
-
-
|
|
675
|
-
-
|
|
676
|
-
-
|
|
677
|
-
-
|
|
678
|
-
-
|
|
679
|
-
-
|
|
637
|
+
- Do not use an external workspace source to inspect a local workspace when \`sema --version\` works.
|
|
638
|
+
- Do not search the entire disk for \`.sema\` syntax; use \`exemplos/\`, \`docs/syntax.md\`, and this catalog.
|
|
639
|
+
- Do not stop after \`sema compilar\` if the contract target files still do not exist.
|
|
640
|
+
- Do not replace \`sema compilar\` with \`sema testar\` when Guard asks for Sema Code.
|
|
641
|
+
- Do not create a Markdown report to pretend a gate ran.
|
|
642
|
+
- Do not say drift passed when \`sema drift --json\` returned \`sucesso:false\`, broken link, divergent route, or broken impl.
|
|
643
|
+
- Do not declare a UI responsive without mobile/desktop proof; horizontal scroll at 390px blocks closure.
|
|
680
644
|
|
|
681
|
-
|
|
645
|
+
Governed code policy: ${agentContextPack.politicaCodigoGovernado.regra}
|
|
682
646
|
`;
|
|
683
647
|
}
|
|
684
648
|
function renderizarAgentStarterLocal(agentContextPack) {
|
|
685
649
|
return `# Agent Starter
|
|
686
650
|
|
|
687
|
-
|
|
651
|
+
You are in a Sema-governed project.
|
|
688
652
|
|
|
689
|
-
|
|
653
|
+
Read in this order:
|
|
690
654
|
|
|
691
655
|
1. \`${ARQUIVO_SEMA_BOOT}\`
|
|
692
656
|
2. \`${ARQUIVO_AGENT_CONTEXT_PACK}\`
|
|
693
657
|
3. \`SEMA_INDEX.json\`
|
|
694
658
|
4. \`AGENTS.md\`
|
|
695
|
-
5. \`docs/
|
|
696
|
-
6. \`docs/
|
|
659
|
+
5. \`docs/commands.md\`
|
|
660
|
+
6. \`docs/syntax.md\`
|
|
697
661
|
7. \`exemplos/\`
|
|
698
662
|
|
|
699
|
-
|
|
663
|
+
Basic commands:
|
|
700
664
|
|
|
701
665
|
\`\`\`bash
|
|
702
666
|
sema --version
|
|
703
667
|
sema preflight resumo --json
|
|
704
668
|
sema resumo
|
|
705
669
|
sema docs-impacto --intencao "<acao>" --json
|
|
706
|
-
sema validar contratos/
|
|
707
|
-
sema drift contratos/
|
|
708
|
-
sema compilar contratos/
|
|
670
|
+
sema validar contratos/orders.sema --json
|
|
671
|
+
sema drift contratos/orders.sema --escopo modulo --json
|
|
672
|
+
sema compilar contratos/orders.sema --alvo javascript --saida ./generated/javascript
|
|
709
673
|
\`\`\`
|
|
710
674
|
|
|
711
|
-
|
|
675
|
+
Do not replace these gates with local search, guessing from a filename, or random contract reading outside the project.
|
|
712
676
|
|
|
713
|
-
|
|
677
|
+
Closure is not an opinion: \`sema drift --json\` must be green. \`sucesso:false\`, \`vinculos_quebrados\`, \`rotas_divergentes\`, or broken impls block closure.
|
|
714
678
|
|
|
715
|
-
UI
|
|
679
|
+
Ready UI requires proof: desktop/mobile and a narrow viewport without horizontal overflow (\`scrollWidth <= clientWidth\`).
|
|
716
680
|
|
|
717
681
|
${agentContextPack.politicaCodigoGovernado.regra}
|
|
718
682
|
`;
|
|
@@ -725,10 +689,9 @@ export async function sincronizarEntryPointsAgentes(baseProjeto, agentContextPac
|
|
|
725
689
|
resultados.push({ caminho: relativo, status });
|
|
726
690
|
};
|
|
727
691
|
await registrar("AGENTS.md", renderizarInstrucaoClienteSema("generico", "media", agentContextPack), true);
|
|
728
|
-
await registrar("docs/
|
|
729
|
-
await registrar("docs/
|
|
730
|
-
await registrar("docs/
|
|
731
|
-
await registrar("docs/AGENT_STARTER.md", renderizarAgentStarterLocal(agentContextPack), true);
|
|
692
|
+
await registrar("docs/syntax.md", renderizarDocSintaxeSemaLocal(agentContextPack), true);
|
|
693
|
+
await registrar("docs/ai-workflow.md", renderizarDocFluxoPraticoSemaLocal(agentContextPack), true);
|
|
694
|
+
await registrar("docs/commands.md", renderizarDocComandosSemaLocal(agentContextPack), true);
|
|
732
695
|
await registrar(".github/copilot-instructions.md", renderizarInstrucaoClienteSema("copilot", "media", agentContextPack), true);
|
|
733
696
|
const clinePath = path.join(baseProjeto, ".clinerules");
|
|
734
697
|
const clineStat = await statSeguro(clinePath);
|