@semacode/cli 1.5.31 → 1.5.32

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 (157) hide show
  1. package/AGENTS.md +294 -0
  2. package/AGENT_CONTEXT_PACK.json +164 -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 +616 -0
  7. package/SEMA_BRIEF.micro.txt +9 -0
  8. package/SEMA_INDEX.json +9393 -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/index.js +222 -46
  46. package/dist/index.js.map +1 -1
  47. package/dist/runnerValidacaoRemota.d.ts +9 -0
  48. package/dist/runnerValidacaoRemota.js +9 -0
  49. package/dist/runnerValidacaoRemota.js.map +1 -0
  50. package/dist/runnerValidacaoRemotaBateria.d.ts +10 -0
  51. package/dist/runnerValidacaoRemotaBateria.js +115 -0
  52. package/dist/runnerValidacaoRemotaBateria.js.map +1 -0
  53. package/dist/runnerValidacaoRemotaCli.d.ts +4 -0
  54. package/dist/runnerValidacaoRemotaCli.js +86 -0
  55. package/dist/runnerValidacaoRemotaCli.js.map +1 -0
  56. package/dist/runnerValidacaoRemotaComandos.d.ts +7 -0
  57. package/dist/runnerValidacaoRemotaComandos.js +123 -0
  58. package/dist/runnerValidacaoRemotaComandos.js.map +1 -0
  59. package/dist/runnerValidacaoRemotaEscopo.d.ts +4 -0
  60. package/dist/runnerValidacaoRemotaEscopo.js +79 -0
  61. package/dist/runnerValidacaoRemotaEscopo.js.map +1 -0
  62. package/dist/runnerValidacaoRemotaExecucao.d.ts +2 -0
  63. package/dist/runnerValidacaoRemotaExecucao.js +102 -0
  64. package/dist/runnerValidacaoRemotaExecucao.js.map +1 -0
  65. package/dist/runnerValidacaoRemotaRelatorio.d.ts +3 -0
  66. package/dist/runnerValidacaoRemotaRelatorio.js +93 -0
  67. package/dist/runnerValidacaoRemotaRelatorio.js.map +1 -0
  68. package/dist/runnerValidacaoRemotaServidor.d.ts +3 -0
  69. package/dist/runnerValidacaoRemotaServidor.js +157 -0
  70. package/dist/runnerValidacaoRemotaServidor.js.map +1 -0
  71. package/dist/runnerValidacaoRemotaSnapshot.d.ts +10 -0
  72. package/dist/runnerValidacaoRemotaSnapshot.js +217 -0
  73. package/dist/runnerValidacaoRemotaSnapshot.js.map +1 -0
  74. package/dist/runnerValidacaoRemotaTipos.d.ts +158 -0
  75. package/dist/runnerValidacaoRemotaTipos.js +35 -0
  76. package/dist/runnerValidacaoRemotaTipos.js.map +1 -0
  77. package/dist/runnerValidacaoRemotaUtil.d.ts +3 -0
  78. package/dist/runnerValidacaoRemotaUtil.js +18 -0
  79. package/dist/runnerValidacaoRemotaUtil.js.map +1 -0
  80. package/dist/runnerValidacaoRemotaWorkspace.d.ts +2 -0
  81. package/dist/runnerValidacaoRemotaWorkspace.js +110 -0
  82. package/dist/runnerValidacaoRemotaWorkspace.js.map +1 -0
  83. package/docs/AGENT_STARTER.md +109 -0
  84. package/docs/api.md +82 -0
  85. package/docs/cli.md +93 -0
  86. package/docs/como-ensinar-a-sema-para-ia.md +30 -0
  87. package/docs/deploy.md +45 -0
  88. package/docs/documentacao.md +88 -0
  89. package/docs/env.md +115 -0
  90. package/docs/extensao-vscode.md +42 -0
  91. package/docs/fluxo-pratico-ia-sema.md +187 -0
  92. package/docs/instalacao-e-primeiro-uso.md +48 -0
  93. package/docs/integracao-com-ia.md +24 -0
  94. package/docs/mcp.md +48 -0
  95. package/docs/pagamento-ponta-a-ponta.md +171 -0
  96. package/docs/persistencia-vendor-first.md +151 -0
  97. package/docs/prompt-base-ia-sema.md +111 -0
  98. package/docs/repositories.md +69 -0
  99. package/docs/rollback.md +24 -0
  100. package/docs/seguranca.md +126 -0
  101. package/docs/sintaxe.md +218 -0
  102. package/exemplos/profile_conversas.sema +165 -0
  103. package/llms-full.txt +35 -0
  104. package/llms.txt +18 -0
  105. package/node_modules/@sema/gerador-css/package.json +7 -14
  106. package/node_modules/@sema/gerador-dart/package.json +7 -14
  107. package/node_modules/@sema/gerador-html/package.json +7 -14
  108. package/node_modules/@sema/gerador-javascript/package.json +7 -14
  109. package/node_modules/@sema/gerador-lua/package.json +7 -14
  110. package/node_modules/@sema/gerador-python/package.json +7 -14
  111. package/node_modules/@sema/gerador-typescript/package.json +7 -14
  112. package/node_modules/@sema/nucleo/package.json +7 -10
  113. package/node_modules/@sema/padroes/package.json +7 -10
  114. package/package.json +75 -74
  115. package/exemplos/.prepack-generated +0 -1
  116. package/node_modules/@sema/gerador-css/src/index.ts +0 -605
  117. package/node_modules/@sema/gerador-css/tsconfig.json +0 -13
  118. package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +0 -1
  119. package/node_modules/@sema/gerador-dart/src/index.ts +0 -52
  120. package/node_modules/@sema/gerador-dart/tsconfig.json +0 -13
  121. package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +0 -1
  122. package/node_modules/@sema/gerador-html/src/index.ts +0 -185
  123. package/node_modules/@sema/gerador-html/tsconfig.json +0 -13
  124. package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +0 -1
  125. package/node_modules/@sema/gerador-javascript/src/index.ts +0 -461
  126. package/node_modules/@sema/gerador-javascript/tsconfig.json +0 -13
  127. package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +0 -1
  128. package/node_modules/@sema/gerador-lua/src/index.ts +0 -359
  129. package/node_modules/@sema/gerador-lua/tsconfig.json +0 -13
  130. package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +0 -1
  131. package/node_modules/@sema/gerador-python/src/index.ts +0 -850
  132. package/node_modules/@sema/gerador-python/tsconfig.json +0 -13
  133. package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +0 -1
  134. package/node_modules/@sema/gerador-typescript/src/index.ts +0 -876
  135. package/node_modules/@sema/gerador-typescript/tsconfig.json +0 -13
  136. package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +0 -1
  137. package/node_modules/@sema/nucleo/src/ast/tipos.ts +0 -207
  138. package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +0 -43
  139. package/node_modules/@sema/nucleo/src/diagnosticos/melhorador.ts +0 -130
  140. package/node_modules/@sema/nucleo/src/formatador/index.ts +0 -530
  141. package/node_modules/@sema/nucleo/src/index.ts +0 -184
  142. package/node_modules/@sema/nucleo/src/ir/conversor.ts +0 -1037
  143. package/node_modules/@sema/nucleo/src/ir/modelos.ts +0 -403
  144. package/node_modules/@sema/nucleo/src/lexer/lexer.ts +0 -166
  145. package/node_modules/@sema/nucleo/src/lexer/tokens.ts +0 -79
  146. package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +0 -41
  147. package/node_modules/@sema/nucleo/src/parser/parser.ts +0 -936
  148. package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +0 -379
  149. package/node_modules/@sema/nucleo/src/semantico/analisador.ts +0 -3126
  150. package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +0 -665
  151. package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +0 -362
  152. package/node_modules/@sema/nucleo/src/util/arquivos.ts +0 -28
  153. package/node_modules/@sema/nucleo/tsconfig.json +0 -9
  154. package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +0 -1
  155. package/node_modules/@sema/padroes/src/index.ts +0 -382
  156. package/node_modules/@sema/padroes/tsconfig.json +0 -9
  157. 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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAA6I,MAAM,iCAAiC,CAAC;AAChO,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,KAAK,UAAU,6BAA6B,CAAC,IAAY,EAAE,OAA8B;IACvF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAkC;IACjE,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACnF,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,+BAA+B,CAAC,MAA+B;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,2BAA2B,CAAC,MAA+B;IAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,QAA+B,EAC/B,WAA2B,eAAe;IAE1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACzE,MAAM,SAAS,GAAoB;QACjC,EAAE,EAAE,UAAU,EAAE;QAChB,QAAQ;QACR,OAAO;QACP,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,gDAAgD;QAC5D,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;KAC/D,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5F,MAAM,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,CAAC,EACnD,GAAG,IAAI,CAAC,SAAS,CAAC;QAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjH,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3G,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACxH,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACf,MAAM,CACP,CAAC;IAEF,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,EACtC,GAAG,IAAI,CAAC,SAAS,CAAC;QAChB,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC;QACpD,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,CAAC,YAAY,CAAC;QACrB,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,MAAM;QACjB,cAAc,EAAE,SAAS;QACzB,gBAAgB,EAAE,+BAA+B,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClE,YAAY,EAAE,2BAA2B,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1D,UAAU,EAAE,aAAa;KAC1B,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACf,MAAM,CACP,CAAC;IAEF,OAAO;QACL,SAAS;QACT,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC"}
