@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.
Files changed (160) hide show
  1. package/AGENTS.md +308 -0
  2. package/AGENT_CONTEXT_PACK.json +288 -0
  3. package/LICENSE +22 -0
  4. package/README.md +85 -144
  5. package/SEMA_BRIEF.curto.txt +11 -0
  6. package/SEMA_BRIEF.md +617 -0
  7. package/SEMA_BRIEF.micro.txt +9 -0
  8. package/SEMA_INDEX.json +9805 -0
  9. package/dist/billing/index.d.ts +46 -0
  10. package/dist/billing/index.js +143 -0
  11. package/dist/billing/index.js.map +1 -0
  12. package/dist/controleComercialSupabase.d.ts +7 -0
  13. package/dist/controleComercialSupabase.js +6 -0
  14. package/dist/controleComercialSupabase.js.map +1 -0
  15. package/dist/controleComercialSupabaseAdmin.d.ts +7 -0
  16. package/dist/controleComercialSupabaseAdmin.js +138 -0
  17. package/dist/controleComercialSupabaseAdmin.js.map +1 -0
  18. package/dist/controleComercialSupabaseCadastro.d.ts +4 -0
  19. package/dist/controleComercialSupabaseCadastro.js +85 -0
  20. package/dist/controleComercialSupabaseCadastro.js.map +1 -0
  21. package/dist/controleComercialSupabaseConstantes.d.ts +28 -0
  22. package/dist/controleComercialSupabaseConstantes.js +44 -0
  23. package/dist/controleComercialSupabaseConstantes.js.map +1 -0
  24. package/dist/controleComercialSupabaseConsumo.d.ts +2 -0
  25. package/dist/controleComercialSupabaseConsumo.js +77 -0
  26. package/dist/controleComercialSupabaseConsumo.js.map +1 -0
  27. package/dist/controleComercialSupabaseConta.d.ts +11 -0
  28. package/dist/controleComercialSupabaseConta.js +157 -0
  29. package/dist/controleComercialSupabaseConta.js.map +1 -0
  30. package/dist/controleComercialSupabaseProfiles.d.ts +4 -0
  31. package/dist/controleComercialSupabaseProfiles.js +55 -0
  32. package/dist/controleComercialSupabaseProfiles.js.map +1 -0
  33. package/dist/controleComercialSupabaseTipos.d.ts +3 -0
  34. package/dist/controleComercialSupabaseTipos.js +2 -0
  35. package/dist/controleComercialSupabaseTipos.js.map +1 -0
  36. package/dist/controleComercialSupabaseTiposAdmin.d.ts +152 -0
  37. package/dist/controleComercialSupabaseTiposAdmin.js +2 -0
  38. package/dist/controleComercialSupabaseTiposAdmin.js.map +1 -0
  39. package/dist/controleComercialSupabaseTiposBase.d.ts +169 -0
  40. package/dist/controleComercialSupabaseTiposBase.js +2 -0
  41. package/dist/controleComercialSupabaseTiposBase.js.map +1 -0
  42. package/dist/controleComercialSupabaseTiposConta.d.ts +220 -0
  43. package/dist/controleComercialSupabaseTiposConta.js +2 -0
  44. package/dist/controleComercialSupabaseTiposConta.js.map +1 -0
  45. package/dist/docs.js +72 -5
  46. package/dist/docs.js.map +1 -1
  47. package/dist/index.js +701 -185
  48. package/dist/index.js.map +1 -1
  49. package/dist/runnerValidacaoRemota.d.ts +9 -0
  50. package/dist/runnerValidacaoRemota.js +9 -0
  51. package/dist/runnerValidacaoRemota.js.map +1 -0
  52. package/dist/runnerValidacaoRemotaBateria.d.ts +10 -0
  53. package/dist/runnerValidacaoRemotaBateria.js +115 -0
  54. package/dist/runnerValidacaoRemotaBateria.js.map +1 -0
  55. package/dist/runnerValidacaoRemotaCli.d.ts +4 -0
  56. package/dist/runnerValidacaoRemotaCli.js +86 -0
  57. package/dist/runnerValidacaoRemotaCli.js.map +1 -0
  58. package/dist/runnerValidacaoRemotaComandos.d.ts +7 -0
  59. package/dist/runnerValidacaoRemotaComandos.js +123 -0
  60. package/dist/runnerValidacaoRemotaComandos.js.map +1 -0
  61. package/dist/runnerValidacaoRemotaEscopo.d.ts +4 -0
  62. package/dist/runnerValidacaoRemotaEscopo.js +79 -0
  63. package/dist/runnerValidacaoRemotaEscopo.js.map +1 -0
  64. package/dist/runnerValidacaoRemotaExecucao.d.ts +2 -0
  65. package/dist/runnerValidacaoRemotaExecucao.js +102 -0
  66. package/dist/runnerValidacaoRemotaExecucao.js.map +1 -0
  67. package/dist/runnerValidacaoRemotaRelatorio.d.ts +3 -0
  68. package/dist/runnerValidacaoRemotaRelatorio.js +93 -0
  69. package/dist/runnerValidacaoRemotaRelatorio.js.map +1 -0
  70. package/dist/runnerValidacaoRemotaServidor.d.ts +3 -0
  71. package/dist/runnerValidacaoRemotaServidor.js +157 -0
  72. package/dist/runnerValidacaoRemotaServidor.js.map +1 -0
  73. package/dist/runnerValidacaoRemotaSnapshot.d.ts +10 -0
  74. package/dist/runnerValidacaoRemotaSnapshot.js +217 -0
  75. package/dist/runnerValidacaoRemotaSnapshot.js.map +1 -0
  76. package/dist/runnerValidacaoRemotaTipos.d.ts +158 -0
  77. package/dist/runnerValidacaoRemotaTipos.js +35 -0
  78. package/dist/runnerValidacaoRemotaTipos.js.map +1 -0
  79. package/dist/runnerValidacaoRemotaUtil.d.ts +3 -0
  80. package/dist/runnerValidacaoRemotaUtil.js +18 -0
  81. package/dist/runnerValidacaoRemotaUtil.js.map +1 -0
  82. package/dist/runnerValidacaoRemotaWorkspace.d.ts +2 -0
  83. package/dist/runnerValidacaoRemotaWorkspace.js +110 -0
  84. package/dist/runnerValidacaoRemotaWorkspace.js.map +1 -0
  85. package/docs/AGENT_STARTER.md +109 -0
  86. package/docs/agentes-por-capacidade.md +42 -0
  87. package/docs/api.md +82 -0
  88. package/docs/cli.md +93 -0
  89. package/docs/como-ensinar-a-sema-para-ia.md +30 -0
  90. package/docs/deploy.md +45 -0
  91. package/docs/documentacao.md +88 -0
  92. package/docs/env.md +115 -0
  93. package/docs/extensao-vscode.md +42 -0
  94. package/docs/fluxo-pratico-ia-sema.md +195 -0
  95. package/docs/instalacao-e-primeiro-uso.md +48 -0
  96. package/docs/integracao-com-ia.md +38 -0
  97. package/docs/mcp.md +54 -0
  98. package/docs/pagamento-ponta-a-ponta.md +171 -0
  99. package/docs/persistencia-vendor-first.md +151 -0
  100. package/docs/prompt-base-ia-sema.md +111 -0
  101. package/docs/repositories.md +69 -0
  102. package/docs/rollback.md +24 -0
  103. package/docs/seguranca.md +126 -0
  104. package/docs/sintaxe.md +218 -0
  105. package/exemplos/profile_conversas.sema +165 -0
  106. package/llms-full.txt +35 -0
  107. package/llms.txt +18 -0
  108. package/node_modules/@sema/gerador-css/package.json +7 -14
  109. package/node_modules/@sema/gerador-dart/package.json +7 -14
  110. package/node_modules/@sema/gerador-html/package.json +7 -14
  111. package/node_modules/@sema/gerador-javascript/package.json +7 -14
  112. package/node_modules/@sema/gerador-lua/package.json +7 -14
  113. package/node_modules/@sema/gerador-python/package.json +7 -14
  114. package/node_modules/@sema/gerador-typescript/package.json +7 -14
  115. package/node_modules/@sema/nucleo/package.json +7 -10
  116. package/node_modules/@sema/padroes/package.json +7 -10
  117. package/package.json +75 -74
  118. package/exemplos/.prepack-generated +0 -1
  119. package/node_modules/@sema/gerador-css/src/index.ts +0 -605
  120. package/node_modules/@sema/gerador-css/tsconfig.json +0 -13
  121. package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +0 -1
  122. package/node_modules/@sema/gerador-dart/src/index.ts +0 -52
  123. package/node_modules/@sema/gerador-dart/tsconfig.json +0 -13
  124. package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +0 -1
  125. package/node_modules/@sema/gerador-html/src/index.ts +0 -185
  126. package/node_modules/@sema/gerador-html/tsconfig.json +0 -13
  127. package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +0 -1
  128. package/node_modules/@sema/gerador-javascript/src/index.ts +0 -461
  129. package/node_modules/@sema/gerador-javascript/tsconfig.json +0 -13
  130. package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +0 -1
  131. package/node_modules/@sema/gerador-lua/src/index.ts +0 -359
  132. package/node_modules/@sema/gerador-lua/tsconfig.json +0 -13
  133. package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +0 -1
  134. package/node_modules/@sema/gerador-python/src/index.ts +0 -850
  135. package/node_modules/@sema/gerador-python/tsconfig.json +0 -13
  136. package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +0 -1
  137. package/node_modules/@sema/gerador-typescript/src/index.ts +0 -876
  138. package/node_modules/@sema/gerador-typescript/tsconfig.json +0 -13
  139. package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +0 -1
  140. package/node_modules/@sema/nucleo/src/ast/tipos.ts +0 -207
  141. package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +0 -43
  142. package/node_modules/@sema/nucleo/src/diagnosticos/melhorador.ts +0 -130
  143. package/node_modules/@sema/nucleo/src/formatador/index.ts +0 -530
  144. package/node_modules/@sema/nucleo/src/index.ts +0 -184
  145. package/node_modules/@sema/nucleo/src/ir/conversor.ts +0 -1037
  146. package/node_modules/@sema/nucleo/src/ir/modelos.ts +0 -403
  147. package/node_modules/@sema/nucleo/src/lexer/lexer.ts +0 -166
  148. package/node_modules/@sema/nucleo/src/lexer/tokens.ts +0 -79
  149. package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +0 -41
  150. package/node_modules/@sema/nucleo/src/parser/parser.ts +0 -936
  151. package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +0 -379
  152. package/node_modules/@sema/nucleo/src/semantico/analisador.ts +0 -3126
  153. package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +0 -665
  154. package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +0 -362
  155. package/node_modules/@sema/nucleo/src/util/arquivos.ts +0 -28
  156. package/node_modules/@sema/nucleo/tsconfig.json +0 -9
  157. package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +0 -1
  158. package/node_modules/@sema/padroes/src/index.ts +0 -382
  159. package/node_modules/@sema/padroes/tsconfig.json +0 -9
  160. 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,3 @@
1
+ export declare function hashTexto(texto: string): string;
2
+ export declare function hashArquivo(caminho: string): Promise<string>;
3
+ export declare function verificarArquivoExiste(caminho: string): Promise<boolean>;
@@ -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.