@semacode/cli 1.5.31 → 1.5.34
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/AGENTS.md +308 -0
- package/AGENT_CONTEXT_PACK.json +288 -0
- package/LICENSE +22 -0
- package/README.md +85 -144
- package/SEMA_BRIEF.curto.txt +11 -0
- package/SEMA_BRIEF.md +617 -0
- package/SEMA_BRIEF.micro.txt +9 -0
- package/SEMA_INDEX.json +9805 -0
- package/dist/billing/index.d.ts +46 -0
- package/dist/billing/index.js +143 -0
- package/dist/billing/index.js.map +1 -0
- package/dist/controleComercialSupabase.d.ts +7 -0
- package/dist/controleComercialSupabase.js +6 -0
- package/dist/controleComercialSupabase.js.map +1 -0
- package/dist/controleComercialSupabaseAdmin.d.ts +7 -0
- package/dist/controleComercialSupabaseAdmin.js +138 -0
- package/dist/controleComercialSupabaseAdmin.js.map +1 -0
- package/dist/controleComercialSupabaseCadastro.d.ts +4 -0
- package/dist/controleComercialSupabaseCadastro.js +85 -0
- package/dist/controleComercialSupabaseCadastro.js.map +1 -0
- package/dist/controleComercialSupabaseConstantes.d.ts +28 -0
- package/dist/controleComercialSupabaseConstantes.js +44 -0
- package/dist/controleComercialSupabaseConstantes.js.map +1 -0
- package/dist/controleComercialSupabaseConsumo.d.ts +2 -0
- package/dist/controleComercialSupabaseConsumo.js +77 -0
- package/dist/controleComercialSupabaseConsumo.js.map +1 -0
- package/dist/controleComercialSupabaseConta.d.ts +11 -0
- package/dist/controleComercialSupabaseConta.js +157 -0
- package/dist/controleComercialSupabaseConta.js.map +1 -0
- package/dist/controleComercialSupabaseProfiles.d.ts +4 -0
- package/dist/controleComercialSupabaseProfiles.js +55 -0
- package/dist/controleComercialSupabaseProfiles.js.map +1 -0
- package/dist/controleComercialSupabaseTipos.d.ts +3 -0
- package/dist/controleComercialSupabaseTipos.js +2 -0
- package/dist/controleComercialSupabaseTipos.js.map +1 -0
- package/dist/controleComercialSupabaseTiposAdmin.d.ts +152 -0
- package/dist/controleComercialSupabaseTiposAdmin.js +2 -0
- package/dist/controleComercialSupabaseTiposAdmin.js.map +1 -0
- package/dist/controleComercialSupabaseTiposBase.d.ts +169 -0
- package/dist/controleComercialSupabaseTiposBase.js +2 -0
- package/dist/controleComercialSupabaseTiposBase.js.map +1 -0
- package/dist/controleComercialSupabaseTiposConta.d.ts +220 -0
- package/dist/controleComercialSupabaseTiposConta.js +2 -0
- package/dist/controleComercialSupabaseTiposConta.js.map +1 -0
- package/dist/docs.js +72 -5
- package/dist/docs.js.map +1 -1
- package/dist/index.js +701 -185
- package/dist/index.js.map +1 -1
- package/dist/runnerValidacaoRemota.d.ts +9 -0
- package/dist/runnerValidacaoRemota.js +9 -0
- package/dist/runnerValidacaoRemota.js.map +1 -0
- package/dist/runnerValidacaoRemotaBateria.d.ts +10 -0
- package/dist/runnerValidacaoRemotaBateria.js +115 -0
- package/dist/runnerValidacaoRemotaBateria.js.map +1 -0
- package/dist/runnerValidacaoRemotaCli.d.ts +4 -0
- package/dist/runnerValidacaoRemotaCli.js +86 -0
- package/dist/runnerValidacaoRemotaCli.js.map +1 -0
- package/dist/runnerValidacaoRemotaComandos.d.ts +7 -0
- package/dist/runnerValidacaoRemotaComandos.js +123 -0
- package/dist/runnerValidacaoRemotaComandos.js.map +1 -0
- package/dist/runnerValidacaoRemotaEscopo.d.ts +4 -0
- package/dist/runnerValidacaoRemotaEscopo.js +79 -0
- package/dist/runnerValidacaoRemotaEscopo.js.map +1 -0
- package/dist/runnerValidacaoRemotaExecucao.d.ts +2 -0
- package/dist/runnerValidacaoRemotaExecucao.js +102 -0
- package/dist/runnerValidacaoRemotaExecucao.js.map +1 -0
- package/dist/runnerValidacaoRemotaRelatorio.d.ts +3 -0
- package/dist/runnerValidacaoRemotaRelatorio.js +93 -0
- package/dist/runnerValidacaoRemotaRelatorio.js.map +1 -0
- package/dist/runnerValidacaoRemotaServidor.d.ts +3 -0
- package/dist/runnerValidacaoRemotaServidor.js +157 -0
- package/dist/runnerValidacaoRemotaServidor.js.map +1 -0
- package/dist/runnerValidacaoRemotaSnapshot.d.ts +10 -0
- package/dist/runnerValidacaoRemotaSnapshot.js +217 -0
- package/dist/runnerValidacaoRemotaSnapshot.js.map +1 -0
- package/dist/runnerValidacaoRemotaTipos.d.ts +158 -0
- package/dist/runnerValidacaoRemotaTipos.js +35 -0
- package/dist/runnerValidacaoRemotaTipos.js.map +1 -0
- package/dist/runnerValidacaoRemotaUtil.d.ts +3 -0
- package/dist/runnerValidacaoRemotaUtil.js +18 -0
- package/dist/runnerValidacaoRemotaUtil.js.map +1 -0
- package/dist/runnerValidacaoRemotaWorkspace.d.ts +2 -0
- package/dist/runnerValidacaoRemotaWorkspace.js +110 -0
- package/dist/runnerValidacaoRemotaWorkspace.js.map +1 -0
- package/docs/AGENT_STARTER.md +109 -0
- package/docs/agentes-por-capacidade.md +42 -0
- package/docs/api.md +82 -0
- package/docs/cli.md +93 -0
- package/docs/como-ensinar-a-sema-para-ia.md +30 -0
- package/docs/deploy.md +45 -0
- package/docs/documentacao.md +88 -0
- package/docs/env.md +115 -0
- package/docs/extensao-vscode.md +42 -0
- package/docs/fluxo-pratico-ia-sema.md +195 -0
- package/docs/instalacao-e-primeiro-uso.md +48 -0
- package/docs/integracao-com-ia.md +38 -0
- package/docs/mcp.md +54 -0
- package/docs/pagamento-ponta-a-ponta.md +171 -0
- package/docs/persistencia-vendor-first.md +151 -0
- package/docs/prompt-base-ia-sema.md +111 -0
- package/docs/repositories.md +69 -0
- package/docs/rollback.md +24 -0
- package/docs/seguranca.md +126 -0
- package/docs/sintaxe.md +218 -0
- package/exemplos/profile_conversas.sema +165 -0
- package/llms-full.txt +35 -0
- package/llms.txt +18 -0
- package/node_modules/@sema/gerador-css/package.json +7 -14
- package/node_modules/@sema/gerador-dart/package.json +7 -14
- package/node_modules/@sema/gerador-html/package.json +7 -14
- package/node_modules/@sema/gerador-javascript/package.json +7 -14
- package/node_modules/@sema/gerador-lua/package.json +7 -14
- package/node_modules/@sema/gerador-python/package.json +7 -14
- package/node_modules/@sema/gerador-typescript/package.json +7 -14
- package/node_modules/@sema/nucleo/package.json +7 -10
- package/node_modules/@sema/padroes/package.json +7 -10
- package/package.json +75 -74
- package/exemplos/.prepack-generated +0 -1
- package/node_modules/@sema/gerador-css/src/index.ts +0 -605
- package/node_modules/@sema/gerador-css/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-dart/src/index.ts +0 -52
- package/node_modules/@sema/gerador-dart/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-html/src/index.ts +0 -185
- package/node_modules/@sema/gerador-html/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-javascript/src/index.ts +0 -461
- package/node_modules/@sema/gerador-javascript/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-lua/src/index.ts +0 -359
- package/node_modules/@sema/gerador-lua/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-python/src/index.ts +0 -850
- package/node_modules/@sema/gerador-python/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-typescript/src/index.ts +0 -876
- package/node_modules/@sema/gerador-typescript/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/nucleo/src/ast/tipos.ts +0 -207
- package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +0 -43
- package/node_modules/@sema/nucleo/src/diagnosticos/melhorador.ts +0 -130
- package/node_modules/@sema/nucleo/src/formatador/index.ts +0 -530
- package/node_modules/@sema/nucleo/src/index.ts +0 -184
- package/node_modules/@sema/nucleo/src/ir/conversor.ts +0 -1037
- package/node_modules/@sema/nucleo/src/ir/modelos.ts +0 -403
- package/node_modules/@sema/nucleo/src/lexer/lexer.ts +0 -166
- package/node_modules/@sema/nucleo/src/lexer/tokens.ts +0 -79
- package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +0 -41
- package/node_modules/@sema/nucleo/src/parser/parser.ts +0 -936
- package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +0 -379
- package/node_modules/@sema/nucleo/src/semantico/analisador.ts +0 -3126
- package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +0 -665
- package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +0 -362
- package/node_modules/@sema/nucleo/src/util/arquivos.ts +0 -28
- package/node_modules/@sema/nucleo/tsconfig.json +0 -9
- package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/padroes/src/index.ts +0 -382
- package/node_modules/@sema/padroes/tsconfig.json +0 -9
- package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { Server } from "node:http";
|
|
2
|
+
export type ModoVerificacaoRemota = "CONTRATOS_APENAS" | "CODIGO_SELECIONADO" | "CODIGO_COMPLETO";
|
|
3
|
+
export type StatusJobVerificacao = "APROVADO" | "BLOQUEADO" | "FALHOU";
|
|
4
|
+
export type AmbienteRunner = "VPS" | "WORKER_CONTAINER" | "WORKTREE_ISOLADO";
|
|
5
|
+
export interface ArquivoSnapshotRemoto {
|
|
6
|
+
caminho: string;
|
|
7
|
+
conteudo: string;
|
|
8
|
+
tipo?: string;
|
|
9
|
+
hash?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ComandoProjetoRemoto {
|
|
12
|
+
comando: string;
|
|
13
|
+
args?: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface SnapshotProjetoRemoto {
|
|
16
|
+
origem: string;
|
|
17
|
+
tenant: string;
|
|
18
|
+
modo: ModoVerificacaoRemota;
|
|
19
|
+
contratos: ArquivoSnapshotRemoto[];
|
|
20
|
+
codigo: ArquivoSnapshotRemoto[];
|
|
21
|
+
documentacao: ArquivoSnapshotRemoto[];
|
|
22
|
+
indice: string[];
|
|
23
|
+
segredos_detectados: string[];
|
|
24
|
+
politica_segredos: string;
|
|
25
|
+
contrato_alvo?: string;
|
|
26
|
+
comandos_projeto: ComandoProjetoRemoto[];
|
|
27
|
+
}
|
|
28
|
+
export interface WorkspaceRunner {
|
|
29
|
+
id: string;
|
|
30
|
+
ambiente: AmbienteRunner;
|
|
31
|
+
caminho: string;
|
|
32
|
+
tenant: string;
|
|
33
|
+
isolamento: string;
|
|
34
|
+
expira_em: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ArtefatoVerificacaoRemota {
|
|
37
|
+
nome: string;
|
|
38
|
+
tipo: string;
|
|
39
|
+
caminho: string;
|
|
40
|
+
hash: string;
|
|
41
|
+
publico: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface ComandoExecutadoRunner {
|
|
44
|
+
nome: string;
|
|
45
|
+
args: string[];
|
|
46
|
+
codigoSaida: number;
|
|
47
|
+
stdoutArquivo: string;
|
|
48
|
+
stderrArquivo: string;
|
|
49
|
+
duracaoMs: number;
|
|
50
|
+
sucesso: boolean;
|
|
51
|
+
}
|
|
52
|
+
export type EscopoDriftRunner = "projeto" | "nao_executado";
|
|
53
|
+
export interface EscopoEvidenciaRemota {
|
|
54
|
+
origem_snapshot: string;
|
|
55
|
+
tenant: string;
|
|
56
|
+
workspace_id: string;
|
|
57
|
+
workspace_caminho: string;
|
|
58
|
+
modo_verificacao: ModoVerificacaoRemota;
|
|
59
|
+
contrato_alvo: string | null;
|
|
60
|
+
entrada_sema: string;
|
|
61
|
+
escopo_drift: EscopoDriftRunner;
|
|
62
|
+
fontes_conclusao: string[];
|
|
63
|
+
codigo_verificado: boolean;
|
|
64
|
+
testes_projeto_executados: boolean;
|
|
65
|
+
comando_drift: string;
|
|
66
|
+
conclusao_limpa_autorizada: boolean;
|
|
67
|
+
ressalva_escopo: string;
|
|
68
|
+
}
|
|
69
|
+
export interface RelatorioVerificacaoRemota {
|
|
70
|
+
job_id: string;
|
|
71
|
+
modo: ModoVerificacaoRemota;
|
|
72
|
+
status: StatusJobVerificacao;
|
|
73
|
+
score_semantico: number;
|
|
74
|
+
diagnosticos: string[];
|
|
75
|
+
avisos_alta_severidade: string[];
|
|
76
|
+
comandos_executados: ComandoExecutadoRunner[];
|
|
77
|
+
artefatos: ArtefatoVerificacaoRemota[];
|
|
78
|
+
escopo_evidencia: EscopoEvidenciaRemota;
|
|
79
|
+
resumo_ia: string;
|
|
80
|
+
}
|
|
81
|
+
export interface ResultadoRecebimentoSnapshot {
|
|
82
|
+
snapshot: SnapshotProjetoRemoto;
|
|
83
|
+
modo_verificacao: ModoVerificacaoRemota;
|
|
84
|
+
pronto_para_workspace: boolean;
|
|
85
|
+
bloqueios: string[];
|
|
86
|
+
}
|
|
87
|
+
export interface ResultadoProvisionamentoWorkspace {
|
|
88
|
+
workspace: WorkspaceRunner;
|
|
89
|
+
isolamento_ok: boolean;
|
|
90
|
+
limpeza_agendada: boolean;
|
|
91
|
+
bloqueios: string[];
|
|
92
|
+
}
|
|
93
|
+
export interface ResultadoPublicacaoRelatorio {
|
|
94
|
+
resumo_ia: string;
|
|
95
|
+
url_relatorio: string;
|
|
96
|
+
artefatos_publicados: ArtefatoVerificacaoRemota[];
|
|
97
|
+
redacao_ok: boolean;
|
|
98
|
+
bloqueios: string[];
|
|
99
|
+
}
|
|
100
|
+
export interface ResultadoFechamentoJob {
|
|
101
|
+
concluido: boolean;
|
|
102
|
+
pode_liberar: boolean;
|
|
103
|
+
decisao_agente: "continuar" | "continuar_com_ressalva" | "parar" | "chamar_humano";
|
|
104
|
+
proximas_acoes: string[];
|
|
105
|
+
bloqueios: string[];
|
|
106
|
+
}
|
|
107
|
+
export interface ResultadoRunnerValidacaoRemota {
|
|
108
|
+
comando: "runner validar-remoto";
|
|
109
|
+
sucesso: boolean;
|
|
110
|
+
status: StatusJobVerificacao;
|
|
111
|
+
podeLiberar: boolean;
|
|
112
|
+
jobId: string;
|
|
113
|
+
modo: ModoVerificacaoRemota;
|
|
114
|
+
snapshot: {
|
|
115
|
+
origem: string;
|
|
116
|
+
tenant: string;
|
|
117
|
+
contratos: number;
|
|
118
|
+
codigo: number;
|
|
119
|
+
documentacao: number;
|
|
120
|
+
};
|
|
121
|
+
workspace: WorkspaceRunner | null;
|
|
122
|
+
workspaceRemovido: boolean;
|
|
123
|
+
relatorio: RelatorioVerificacaoRemota;
|
|
124
|
+
publicacao: ResultadoPublicacaoRelatorio;
|
|
125
|
+
fechamento: ResultadoFechamentoJob;
|
|
126
|
+
relatorioArquivo: string;
|
|
127
|
+
}
|
|
128
|
+
export interface OpcoesRunnerValidacaoRemota {
|
|
129
|
+
saida: string;
|
|
130
|
+
cwd: string;
|
|
131
|
+
manterWorkspace: boolean;
|
|
132
|
+
modoOverride?: ModoVerificacaoRemota;
|
|
133
|
+
contratoAlvo?: string;
|
|
134
|
+
timeoutMs?: number;
|
|
135
|
+
}
|
|
136
|
+
export interface OpcoesServidorRunnerValidacaoRemota {
|
|
137
|
+
cwd: string;
|
|
138
|
+
host: string;
|
|
139
|
+
porta: number;
|
|
140
|
+
saida: string;
|
|
141
|
+
token?: string;
|
|
142
|
+
}
|
|
143
|
+
export interface ServidorRunnerValidacaoRemota {
|
|
144
|
+
server: Server;
|
|
145
|
+
host: string;
|
|
146
|
+
porta: number;
|
|
147
|
+
url: string;
|
|
148
|
+
authObrigatoria: boolean;
|
|
149
|
+
}
|
|
150
|
+
export interface EntradaSnapshotRemoto {
|
|
151
|
+
[key: string]: unknown;
|
|
152
|
+
}
|
|
153
|
+
export declare const MODOS_VALIDOS: Set<ModoVerificacaoRemota>;
|
|
154
|
+
export declare const AMBIENTE_PADRAO: AmbienteRunner;
|
|
155
|
+
export declare const TIMEOUT_COMANDO_PADRAO_MS = 120000;
|
|
156
|
+
export declare const PREFIXO_WORKSPACE = "sema-runner-";
|
|
157
|
+
export declare const DIRETORIOS_PROIBIDOS: Set<string>;
|
|
158
|
+
export declare const COMANDOS_PROJETO_PERMITIDOS: Set<string>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const MODOS_VALIDOS = new Set(["CONTRATOS_APENAS", "CODIGO_SELECIONADO", "CODIGO_COMPLETO"]);
|
|
2
|
+
export const AMBIENTE_PADRAO = "WORKTREE_ISOLADO";
|
|
3
|
+
export const TIMEOUT_COMANDO_PADRAO_MS = 120_000;
|
|
4
|
+
export const PREFIXO_WORKSPACE = "sema-runner-";
|
|
5
|
+
export const DIRETORIOS_PROIBIDOS = new Set([
|
|
6
|
+
".git",
|
|
7
|
+
".hg",
|
|
8
|
+
".svn",
|
|
9
|
+
".next",
|
|
10
|
+
".nuxt",
|
|
11
|
+
".turbo",
|
|
12
|
+
".cache",
|
|
13
|
+
".pytest_cache",
|
|
14
|
+
".venv",
|
|
15
|
+
"build",
|
|
16
|
+
"coverage",
|
|
17
|
+
"dist",
|
|
18
|
+
"node_modules",
|
|
19
|
+
"vendor",
|
|
20
|
+
]);
|
|
21
|
+
export const COMANDOS_PROJETO_PERMITIDOS = new Set([
|
|
22
|
+
"npm",
|
|
23
|
+
"pnpm",
|
|
24
|
+
"yarn",
|
|
25
|
+
"node",
|
|
26
|
+
"python",
|
|
27
|
+
"py",
|
|
28
|
+
"pytest",
|
|
29
|
+
"go",
|
|
30
|
+
"cargo",
|
|
31
|
+
"dotnet",
|
|
32
|
+
"mvn",
|
|
33
|
+
"gradle",
|
|
34
|
+
]);
|
|
35
|
+
//# sourceMappingURL=runnerValidacaoRemotaTipos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runnerValidacaoRemotaTipos.js","sourceRoot":"","sources":["../src/runnerValidacaoRemotaTipos.ts"],"names":[],"mappings":"AA4KA,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAwB,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAC3H,MAAM,CAAC,MAAM,eAAe,GAAmB,kBAAkB,CAAC;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC;AACjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IAC1C,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,eAAe;IACf,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,cAAc;IACd,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IACjD,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,QAAQ;IACR,KAAK;IACL,QAAQ;CACT,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { readFile, stat } from "node:fs/promises";
|
|
3
|
+
export function hashTexto(texto) {
|
|
4
|
+
return createHash("sha256").update(texto).digest("hex");
|
|
5
|
+
}
|
|
6
|
+
export async function hashArquivo(caminho) {
|
|
7
|
+
return hashTexto(await readFile(caminho, "utf8"));
|
|
8
|
+
}
|
|
9
|
+
export async function verificarArquivoExiste(caminho) {
|
|
10
|
+
try {
|
|
11
|
+
await stat(caminho);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=runnerValidacaoRemotaUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runnerValidacaoRemotaUtil.js","sourceRoot":"","sources":["../src/runnerValidacaoRemotaUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe;IAC/C,OAAO,SAAS,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAe;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { type AmbienteRunner, type ResultadoProvisionamentoWorkspace, type SnapshotProjetoRemoto } from "./runnerValidacaoRemotaTipos.js";
|
|
2
|
+
export declare function provisionarWorkspaceRunner(snapshot: SnapshotProjetoRemoto, ambiente?: AmbienteRunner): Promise<ResultadoProvisionamentoWorkspace>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { mkdir, mkdtemp, writeFile } from "node:fs/promises";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { AMBIENTE_PADRAO, PREFIXO_WORKSPACE } from "./runnerValidacaoRemotaTipos.js";
|
|
6
|
+
import { dedupe } from "./runnerValidacaoRemotaSnapshot.js";
|
|
7
|
+
import { hashTexto } from "./runnerValidacaoRemotaUtil.js";
|
|
8
|
+
async function escreverArquivoRelativoSeguro(base, arquivo) {
|
|
9
|
+
const destino = path.resolve(base, ...arquivo.caminho.split("/"));
|
|
10
|
+
const relativo = path.relative(base, destino);
|
|
11
|
+
if (relativo.startsWith("..") || path.isAbsolute(relativo)) {
|
|
12
|
+
throw new Error(`Caminho fora do workspace recusado: ${arquivo.caminho}`);
|
|
13
|
+
}
|
|
14
|
+
await mkdir(path.dirname(destino), { recursive: true });
|
|
15
|
+
await writeFile(destino, arquivo.conteudo, "utf8");
|
|
16
|
+
}
|
|
17
|
+
function inferirOrigensContratos(contratos) {
|
|
18
|
+
const origens = contratos.map((arquivo) => {
|
|
19
|
+
const partes = arquivo.caminho.split("/");
|
|
20
|
+
if (partes[0] === "contratos" || partes[0] === "contracts" || partes[0] === "sema") {
|
|
21
|
+
return `./${partes[0]}`;
|
|
22
|
+
}
|
|
23
|
+
const dir = path.posix.dirname(arquivo.caminho);
|
|
24
|
+
return dir === "." ? "." : `./${dir}`;
|
|
25
|
+
});
|
|
26
|
+
return dedupe(origens);
|
|
27
|
+
}
|
|
28
|
+
function inferirDiretoriosCodigoSnapshot(codigo) {
|
|
29
|
+
const dirs = codigo.map((arquivo) => {
|
|
30
|
+
const partes = arquivo.caminho.split("/");
|
|
31
|
+
return partes.length > 1 ? `./${partes[0]}` : ".";
|
|
32
|
+
});
|
|
33
|
+
return dedupe(dirs);
|
|
34
|
+
}
|
|
35
|
+
function inferirFontesLegadoSnapshot(codigo) {
|
|
36
|
+
const fontes = new Set();
|
|
37
|
+
for (const arquivo of codigo) {
|
|
38
|
+
const caminho = arquivo.caminho.toLowerCase();
|
|
39
|
+
if (/\.(ts|tsx|js|jsx|mjs|cjs)$/.test(caminho)) {
|
|
40
|
+
fontes.add("typescript");
|
|
41
|
+
}
|
|
42
|
+
if (caminho.endsWith(".py")) {
|
|
43
|
+
fontes.add("python");
|
|
44
|
+
}
|
|
45
|
+
if (caminho.endsWith(".dart")) {
|
|
46
|
+
fontes.add("dart");
|
|
47
|
+
}
|
|
48
|
+
if (caminho.endsWith(".lua")) {
|
|
49
|
+
fontes.add("lua");
|
|
50
|
+
}
|
|
51
|
+
if (caminho.endsWith(".cs")) {
|
|
52
|
+
fontes.add("dotnet");
|
|
53
|
+
}
|
|
54
|
+
if (caminho.endsWith(".java")) {
|
|
55
|
+
fontes.add("java");
|
|
56
|
+
}
|
|
57
|
+
if (caminho.endsWith(".go")) {
|
|
58
|
+
fontes.add("go");
|
|
59
|
+
}
|
|
60
|
+
if (caminho.endsWith(".rs")) {
|
|
61
|
+
fontes.add("rust");
|
|
62
|
+
}
|
|
63
|
+
if (/\.(cpp|cc|cxx|hpp|h)$/.test(caminho)) {
|
|
64
|
+
fontes.add("cpp");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return [...fontes].sort((a, b) => a.localeCompare(b, "pt-BR"));
|
|
68
|
+
}
|
|
69
|
+
export async function provisionarWorkspaceRunner(snapshot, ambiente = AMBIENTE_PADRAO) {
|
|
70
|
+
const caminho = await mkdtemp(path.join(os.tmpdir(), PREFIXO_WORKSPACE));
|
|
71
|
+
const workspace = {
|
|
72
|
+
id: randomUUID(),
|
|
73
|
+
ambiente,
|
|
74
|
+
caminho,
|
|
75
|
+
tenant: snapshot.tenant,
|
|
76
|
+
isolamento: "tmpdir_efemero_sem_home_host_sem_docker_socket",
|
|
77
|
+
expira_em: new Date(Date.now() + 60 * 60 * 1000).toISOString(),
|
|
78
|
+
};
|
|
79
|
+
for (const arquivo of [...snapshot.contratos, ...snapshot.codigo, ...snapshot.documentacao]) {
|
|
80
|
+
await escreverArquivoRelativoSeguro(caminho, arquivo);
|
|
81
|
+
}
|
|
82
|
+
await mkdir(path.join(caminho, ".sema-runner"), { recursive: true });
|
|
83
|
+
await writeFile(path.join(caminho, ".sema-runner", "snapshot.json"), `${JSON.stringify({
|
|
84
|
+
origem: snapshot.origem,
|
|
85
|
+
tenant: snapshot.tenant,
|
|
86
|
+
modo: snapshot.modo,
|
|
87
|
+
indice: snapshot.indice,
|
|
88
|
+
contratos: snapshot.contratos.map((arquivo) => ({ caminho: arquivo.caminho, hash: hashTexto(arquivo.conteudo) })),
|
|
89
|
+
codigo: snapshot.codigo.map((arquivo) => ({ caminho: arquivo.caminho, hash: hashTexto(arquivo.conteudo) })),
|
|
90
|
+
documentacao: snapshot.documentacao.map((arquivo) => ({ caminho: arquivo.caminho, hash: hashTexto(arquivo.conteudo) })),
|
|
91
|
+
}, null, 2)}\n`, "utf8");
|
|
92
|
+
await writeFile(path.join(caminho, "sema.config.json"), `${JSON.stringify({
|
|
93
|
+
origens: inferirOrigensContratos(snapshot.contratos),
|
|
94
|
+
saida: "./generated",
|
|
95
|
+
alvos: ["typescript"],
|
|
96
|
+
alvoPadrao: "typescript",
|
|
97
|
+
framework: "base",
|
|
98
|
+
estruturaSaida: "modulos",
|
|
99
|
+
diretoriosCodigo: inferirDiretoriosCodigoSnapshot(snapshot.codigo),
|
|
100
|
+
fontesLegado: inferirFontesLegadoSnapshot(snapshot.codigo),
|
|
101
|
+
modoAdocao: "incremental",
|
|
102
|
+
}, null, 2)}\n`, "utf8");
|
|
103
|
+
return {
|
|
104
|
+
workspace,
|
|
105
|
+
isolamento_ok: true,
|
|
106
|
+
limpeza_agendada: true,
|
|
107
|
+
bloqueios: [],
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=runnerValidacaoRemotaWorkspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runnerValidacaoRemotaWorkspace.js","sourceRoot":"","sources":["../src/runnerValidacaoRemotaWorkspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# AGENT_STARTER
|
|
2
|
+
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Use este texto como starter curto para qualquer IA antes de editar `.sema`.
|
|
10
|
+
|
|
11
|
+
Ordem canonica de entrada no repo:
|
|
12
|
+
|
|
13
|
+
1. `llms.txt`
|
|
14
|
+
2. `SEMA_BRIEF.md`
|
|
15
|
+
3. `SEMA_INDEX.json`
|
|
16
|
+
4. `AGENTS.md`
|
|
17
|
+
5. `README.md`
|
|
18
|
+
|
|
19
|
+
Roteamento por capacidade:
|
|
20
|
+
|
|
21
|
+
- IA pequena ou gratuita: `llms.txt` -> `SEMA_BRIEF.micro.txt` -> `SEMA_INDEX.json`
|
|
22
|
+
- IA média: `llms.txt` -> `SEMA_BRIEF.curto.txt` -> `SEMA_INDEX.json` -> `README.md`
|
|
23
|
+
- IA grande ou com tool use: `llms-full.txt` -> `SEMA_BRIEF.md` -> `SEMA_INDEX.json` -> `AGENTS.md` -> `README.md`
|
|
24
|
+
|
|
25
|
+
Tres modos de uso da Sema:
|
|
26
|
+
|
|
27
|
+
- projeto novo: modele, valide, compile e verifique antes de subir código derivado
|
|
28
|
+
- projeto já semantizado: inspecione, leia resumo, rode drift e gere contexto antes de editar
|
|
29
|
+
- legado sem Sema: importe, revise o rascunho, formate, valide e use drift como arbitro da adoção incremental
|
|
30
|
+
|
|
31
|
+
Para manter os artefatos gerados da raiz sincronizados:
|
|
32
|
+
|
|
33
|
+
- `sema sync-ai-entrypoints --json`
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
Voce esta trabalhando com Sema, um contrato semantico IA-first para agentes operarem software vivo em backend e front consumer.
|
|
37
|
+
|
|
38
|
+
Importante:
|
|
39
|
+
- a Sema e protocolo de governanca semantica desenhado para IA, nao para ergonomia humana
|
|
40
|
+
- humanos sao autores/aprovadores; agentes sao os consumidores primarios do contrato
|
|
41
|
+
- a Sema funciona como camada de navegacao operacional para agente, nao como runtime magico
|
|
42
|
+
- leitura humana e bonus toleravel, nao centro do produto
|
|
43
|
+
- a Sema modela contratos, estados, fluxos, erros, efeitos, garantias, vinculos e execucao
|
|
44
|
+
- a Sema gera codigo e scaffolding real para TypeScript, Python e Dart
|
|
45
|
+
- a Sema usa `importar` para bootstrap revisavel, nao para contrato final automatico
|
|
46
|
+
- a Sema usa `drift` para medir diferenca entre contrato e codigo vivo
|
|
47
|
+
- a Sema usa `impl` para ligar task a simbolo real do runtime
|
|
48
|
+
- a Sema usa `resumo` e `prompt-curto` para IA pequena ou gratuita
|
|
49
|
+
- a Sema pode servir de base para interfaces graficas elegantes e coerentes
|
|
50
|
+
- a primeira onda consumer oficial agora cobre `Next.js consumer`, `React/Vite consumer`, `Angular consumer` e `flutter-consumer`
|
|
51
|
+
- esses slices oficiais cobrem `consumer bridge + superficies rastreaveis`, nao geracao completa de UI
|
|
52
|
+
- a proxima camada semantica de front (`screen`, `action`, `query`, `form`, `navigation`) esta documentada como roadmap, nao como sintaxe oficial ja suportada
|
|
53
|
+
- trate a Sema como cerebro semantico da aplicacao, nao como gerador magico de front-end pronto
|
|
54
|
+
- nao cobre da Sema persistencia real, runtime ou smoke test automatico; isso continua sendo engenharia viva
|
|
55
|
+
- se a tarefa envolver UI, priorize `appRoutes`, `consumerSurfaces` e `consumerBridges` antes de abrir arquivo aleatorio
|
|
56
|
+
- evite pedir HTML unico solto quando a intencao for testar a Sema de verdade
|
|
57
|
+
|
|
58
|
+
Regras:
|
|
59
|
+
- nao invente sintaxe fora da gramatica e dos exemplos oficiais
|
|
60
|
+
- se a IA for pequena, comece em `sema resumo` e `briefing.min.json`
|
|
61
|
+
- trate `ir --json` como fonte de verdade semantica
|
|
62
|
+
- trate `diagnosticos --json` como fonte de correcao
|
|
63
|
+
- use `sema formatar` como fonte unica de estilo
|
|
64
|
+
- preserve a intencao do contrato
|
|
65
|
+
- nao cobre da Sema adivinhacao de negocio que nao esta no contrato nem no codigo
|
|
66
|
+
|
|
67
|
+
Comandos essenciais:
|
|
68
|
+
- resumo por capacidade: `sema resumo <arquivo-ou-pasta> [--micro|--curto|--medio] [--para <resumo|onboarding|review|mudanca|bug|arquitetura>]`
|
|
69
|
+
- prompt curto: `sema prompt-curto <arquivo-ou-pasta> [--micro|--curto|--medio] [--para <resumo|onboarding|review|mudanca|bug|arquitetura>]`
|
|
70
|
+
- contexto completo do modulo: `sema contexto-ia <arquivo.sema>`
|
|
71
|
+
- estrutura sintatica: `sema ast <arquivo.sema> --json`
|
|
72
|
+
- estrutura semantica: `sema ir <arquivo.sema> --json`
|
|
73
|
+
- validacao: `sema validar <arquivo.sema> --json`
|
|
74
|
+
- diagnosticos: `sema diagnosticos <arquivo.sema> --json`
|
|
75
|
+
- formatacao: `sema formatar <arquivo.sema>`
|
|
76
|
+
- importacao assistida de legado: `sema importar <nestjs|fastapi|flask|nextjs|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer|firebase|typescript|python|dart|dotnet|java|go|rust|cpp> <diretorio> --saida <diretorio>`
|
|
77
|
+
- geracao de codigo: `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart> --saida <diretorio>`
|
|
78
|
+
- verificacao final: `sema verificar <arquivo-ou-pasta> [--json]`
|
|
79
|
+
|
|
80
|
+
Regra pratica de ouro:
|
|
81
|
+
- se a tarefa pedir codigo derivado, `sema compilar` e obrigatorio
|
|
82
|
+
- se a tarefa partir de projeto que nao nasceu com Sema, `sema importar` deve entrar antes da lapidacao semantica
|
|
83
|
+
- se a tarefa pedir apenas leitura ou correcao sem gerar codigo, `sema compilar` pode ficar fora
|
|
84
|
+
|
|
85
|
+
Antes de editar:
|
|
86
|
+
1. leia README, docs de IA e um exemplo oficial parecido
|
|
87
|
+
2. se a IA for pequena, rode `sema resumo <arquivo> --micro`
|
|
88
|
+
3. se a tarefa pedir contexto mais rico, consulte `drift`, `briefing.min.json` e depois AST/IR
|
|
89
|
+
|
|
90
|
+
Depois de editar:
|
|
91
|
+
1. rode `sema formatar`
|
|
92
|
+
2. rode `sema validar --json`
|
|
93
|
+
3. se houver falha, use `diagnosticos --json`
|
|
94
|
+
4. se a tarefa pedir codigo derivado, rode `sema compilar`
|
|
95
|
+
5. feche com `sema verificar <arquivo-ou-pasta> --json`
|
|
96
|
+
|
|
97
|
+
Priorize sempre:
|
|
98
|
+
- exemplos oficiais
|
|
99
|
+
- JSON da CLI
|
|
100
|
+
- consistencia semantica
|
|
101
|
+
|
|
102
|
+
Nao improvise quando faltar contexto.
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Documentos de apoio:
|
|
106
|
+
|
|
107
|
+
- [como-ensinar-a-sema-para-ia.md](./como-ensinar-a-sema-para-ia.md)
|
|
108
|
+
- [prompt-base-ia-sema.md](./prompt-base-ia-sema.md)
|
|
109
|
+
- [fluxo-pratico-ia-sema.md](./fluxo-pratico-ia-sema.md)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Agentes por capacidade
|
|
2
|
+
|
|
3
|
+
Sema deve funcionar em agentes fortes, médios e fracos. A diferença não é só tamanho de contexto; é disciplina operacional.
|
|
4
|
+
|
|
5
|
+
## Fraca
|
|
6
|
+
|
|
7
|
+
Use para Copilot em modo simples, Cline/Roo com pouco contexto, modelos locais pequenos e agentes que ignoram instrução longa.
|
|
8
|
+
|
|
9
|
+
- Entrada: `SEMA_BOOT.md` -> `SEMA_SMALL_MODEL.md` -> `SEMA_BRIEF.micro.txt`.
|
|
10
|
+
- Não abrir AST/IR completos no começo.
|
|
11
|
+
- Não editar se Sema não respondeu.
|
|
12
|
+
- Não pedir para MCP remoto ler pasta local.
|
|
13
|
+
|
|
14
|
+
## Média
|
|
15
|
+
|
|
16
|
+
Use para agentes com bom contexto, mas sem garantia de seguir todos os gates.
|
|
17
|
+
|
|
18
|
+
- Entrada: `SEMA_BOOT.md` -> `AGENT_CONTEXT_PACK.json` -> `SEMA_BRIEF.curto.txt` -> `SEMA_INDEX.json`.
|
|
19
|
+
- Rodar docs-impacto antes de agir.
|
|
20
|
+
- Validar drift e contrato no fechamento.
|
|
21
|
+
|
|
22
|
+
## Forte
|
|
23
|
+
|
|
24
|
+
Use para Codex, Claude e agentes com tool use confiável.
|
|
25
|
+
|
|
26
|
+
- Entrada: `SEMA_BOOT.md` -> `AGENT_CONTEXT_PACK.json` -> `SEMA_BRIEF.md` -> `SEMA_INDEX.json`.
|
|
27
|
+
- Pode consumir AST/IR/drift completos.
|
|
28
|
+
- Ainda deve respeitar contrato primeiro e falha fechada.
|
|
29
|
+
|
|
30
|
+
## Idioma
|
|
31
|
+
|
|
32
|
+
A linguagem humana da resposta deve seguir o idioma do usuário e preservar acentos, cedilha, pontuação e símbolos esperados. A DSL .sema pode ter palavras-chave ASCII; isso não autoriza PT-BR sem acentos.
|
|
33
|
+
|
|
34
|
+
A gramática Sema pode ter palavras-chave ASCII. Isso não autoriza resposta humana sem acentos.
|
|
35
|
+
|
|
36
|
+
## Clientes
|
|
37
|
+
|
|
38
|
+
- copilot: .github/copilot-instructions.md, AGENTS.md, SEMA_BOOT.md. Capacidade padrão: media. VS Code/Copilot deve receber uma instrução curta e repetida no arquivo próprio, sem depender só do AGENTS.md.
|
|
39
|
+
- cline: .clinerules/00-sema.md, .clinerules, SEMA_BOOT.md. Capacidade padrão: fraca. Cline costuma obedecer melhor quando o gate Sema vem em arquivo curto; se .clinerules for arquivo legado, o Sema atualiza esse fallback.
|
|
40
|
+
- roo: .roo/rules/00-sema.md, AGENTS.md, SEMA_BOOT.md. Capacidade padrão: fraca. Roo Code deve começar por uma regra dedicada em .roo/rules antes de abrir arquivos longos.
|
|
41
|
+
- opencode: .opencode/instructions.md, AGENTS.md, SEMA_BOOT.md. Capacidade padrão: media. OpenCode deve receber a mesma regra curta em instructions.md quando a pasta .opencode já existir.
|
|
42
|
+
- generico: SEMA_BOOT.md, SEMA_SMALL_MODEL.md, AGENT_CONTEXT_PACK.json. Capacidade padrão: fraca. Qualquer agente sem integração específica começa pelo boot card e só sobe contexto se passar pelos gates.
|
package/docs/api.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# API and Operational Surfaces
|
|
2
|
+
|
|
3
|
+
## English
|
|
4
|
+
|
|
5
|
+
Sema's public repository exposes the open language, CLI, contracts, examples, and editor support. It does not expose the private hosted MCP control plane, account APIs, OAuth internals, dashboards, audit storage, or commercial runtime governance APIs.
|
|
6
|
+
|
|
7
|
+
### Public Surfaces
|
|
8
|
+
|
|
9
|
+
- CLI commands documented in `README.md`, `docs/README.md`, and `docs/profiles.md`.
|
|
10
|
+
- `.sema` contracts under `contratos/` and public examples under `exemplos/`.
|
|
11
|
+
- Release artifacts generated by the public release scripts.
|
|
12
|
+
- Editor support and local validation flows.
|
|
13
|
+
|
|
14
|
+
### Private Or Commercial Surfaces
|
|
15
|
+
|
|
16
|
+
- Hosted MCP endpoint and OAuth authorization flows.
|
|
17
|
+
- Account, project, usage, billing, dashboard, and audit APIs.
|
|
18
|
+
- Runtime governance, approval gates, private rule packs, and advanced artifact validation.
|
|
19
|
+
- Deployment secrets, environment files, local runbooks, and infrastructure-specific scripts.
|
|
20
|
+
|
|
21
|
+
### API Rule For Agents
|
|
22
|
+
|
|
23
|
+
When a change touches an endpoint, webhook, CLI command, or MCP tool, the agent must:
|
|
24
|
+
|
|
25
|
+
- declare or update the applicable `.sema` contract before code;
|
|
26
|
+
- validate authentication, authorization, tenant/workspace boundaries, idempotency, auditability, and rollback expectations;
|
|
27
|
+
- keep private endpoints and commercial control-plane details out of the public repository;
|
|
28
|
+
- run Sema validation and public repository boundary checks before release.
|
|
29
|
+
|
|
30
|
+
## Português
|
|
31
|
+
|
|
32
|
+
O repositório público do Sema expõe a linguagem aberta, CLI, contratos, exemplos e suporte de editor. Ele não expõe o control plane MCP hospedado, APIs de conta, detalhes internos de OAuth, dashboards, armazenamento de auditoria ou APIs comerciais de runtime governance.
|
|
33
|
+
|
|
34
|
+
### Superfícies Públicas
|
|
35
|
+
|
|
36
|
+
- Comandos da CLI documentados em `README.md`, `docs/README.md` e `docs/profiles.md`.
|
|
37
|
+
- Contratos `.sema` em `contratos/` e exemplos públicos em `exemplos/`.
|
|
38
|
+
- Artefatos de release gerados pelos scripts públicos de release.
|
|
39
|
+
- Suporte de editor e fluxos locais de validação.
|
|
40
|
+
|
|
41
|
+
### Superfícies Privadas Ou Comerciais
|
|
42
|
+
|
|
43
|
+
- Endpoint MCP hospedado e fluxos de autorização OAuth.
|
|
44
|
+
- APIs de conta, projeto, uso, cobrança, dashboard e auditoria.
|
|
45
|
+
- Runtime governance, approval gates, rule packs privados e validação avançada de artefatos.
|
|
46
|
+
- Segredos de deploy, arquivos de ambiente, runbooks locais e scripts específicos de infraestrutura.
|
|
47
|
+
|
|
48
|
+
### Regra De API Para Agentes
|
|
49
|
+
|
|
50
|
+
Quando uma mudança toca endpoint, webhook, comando de CLI ou ferramenta MCP, a IA deve:
|
|
51
|
+
|
|
52
|
+
- declarar ou atualizar o contrato `.sema` aplicável antes do código;
|
|
53
|
+
- validar autenticação, autorização, fronteira de tenant/workspace, idempotência, auditoria e expectativa de rollback;
|
|
54
|
+
- manter endpoints privados e detalhes comerciais do control plane fora do repositório público;
|
|
55
|
+
- rodar validação Sema e checagem de fronteira pública antes do release.
|
|
56
|
+
|
|
57
|
+
## Español
|
|
58
|
+
|
|
59
|
+
El repositorio público de Sema expone el lenguaje abierto, CLI, contratos, ejemplos y soporte de editor. No expone el control plane MCP hospedado, APIs de cuenta, detalles internos de OAuth, dashboards, almacenamiento de auditoría ni APIs comerciales de runtime governance.
|
|
60
|
+
|
|
61
|
+
### Superficies Públicas
|
|
62
|
+
|
|
63
|
+
- Comandos de la CLI documentados en `README.md`, `docs/README.md` y `docs/profiles.md`.
|
|
64
|
+
- Contratos `.sema` en `contratos/` y ejemplos públicos en `exemplos/`.
|
|
65
|
+
- Artefactos de release generados por los scripts públicos de release.
|
|
66
|
+
- Soporte de editor y flujos locales de validación.
|
|
67
|
+
|
|
68
|
+
### Superficies Privadas O Comerciales
|
|
69
|
+
|
|
70
|
+
- Endpoint MCP hospedado y flujos de autorización OAuth.
|
|
71
|
+
- APIs de cuenta, proyecto, uso, facturación, dashboard y auditoría.
|
|
72
|
+
- Runtime governance, approval gates, rule packs privados y validación avanzada de artefactos.
|
|
73
|
+
- Secretos de deploy, archivos de entorno, runbooks locales y scripts específicos de infraestructura.
|
|
74
|
+
|
|
75
|
+
### Regla De API Para Agentes
|
|
76
|
+
|
|
77
|
+
Cuando un cambio toca un endpoint, webhook, comando de CLI o herramienta MCP, la IA debe:
|
|
78
|
+
|
|
79
|
+
- declarar o actualizar el contrato `.sema` aplicable antes del código;
|
|
80
|
+
- validar autenticación, autorización, frontera de tenant/workspace, idempotencia, auditoría y expectativa de rollback;
|
|
81
|
+
- mantener endpoints privados y detalles comerciales del control plane fuera del repositorio público;
|
|
82
|
+
- ejecutar validación Sema y chequeo de frontera pública antes del release.
|