@@ -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)
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.
package/docs/cli.md ADDED
@@ -0,0 +1,93 @@
1
+ # Sema CLI
2
+
3
+ <!-- sema:i18n -->
4
+ > EN: English first.
5
+ > PT: Português depois.
6
+ > ES: Español al final.
7
+
8
+ ## English
9
+
10
+ The Sema CLI is installed from the public npm package `@semacode/cli`. It is not the commercial coordinator and it does not publish the MCP server or product control plane.
11
+
12
+ Use it for the work the MCP authorizes:
13
+
14
+ - validate `.sema` contracts;
15
+ - inspect modules, tasks, routes, and effects;
16
+ - check drift against live or selected code;
17
+ - map impact;
18
+ - prepare AI-first context;
19
+ - resolve documentation gates;
20
+ - run profile and pipeline validators;
21
+ - execute local or VPS-side project actions.
22
+
23
+ The private MCP decides when to charge SEMAS and which operation can continue. The CLI executes the technical work in the environment where it has file access.
24
+
25
+ ```bash
26
+ npm install -g @semacode/cli
27
+ ```
28
+
29
+ ```bash
30
+ sema resumo . --curto
31
+ sema validar contratos/pedidos.sema --json
32
+ sema drift contratos/pedidos.sema --escopo modulo --json
33
+ sema docs-impacto --intencao "alterar pedidos" --arquivo contratos/pedidos.sema --json
34
+ sema finalizar-mudanca --intencao "alterar pedidos" --doc-lida README.md --json
35
+ ```
36
+
37
+ ## Português
38
+
39
+ A CLI da Sema é instalada pelo pacote npm público `@semacode/cli`. Ela não é o coordenador comercial e não publica o servidor MCP nem o control plane do produto.
40
+
41
+ Use a CLI para o trabalho que o MCP autorizar:
42
+
43
+ - validar contratos `.sema`;
44
+ - inspecionar módulos, tasks, rotas e efeitos;
45
+ - medir drift contra código vivo ou código selecionado;
46
+ - mapear impacto;
47
+ - preparar contexto IA-first;
48
+ - resolver gates de documentação;
49
+ - rodar validadores de profiles e pipelines;
50
+ - executar ações locais ou na VPS.
51
+
52
+ O MCP privado decide quando cobrar SEMAS e qual operação pode continuar. A CLI executa o trabalho técnico no ambiente onde tem acesso aos arquivos.
53
+
54
+ ```bash
55
+ npm install -g @semacode/cli
56
+ ```
57
+
58
+ ```bash
59
+ sema resumo . --curto
60
+ sema validar contratos/pedidos.sema --json
61
+ sema drift contratos/pedidos.sema --escopo modulo --json
62
+ sema docs-impacto --intencao "alterar pedidos" --arquivo contratos/pedidos.sema --json
63
+ sema finalizar-mudanca --intencao "alterar pedidos" --doc-lida README.md --json
64
+ ```
65
+
66
+ ## Español
67
+
68
+ La CLI de Sema se instala desde el paquete npm público `@semacode/cli`. No es el coordinador comercial y no publica el servidor MCP ni el control plane del producto.
69
+
70
+ Usa la CLI para el trabajo que el MCP autorice:
71
+
72
+ - validar contratos `.sema`;
73
+ - inspeccionar módulos, tasks, rutas y efectos;
74
+ - medir drift contra código vivo o código seleccionado;
75
+ - mapear impacto;
76
+ - preparar contexto IA-first;
77
+ - resolver gates de documentación;
78
+ - ejecutar validadores de profiles y pipelines;
79
+ - ejecutar acciones locales o en la VPS.
80
+
81
+ El MCP privado decide cuándo cobrar SEMAS y qué operación puede continuar. La CLI ejecuta el trabajo técnico en el entorno donde tiene acceso a los archivos.
82
+
83
+ ```bash
84
+ npm install -g @semacode/cli
85
+ ```
86
+
87
+ ```bash
88
+ sema resumo . --curto
89
+ sema validar contratos/pedidos.sema --json
90
+ sema drift contratos/pedidos.sema --escopo modulo --json
91
+ sema docs-impacto --intencao "alterar pedidos" --arquivo contratos/pedidos.sema --json
92
+ sema finalizar-mudanca --intencao "alterar pedidos" --doc-lida README.md --json
93
+ ```
@@ -0,0 +1,30 @@
1
+ # Como Ensinar a Sema para IA
2
+
3
+ <!-- sema:i18n -->
4
+ > EN: English first.
5
+ > PT: Português depois, com acentos preservados.
6
+ > ES: Español al final.
7
+
8
+ ## English
9
+
10
+ Sema is taught to an AI through operational context, not through vague explanations. The agent needs syntax, semantics, intermediate representation, examples, and the project contract before it touches code or documents.
11
+
12
+ In local IDEs, the first step is to confirm that `AGENTS.md` exists in the project root. If it does not exist, download `https://sema.otimitare.online/AGENTS.md` into the project. In web chats, do not download files into the chat environment; use `sema_chat_contexto`, `sema_sync`, and inline content.
13
+
14
+ The correct framing is simple: contract first, evidence before action, and no guessing from raw code when Sema can provide summary, drift, impact, and required docs.
15
+
16
+ ## Português
17
+
18
+ A Sema é ensinada para IA por contexto operacional, não por explicação vaga. O agente precisa de sintaxe, semântica, representação intermediária, exemplos e contrato do projeto antes de tocar código ou documentos.
19
+
20
+ Em IDE local, o primeiro passo é confirmar que `AGENTS.md` existe na raiz do projeto. Se não existir, baixe `https://sema.otimitare.online/AGENTS.md` para o projeto. Em chats web, não baixe arquivos no ambiente do chat; use `sema_chat_contexto`, `sema_sync` e conteúdo inline.
21
+
22
+ A moldura correta é simples: contrato primeiro, evidência antes da ação e nada de adivinhar lendo código cru quando a Sema pode entregar resumo, drift, impacto e docs obrigatórias.
23
+
24
+ ## Español
25
+
26
+ Sema se enseña a una IA con contexto operativo, no con explicaciones vagas. El agente necesita sintaxis, semántica, representación intermedia, ejemplos y contrato del proyecto antes de tocar código o documentos.
27
+
28
+ En IDE local, el primer paso es confirmar que `AGENTS.md` existe en la raíz del proyecto. Si no existe, descarga `https://sema.otimitare.online/AGENTS.md` en el proyecto. En chats web, no descargues archivos en el entorno del chat; usa `sema_chat_contexto`, `sema_sync` y contenido inline.
29
+
30
+ El encuadre correcto es simple: contrato primero, evidencia antes de la acción y nada de adivinar leyendo código crudo cuando Sema puede entregar resumen, drift, impacto y docs obligatorias.