@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/billing/index.d.ts
CHANGED
|
@@ -1,74 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Billing integration - CLI reports consumption back to MCP
|
|
3
|
-
* Based on contract: mcp_cli_billing_integration.sema
|
|
4
|
-
*/
|
|
5
|
-
export interface ConsumoOperacao {
|
|
6
|
-
id: string;
|
|
7
|
-
sessao_mcp: string;
|
|
8
|
-
ferramenta: string;
|
|
9
|
-
comando_cli: string;
|
|
10
|
-
semas_estimado: number;
|
|
11
|
-
semas_real: number;
|
|
12
|
-
complexidade: "baixa" | "media" | "alta" | "critica";
|
|
13
|
-
linhas_contrato: number;
|
|
14
|
-
operacoes_realizadas: string[];
|
|
15
|
-
timestamp_inicio: string;
|
|
16
|
-
timestamp_fim: string;
|
|
17
|
-
status: "sucesso" | "erro" | "timeout";
|
|
18
|
-
}
|
|
19
|
-
export interface ReporteConsumoInput {
|
|
20
|
-
sessao_mcp: string;
|
|
21
|
-
ferramenta: string;
|
|
22
|
-
comando_cli: string;
|
|
23
|
-
semas_real: number;
|
|
24
|
-
complexidade: "baixa" | "media" | "alta" | "critica";
|
|
25
|
-
linhas_contrato: number;
|
|
26
|
-
operacoes_realizadas: string[];
|
|
27
|
-
timestamp_inicio: string;
|
|
28
|
-
timestamp_fim: string;
|
|
29
|
-
status: "sucesso" | "erro" | "timeout";
|
|
30
|
-
}
|
|
31
|
-
export interface ReporteConsumoOutput {
|
|
32
|
-
consumo: ConsumoOperacao;
|
|
33
|
-
ajuste_billing: boolean;
|
|
34
|
-
}
|
|
35
1
|
export interface PreflightCliOutput {
|
|
36
2
|
comando: "preflight";
|
|
37
3
|
surface: "local_cli";
|
|
38
4
|
autorizado: boolean;
|
|
39
5
|
decisao: "use_cli_local" | "blocked";
|
|
40
|
-
creditos: "ok" | "blocked";
|
|
41
6
|
filesystem: "local_available";
|
|
42
|
-
origemCobranca: "
|
|
7
|
+
origemCobranca: "local_only";
|
|
43
8
|
operationCode: string;
|
|
44
9
|
toolName: string;
|
|
45
|
-
requestedSemas: number | null;
|
|
46
|
-
chargedSemas: number | null;
|
|
47
|
-
remainingSemas: number | null;
|
|
48
|
-
infiniteSemas: boolean;
|
|
49
|
-
tokenPrefix: string;
|
|
50
|
-
tokenExposto: false;
|
|
51
|
-
mcpSyncPermitido: false;
|
|
52
10
|
erro?: string;
|
|
53
11
|
}
|
|
54
12
|
export declare function executarPreflightCli(params: {
|
|
55
13
|
comandoCli: string;
|
|
56
14
|
args?: string[];
|
|
57
|
-
token?: string;
|
|
58
|
-
controlPlaneUrl?: string;
|
|
59
|
-
supabaseAnonKey?: string;
|
|
60
15
|
projectId?: string | null;
|
|
61
16
|
}): Promise<PreflightCliOutput>;
|
|
62
17
|
export declare function comandoPreflightCli(args: string[], json: boolean): Promise<number>;
|
|
63
|
-
export declare function calcularConsumoReal(operacoes: string[], linhasContrato: number, complexidade: "baixa" | "media" | "alta" | "critica"): number;
|
|
64
|
-
export declare function determinarComplexidade(linhas: number, aninhamento: number): "baixa" | "media" | "alta" | "critica";
|
|
65
|
-
export declare function gerarRelatorioConsumo(input: Omit<ReporteConsumoInput, "timestamp_fim"> & {
|
|
66
|
-
timestamp_inicio: string;
|
|
67
|
-
}, operacoesRealizadas: string[], linhasContrato: number, sucesso: boolean): ReporteConsumoOutput;
|
|
68
|
-
export declare function executarComReporte<T>(sessaoMcp: string | undefined, ferramenta: string, comando: string, operacoes: string[], fn: () => Promise<T>): Promise<{
|
|
69
|
-
resultado: T;
|
|
70
|
-
relatorio: ReporteConsumoOutput | null;
|
|
71
|
-
}>;
|
|
72
|
-
export declare function exportarConsumoJson(relatorio: ReporteConsumoOutput): string;
|
|
73
|
-
export declare function reportarConsumo(input: ReporteConsumoInput): ReporteConsumoOutput;
|
|
74
|
-
export declare function reportarConsumoCli(input: ReporteConsumoInput): ReporteConsumoOutput;
|
package/dist/billing/index.js
CHANGED
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
-
// Descricao:
|
|
3
|
-
/**
|
|
4
|
-
* Billing integration - CLI reports consumption back to MCP
|
|
5
|
-
* Based on contract: mcp_cli_billing_integration.sema
|
|
6
|
-
*/
|
|
7
|
-
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
// Descricao: preflight local-only da CLI publica.
|
|
8
3
|
import { obterOpcao, obterPosicionais, possuiFlag } from "../cliArgs.js";
|
|
9
|
-
const CLI_TOKEN_ENV_VAR = "SEMA_CLI_AUTH_TOKEN";
|
|
10
|
-
const MCP_TOKEN_ENV_VAR = "SEMA_MCP_AUTH_TOKEN";
|
|
11
|
-
const CLI_CONTROL_PLANE_ENV_VAR = "SEMA_CLI_CONTROL_PLANE_URL";
|
|
12
|
-
const CLI_SUPABASE_ANON_KEY_ENV_VAR = "SEMA_CLI_SUPABASE_ANON_KEY";
|
|
13
|
-
const CLI_CONTROL_PLANE_PADRAO = "https://xsbyxiocqyakqxgmtpmp.supabase.co";
|
|
14
|
-
const CLI_SUPABASE_ANON_KEY_PADRAO = "sb_publishable_J_f7L9Xqq9kAo0ltDafuaA_Mid4vVNS";
|
|
15
4
|
const OPERATION_CODE_BY_CLI_COMMAND = {
|
|
16
5
|
resumo: "tool.sema_resumo",
|
|
17
6
|
validar: "tool.sema_validar",
|
|
@@ -19,7 +8,6 @@ const OPERATION_CODE_BY_CLI_COMMAND = {
|
|
|
19
8
|
inspecionar: "tool.sema_inspecionar",
|
|
20
9
|
drift: "drift.module",
|
|
21
10
|
impacto: "default.operation",
|
|
22
|
-
sync: "sync.contracts",
|
|
23
11
|
verificar: "verify.full",
|
|
24
12
|
};
|
|
25
13
|
function normalizarComandoCli(comandoCli) {
|
|
@@ -38,138 +26,30 @@ function resolverOperationCodeCli(comandoCli, args) {
|
|
|
38
26
|
function resolverToolNameCli(comandoCli) {
|
|
39
27
|
return `sema_cli_${normalizarComandoCli(comandoCli).replace(/[^a-z0-9_]+/g, "_")}`;
|
|
40
28
|
}
|
|
41
|
-
function hashTokenSha256(token) {
|
|
42
|
-
return createHash("sha256").update(token, "utf8").digest("hex");
|
|
43
|
-
}
|
|
44
|
-
function tokenPrefixoSeguro(token) {
|
|
45
|
-
return token.slice(0, Math.min(14, token.length));
|
|
46
|
-
}
|
|
47
|
-
function resultadoPreflightBloqueado(params) {
|
|
48
|
-
return {
|
|
49
|
-
comando: "preflight",
|
|
50
|
-
surface: "local_cli",
|
|
51
|
-
autorizado: false,
|
|
52
|
-
decisao: "blocked",
|
|
53
|
-
creditos: "blocked",
|
|
54
|
-
filesystem: "local_available",
|
|
55
|
-
origemCobranca: "control_plane",
|
|
56
|
-
operationCode: params.operationCode,
|
|
57
|
-
toolName: params.toolName,
|
|
58
|
-
requestedSemas: null,
|
|
59
|
-
chargedSemas: null,
|
|
60
|
-
remainingSemas: null,
|
|
61
|
-
infiniteSemas: false,
|
|
62
|
-
tokenPrefix: params.tokenPrefix,
|
|
63
|
-
tokenExposto: false,
|
|
64
|
-
mcpSyncPermitido: false,
|
|
65
|
-
erro: params.erro,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
function numeroOuNulo(valor) {
|
|
69
|
-
return typeof valor === "number" && Number.isFinite(valor) ? valor : null;
|
|
70
|
-
}
|
|
71
29
|
export async function executarPreflightCli(params) {
|
|
72
30
|
const args = params.args ?? [];
|
|
73
31
|
const comandoCli = params.comandoCli || "default";
|
|
74
32
|
const operationCode = resolverOperationCodeCli(comandoCli, args);
|
|
75
33
|
const toolName = resolverToolNameCli(comandoCli);
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
if (!/^sema_(?:mcp|cli)_[A-Za-z0-9_-]{16,}$/.test(token)) {
|
|
88
|
-
return resultadoPreflightBloqueado({
|
|
89
|
-
comandoCli,
|
|
90
|
-
operationCode,
|
|
91
|
-
toolName,
|
|
92
|
-
tokenPrefix,
|
|
93
|
-
erro: "Chave Sema local invalida.",
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
const controlPlaneUrl = (params.controlPlaneUrl ?? process.env[CLI_CONTROL_PLANE_ENV_VAR] ?? CLI_CONTROL_PLANE_PADRAO).replace(/\/+$/, "");
|
|
97
|
-
const supabaseAnonKey = params.supabaseAnonKey ?? process.env[CLI_SUPABASE_ANON_KEY_ENV_VAR] ?? CLI_SUPABASE_ANON_KEY_PADRAO;
|
|
98
|
-
const tokenHash = hashTokenSha256(token);
|
|
99
|
-
const idempotencyKey = `cli:${normalizarComandoCli(comandoCli)}:${Date.now()}:${randomUUID()}`;
|
|
100
|
-
try {
|
|
101
|
-
const resposta = await fetch(`${controlPlaneUrl}/rest/v1/rpc/sema_consume_mcp_token_operation`, {
|
|
102
|
-
method: "POST",
|
|
103
|
-
headers: {
|
|
104
|
-
apikey: supabaseAnonKey,
|
|
105
|
-
authorization: `Bearer ${supabaseAnonKey}`,
|
|
106
|
-
"content-type": "application/json",
|
|
107
|
-
},
|
|
108
|
-
body: JSON.stringify({
|
|
109
|
-
p_token_hash: tokenHash,
|
|
110
|
-
p_organization_id: null,
|
|
111
|
-
p_project_id: params.projectId ?? null,
|
|
112
|
-
p_operation_code: operationCode,
|
|
113
|
-
p_tool_name: toolName,
|
|
114
|
-
p_request_summary: `CLI local preflight: ${comandoCli}`,
|
|
115
|
-
p_idempotency_key: idempotencyKey,
|
|
116
|
-
p_metadata: {
|
|
117
|
-
source: "sema_cli_local",
|
|
118
|
-
surface: "local_cli",
|
|
119
|
-
command: comandoCli,
|
|
120
|
-
mcpSyncPermitido: false,
|
|
121
|
-
},
|
|
122
|
-
}),
|
|
123
|
-
});
|
|
124
|
-
if (!resposta.ok) {
|
|
125
|
-
const texto = await resposta.text();
|
|
126
|
-
return resultadoPreflightBloqueado({
|
|
127
|
-
comandoCli,
|
|
128
|
-
operationCode,
|
|
129
|
-
toolName,
|
|
130
|
-
tokenPrefix,
|
|
131
|
-
erro: texto || `Control plane retornou HTTP ${resposta.status}.`,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
const payload = await resposta.json();
|
|
135
|
-
const autorizado = payload?.authorized === true;
|
|
136
|
-
return {
|
|
137
|
-
comando: "preflight",
|
|
138
|
-
surface: "local_cli",
|
|
139
|
-
autorizado,
|
|
140
|
-
decisao: autorizado ? "use_cli_local" : "blocked",
|
|
141
|
-
creditos: autorizado ? "ok" : "blocked",
|
|
142
|
-
filesystem: "local_available",
|
|
143
|
-
origemCobranca: "control_plane",
|
|
144
|
-
operationCode,
|
|
145
|
-
toolName,
|
|
146
|
-
requestedSemas: numeroOuNulo(payload?.requestedSemas),
|
|
147
|
-
chargedSemas: numeroOuNulo(payload?.chargedSemas),
|
|
148
|
-
remainingSemas: numeroOuNulo(payload?.remainingSemas ?? payload?.remainingBalance),
|
|
149
|
-
infiniteSemas: payload?.infiniteSemas === true,
|
|
150
|
-
tokenPrefix,
|
|
151
|
-
tokenExposto: false,
|
|
152
|
-
mcpSyncPermitido: false,
|
|
153
|
-
erro: autorizado ? undefined : "Control plane nao autorizou o uso da CLI.",
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
catch (erro) {
|
|
157
|
-
return resultadoPreflightBloqueado({
|
|
158
|
-
comandoCli,
|
|
159
|
-
operationCode,
|
|
160
|
-
toolName,
|
|
161
|
-
tokenPrefix,
|
|
162
|
-
erro: erro instanceof Error ? erro.message : String(erro),
|
|
163
|
-
});
|
|
164
|
-
}
|
|
34
|
+
void params.projectId;
|
|
35
|
+
return {
|
|
36
|
+
comando: "preflight",
|
|
37
|
+
surface: "local_cli",
|
|
38
|
+
autorizado: true,
|
|
39
|
+
decisao: "use_cli_local",
|
|
40
|
+
filesystem: "local_available",
|
|
41
|
+
origemCobranca: "local_only",
|
|
42
|
+
operationCode,
|
|
43
|
+
toolName,
|
|
44
|
+
};
|
|
165
45
|
}
|
|
166
46
|
export async function comandoPreflightCli(args, json) {
|
|
167
47
|
if (possuiFlag(args, "--help") || possuiFlag(args, "-h")) {
|
|
168
48
|
console.log([
|
|
169
|
-
"
|
|
49
|
+
"Usage: sema preflight [command] [--operation-code <code>] [--json]",
|
|
170
50
|
"",
|
|
171
|
-
"
|
|
172
|
-
"
|
|
51
|
+
"Checks the local CLI surface. Public Sema is local-only and does not call external services.",
|
|
52
|
+
"If this command returns decisao=use_cli_local, continue with local CLI commands.",
|
|
173
53
|
].join("\n"));
|
|
174
54
|
return 0;
|
|
175
55
|
}
|
|
@@ -179,157 +59,16 @@ export async function comandoPreflightCli(args, json) {
|
|
|
179
59
|
comandoCli,
|
|
180
60
|
args,
|
|
181
61
|
projectId: obterOpcao(args, "--project-id") ?? null,
|
|
182
|
-
controlPlaneUrl: obterOpcao(args, "--control-plane-url"),
|
|
183
|
-
supabaseAnonKey: obterOpcao(args, "--supabase-anon-key"),
|
|
184
62
|
});
|
|
185
63
|
if (json) {
|
|
186
64
|
console.log(JSON.stringify(resultado, null, 2));
|
|
187
65
|
}
|
|
188
66
|
else if (resultado.autorizado) {
|
|
189
|
-
console.log(`Sema CLI
|
|
67
|
+
console.log(`Sema CLI authorized: ${resultado.operationCode}. Decision: ${resultado.decisao}.`);
|
|
190
68
|
}
|
|
191
69
|
else {
|
|
192
|
-
console.error(`Sema CLI
|
|
70
|
+
console.error(`Sema CLI blocked: ${resultado.erro}`);
|
|
193
71
|
}
|
|
194
72
|
return resultado.autorizado ? 0 : 1;
|
|
195
73
|
}
|
|
196
|
-
// Calcula consumo real baseado nas operações realizadas
|
|
197
|
-
export function calcularConsumoReal(operacoes, linhasContrato, complexidade) {
|
|
198
|
-
const custoBase = {
|
|
199
|
-
parse: 1,
|
|
200
|
-
lexer: 1,
|
|
201
|
-
validar: 2,
|
|
202
|
-
semantico: 3,
|
|
203
|
-
gerar_ir: 2,
|
|
204
|
-
inspecionar: 2,
|
|
205
|
-
drift: 5,
|
|
206
|
-
impacto: 5,
|
|
207
|
-
sync: 5,
|
|
208
|
-
verificar: 10,
|
|
209
|
-
};
|
|
210
|
-
let total = 0;
|
|
211
|
-
for (const op of operacoes) {
|
|
212
|
-
total += custoBase[op] || 1;
|
|
213
|
-
}
|
|
214
|
-
// Multiplicador por complexidade
|
|
215
|
-
const multiplicador = {
|
|
216
|
-
baixa: 1,
|
|
217
|
-
media: 1.5,
|
|
218
|
-
alta: 2,
|
|
219
|
-
critica: 3,
|
|
220
|
-
};
|
|
221
|
-
// Fator de tamanho
|
|
222
|
-
const fatorTamanho = Math.max(1, Math.log10(linhasContrato + 1));
|
|
223
|
-
return Math.ceil(total * multiplicador[complexidade] * fatorTamanho);
|
|
224
|
-
}
|
|
225
|
-
// Determina complexidade baseada no contrato
|
|
226
|
-
export function determinarComplexidade(linhas, aninhamento) {
|
|
227
|
-
if (linhas > 500 || aninhamento > 5)
|
|
228
|
-
return "critica";
|
|
229
|
-
if (linhas > 200 || aninhamento > 3)
|
|
230
|
-
return "alta";
|
|
231
|
-
if (linhas > 50 || aninhamento > 1)
|
|
232
|
-
return "media";
|
|
233
|
-
return "baixa";
|
|
234
|
-
}
|
|
235
|
-
// Gera relatório de consumo para ser retornado ao MCP
|
|
236
|
-
export function gerarRelatorioConsumo(input, operacoesRealizadas, linhasContrato, sucesso) {
|
|
237
|
-
const timestampFim = new Date().toISOString();
|
|
238
|
-
const complexidade = determinarComplexidade(linhasContrato, 0);
|
|
239
|
-
const semasReal = calcularConsumoReal(operacoesRealizadas, linhasContrato, complexidade);
|
|
240
|
-
const consumo = {
|
|
241
|
-
id: randomUUID(),
|
|
242
|
-
sessao_mcp: input.sessao_mcp,
|
|
243
|
-
ferramenta: input.ferramenta,
|
|
244
|
-
comando_cli: input.comando_cli,
|
|
245
|
-
semas_estimado: input.semas_real, // valor que MCP estimou
|
|
246
|
-
semas_real: semasReal,
|
|
247
|
-
complexidade,
|
|
248
|
-
linhas_contrato: linhasContrato,
|
|
249
|
-
operacoes_realizadas: operacoesRealizadas,
|
|
250
|
-
timestamp_inicio: input.timestamp_inicio,
|
|
251
|
-
timestamp_fim: timestampFim,
|
|
252
|
-
status: sucesso ? "sucesso" : "erro",
|
|
253
|
-
};
|
|
254
|
-
return {
|
|
255
|
-
consumo,
|
|
256
|
-
ajuste_billing: semasReal !== input.semas_real,
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
// Wrapper para executar comando com reporte de consumo
|
|
260
|
-
export async function executarComReporte(sessaoMcp, ferramenta, comando, operacoes, fn) {
|
|
261
|
-
const timestampInicio = new Date().toISOString();
|
|
262
|
-
const linhasEstimadas = 100; // estimativa default
|
|
263
|
-
try {
|
|
264
|
-
const resultado = await fn();
|
|
265
|
-
// Se não tem sessão MCP, não reporta
|
|
266
|
-
if (!sessaoMcp) {
|
|
267
|
-
return { resultado, relatorio: null };
|
|
268
|
-
}
|
|
269
|
-
const complexidade = determinarComplexidade(linhasEstimadas, 0);
|
|
270
|
-
const relatorio = gerarRelatorioConsumo({
|
|
271
|
-
sessao_mcp: sessaoMcp,
|
|
272
|
-
ferramenta,
|
|
273
|
-
comando_cli: comando,
|
|
274
|
-
semas_real: 2, // estimativa MCP default
|
|
275
|
-
complexidade,
|
|
276
|
-
linhas_contrato: linhasEstimadas,
|
|
277
|
-
operacoes_realizadas: operacoes,
|
|
278
|
-
status: "sucesso",
|
|
279
|
-
timestamp_inicio: timestampInicio,
|
|
280
|
-
}, operacoes, linhasEstimadas, true);
|
|
281
|
-
return { resultado, relatorio };
|
|
282
|
-
}
|
|
283
|
-
catch (erro) {
|
|
284
|
-
const complexidadeErro = determinarComplexidade(linhasEstimadas, 0);
|
|
285
|
-
const relatorio = sessaoMcp
|
|
286
|
-
? gerarRelatorioConsumo({
|
|
287
|
-
sessao_mcp: sessaoMcp,
|
|
288
|
-
ferramenta,
|
|
289
|
-
comando_cli: comando,
|
|
290
|
-
semas_real: 2,
|
|
291
|
-
complexidade: complexidadeErro,
|
|
292
|
-
linhas_contrato: linhasEstimadas,
|
|
293
|
-
operacoes_realizadas: operacoes,
|
|
294
|
-
status: "erro",
|
|
295
|
-
timestamp_inicio: timestampInicio,
|
|
296
|
-
}, operacoes, linhasEstimadas, false)
|
|
297
|
-
: null;
|
|
298
|
-
throw { erro, relatorio };
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
// Exporta consumo no formato JSON para stdout (MCP lê)
|
|
302
|
-
export function exportarConsumoJson(relatorio) {
|
|
303
|
-
return JSON.stringify({
|
|
304
|
-
__sema_consumo: true,
|
|
305
|
-
...relatorio,
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
// Funcao principal reportarConsumo (vinculo contrato: cli.src.billing.reportarConsumo)
|
|
309
|
-
export function reportarConsumo(input) {
|
|
310
|
-
const complexidade = determinarComplexidade(input.linhas_contrato, 0);
|
|
311
|
-
const semasReal = calcularConsumoReal(input.operacoes_realizadas, input.linhas_contrato, complexidade);
|
|
312
|
-
const consumo = {
|
|
313
|
-
id: randomUUID(),
|
|
314
|
-
sessao_mcp: input.sessao_mcp,
|
|
315
|
-
ferramenta: input.ferramenta,
|
|
316
|
-
comando_cli: input.comando_cli,
|
|
317
|
-
semas_estimado: input.semas_real,
|
|
318
|
-
semas_real: semasReal,
|
|
319
|
-
complexidade,
|
|
320
|
-
linhas_contrato: input.linhas_contrato,
|
|
321
|
-
operacoes_realizadas: input.operacoes_realizadas,
|
|
322
|
-
timestamp_inicio: input.timestamp_inicio,
|
|
323
|
-
timestamp_fim: input.timestamp_fim,
|
|
324
|
-
status: input.status,
|
|
325
|
-
};
|
|
326
|
-
return {
|
|
327
|
-
consumo,
|
|
328
|
-
ajuste_billing: semasReal !== input.semas_real,
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
// Alias publico para vinculo do contrato: cli.src.billing.reportarConsumoCli
|
|
332
|
-
export function reportarConsumoCli(input) {
|
|
333
|
-
return reportarConsumo(input);
|
|
334
|
-
}
|
|
335
74
|
//# sourceMappingURL=index.js.map
|
package/dist/cliArgs.js
CHANGED
package/dist/comandos.js
CHANGED
|
@@ -1,107 +1,9 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.
|
|
2
|
-
// Descricao: dispatcher de comandos da CLI; consulte contratos/sema/
|
|
3
|
-
/**
|
|
4
|
-
* Registro de comandos da CLI Sema.
|
|
5
|
-
*
|
|
6
|
-
* Cada comando é um módulo separado com seu contrato .sema.
|
|
7
|
-
* Este arquivo é o dispatcher — o index.ts só importa daqui.
|
|
8
|
-
*
|
|
9
|
-
* NOVOS COMANDOS: adicione aqui, nunca no index.ts.
|
|
10
|
-
* O index.ts é só `principal()` com um switch fino que delega pra cá.
|
|
11
|
-
*/
|
|
12
|
-
import { configurarBridgeLocal, obterTokenMcpAmbiente, } from "./bridge.js";
|
|
13
|
-
import { gerarPacoteContextoChat, } from "./contexto.js";
|
|
14
|
-
import { comandoInit } from "./init/index.js";
|
|
1
|
+
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
+
// Descricao: dispatcher de comandos publicos da CLI local; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
|
|
15
3
|
import { comandoDev } from "./dev/index.js";
|
|
4
|
+
import { comandoInit } from "./init/index.js";
|
|
16
5
|
import { comandoSyncPrisma } from "./sync/index.js";
|
|
17
|
-
|
|
18
|
-
// ---------------------------------------------------------------------------
|
|
19
|
-
// Handlers dos novos comandos (modulares, com contrato .sema)
|
|
20
|
-
// ---------------------------------------------------------------------------
|
|
21
|
-
async function comandoMcpClient(_posicionais, _args, emJson) {
|
|
22
|
-
const resultado = {
|
|
23
|
-
comando: "mcp-client",
|
|
24
|
-
status: "BLOQUEADO",
|
|
25
|
-
sessao: { status: "BLOQUEADO" },
|
|
26
|
-
perfisAplicaveis: [],
|
|
27
|
-
proximoPasso: "sema --version; se existir, sema preflight resumo --json; se decisao=use_cli_local, usar comandos locais da CLI",
|
|
28
|
-
erro: "mcp_client_desativado_cli_local: CLI local nao envia workspace ao MCP remoto. Se sema --version falhar, pare. A IA nao acessa o painel Sema: peca ao humano para instalar a CLI pelo painel. Use sema resumo, docs-impacto, inspecionar, drift, impacto, validar e finalizar-mudanca pela CLI local. Web/chat sem workspace usa MCP remoto e sema_sync inline.",
|
|
29
|
-
};
|
|
30
|
-
if (emJson) {
|
|
31
|
-
console.log(JSON.stringify(resultado, null, 2));
|
|
32
|
-
return resultado.erro ? 1 : 0;
|
|
33
|
-
}
|
|
34
|
-
console.log(`mcp-client local: ${resultado.sessao.status}`);
|
|
35
|
-
console.log(`Perfis: ${resultado.perfisAplicaveis.join(", ") || "nenhum"}`);
|
|
36
|
-
console.log(`Próximo passo: ${resultado.proximoPasso}`);
|
|
37
|
-
if (resultado.erro) {
|
|
38
|
-
console.error(`Erro: ${resultado.erro}`);
|
|
39
|
-
}
|
|
40
|
-
return resultado.erro ? 1 : 0;
|
|
41
|
-
}
|
|
42
|
-
async function comandoBridgeConfig(_posicionais, args, emJson) {
|
|
43
|
-
const { token, endpoint } = obterTokenMcpAmbiente();
|
|
44
|
-
if (!token) {
|
|
45
|
-
console.error("Token MCP nao configurado. Use 'sema mcp-instalar-chave --stdin' primeiro.");
|
|
46
|
-
return 1;
|
|
47
|
-
}
|
|
48
|
-
const resultado = await configurarBridgeLocal({
|
|
49
|
-
endpointMcp: endpoint,
|
|
50
|
-
token,
|
|
51
|
-
persistir: true,
|
|
52
|
-
});
|
|
53
|
-
if (emJson) {
|
|
54
|
-
console.log(JSON.stringify(resultado, null, 2));
|
|
55
|
-
return resultado.configurado ? 0 : 1;
|
|
56
|
-
}
|
|
57
|
-
if (resultado.configurado) {
|
|
58
|
-
console.log(`Bridge configurada: ${resultado.status}`);
|
|
59
|
-
console.log(`Endpoint: ${endpoint}`);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
console.error(`Falha: ${resultado.erro ?? "desconhecido"}`);
|
|
63
|
-
}
|
|
64
|
-
return resultado.configurado ? 0 : 1;
|
|
65
|
-
}
|
|
66
|
-
async function comandoContextoChat(posicionais, args, emJson) {
|
|
67
|
-
const contratos = posicionais;
|
|
68
|
-
const formato = emJson ? "inline" : "ambos";
|
|
69
|
-
if (contratos.length === 0) {
|
|
70
|
-
console.error("Uso: sema contexto-chat <contrato1.sema> [contrato2.sema] ...");
|
|
71
|
-
return 1;
|
|
72
|
-
}
|
|
73
|
-
const entrada = {
|
|
74
|
-
contratos,
|
|
75
|
-
formatoSaida: formato,
|
|
76
|
-
};
|
|
77
|
-
const resultado = await gerarPacoteContextoChat(entrada);
|
|
78
|
-
if (emJson) {
|
|
79
|
-
console.log(JSON.stringify({
|
|
80
|
-
comando: "contexto-chat",
|
|
81
|
-
pacote: resultado.pacote,
|
|
82
|
-
prontoParaChat: resultado.prontoParaChat,
|
|
83
|
-
tamanhoBytes: resultado.tamanhoBytes,
|
|
84
|
-
arquivosGerados: resultado.arquivosGerados,
|
|
85
|
-
}, null, 2));
|
|
86
|
-
return resultado.prontoParaChat ? 0 : 1;
|
|
87
|
-
}
|
|
88
|
-
if (resultado.inlineTexto) {
|
|
89
|
-
console.log(resultado.inlineTexto);
|
|
90
|
-
}
|
|
91
|
-
if (resultado.arquivosGerados.length > 0) {
|
|
92
|
-
console.error(`\nArquivos gerados: ${resultado.arquivosGerados.join(", ")}`);
|
|
93
|
-
}
|
|
94
|
-
if (!resultado.prontoParaChat) {
|
|
95
|
-
console.error(`\n⚠️ Pacote excede o limite de ${resultado.tamanhoBytes} bytes para chat inline.`);
|
|
96
|
-
console.error("Use --json e copie o arquivo gerado.");
|
|
97
|
-
return 1;
|
|
98
|
-
}
|
|
99
|
-
return 0;
|
|
100
|
-
}
|
|
101
|
-
// ---------------------------------------------------------------------------
|
|
102
|
-
// Guarda de governança
|
|
103
|
-
// ---------------------------------------------------------------------------
|
|
104
|
-
async function comandoInitHandler(posicionais, args, emJson) {
|
|
6
|
+
async function comandoInitHandler(posicionais, args, _emJson) {
|
|
105
7
|
try {
|
|
106
8
|
await comandoInit([...posicionais, ...args]);
|
|
107
9
|
return 0;
|
|
@@ -110,7 +12,7 @@ async function comandoInitHandler(posicionais, args, emJson) {
|
|
|
110
12
|
return 1;
|
|
111
13
|
}
|
|
112
14
|
}
|
|
113
|
-
async function comandoDevHandler(posicionais, args,
|
|
15
|
+
async function comandoDevHandler(posicionais, args, _emJson) {
|
|
114
16
|
try {
|
|
115
17
|
await comandoDev([...posicionais, ...args]);
|
|
116
18
|
return 0;
|
|
@@ -119,7 +21,7 @@ async function comandoDevHandler(posicionais, args, emJson) {
|
|
|
119
21
|
return 1;
|
|
120
22
|
}
|
|
121
23
|
}
|
|
122
|
-
async function comandoSyncPrismaHandler(posicionais, args,
|
|
24
|
+
async function comandoSyncPrismaHandler(posicionais, args, _emJson) {
|
|
123
25
|
try {
|
|
124
26
|
await comandoSyncPrisma([...posicionais, ...args]);
|
|
125
27
|
return 0;
|
|
@@ -128,26 +30,15 @@ async function comandoSyncPrismaHandler(posicionais, args, emJson) {
|
|
|
128
30
|
return 1;
|
|
129
31
|
}
|
|
130
32
|
}
|
|
131
|
-
async function comandoSemaChatHandler(posicionais, args, emJson) {
|
|
132
|
-
return comandoSemaChat(posicionais, args, emJson);
|
|
133
|
-
}
|
|
134
33
|
async function comandoGuard(posicionais, _args, emJson) {
|
|
135
34
|
const { ativarGuarda, desativarGuarda, statusGuarda } = await import("./guard.js");
|
|
136
35
|
const baseProjeto = process.cwd();
|
|
137
36
|
const subcomando = posicionais[0] ?? "status";
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
case "off":
|
|
144
|
-
resultado = await desativarGuarda(baseProjeto);
|
|
145
|
-
break;
|
|
146
|
-
case "status":
|
|
147
|
-
default:
|
|
148
|
-
resultado = await statusGuarda(baseProjeto);
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
37
|
+
const resultado = subcomando === "on"
|
|
38
|
+
? await ativarGuarda(baseProjeto)
|
|
39
|
+
: subcomando === "off"
|
|
40
|
+
? await desativarGuarda(baseProjeto)
|
|
41
|
+
: await statusGuarda(baseProjeto);
|
|
151
42
|
if (emJson) {
|
|
152
43
|
console.log(JSON.stringify(resultado, null, 2));
|
|
153
44
|
}
|
|
@@ -163,17 +54,10 @@ async function comandoGuard(posicionais, _args, emJson) {
|
|
|
163
54
|
}
|
|
164
55
|
return resultado.sucesso ? 0 : 1;
|
|
165
56
|
}
|
|
166
|
-
// ---------------------------------------------------------------------------
|
|
167
|
-
// Registro
|
|
168
|
-
// ---------------------------------------------------------------------------
|
|
169
57
|
export const REGISTRO_COMANDOS = {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
"init": comandoInitHandler,
|
|
175
|
-
"dev": comandoDevHandler,
|
|
176
|
-
"sync": comandoSyncPrismaHandler,
|
|
177
|
-
"chat": comandoSemaChatHandler,
|
|
58
|
+
guard: comandoGuard,
|
|
59
|
+
init: comandoInitHandler,
|
|
60
|
+
dev: comandoDevHandler,
|
|
61
|
+
sync: comandoSyncPrismaHandler,
|
|
178
62
|
};
|
|
179
63
|
//# sourceMappingURL=comandos.js.map
|
package/dist/contexto.d.ts
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gerador de pacote de contexto para chats web (ChatGPT, Lovable, etc.).
|
|
3
|
-
*
|
|
4
|
-
* A CLI lê contratos e código selecionado do disco local e gera um pacote
|
|
5
|
-
* compacto que o usuário cola no chat. Isso elimina o sync manual — a CLI
|
|
6
|
-
* faz o trabalho pesado de I/O local e entrega um payload pronto.
|
|
7
|
-
*
|
|
8
|
-
* Contrato: contratos/sema/mcp_client_bridge.sema — task gerar_pacote_contexto_para_chat
|
|
9
|
-
*/
|
|
10
1
|
export type FormatoSaidaContexto = "inline" | "arquivo" | "ambos";
|
|
11
2
|
export interface PacoteContextoChat {
|
|
12
3
|
contratos: string[];
|