@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/contexto.js
CHANGED
|
@@ -1,112 +1,79 @@
|
|
|
1
1
|
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
-
// Descricao:
|
|
3
|
-
/**
|
|
4
|
-
* Gerador de pacote de contexto para chats web (ChatGPT, Lovable, etc.).
|
|
5
|
-
*
|
|
6
|
-
* A CLI lê contratos e código selecionado do disco local e gera um pacote
|
|
7
|
-
* compacto que o usuário cola no chat. Isso elimina o sync manual — a CLI
|
|
8
|
-
* faz o trabalho pesado de I/O local e entrega um payload pronto.
|
|
9
|
-
*
|
|
10
|
-
* Contrato: contratos/sema/mcp_client_bridge.sema — task gerar_pacote_contexto_para_chat
|
|
11
|
-
*/
|
|
2
|
+
// Descricao: gera um pacote local de contexto Sema sem depender de servico externo.
|
|
12
3
|
import { readFile, mkdir, writeFile } from "node:fs/promises";
|
|
13
4
|
import path from "node:path";
|
|
14
|
-
|
|
15
|
-
// Constantes
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
17
|
-
const LIMITE_TAMANHO_INLINE = 100_000; // 100KB
|
|
5
|
+
const LIMITE_TAMANHO_INLINE = 100_000;
|
|
18
6
|
const PADROES_SEGREDO = [
|
|
19
|
-
/(?:api[_-]?key|secret|token|password|senha)\s*[:=]\s*["']?[A-Za-z0-9_
|
|
20
|
-
/\bsk-[A-Za-z0-9_
|
|
21
|
-
/\beyJ[A-Za-z0-9_
|
|
7
|
+
/(?:api[_-]?key|secret|token|password|senha)\s*[:=]\s*["']?[A-Za-z0-9_-]{16,}/gi,
|
|
8
|
+
/\bsk-[A-Za-z0-9_-]{20,}\b/g,
|
|
9
|
+
/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,
|
|
22
10
|
];
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
// Gerar pacote de contexto para chat
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
11
|
export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
27
12
|
if (!entrada.contratos || entrada.contratos.length === 0) {
|
|
28
|
-
throw new Error("
|
|
13
|
+
throw new Error("No contract was provided. Use --contratos <file1.sema> <file2.sema>.");
|
|
29
14
|
}
|
|
30
|
-
// Ler contratos
|
|
31
15
|
const contratosConteudo = [];
|
|
32
16
|
for (const contrato of entrada.contratos) {
|
|
33
17
|
const absoluto = path.resolve(cwd, contrato);
|
|
34
18
|
const conteudo = await readFile(absoluto, "utf8");
|
|
35
19
|
contratosConteudo.push({ caminho: contrato, conteudo });
|
|
36
20
|
}
|
|
37
|
-
// Ler código selecionado (se houver)
|
|
38
21
|
const codigoConteudo = [];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
catch {
|
|
48
|
-
// Arquivo não existe — ignora silenciosamente
|
|
49
|
-
}
|
|
22
|
+
for (const arquivo of entrada.codigoSelecionado ?? []) {
|
|
23
|
+
try {
|
|
24
|
+
const absoluto = path.resolve(cwd, arquivo);
|
|
25
|
+
const conteudo = sanitizarConteudo(await readFile(absoluto, "utf8"));
|
|
26
|
+
codigoConteudo.push({ caminho: arquivo, conteudo });
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// Missing selected files are ignored because this helper is best-effort context assembly.
|
|
50
30
|
}
|
|
51
31
|
}
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
const rotas = contratosConteudo.flatMap((c) => extrairRotas(c.conteudo));
|
|
32
|
+
const modulos = contratosConteudo.map((contrato) => extrairModulo(contrato.conteudo)).filter(Boolean);
|
|
33
|
+
const tarefas = contratosConteudo.flatMap((contrato) => extrairTarefas(contrato.conteudo));
|
|
34
|
+
const rotas = contratosConteudo.flatMap((contrato) => extrairRotas(contrato.conteudo));
|
|
56
35
|
const resumo = [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
...contratosConteudo.map((
|
|
66
|
-
|
|
36
|
+
"# Sema Local Context",
|
|
37
|
+
"",
|
|
38
|
+
`Modules: ${modulos.join(", ") || "none"}`,
|
|
39
|
+
`Tasks: ${tarefas.length}`,
|
|
40
|
+
`Routes: ${rotas.length}`,
|
|
41
|
+
`Selected code files: ${codigoConteudo.length}`,
|
|
42
|
+
"",
|
|
43
|
+
"## Contracts",
|
|
44
|
+
...contratosConteudo.map((contrato) => `### ${contrato.caminho}\n\`\`\`sema\n${contrato.conteudo}\n\`\`\``),
|
|
45
|
+
"",
|
|
67
46
|
].join("\n");
|
|
68
|
-
// Código selecionado (resumido)
|
|
69
47
|
const codigoResumido = codigoConteudo.length > 0
|
|
70
48
|
? [
|
|
71
|
-
|
|
72
|
-
...codigoConteudo.map((
|
|
73
|
-
const ext = path.extname(
|
|
74
|
-
return `### ${
|
|
49
|
+
"## Selected Code",
|
|
50
|
+
...codigoConteudo.map((arquivo) => {
|
|
51
|
+
const ext = path.extname(arquivo.caminho).slice(1) || "txt";
|
|
52
|
+
return `### ${arquivo.caminho}\n\`\`\`${ext}\n${arquivo.conteudo}\n\`\`\``;
|
|
75
53
|
}),
|
|
76
|
-
|
|
54
|
+
"",
|
|
77
55
|
].join("\n")
|
|
78
56
|
: "";
|
|
79
|
-
// IR resumida
|
|
80
57
|
const irResumida = [
|
|
81
|
-
|
|
82
|
-
`-
|
|
83
|
-
`-
|
|
84
|
-
`-
|
|
85
|
-
|
|
58
|
+
"## IR Summary",
|
|
59
|
+
`- Modules: ${modulos.join(", ") || "none"}`,
|
|
60
|
+
`- Tasks: ${tarefas.map((tarefa) => `\`${tarefa}\``).join(", ") || "none"}`,
|
|
61
|
+
`- Routes: ${rotas.map((rota) => `\`${rota}\``).join(", ") || "none"}`,
|
|
62
|
+
"",
|
|
86
63
|
].join("\n");
|
|
87
|
-
// Drift resumido (placeholder — a CLI faz drift real via `sema drift`)
|
|
88
64
|
const driftResumido = entrada.incluirDrift
|
|
89
|
-
?
|
|
90
|
-
|
|
91
|
-
`⚠️ Drift real requer \`sema drift\` CLI.`,
|
|
92
|
-
`Este pacote contém contratos e código para o MCP executar drift remoto.`,
|
|
93
|
-
``,
|
|
94
|
-
].join("\n")
|
|
95
|
-
: `## Drift\nNão incluído (use --drift para incluir).\n`;
|
|
96
|
-
// Impact map (placeholder)
|
|
65
|
+
? "## Drift\nRun `sema drift` locally for the authoritative drift result.\n"
|
|
66
|
+
: "## Drift\nNot included. Run `sema drift` locally when drift evidence is required.\n";
|
|
97
67
|
const impactMap = entrada.incluirImpacto
|
|
98
|
-
? tarefas.map((
|
|
68
|
+
? tarefas.map((tarefa) => `- \`${tarefa}\`: local contract and linked implementation must be inspected with \`sema impacto\`.`)
|
|
99
69
|
: [];
|
|
100
|
-
// Docs relevantes
|
|
101
70
|
const docsRelevantes = [
|
|
102
71
|
"AGENTS.md",
|
|
103
|
-
"docs/mcp.md",
|
|
104
72
|
"docs/cli.md",
|
|
105
|
-
"docs/
|
|
73
|
+
"docs/syntax.md",
|
|
74
|
+
"docs/documentation.md",
|
|
106
75
|
];
|
|
107
|
-
|
|
108
|
-
const conteudoTotal = contratosConteudo.map((c) => c.conteudo).join("");
|
|
109
|
-
const checksum = checksumSimples(conteudoTotal);
|
|
76
|
+
const checksum = checksumSimples(contratosConteudo.map((contrato) => contrato.conteudo).join(""));
|
|
110
77
|
const pacote = {
|
|
111
78
|
contratos: entrada.contratos,
|
|
112
79
|
resumo,
|
|
@@ -116,7 +83,6 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
|
116
83
|
docsRelevantes,
|
|
117
84
|
checksum,
|
|
118
85
|
};
|
|
119
|
-
// Montar texto inline completo
|
|
120
86
|
const inlineTexto = [
|
|
121
87
|
`<!-- SEMA_CONTEXT_PACK v1 checksum=${checksum} -->`,
|
|
122
88
|
resumo,
|
|
@@ -124,20 +90,19 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
|
124
90
|
irResumida,
|
|
125
91
|
driftResumido,
|
|
126
92
|
impactMap.length > 0 ? `## Impact Map\n${impactMap.join("\n")}\n` : "",
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
...docsRelevantes.map((
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
93
|
+
"## Relevant Docs",
|
|
94
|
+
"Read these files before acting:",
|
|
95
|
+
...docsRelevantes.map((doc) => `- \`${doc}\``),
|
|
96
|
+
"",
|
|
97
|
+
"## Agent Instructions",
|
|
98
|
+
"1. Read the contracts above. They are the source of truth.",
|
|
99
|
+
"2. Treat selected code as context, not as a substitute for the contract.",
|
|
100
|
+
"3. Run `sema docs-impacto` with the declared intention before changing files.",
|
|
101
|
+
"4. Run `sema drift` and `sema impacto` locally before editing governed code.",
|
|
102
|
+
"5. Close with `sema finalizar-mudanca` and concrete evidence.",
|
|
137
103
|
].join("\n");
|
|
138
104
|
const tamanhoBytes = Buffer.byteLength(inlineTexto, "utf8");
|
|
139
105
|
const prontoParaChat = tamanhoBytes <= LIMITE_TAMANHO_INLINE;
|
|
140
|
-
// Gerar arquivos se solicitado
|
|
141
106
|
const arquivosGerados = [];
|
|
142
107
|
if (entrada.formatoSaida === "arquivo" || entrada.formatoSaida === "ambos") {
|
|
143
108
|
const pastaSaida = path.resolve(cwd, ".tmp", "sema-contexto-chat");
|
|
@@ -145,7 +110,6 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
|
145
110
|
const arquivoContexto = path.join(pastaSaida, "SEMA_CONTEXT_CHAT.md");
|
|
146
111
|
await writeFile(arquivoContexto, inlineTexto, "utf8");
|
|
147
112
|
arquivosGerados.push(arquivoContexto);
|
|
148
|
-
// Também gerar JSON estruturado
|
|
149
113
|
const arquivoJson = path.join(pastaSaida, "contexto-chat.json");
|
|
150
114
|
await writeFile(arquivoJson, JSON.stringify({ pacote, tamanhoBytes, prontoParaChat }, null, 2), "utf8");
|
|
151
115
|
arquivosGerados.push(arquivoJson);
|
|
@@ -158,40 +122,26 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
|
158
122
|
inlineTexto: entrada.formatoSaida === "inline" || entrada.formatoSaida === "ambos" ? inlineTexto : undefined,
|
|
159
123
|
};
|
|
160
124
|
}
|
|
161
|
-
// ---------------------------------------------------------------------------
|
|
162
|
-
// Helpers de extração
|
|
163
|
-
// ---------------------------------------------------------------------------
|
|
164
125
|
function extrairModulo(conteudo) {
|
|
165
126
|
const match = conteudo.match(/^module\s+([\w.]+)\s*\{/m);
|
|
166
127
|
return match ? match[1] : null;
|
|
167
128
|
}
|
|
168
129
|
function extrairTarefas(conteudo) {
|
|
169
|
-
|
|
170
|
-
const regex = /^\s*task\s+(\w+)\s*\{/gm;
|
|
171
|
-
let match;
|
|
172
|
-
while ((match = regex.exec(conteudo)) !== null) {
|
|
173
|
-
tarefas.push(match[1]);
|
|
174
|
-
}
|
|
175
|
-
return tarefas;
|
|
130
|
+
return [...conteudo.matchAll(/^\s*task\s+(\w+)\s*\{/gm)].map((match) => match[1]);
|
|
176
131
|
}
|
|
177
132
|
function extrairRotas(conteudo) {
|
|
178
|
-
|
|
179
|
-
const regex = /^\s*route\s+(\w+)\s*\{/gm;
|
|
180
|
-
let match;
|
|
181
|
-
while ((match = regex.exec(conteudo)) !== null) {
|
|
182
|
-
rotas.push(match[1]);
|
|
183
|
-
}
|
|
184
|
-
return rotas;
|
|
133
|
+
return [...conteudo.matchAll(/^\s*route\s+(\w+)\s*\{/gm)].map((match) => match[1]);
|
|
185
134
|
}
|
|
186
135
|
function sanitizarConteudo(conteudo) {
|
|
136
|
+
let sanitizado = conteudo;
|
|
187
137
|
for (const padrao of PADROES_SEGREDO) {
|
|
188
|
-
|
|
138
|
+
sanitizado = sanitizado.replace(padrao, "[REDACTED]");
|
|
189
139
|
}
|
|
190
|
-
return
|
|
140
|
+
return sanitizado;
|
|
191
141
|
}
|
|
192
142
|
function checksumSimples(texto) {
|
|
193
143
|
let hash = 0;
|
|
194
|
-
for (let i = 0; i < texto.length; i
|
|
144
|
+
for (let i = 0; i < texto.length; i += 1) {
|
|
195
145
|
hash = ((hash << 5) - hash + texto.charCodeAt(i)) | 0;
|
|
196
146
|
}
|
|
197
147
|
return Math.abs(hash).toString(16).padStart(8, "0");
|
package/dist/docs.part01.js
CHANGED
|
@@ -146,7 +146,7 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
146
146
|
categoria: "author",
|
|
147
147
|
padroes: [/\bauthor\b/, /autoral/, /obra/, /cliche/, /estilo/, /personagem/, /narrativa/, /sensibility/, /sensitivity/],
|
|
148
148
|
docs: [
|
|
149
|
-
{ relativo: "docs/profiles
|
|
149
|
+
{ relativo: "docs/profiles.md", tipo: "documentacao", motivo: "Author profile and local validation guardrails", permitirCriacao: false },
|
|
150
150
|
],
|
|
151
151
|
},
|
|
152
152
|
{
|
|
@@ -154,7 +154,6 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
154
154
|
padroes: [/\bprofiles\b/, /\bworkflow\b/, /\bn8n\b/, /\bops\b/, /\bgame\b/, /\blegal\b/, /\bresearch\b/, /pesquisa/, /juridic/, /orquestracao/, /automacao/],
|
|
155
155
|
docs: [
|
|
156
156
|
{ relativo: "docs/profiles.md", tipo: "documentacao", motivo: "profiles oficiais, gates e fronteiras de adapter", permitirCriacao: false },
|
|
157
|
-
{ relativo: "docs/scorecard-compatibilidade.md", tipo: "documentacao", motivo: "scorecard de compatibilidade para runtimes e adapters", permitirCriacao: false },
|
|
158
157
|
],
|
|
159
158
|
},
|
|
160
159
|
{
|
|
@@ -162,23 +161,21 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
162
161
|
padroes: [/(^|[^a-z0-9])auth([^a-z0-9]|$)/, /autentic/, /login/, /permiss/, /autoriz/, /token/, /oauth/, /seguranca/],
|
|
163
162
|
docs: [
|
|
164
163
|
{ relativo: "docs/auth.md", tipo: "documentacao", motivo: "regras de autenticacao, autorizacao e tokens", permitirCriacao: true },
|
|
165
|
-
{ relativo: "docs/
|
|
164
|
+
{ relativo: "docs/security.md", tipo: "documentacao", motivo: "politicas de seguranca afetadas pela mudanca", permitirCriacao: true },
|
|
166
165
|
],
|
|
167
166
|
},
|
|
168
167
|
{
|
|
169
168
|
categoria: "persistencia",
|
|
170
169
|
padroes: [/banco/, /database/, /persist/, /migration/, /migracao/, /prisma/, /postgres/, /redis/, /mongodb/],
|
|
171
170
|
docs: [
|
|
172
|
-
{ relativo: "docs/persistencia-vendor-first.md", tipo: "documentacao", motivo: "regras de persistencia vendor-first", permitirCriacao: false },
|
|
173
171
|
{ relativo: "docs/database.md", tipo: "runbook", motivo: "operacao de banco, migracoes e validacao de dados", permitirCriacao: true },
|
|
174
172
|
],
|
|
175
173
|
},
|
|
176
174
|
{
|
|
177
|
-
categoria: "
|
|
178
|
-
padroes: [
|
|
175
|
+
categoria: "integracao_ia",
|
|
176
|
+
padroes: [/tool/, /ferramenta/, /agent/, /agente/, /copilot/, /cursor/, /cline/, /roo/, /opencode/],
|
|
179
177
|
docs: [
|
|
180
|
-
{ relativo: "docs/
|
|
181
|
-
{ relativo: "docs/mcp.md", tipo: "documentacao", motivo: "runbook do MCP privado e ferramentas remotas", permitirCriacao: true },
|
|
178
|
+
{ relativo: "docs/ai-integration.md", tipo: "documentacao", motivo: "integracao do Sema com agentes IA", permitirCriacao: false },
|
|
182
179
|
],
|
|
183
180
|
},
|
|
184
181
|
{
|
|
@@ -189,20 +186,12 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
189
186
|
{ relativo: "docs/cli.md", tipo: "documentacao", motivo: "guia operacional dos comandos da CLI", permitirCriacao: false },
|
|
190
187
|
],
|
|
191
188
|
},
|
|
192
|
-
{
|
|
193
|
-
categoria: "extensao",
|
|
194
|
-
padroes: [/vscode/, /extension/, /extensao/, /editor/, /\blsp\b/, /language server/],
|
|
195
|
-
docs: [
|
|
196
|
-
{ relativo: "pacotes/editor-vscode/README.md", tipo: "pacote", motivo: "documentacao publica da extensao VS Code", permitirCriacao: false },
|
|
197
|
-
{ relativo: "docs/extensao-vscode.md", tipo: "documentacao", motivo: "runbook da extensao VS Code", permitirCriacao: true },
|
|
198
|
-
],
|
|
199
|
-
},
|
|
200
189
|
{
|
|
201
190
|
categoria: "contrato",
|
|
202
191
|
padroes: [/contrato/, /\.sema/, /semant/, /\bsema\b/, /drift/, /governanca/],
|
|
203
192
|
docs: [
|
|
204
|
-
{ relativo: "docs/
|
|
205
|
-
{ relativo: "docs/
|
|
193
|
+
{ relativo: "docs/syntax.md", tipo: "documentacao", motivo: "sintaxe e blocos de contrato Sema", permitirCriacao: false },
|
|
194
|
+
{ relativo: "docs/ai-workflow.md", tipo: "documentacao", motivo: "fluxo IA-first antes de editar contratos", permitirCriacao: false },
|
|
206
195
|
],
|
|
207
196
|
},
|
|
208
197
|
{
|
|
@@ -216,7 +205,7 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
216
205
|
categoria: "testes",
|
|
217
206
|
padroes: [/teste/, /testar/, /qa/, /validacao/, /regressao/],
|
|
218
207
|
docs: [
|
|
219
|
-
{ relativo: "docs/
|
|
208
|
+
{ relativo: "docs/testing.md", tipo: "runbook", motivo: "estrategia de testes e regressao", permitirCriacao: true },
|
|
220
209
|
],
|
|
221
210
|
},
|
|
222
211
|
{
|
|
@@ -224,7 +213,7 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
224
213
|
padroes: [/doc/, /readme/, /manual/, /runbook/, /onboarding/],
|
|
225
214
|
docs: [
|
|
226
215
|
{ relativo: "docs/README.md", tipo: "documentacao", motivo: "indice de documentacao do projeto", permitirCriacao: false },
|
|
227
|
-
{ relativo: "docs/
|
|
216
|
+
{ relativo: "docs/documentation.md", tipo: "documentacao", motivo: "politica de atualizacao documental", permitirCriacao: true },
|
|
228
217
|
],
|
|
229
218
|
},
|
|
230
219
|
];
|
|
@@ -240,56 +229,46 @@ export function criarTemplateDoc(doc, intencao, categorias, arquivosAlvo) {
|
|
|
240
229
|
const linhas = [
|
|
241
230
|
`# ${titulo}`,
|
|
242
231
|
"",
|
|
243
|
-
"## English",
|
|
244
|
-
"",
|
|
245
232
|
"This document was created by Sema because an AI declared an intention that requires operational reading before action.",
|
|
246
233
|
"",
|
|
247
|
-
"##
|
|
248
|
-
"",
|
|
249
|
-
"Documento criado pela Sema porque uma IA declarou uma intenção que exige leitura operacional antes de agir.",
|
|
250
|
-
"",
|
|
251
|
-
"## Español",
|
|
252
|
-
"",
|
|
253
|
-
"Documento creado por Sema porque una IA declaró una intención que exige lectura operativa antes de actuar.",
|
|
254
|
-
"",
|
|
255
|
-
"## Intenção",
|
|
234
|
+
"## Intention",
|
|
256
235
|
"",
|
|
257
|
-
intencao || "
|
|
236
|
+
intencao || "Describe the operational intention before making the change.",
|
|
258
237
|
"",
|
|
259
|
-
"##
|
|
238
|
+
"## Scope",
|
|
260
239
|
"",
|
|
261
240
|
arquivosAlvo.length > 0
|
|
262
241
|
? arquivosAlvo.map((arquivo) => `- ${arquivo}`).join("\n")
|
|
263
|
-
: "-
|
|
242
|
+
: "- Declare the affected files, services, or contracts.",
|
|
264
243
|
"",
|
|
265
|
-
"##
|
|
244
|
+
"## Required Reading Before Action",
|
|
266
245
|
"",
|
|
267
|
-
"-
|
|
268
|
-
"-
|
|
269
|
-
"-
|
|
246
|
+
"- Read this whole document.",
|
|
247
|
+
"- Read related `.sema` contracts before editing code.",
|
|
248
|
+
"- Read the involved README, runbooks, and package docs.",
|
|
270
249
|
"",
|
|
271
|
-
"##
|
|
250
|
+
"## Procedure",
|
|
272
251
|
"",
|
|
273
|
-
"-
|
|
274
|
-
"-
|
|
275
|
-
"-
|
|
252
|
+
"- Describe the safe commands or steps.",
|
|
253
|
+
"- Declare preconditions, variables, and dependencies.",
|
|
254
|
+
"- Record how success will be validated.",
|
|
276
255
|
"",
|
|
277
|
-
"##
|
|
256
|
+
"## Validation",
|
|
278
257
|
"",
|
|
279
|
-
"-
|
|
280
|
-
"-
|
|
258
|
+
"- List build, test, verification, or smoke-check commands.",
|
|
259
|
+
"- Record expected evidence.",
|
|
281
260
|
"",
|
|
282
261
|
"## Rollback",
|
|
283
262
|
"",
|
|
284
|
-
"-
|
|
285
|
-
"-
|
|
263
|
+
"- Describe how to undo the change.",
|
|
264
|
+
"- Declare signals that require rollback.",
|
|
286
265
|
"",
|
|
287
|
-
"##
|
|
266
|
+
"## Documentation Update",
|
|
288
267
|
"",
|
|
289
|
-
"-
|
|
290
|
-
"-
|
|
268
|
+
"- Update this file when the operational flow changes.",
|
|
269
|
+
"- Update related docs and contracts in the same change.",
|
|
291
270
|
"",
|
|
292
|
-
`
|
|
271
|
+
`Inferred categories: ${categorias.join(", ")}`,
|
|
293
272
|
"",
|
|
294
273
|
];
|
|
295
274
|
return `${linhas.join("\n")}\n`;
|
package/dist/drift.part14.js
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
+
// Descricao: analisa modulos selecionados no drift; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
1
5
|
import { escolherArquivoPorVinculo, escolherSimboloPorVinculo } from "./drift.part03.js";
|
|
2
6
|
import { calcularRiscoOperacional, encontrarAncoraSuperficie } from "./drift.part04.js";
|
|
3
7
|
import { resolverPersistenciaLocalPorTask } from "./drift.part08.js";
|
|
4
8
|
import { escolherRotasEsperadas, normalizarCaminhoRota, ordenarCandidatos, sugerirCandidatosParaImpl, sugerirCandidatosParaTaskSemImpl } from "./drift.part09.js";
|
|
5
9
|
import { coletarVinculosIr, extrairRecursosEsperados, resolverRecursoEsperado } from "./drift.part10.js";
|
|
10
|
+
function escolherArquivoDeclarado(contexto, arquivosConhecidos, valor) {
|
|
11
|
+
const resolucaoIndexada = escolherArquivoPorVinculo(arquivosConhecidos, valor);
|
|
12
|
+
if (resolucaoIndexada.status !== "nao_encontrado") {
|
|
13
|
+
return resolucaoIndexada;
|
|
14
|
+
}
|
|
15
|
+
const caminhoExplicito = path.resolve(contexto.baseProjeto, valor);
|
|
16
|
+
if (existsSync(caminhoExplicito)) {
|
|
17
|
+
return { arquivo: caminhoExplicito, confianca: "alta", status: "resolvido" };
|
|
18
|
+
}
|
|
19
|
+
return resolucaoIndexada;
|
|
20
|
+
}
|
|
6
21
|
export function analisarModulosSelecionadosDrift(estado) {
|
|
7
22
|
const { contexto, mapaImpl, todosSimbolos, mapaRecursos, todosRecursos, todasRotasIndexadas, todosArquivosConhecidos, implsValidos, implsQuebrados, vinculosValidos, vinculosQuebrados, rotasDivergentes, recursosValidos, recursosDivergentes, diagnosticos, tasksResumo, taskPorChave, guardrailsPorTask, resumoVinculosPorTask, arquivosAncoraHerdadosPorTask, } = estado;
|
|
8
23
|
for (const item of contexto.modulosSelecionados) {
|
|
@@ -292,7 +307,7 @@ export function analisarModulosSelecionadosDrift(estado) {
|
|
|
292
307
|
registro.simbolo = resolucaoSimbolo.simbolo?.simbolo;
|
|
293
308
|
}
|
|
294
309
|
else if (arquivoDeclarado) {
|
|
295
|
-
const resolucaoArquivo =
|
|
310
|
+
const resolucaoArquivo = escolherArquivoDeclarado(contexto, todosArquivosConhecidos, arquivoDeclarado);
|
|
296
311
|
registro.status = resolucaoArquivo.status;
|
|
297
312
|
registro.confianca = resolucaoArquivo.confianca;
|
|
298
313
|
registro.arquivo = resolucaoArquivo.arquivo;
|
|
@@ -319,14 +334,14 @@ export function analisarModulosSelecionadosDrift(estado) {
|
|
|
319
334
|
registro.simbolo = rota.simbolo;
|
|
320
335
|
}
|
|
321
336
|
else {
|
|
322
|
-
const resolucaoArquivo =
|
|
337
|
+
const resolucaoArquivo = escolherArquivoDeclarado(contexto, todosArquivosConhecidos, superficieDeclarada);
|
|
323
338
|
registro.status = resolucaoArquivo.status;
|
|
324
339
|
registro.confianca = resolucaoArquivo.confianca;
|
|
325
340
|
registro.arquivo = resolucaoArquivo.arquivo;
|
|
326
341
|
}
|
|
327
342
|
}
|
|
328
343
|
else {
|
|
329
|
-
const resolucaoArquivo =
|
|
344
|
+
const resolucaoArquivo = escolherArquivoDeclarado(contexto, todosArquivosConhecidos, itemVinculo.vinculo.valor);
|
|
330
345
|
registro.status = resolucaoArquivo.status;
|
|
331
346
|
registro.confianca = resolucaoArquivo.confianca;
|
|
332
347
|
registro.arquivo = resolucaoArquivo.arquivo;
|
package/dist/driftOrcamento.js
CHANGED
|
@@ -112,8 +112,7 @@ export function arquivoEhMigracaoHistoricaImutavel(caminho) {
|
|
|
112
112
|
const normalizado = caminho.replace(/\\/g, "/").toLowerCase();
|
|
113
113
|
const partes = normalizado.split("/").filter(Boolean);
|
|
114
114
|
const nome = partes.at(-1) ?? "";
|
|
115
|
-
return partes.includes("
|
|
116
|
-
&& partes.includes("migrations")
|
|
115
|
+
return partes.includes("migrations")
|
|
117
116
|
&& /^\d{14}_.+\.sql$/.test(nome);
|
|
118
117
|
}
|
|
119
118
|
export function tipoArquivoOrcamento(caminho) {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
export * from "./index.part01.js";
|
|
3
|
-
export * from "./index.part02.js";
|
|
4
|
-
export * from "./index.part03.js";
|
|
5
|
-
export * from "./index.part04.js";
|
|
6
|
-
export * from "./index.part05.js";
|
|
7
|
-
export * from "./index.part06.js";
|
|
8
|
-
export * from "./index.part07.js";
|
|
9
3
|
export * from "./index.part08.js";
|
|
10
4
|
export { iniciarProfileAuthor, comandoAuthor, criarAuthorBriefing, revisarClichesAuthor } from "./profileAuthorCommand.js";
|
|
11
5
|
export { validarProfileSemantico } from "./profileCommand.js";
|
package/dist/index.js
CHANGED
|
@@ -3,12 +3,6 @@
|
|
|
3
3
|
// Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
|
|
4
4
|
import { principal } from "./index.part08.js";
|
|
5
5
|
export * from "./index.part01.js";
|
|
6
|
-
export * from "./index.part02.js";
|
|
7
|
-
export * from "./index.part03.js";
|
|
8
|
-
export * from "./index.part04.js";
|
|
9
|
-
export * from "./index.part05.js";
|
|
10
|
-
export * from "./index.part06.js";
|
|
11
|
-
export * from "./index.part07.js";
|
|
12
6
|
export * from "./index.part08.js";
|
|
13
7
|
export { iniciarProfileAuthor, comandoAuthor, criarAuthorBriefing, revisarClichesAuthor } from "./profileAuthorCommand.js";
|
|
14
8
|
export { validarProfileSemantico } from "./profileCommand.js";
|
package/dist/index.part01.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { compilarCodigo, type IrModulo } from "@sema/nucleo";
|
|
|
2
2
|
import { analisarDriftLegado, type OpcoesDriftLegado } from "./drift.js";
|
|
3
3
|
import { type GuiaCapacidadeIaMap } from './agentContextTipos.js';
|
|
4
4
|
import { criarBriefingAgente, resumirDriftPorModulo } from "./index.part03.js";
|
|
5
|
-
export type Comando = "iniciar" | "init" | "dev" | "sync" | "
|
|
5
|
+
export type Comando = "iniciar" | "init" | "dev" | "sync" | "author" | "profile" | "validar" | "ast" | "ir" | "compilar" | "gerar" | "testar" | "diagnosticos" | "verificar" | "inspecionar" | "drift" | "impacto" | "renomear-semantico" | "importar" | "doctor" | "formatar" | "ajuda-ia" | "starter-ia" | "sync-ai-entrypoints" | "instalar-exemplos" | "preflight" | "rule-packs" | "docs-impacto" | "finalizar-mudanca" | "resumo" | "prompt-curto" | "prompt-ia" | "prompt-ia-ui" | "prompt-ia-react" | "prompt-ia-sema-primeiro" | "exemplos-prompt-ia" | "contexto-ia";
|
|
6
6
|
export interface ResultadoFormatacaoArquivo {
|
|
7
7
|
caminho: string;
|
|
8
8
|
alterado: boolean;
|
package/dist/index.part01.js
CHANGED
|
@@ -109,9 +109,7 @@ export function ajuda() {
|
|
|
109
109
|
"sema contexto-ia <arquivo.sema> [--saida <diretorio>] [--json]",
|
|
110
110
|
"sema sync-ai-entrypoints [--json]",
|
|
111
111
|
"sema instalar-exemplos [--json]",
|
|
112
|
-
"sema preflight [comando] [--operation-code <codigo>] [--
|
|
113
|
-
"sema mcp-instalar-chave --stdin [--endpoint <url>] [--control-plane-url <url>] [--dry-run] [--json]",
|
|
114
|
-
"sema chat doctor [--json]",
|
|
112
|
+
"sema preflight [comando] [--operation-code <codigo>] [--json]",
|
|
115
113
|
"sema docs-impacto --intencao <acao> [--arquivo <caminho>] [--criar-ausentes] [--json]",
|
|
116
114
|
"sema finalizar-mudanca --intencao <acao> [--arquivo <caminho>] [--doc-lida <caminho>] [--json]",
|
|
117
115
|
"sema author briefing <arquivo.sema> [--json]",
|
package/dist/index.part04.js
CHANGED
|
@@ -8,7 +8,7 @@ import { analisarDriftLegado, } from "./drift.js";
|
|
|
8
8
|
import { resolverDocumentacaoObrigatoria, verificarDocumentacaoMudanca, } from "./docs.js";
|
|
9
9
|
import { LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO, LIMITE_AVISO_LINHAS_CONTRATO_SEMA, LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO, LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA, } from "./driftOrcamento.js";
|
|
10
10
|
import { ARQUIVO_AGENT_CONTEXT_PACK, ARQUIVO_DOC_AGENTES_CAPACIDADE, ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL, } from './agentContextTipos.js';
|
|
11
|
-
import { criarGuiaCapacidadeIa,
|
|
11
|
+
import { criarGuiaCapacidadeIa, LIMITE_CARACTERES_PAYLOAD_INLINE } from './agentContextPack.js';
|
|
12
12
|
import { criarEntradaCanonicaProjeto } from './agentContext.js';
|
|
13
13
|
import { renderizarDocumentoAgentesPorCapacidade, renderizarSemaBoot, renderizarSemaSmallModel, } from './agentEntryPoints.js';
|
|
14
14
|
import { carregarModulos } from './carregarModulos.js';
|
|
@@ -113,7 +113,7 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
113
113
|
`TIMEOUT_SEMA: timeout local nao e falha; retry progressivo ${agentContextPack.politicaTimeoutResumo.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")}; escopar arquivo se projeto inteiro for lento`,
|
|
114
114
|
`CODIGO_GOVERNADO: ${agentContextPack.politicaCodigoGovernado.marcador} -> chamar Sema antes de editar codigo gerado; validacao inline nao dispensa cabecalho fisico`,
|
|
115
115
|
`ORCAMENTO_SEMANTICO: codigo aviso>${LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO} bloqueio>${LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO}; .sema aviso>${LIMITE_AVISO_LINHAS_CONTRATO_SEMA} bloqueio>${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA}; .sema por capacidade, nunca parte_1/parte_2; docs Markdown fora do limite de codigo`,
|
|
116
|
-
`
|
|
116
|
+
`PAYLOAD_INLINE: inline>${LIMITE_CARACTERES_PAYLOAD_INLINE} caracteres nao e timeout; modularize por responsabilidade ou use anexo/caminho autorizado`,
|
|
117
117
|
`SINAL_VS_RITUAL: score/achados/decisaoAgente sao triagem; exigir evidencia concreta alem de palavra-chave ou regex`,
|
|
118
118
|
`DESIGN_VISUAL: se houver UI, moderno obrigatorio; fraca=padrao seguro responsivo; media=tokens+estados; forte=screenshot+assets+microinteracoes`,
|
|
119
119
|
`TOP_MODULOS: ${resumirListaTexto(modulos.map((modulo) => modulo.modulo), 3)}`,
|
|
@@ -138,7 +138,7 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
138
138
|
`TIMEOUT_SEMA: ${agentContextPack.politicaTimeoutResumo.regra} Escale ${agentContextPack.politicaTimeoutResumo.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")} antes de declarar bloqueio.`,
|
|
139
139
|
`CODIGO_GOVERNADO: ${agentContextPack.politicaCodigoGovernado.marcador} -> docs-impacto e drift antes de alterar comportamento`,
|
|
140
140
|
`ORCAMENTO_SEMANTICO: codigo governado acima de ${LIMITE_AVISO_LINHAS_CODIGO_GOVERNADO} linhas exige refatoracao e acima de ${LIMITE_BLOQUEIO_LINHAS_CODIGO_GOVERNADO} bloqueia; .sema acima de ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA} diagnostica e acima de ${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA} bloqueia criacao, edicao, drift, geracao e snapshot; varios .sema podem governar o mesmo arquivo via vinculos`,
|
|
141
|
-
`
|
|
141
|
+
`PAYLOAD_INLINE: conteudo inline acima de ${LIMITE_CARACTERES_PAYLOAD_INLINE} caracteres deve virar arquivos logicos, anexo, caminho de servidor autorizado ou manifesto; nao aumente timeout para empurrar o mesmo payload`,
|
|
142
142
|
`DESIGN_VISUAL: ${agentContextPack.politicaDesignVisual.regra} Fraca=${agentContextPack.politicaDesignVisual.porCapacidade.fraca} Media=${agentContextPack.politicaDesignVisual.porCapacidade.media} Forte=${agentContextPack.politicaDesignVisual.porCapacidade.forte}`,
|
|
143
143
|
`TOP_MODULOS: ${resumirListaTexto(modulos.map((modulo) => modulo.modulo), 6)}`,
|
|
144
144
|
`TOP_RISCOS: ${resumirListaTexto(unicosOrdenados(modulos.flatMap((modulo) => modulo.riscosPrincipais)), 6)}`,
|
|
@@ -252,7 +252,7 @@ Antes de escolher arquivo de código, leia \`${ARQUIVO_SEMA_BOOT}\` e \`agent-co
|
|
|
252
252
|
|
|
253
253
|
- Abra \`AGENTS.md\` antes de editar código, contrato, docs operacionais, release ou deploy.
|
|
254
254
|
- Abra \`exemplos/\` antes de criar ou corrigir sintaxe \`.sema\`.
|
|
255
|
-
- Abra \`docs/
|
|
255
|
+
- Abra \`docs/syntax.md\` quando exemplos não bastarem para resolver a gramática.
|
|
256
256
|
- Abra \`contratos/\` antes de qualquer implementação ou mudança de comportamento.
|
|
257
257
|
|
|
258
258
|
## Timeout e retry
|
package/dist/index.part08.js
CHANGED
|
@@ -4,12 +4,9 @@ import path from "node:path";
|
|
|
4
4
|
import { carregarConfiguracaoProjeto, resolverAlvoPadrao, resolverEstruturaSaidaPadrao, resolverFrameworkPadrao, resolverSaidaPadrao, } from "./projeto.js";
|
|
5
5
|
import { REGISTRO_COMANDOS } from "./comandos.js";
|
|
6
6
|
import * as billing from "./billing/index.js";
|
|
7
|
-
import { ajudaRunnerValidacaoRemota, comandoRunnerValidacaoRemota, } from "./runnerValidacaoRemotaCli.js";
|
|
8
|
-
import { comandoServidorRunnerValidacaoRemota } from "./runnerValidacaoRemotaServidor.js";
|
|
9
7
|
import { comandoIniciar, comandoInstalarExemplos } from './initCommand.js';
|
|
10
8
|
import { obterOpcao, obterPosicionais, possuiFlag } from './cliArgs.js';
|
|
11
9
|
import { comandoAuthor, comandoProfile, criarPayloadRulePacks, normalizarProfileGovernanca, renderizarRulePacksTexto } from './profileAuthorCommand.js';
|
|
12
|
-
import { comandoMcpInstalarChave } from './mcpInstalarChaveCommand.js';
|
|
13
10
|
import { comandoDoctor } from './doctorCommand.js';
|
|
14
11
|
import { normalizarFonteImportacao, normalizarTemplateIniciar, } from './geracaoCore.js';
|
|
15
12
|
import { VERSAO_CLI, ajuda, obterArgumentos } from "./index.part01.js";
|
|
@@ -31,7 +28,7 @@ export async function principal() {
|
|
|
31
28
|
const cwd = process.cwd();
|
|
32
29
|
const posicionais = obterPosicionais(resto);
|
|
33
30
|
let codigoSaida = 0;
|
|
34
|
-
// --- Comandos registrados via REGISTRO_COMANDOS (
|
|
31
|
+
// --- Comandos registrados via REGISTRO_COMANDOS (guard, init, dev, sync) ---
|
|
35
32
|
const handlerRegistrado = REGISTRO_COMANDOS[comando];
|
|
36
33
|
if (handlerRegistrado) {
|
|
37
34
|
codigoSaida = await handlerRegistrado(posicionais, resto, possuiFlag(resto, "--json"));
|
|
@@ -55,21 +52,6 @@ export async function principal() {
|
|
|
55
52
|
codigoSaida = 0;
|
|
56
53
|
}
|
|
57
54
|
break;
|
|
58
|
-
case "runner":
|
|
59
|
-
{
|
|
60
|
-
const subcomando = posicionais[0];
|
|
61
|
-
if (subcomando === "validar-remoto") {
|
|
62
|
-
codigoSaida = await comandoRunnerValidacaoRemota(resto, cwd);
|
|
63
|
-
}
|
|
64
|
-
else if (subcomando === "servidor") {
|
|
65
|
-
codigoSaida = await comandoServidorRunnerValidacaoRemota(resto, cwd);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
console.log(ajudaRunnerValidacaoRemota());
|
|
69
|
-
codigoSaida = subcomando ? 1 : 0;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
break;
|
|
73
55
|
case "validar":
|
|
74
56
|
codigoSaida = possuiFlag(resto, "--json")
|
|
75
57
|
? await comandoValidarJson(posicionais[0])
|
|
@@ -167,9 +149,6 @@ export async function principal() {
|
|
|
167
149
|
case "preflight":
|
|
168
150
|
codigoSaida = await billing.comandoPreflightCli(resto, possuiFlag(resto, "--json"));
|
|
169
151
|
break;
|
|
170
|
-
case "mcp-instalar-chave":
|
|
171
|
-
codigoSaida = await comandoMcpInstalarChave(resto, possuiFlag(resto, "--json"));
|
|
172
|
-
break;
|
|
173
152
|
case "docs-impacto":
|
|
174
153
|
codigoSaida = await comandoDocsImpacto(posicionais, resto, possuiFlag(resto, "--json"));
|
|
175
154
|
break;
|