@semacode/cli 1.5.47 → 1.5.52
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 +70 -48
- package/dist/agentContextTipos.d.ts +2 -2
- package/dist/agentContextTipos.js +7 -13
- package/dist/agentEntryPoints.js +311 -271
- 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.part01.d.ts +1 -1
- package/dist/drift.part04.d.ts +1 -1
- package/dist/drift.part04.js +2 -2
- package/dist/drift.part05.d.ts +3 -3
- package/dist/drift.part05.js +8 -8
- package/dist/drift.part06.js +15 -8
- package/dist/drift.part09.js +11 -7
- package/dist/drift.part14.js +18 -3
- package/dist/driftOrcamento.d.ts +11 -1
- package/dist/driftOrcamento.js +49 -20
- 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.part02.js +4 -2
- package/dist/index.part04.js +7 -7
- package/dist/index.part08.js +1 -22
- package/dist/initTemplatesBase.js +5 -5
- package/dist/profileArtefatoValidadores.js +42 -0
- package/dist/profileI18nCatalogo.js +2 -0
- package/dist/projetoConfig.js +7 -0
- package/dist/projetoLegado.js +10 -3
- package/dist/sync/index.js +1 -1
- package/dist/tipos.d.ts +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/dist/index.part01.js +1 -0
- package/node_modules/@sema/gerador-css/dist/index.part01.js.map +1 -1
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/dist/index.js +1 -0
- package/node_modules/@sema/gerador-dart/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/dist/index.js +1 -0
- package/node_modules/@sema/gerador-html/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/dist/index.js +1 -0
- package/node_modules/@sema/gerador-javascript/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +11 -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/dist/index.part02.js +1 -0
- package/node_modules/@sema/gerador-python/dist/index.part02.js.map +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js +1 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +1 -1
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +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/dist/ir/conversor.part01.js +4 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part02.d.ts +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
- package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js +3 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.d.ts +2 -2
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js +4 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.d.ts +2 -2
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js +11 -5
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.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 -324
- package/AGENT_CONTEXT_PACK.json +0 -470
- package/SEMA_BRIEF.curto.txt +0 -18
- package/SEMA_BRIEF.md +0 -705
- package/SEMA_BRIEF.micro.txt +0 -16
- package/SEMA_INDEX.json +0 -10759
- 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 -112
- 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 -111
- package/docs/agentes-por-capacidade.md +0 -126
- package/docs/api.md +0 -82
- package/docs/comandos.md +0 -702
- 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 -215
- 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 -218
- package/llms-full.txt +0 -40
- package/llms.txt +0 -23
package/dist/agentEntryPoints.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.produto.governanca_ia.contexto
|
|
1
|
+
// SEMA-GOVERNED: sema.produto.governanca_ia.contexto.entrypoints
|
|
2
2
|
// Descrição: renderiza e sincroniza instruções curtas para agentes de IDE e clientes com disciplina variável.
|
|
3
3
|
import { mkdir, readFile, stat, writeFile } from 'node:fs/promises';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import {
|
|
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,13 +68,12 @@ 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
|
|
72
|
-
5.
|
|
73
|
-
6.
|
|
74
|
-
7. Antes de
|
|
75
|
-
8. Antes de
|
|
76
|
-
9.
|
|
77
|
-
10. Se qualquer etapa falhar, pare e diga que está bloqueado.
|
|
71
|
+
4. Não use fonte externa de workspace para substituir a CLI local quando a CLI estiver operacional.
|
|
72
|
+
5. Este boot é para workspace local em disco; se não houver workspace local, pare bloqueado em vez de inventar caminho.
|
|
73
|
+
6. Antes de criar módulo, rota, task ou contrato, inspecione o contrato \`.sema\` aplicável.
|
|
74
|
+
7. Antes de editar código existente, rode drift e impacto pelo caminho autorizado da superfície atual.
|
|
75
|
+
8. Antes de criar ou corrigir \`.sema\`, use \`sema exemplos\` na CLI local.
|
|
76
|
+
9. Se qualquer etapa falhar, pare e diga que está bloqueado.
|
|
78
77
|
|
|
79
78
|
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.
|
|
80
79
|
|
|
@@ -99,8 +98,10 @@ ${politicaPlataforma.regra}
|
|
|
99
98
|
${politicaCodigo.regra}
|
|
100
99
|
|
|
101
100
|
- Marcador: \`${politicaCodigo.marcador}\`.
|
|
102
|
-
- Orçamento
|
|
103
|
-
-
|
|
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
|
+
- 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
|
+
- 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 ${LIMITE_CARACTERES_PAYLOAD_INLINE} caracteres em \`arquivos_codigo.conteudo\` ou \`conteudo\` não é timeout; divida por responsabilidade ou use anexo/caminho de servidor autorizado.
|
|
104
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.
|
|
105
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.
|
|
106
107
|
- Proibido fatiar arquivo em \`index_p1.html\`, \`index_p2.html\` ou similares sem fronteira semântica só para passar no limite.
|
|
@@ -115,9 +116,11 @@ Score composto, \`achados[]\` e \`decisaoAgente\` são sinais para guiar a próx
|
|
|
115
116
|
- Fraca: se o score passou, confira se cada achado tem evidência concreta; se não souber provar, pare.
|
|
116
117
|
- Média: conecte regra, arquivo, contrato e evidência antes de concluir aderência.
|
|
117
118
|
- Forte: não transforme regex, palavra-chave ou score 100 em ritual vazio; valide substância, risco e comportamento.
|
|
118
|
-
-
|
|
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
|
+
- 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 fora do workspace local aberto pelo usuário não substitui a pasta local.
|
|
119
122
|
|
|
120
|
-
##
|
|
123
|
+
## Acabamento visual e terminal
|
|
121
124
|
|
|
122
125
|
${politicaDesign.regra}
|
|
123
126
|
|
|
@@ -161,10 +164,10 @@ export function renderizarSemaSmallModel(agentContextPack) {
|
|
|
161
164
|
Leia isto primeiro se você tem pouco contexto, pouca memória, pouco tool use ou tendência a ignorar instruções longas.
|
|
162
165
|
|
|
163
166
|
1. Não edite nada antes de chamar Sema.
|
|
164
|
-
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
|
|
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.
|
|
165
168
|
3. Sema não contorna políticas da plataforma: ele governa contrato, escopo, drift, evidência e qualidade.
|
|
166
169
|
4. Se aparecer alerta de política: pare, explique de forma neutra e não tente burlar filtro.
|
|
167
|
-
5. Se
|
|
170
|
+
5. Se não houver workspace local em disco: pare bloqueado e peça o fluxo apropriado; não invente leitura por caminho.
|
|
168
171
|
6. Se for escrever \`.sema\`: use \`sema_exemplos\` antes.
|
|
169
172
|
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.
|
|
170
173
|
8. Se não conseguir chamar Sema: pare e declare bloqueio.
|
|
@@ -172,13 +175,14 @@ Leia isto primeiro se você tem pouco contexto, pouca memória, pouco tool use o
|
|
|
172
175
|
10. Se abrir código com \`${agentContextPack.politicaCodigoGovernado.marcador}\`: volte ao contrato, chame Sema e só então edite.
|
|
173
176
|
11. Score 100, achados atendidos ou validação inline são sinais; confira evidência real no contrato e no código.
|
|
174
177
|
12. Validação inline não dispensa cabeçalho \`${agentContextPack.politicaCodigoGovernado.marcador}\` no arquivo físico.
|
|
175
|
-
13. Não crie código
|
|
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.
|
|
176
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.
|
|
177
|
-
15. Payload inline acima de ${
|
|
178
|
-
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.
|
|
179
182
|
17. Se Sema estourar por timeout local: aumente o timeout e tente de novo. Não trate isso como falha do Sema.
|
|
180
|
-
18. Se
|
|
181
|
-
19.
|
|
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
|
+
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.
|
|
185
|
+
20. Não substitua o contexto Sema por AGENTS.md, README.md, busca local, inferência por nome ou bom senso.
|
|
182
186
|
|
|
183
187
|
Ordem curta:
|
|
184
188
|
|
|
@@ -202,7 +206,7 @@ Timeout:
|
|
|
202
206
|
- Se o projeto inteiro for lento, escopar para \`sema resumo <arquivo.sema> --micro --para mudanca\`.
|
|
203
207
|
- ${politicaTimeout.ateQuandoTentar}
|
|
204
208
|
|
|
205
|
-
|
|
209
|
+
Acabamento visual e terminal:
|
|
206
210
|
|
|
207
211
|
- ${politicaDesign.regra}
|
|
208
212
|
- IA fraca: ${politicaDesign.porCapacidade.fraca}
|
|
@@ -215,128 +219,99 @@ ${agentContextPack.failClosed.map((regra) => `- ${regra}`).join("\n")}
|
|
|
215
219
|
`;
|
|
216
220
|
}
|
|
217
221
|
export function renderizarDocumentoAgentesPorCapacidade(agentContextPack) {
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
Sema
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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
|
-
- Entrada: \`${ARQUIVO_SEMA_BOOT}\` -> \`${ARQUIVO_AGENT_CONTEXT_PACK}\` -> \`SEMA_BRIEF.md\` -> \`SEMA_INDEX.json\`.
|
|
313
|
-
- Pode consumir AST/IR/drift completos.
|
|
314
|
-
- Ainda deve respeitar contrato primeiro e falha fechada.
|
|
315
|
-
- Não usar contexto grande como desculpa para monólito: o mesmo orçamento vale para IA forte.
|
|
316
|
-
- Se validar inline, ainda preparar o arquivo físico para a próxima IA com cabeçalho governado e descrição humana.
|
|
317
|
-
- Se o MCP usar caminho Linux, tratar como espelho remoto autorizado, não como leitura local do usuário.
|
|
318
|
-
|
|
319
|
-
## Timeout e Retry
|
|
320
|
-
|
|
321
|
-
${agentContextPack.politicaTimeoutResumo.regra}
|
|
322
|
-
|
|
323
|
-
- Timeout inicial para resumo de projeto inteiro: ${agentContextPack.politicaTimeoutResumo.timeoutInicialSegundos}s.
|
|
324
|
-
- Escalonamento recomendado: ${agentContextPack.politicaTimeoutResumo.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")}.
|
|
325
|
-
- Fraca: ${agentContextPack.politicaTimeoutResumo.porCapacidade.fraca}
|
|
326
|
-
- Média: ${agentContextPack.politicaTimeoutResumo.porCapacidade.media}
|
|
327
|
-
- Forte: ${agentContextPack.politicaTimeoutResumo.porCapacidade.forte}
|
|
328
|
-
- ${agentContextPack.politicaTimeoutResumo.ateQuandoTentar}
|
|
329
|
-
|
|
330
|
-
## Idioma
|
|
331
|
-
|
|
332
|
-
${agentContextPack.politicaIdioma.regra}
|
|
333
|
-
|
|
334
|
-
A gramática Sema pode ter palavras-chave ASCII. Isso não autoriza resposta humana sem acentos.
|
|
335
|
-
|
|
336
|
-
## Clientes
|
|
337
|
-
|
|
338
|
-
${agentContextPack.entrypointsClientes.map((cliente) => `- ${cliente.cliente}: ${cliente.arquivos.join(", ")}. Capacidade padrão: ${cliente.capacidadePadrao}. ${cliente.observacao}`).join("\n")}
|
|
339
|
-
`;
|
|
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");
|
|
340
315
|
}
|
|
341
316
|
function renderizarInstrucaoClienteSema(cliente, capacidade, agentContextPack) {
|
|
342
317
|
const guia = agentContextPack.guiaPorCapacidade[capacidade];
|
|
@@ -351,14 +326,13 @@ Este workspace é governado por Sema. Antes de qualquer ação em código, contr
|
|
|
351
326
|
1. Leia \`${ARQUIVO_SEMA_BOOT}\`.
|
|
352
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.
|
|
353
328
|
3. Use CLI local: \`sema resumo\`, \`sema docs-impacto\`, \`sema inspecionar\`, \`sema drift\` e \`sema impacto\`.
|
|
354
|
-
4. Não use
|
|
355
|
-
5.
|
|
356
|
-
6. Chame
|
|
357
|
-
7.
|
|
358
|
-
8. Antes de
|
|
359
|
-
9.
|
|
360
|
-
10.
|
|
361
|
-
11. Antes de finalizar, use finalizar-mudanca com as docs lidas.
|
|
329
|
+
4. Não use fonte externa de workspace para substituir a CLI local quando a CLI estiver operacional.
|
|
330
|
+
5. Chame docs-impacto com a intenção declarada antes de agir.
|
|
331
|
+
6. Chame inspecionar no contrato \`.sema\` aplicável.
|
|
332
|
+
7. Antes de editar código existente, rode drift e impacto.
|
|
333
|
+
8. Antes de criar ou editar \`.sema\`, use exemplos oficiais.
|
|
334
|
+
9. Ao concluir mudança de contrato, rode validar.
|
|
335
|
+
10. Antes de finalizar, use finalizar-mudanca com as docs lidas.
|
|
362
336
|
|
|
363
337
|
É 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.
|
|
364
338
|
|
|
@@ -384,18 +358,20 @@ Código governado:
|
|
|
384
358
|
- Ao encontrar esse marcador, volte ao contrato .sema aplicável e chame Sema antes de editar.
|
|
385
359
|
- Comentário de código é lembrete curto; não substitui drift, docs-impacto nem finalizar-mudanca.
|
|
386
360
|
- Validação inline prova o payload enviado; não dispensa o marcador no arquivo físico sincronizado.
|
|
387
|
-
- 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.
|
|
388
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.
|
|
389
363
|
|
|
390
364
|
Sinal e evidência:
|
|
391
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.
|
|
392
366
|
- Palavra-chave ou regex passando não prova governança se contrato, código e comportamento não batem.
|
|
393
|
-
-
|
|
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.
|
|
368
|
+
- Caminho fora do workspace local aberto pelo usuário não substitui a pasta local.
|
|
394
369
|
|
|
395
|
-
|
|
396
|
-
- Se houver UI,
|
|
370
|
+
Acabamento visual e terminal:
|
|
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.
|
|
397
372
|
- Capacidade ${capacidade}: ${politicaDesign.porCapacidade[capacidade]}
|
|
398
373
|
- Evidências: ${politicaDesign.evidencias[capacidade].join(", ")}.
|
|
374
|
+
- 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.
|
|
399
375
|
- Proibido: ${politicaDesign.proibicoes.slice(0, 5).join(", ")}.
|
|
400
376
|
|
|
401
377
|
Idioma:
|
|
@@ -406,46 +382,46 @@ Idioma:
|
|
|
406
382
|
`;
|
|
407
383
|
}
|
|
408
384
|
function renderizarDocSintaxeSemaLocal(agentContextPack) {
|
|
409
|
-
return `#
|
|
385
|
+
return `# Sema Syntax for AI Agents
|
|
410
386
|
|
|
411
|
-
Use
|
|
387
|
+
Use this file as a compact reference before creating or fixing \`.sema\` contracts.
|
|
412
388
|
|
|
413
|
-
##
|
|
389
|
+
## Golden Rule
|
|
414
390
|
|
|
415
|
-
|
|
391
|
+
Contract comes before code. Before writing \`.sema\`, read the local examples in \`exemplos/\`.
|
|
416
392
|
|
|
417
|
-
##
|
|
393
|
+
## Minimal Example
|
|
418
394
|
|
|
419
395
|
\`\`\`sema
|
|
420
|
-
module app.
|
|
396
|
+
module app.example {
|
|
421
397
|
entity Item {
|
|
422
398
|
fields {
|
|
423
399
|
id: Id
|
|
424
|
-
|
|
425
|
-
|
|
400
|
+
name: Texto
|
|
401
|
+
active: Booleano
|
|
426
402
|
}
|
|
427
403
|
}
|
|
428
404
|
|
|
429
|
-
task
|
|
405
|
+
task create_item {
|
|
430
406
|
input {
|
|
431
|
-
|
|
407
|
+
name: Texto required
|
|
432
408
|
}
|
|
433
409
|
output {
|
|
434
410
|
item: Item
|
|
435
411
|
}
|
|
436
412
|
rules {
|
|
437
|
-
|
|
413
|
+
name deve_ser preenchido
|
|
438
414
|
}
|
|
439
415
|
effects {
|
|
440
416
|
persistencia Item
|
|
441
|
-
auditoria
|
|
417
|
+
auditoria item_created
|
|
442
418
|
}
|
|
443
419
|
guarantees {
|
|
444
420
|
item existe
|
|
445
421
|
}
|
|
446
422
|
tests {
|
|
447
|
-
caso "
|
|
448
|
-
given {
|
|
423
|
+
caso "creates valid item" {
|
|
424
|
+
given { name: "Item" }
|
|
449
425
|
expect { sucesso: verdadeiro }
|
|
450
426
|
}
|
|
451
427
|
}
|
|
@@ -453,49 +429,91 @@ module app.exemplo {
|
|
|
453
429
|
}
|
|
454
430
|
\`\`\`
|
|
455
431
|
|
|
456
|
-
##
|
|
432
|
+
## Common Blocks
|
|
433
|
+
|
|
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.
|
|
445
|
+
|
|
446
|
+
## Canonical \`use\` and \`impl\` Origins
|
|
447
|
+
|
|
448
|
+
Use these origins before inventing a new one:
|
|
449
|
+
|
|
450
|
+
- \`ts\` ou \`typescript\`
|
|
451
|
+
- \`js\` ou \`javascript\`
|
|
452
|
+
- \`py\` ou \`python\`
|
|
453
|
+
- \`dart\`
|
|
454
|
+
- \`lua\`
|
|
455
|
+
- \`cs\` ou \`dotnet\`
|
|
456
|
+
- \`java\`
|
|
457
|
+
- \`go\`
|
|
458
|
+
- \`rust\`
|
|
459
|
+
- \`cpp\`
|
|
460
|
+
|
|
461
|
+
Examples:
|
|
462
|
+
|
|
463
|
+
\`\`\`sema
|
|
464
|
+
use javascript app.web.expenses
|
|
465
|
+
|
|
466
|
+
impl {
|
|
467
|
+
js: src.app.saveExpense
|
|
468
|
+
}
|
|
469
|
+
\`\`\`
|
|
470
|
+
|
|
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.
|
|
472
|
+
|
|
473
|
+
## Small Canonical Lists
|
|
474
|
+
|
|
475
|
+
- \`effects\`: \`persistencia\`, \`consulta\`, \`evento\`, \`auditoria\`, \`db.write\`, \`queue.publish\`, \`fs.write\`, \`network.egress\`, \`secret.read\`, \`shell.exec\`.
|
|
476
|
+
- \`audit.motivo\`: \`obrigatorio\`, \`opcional\`, \`dispensado\`.
|
|
477
|
+
|
|
478
|
+
## Contract Size
|
|
457
479
|
|
|
458
|
-
-
|
|
459
|
-
-
|
|
460
|
-
-
|
|
461
|
-
-
|
|
462
|
-
- \`
|
|
463
|
-
- \`
|
|
464
|
-
- \`
|
|
465
|
-
- \`error\`: erros nomeados e mensagens.
|
|
466
|
-
- \`tests\`: casos minimos de comportamento.
|
|
467
|
-
- \`route\`: superficie publica vinculada a uma task.
|
|
468
|
-
- \`impl\` e \`vinculos\`: ligacao entre contrato e codigo real.
|
|
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
|
|
469
487
|
|
|
470
|
-
## JavaScript
|
|
488
|
+
## JavaScript Is Supported
|
|
471
489
|
|
|
472
|
-
|
|
490
|
+
The CLI supports JavaScript generation:
|
|
473
491
|
|
|
474
492
|
\`\`\`bash
|
|
475
|
-
sema compilar contratos/
|
|
493
|
+
sema compilar contratos/orders.sema --alvo javascript --saida ./generated/javascript
|
|
476
494
|
\`\`\`
|
|
477
495
|
|
|
478
|
-
|
|
496
|
+
The project can also generate TypeScript, Python, Dart, Lua, HTML, and CSS when those targets are enabled in \`sema.config.json\`.
|
|
479
497
|
|
|
480
|
-
##
|
|
498
|
+
## Support Files
|
|
481
499
|
|
|
482
|
-
- \`AGENTS.md\`:
|
|
483
|
-
- \`${ARQUIVO_SEMA_BOOT}\`:
|
|
484
|
-
- \`${ARQUIVO_SEMA_SMALL_MODEL}\`:
|
|
485
|
-
- \`${ARQUIVO_AGENT_CONTEXT_PACK}\`:
|
|
486
|
-
- \`SEMA_INDEX.json\`:
|
|
487
|
-
- \`docs/
|
|
488
|
-
- \`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.
|
|
489
507
|
|
|
490
|
-
|
|
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.
|
|
491
509
|
|
|
492
|
-
|
|
510
|
+
Platform policy: ${agentContextPack.politicaPlataforma.regra}
|
|
493
511
|
`;
|
|
494
512
|
}
|
|
495
513
|
function renderizarDocFluxoPraticoSemaLocal(agentContextPack) {
|
|
496
|
-
return `#
|
|
514
|
+
return `# Practical AI + Sema Workflow
|
|
497
515
|
|
|
498
|
-
|
|
516
|
+
This is the minimum workflow for agents in a local workspace.
|
|
499
517
|
|
|
500
518
|
1. Leia \`${ARQUIVO_SEMA_BOOT}\`.
|
|
501
519
|
2. Rode \`sema --version\`.
|
|
@@ -503,39 +521,45 @@ Este e o fluxo minimo para agentes em workspace local.
|
|
|
503
521
|
4. Rode \`sema resumo\`.
|
|
504
522
|
5. Rode \`sema docs-impacto --intencao "<acao>" --json\`.
|
|
505
523
|
6. Leia a documentacao obrigatoria retornada.
|
|
506
|
-
7. Antes de escolher comando ou interpretar \`--saida\`, leia \`docs/
|
|
507
|
-
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\`.
|
|
508
526
|
9. Antes de editar codigo existente, rode \`sema drift\` e \`sema impacto\`.
|
|
509
527
|
10. Depois de alterar \`.sema\`, rode \`sema formatar\` e \`sema validar\`.
|
|
510
528
|
11. Antes de concluir, rode \`sema finalizar-mudanca\` com as docs lidas.
|
|
511
529
|
|
|
512
|
-
|
|
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\`.
|
|
513
531
|
|
|
514
|
-
|
|
515
|
-
- IA media: \`${ARQUIVO_SEMA_BOOT}\`, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_BRIEF.curto.txt\`, \`SEMA_INDEX.json\`, \`AGENTS.md\`.
|
|
516
|
-
- IA forte: \`${ARQUIVO_SEMA_BOOT}\`, \`${ARQUIVO_AGENT_CONTEXT_PACK}\`, \`SEMA_BRIEF.md\`, \`SEMA_INDEX.json\`, AST, IR, drift e impacto.
|
|
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.
|
|
517
533
|
|
|
518
|
-
|
|
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.
|
|
519
535
|
|
|
520
|
-
|
|
536
|
+
## Agent Capacity
|
|
537
|
+
|
|
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.
|
|
541
|
+
|
|
542
|
+
## When to Generate Code
|
|
543
|
+
|
|
544
|
+
If the delivery includes code derived from a contract, run \`sema compilar\`.
|
|
521
545
|
|
|
522
546
|
\`\`\`bash
|
|
523
|
-
sema compilar contratos/
|
|
547
|
+
sema compilar contratos/orders.sema --alvo javascript --saida ./generated/javascript
|
|
524
548
|
\`\`\`
|
|
525
549
|
|
|
526
|
-
|
|
550
|
+
Replace \`javascript\` with \`typescript\`, \`python\`, \`dart\`, \`lua\`, \`html\`, or \`css\` when appropriate.
|
|
527
551
|
|
|
528
|
-
##
|
|
552
|
+
## Fail Closed
|
|
529
553
|
|
|
530
554
|
${agentContextPack.failClosed.map((regra) => `- ${regra}`).join("\n")}
|
|
531
555
|
`;
|
|
532
556
|
}
|
|
533
557
|
function renderizarDocComandosSemaLocal(agentContextPack) {
|
|
534
|
-
return `#
|
|
558
|
+
return `# Sema Command Catalog
|
|
535
559
|
|
|
536
|
-
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.
|
|
537
561
|
|
|
538
|
-
##
|
|
562
|
+
## Minimum Local Flow
|
|
539
563
|
|
|
540
564
|
\`\`\`bash
|
|
541
565
|
sema --version
|
|
@@ -544,98 +568,115 @@ sema resumo
|
|
|
544
568
|
sema docs-impacto --intencao "<acao>" --json
|
|
545
569
|
\`\`\`
|
|
546
570
|
|
|
547
|
-
|
|
571
|
+
Then read every required doc returned by \`docs-impacto\`.
|
|
548
572
|
|
|
549
|
-
##
|
|
573
|
+
## Contract and Discovery
|
|
550
574
|
|
|
551
|
-
- \`sema iniciar --template <template>\`:
|
|
552
|
-
- \`sema validar <arquivo-ou-pasta> --json\`:
|
|
553
|
-
- \`sema diagnosticos <arquivo.sema> --json\`:
|
|
554
|
-
- \`sema formatar <arquivo-ou-pasta>\`:
|
|
555
|
-
- \`sema inspecionar <arquivo-ou-pasta> --json\`:
|
|
556
|
-
- \`sema ast <arquivo.sema> --json\`:
|
|
557
|
-
- \`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.
|
|
558
582
|
|
|
559
|
-
##
|
|
583
|
+
## Change and Closure
|
|
560
584
|
|
|
561
|
-
- \`sema docs-impacto --intencao "<acao>" --json\`:
|
|
562
|
-
- \`sema drift <arquivo-ou-pasta> --escopo modulo --json\`:
|
|
563
|
-
- \`sema impacto <arquivo-ou-pasta> --alvo <token> --mudanca "<descricao>" --json\`:
|
|
564
|
-
- \`sema verificar <arquivo-ou-pasta> --json\`:
|
|
565
|
-
- \`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.
|
|
566
590
|
|
|
567
|
-
|
|
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.
|
|
568
592
|
|
|
569
|
-
|
|
570
|
-
- \`sema testar <arquivo.sema> --alvo <alvo> --saida <diretorio-temporario>\`: gera e executa testes locais quando o alvo suporta.
|
|
571
|
-
- \`sema importar <fonte> <diretorio> --saida <diretorio> --json\`: importa projeto legado para contratos iniciais.
|
|
572
|
-
- \`sema renomear-semantico <arquivo-ou-pasta> --de <nome> --para <nome> --json\`: ajuda a renomear simbolos semanticamente.
|
|
593
|
+
## Sema Code
|
|
573
594
|
|
|
574
|
-
|
|
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.
|
|
575
599
|
|
|
576
|
-
|
|
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.
|
|
577
601
|
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
- \`
|
|
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.
|
|
603
|
+
|
|
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.
|
|
605
|
+
|
|
606
|
+
## Canonical Syntax Lists
|
|
607
|
+
|
|
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\`.
|
|
611
|
+
|
|
612
|
+
\`sema compilar --alvo javascript\` is a generation target. \`impl { js: ... }\` is the live-code origin. Do not swap one for the other.
|
|
613
|
+
|
|
614
|
+
## AI and Context
|
|
615
|
+
|
|
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.
|
|
585
623
|
|
|
586
624
|
## Profiles e Author
|
|
587
625
|
|
|
588
|
-
- \`sema author iniciar|validar|briefing|revisar-cliches|validar-narrativa|validar-proibicoes\`:
|
|
589
|
-
- \`sema profile validar <software|workflow|ops|game|legal|research|redacao|propostas|conversas> <arquivo> --json\`:
|
|
590
|
-
- \`sema profile capabilities --json\`:
|
|
591
|
-
- \`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.
|
|
592
630
|
|
|
593
|
-
##
|
|
631
|
+
## Operational
|
|
594
632
|
|
|
595
|
-
- \`sema doctor\`:
|
|
596
|
-
- \`sema chat doctor --json\`: diagnostica Sema Chat/OpenCode local.
|
|
597
|
-
- \`sema mcp-instalar-chave --stdin --json\`: instala chave obtida pelo humano no painel.
|
|
598
|
-
- \`sema runner validar-remoto --snapshot <arquivo.json|-> --saida <dir> --json\`: validacao remota por snapshot.
|
|
633
|
+
- \`sema doctor\`: diagnoses local installation.
|
|
599
634
|
|
|
600
|
-
##
|
|
635
|
+
## Forbidden
|
|
601
636
|
|
|
602
|
-
-
|
|
603
|
-
-
|
|
604
|
-
-
|
|
605
|
-
-
|
|
606
|
-
-
|
|
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.
|
|
607
644
|
|
|
608
|
-
|
|
645
|
+
Governed code policy: ${agentContextPack.politicaCodigoGovernado.regra}
|
|
609
646
|
`;
|
|
610
647
|
}
|
|
611
648
|
function renderizarAgentStarterLocal(agentContextPack) {
|
|
612
649
|
return `# Agent Starter
|
|
613
650
|
|
|
614
|
-
|
|
651
|
+
You are in a Sema-governed project.
|
|
615
652
|
|
|
616
|
-
|
|
653
|
+
Read in this order:
|
|
617
654
|
|
|
618
655
|
1. \`${ARQUIVO_SEMA_BOOT}\`
|
|
619
656
|
2. \`${ARQUIVO_AGENT_CONTEXT_PACK}\`
|
|
620
657
|
3. \`SEMA_INDEX.json\`
|
|
621
658
|
4. \`AGENTS.md\`
|
|
622
|
-
5. \`docs/
|
|
623
|
-
6. \`docs/
|
|
659
|
+
5. \`docs/commands.md\`
|
|
660
|
+
6. \`docs/syntax.md\`
|
|
624
661
|
7. \`exemplos/\`
|
|
625
662
|
|
|
626
|
-
|
|
663
|
+
Basic commands:
|
|
627
664
|
|
|
628
665
|
\`\`\`bash
|
|
629
666
|
sema --version
|
|
630
667
|
sema preflight resumo --json
|
|
631
668
|
sema resumo
|
|
632
669
|
sema docs-impacto --intencao "<acao>" --json
|
|
633
|
-
sema validar contratos/
|
|
634
|
-
sema drift contratos/
|
|
635
|
-
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
|
|
636
673
|
\`\`\`
|
|
637
674
|
|
|
638
|
-
|
|
675
|
+
Do not replace these gates with local search, guessing from a filename, or random contract reading outside the project.
|
|
676
|
+
|
|
677
|
+
Closure is not an opinion: \`sema drift --json\` must be green. \`sucesso:false\`, \`vinculos_quebrados\`, \`rotas_divergentes\`, or broken impls block closure.
|
|
678
|
+
|
|
679
|
+
Ready UI requires proof: desktop/mobile and a narrow viewport without horizontal overflow (\`scrollWidth <= clientWidth\`).
|
|
639
680
|
|
|
640
681
|
${agentContextPack.politicaCodigoGovernado.regra}
|
|
641
682
|
`;
|
|
@@ -648,10 +689,9 @@ export async function sincronizarEntryPointsAgentes(baseProjeto, agentContextPac
|
|
|
648
689
|
resultados.push({ caminho: relativo, status });
|
|
649
690
|
};
|
|
650
691
|
await registrar("AGENTS.md", renderizarInstrucaoClienteSema("generico", "media", agentContextPack), true);
|
|
651
|
-
await registrar("docs/
|
|
652
|
-
await registrar("docs/
|
|
653
|
-
await registrar("docs/
|
|
654
|
-
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);
|
|
655
695
|
await registrar(".github/copilot-instructions.md", renderizarInstrucaoClienteSema("copilot", "media", agentContextPack), true);
|
|
656
696
|
const clinePath = path.join(baseProjeto, ".clinerules");
|
|
657
697
|
const clineStat = await statSeguro(clinePath);
|