@semacode/cli 1.5.28 → 1.5.30
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/README.md +144 -144
- package/dist/bridge.d.ts +52 -0
- package/dist/bridge.js +318 -0
- package/dist/bridge.js.map +1 -0
- package/dist/comandos.d.ts +11 -0
- package/dist/comandos.js +146 -0
- package/dist/comandos.js.map +1 -0
- package/dist/contexto.d.ts +34 -0
- package/dist/contexto.js +197 -0
- package/dist/contexto.js.map +1 -0
- package/dist/drift.d.ts +1 -1
- package/dist/drift.js +32 -5
- package/dist/drift.js.map +1 -1
- package/dist/guard.d.ts +35 -0
- package/dist/guard.js +164 -0
- package/dist/guard.js.map +1 -0
- package/dist/index.js +391 -64
- package/dist/index.js.map +1 -1
- package/dist/lua-symbols.d.ts +0 -6
- package/dist/lua-symbols.js +11 -78
- package/dist/lua-symbols.js.map +1 -1
- package/dist/projeto.js +6 -0
- package/dist/projeto.js.map +1 -1
- package/dist/tipos.d.ts +1 -1
- package/exemplos/.prepack-generated +1 -0
- package/exemplos/author_obra_comum.sema +294 -294
- package/exemplos/author_tema_sensivel.sema +264 -264
- package/exemplos/profile_game.sema +114 -114
- package/exemplos/profile_legal.sema +105 -105
- package/exemplos/profile_ops.sema +110 -110
- package/exemplos/profile_research.sema +104 -104
- package/exemplos/profile_software.sema +123 -123
- package/exemplos/profile_workflow_n8n.sema +99 -99
- package/node_modules/@sema/gerador-css/package.json +14 -7
- package/node_modules/@sema/gerador-css/src/index.ts +605 -0
- package/node_modules/@sema/gerador-css/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-dart/package.json +14 -7
- package/node_modules/@sema/gerador-dart/src/index.ts +52 -0
- package/node_modules/@sema/gerador-dart/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-html/package.json +14 -7
- package/node_modules/@sema/gerador-html/src/index.ts +185 -0
- package/node_modules/@sema/gerador-html/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-javascript/package.json +14 -7
- package/node_modules/@sema/gerador-javascript/src/index.ts +461 -0
- package/node_modules/@sema/gerador-javascript/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-lua/package.json +14 -7
- package/node_modules/@sema/gerador-lua/src/index.ts +359 -0
- package/node_modules/@sema/gerador-lua/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-python/package.json +14 -7
- package/node_modules/@sema/gerador-python/src/index.ts +850 -0
- package/node_modules/@sema/gerador-python/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-typescript/package.json +14 -7
- package/node_modules/@sema/gerador-typescript/src/index.ts +876 -0
- package/node_modules/@sema/gerador-typescript/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +1 -1
- package/node_modules/@sema/nucleo/dist/index.d.ts +17 -0
- package/node_modules/@sema/nucleo/dist/index.js +28 -0
- package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +4 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
- package/node_modules/@sema/nucleo/dist/parser/parser.js +2 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -2
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +3 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/package.json +10 -7
- package/node_modules/@sema/nucleo/src/ast/tipos.ts +207 -0
- package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +43 -0
- package/node_modules/@sema/nucleo/src/formatador/index.ts +530 -0
- package/node_modules/@sema/nucleo/src/index.ts +183 -0
- package/node_modules/@sema/nucleo/src/ir/conversor.ts +1037 -0
- package/node_modules/@sema/nucleo/src/ir/modelos.ts +403 -0
- package/node_modules/@sema/nucleo/src/lexer/lexer.ts +166 -0
- package/node_modules/@sema/nucleo/src/lexer/tokens.ts +79 -0
- package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +41 -0
- package/node_modules/@sema/nucleo/src/parser/parser.ts +936 -0
- package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +379 -0
- package/node_modules/@sema/nucleo/src/semantico/analisador.ts +3126 -0
- package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +665 -0
- package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +362 -0
- package/node_modules/@sema/nucleo/src/util/arquivos.ts +28 -0
- package/node_modules/@sema/nucleo/tsconfig.json +9 -0
- package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/padroes/package.json +10 -7
- package/node_modules/@sema/padroes/src/index.ts +382 -0
- package/node_modules/@sema/padroes/tsconfig.json +9 -0
- package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +1 -0
- package/package.json +74 -74
- package/AGENTS.md +0 -280
- package/LICENSE +0 -22
- package/SEMA_BRIEF.curto.txt +0 -11
- package/SEMA_BRIEF.md +0 -112
- package/SEMA_BRIEF.micro.txt +0 -9
- package/SEMA_INDEX.json +0 -1534
- package/dist/php-symbols.d.ts +0 -24
- package/dist/php-symbols.js +0 -375
- package/dist/php-symbols.js.map +0 -1
- package/docs/AGENT_STARTER.md +0 -109
- package/docs/cli.md +0 -175
- package/docs/como-ensinar-a-sema-para-ia.md +0 -155
- package/docs/deploy.md +0 -93
- package/docs/documentacao.md +0 -88
- package/docs/env.md +0 -105
- package/docs/extensao-vscode.md +0 -53
- package/docs/fluxo-pratico-ia-sema.md +0 -187
- package/docs/instalacao-e-primeiro-uso.md +0 -134
- package/docs/integracao-com-ia.md +0 -110
- package/docs/mcp.md +0 -292
- package/docs/pagamento-ponta-a-ponta.md +0 -171
- package/docs/persistencia-vendor-first.md +0 -151
- package/docs/prompt-base-ia-sema.md +0 -111
- package/docs/repositories.md +0 -54
- package/docs/rollback.md +0 -49
- package/docs/seguranca.md +0 -126
- package/docs/sintaxe.md +0 -218
- package/llms-full.txt +0 -34
- package/llms.txt +0 -17
package/dist/guard.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guarda de governança Sema.
|
|
3
|
+
*
|
|
4
|
+
* Cria um bloqueio local que obriga a chamada de `docs-impacto`
|
|
5
|
+
* antes de operações destrutivas (compilar, publicar, validar pesado).
|
|
6
|
+
*
|
|
7
|
+
* Arquivo de estado: .sema/guard.json
|
|
8
|
+
*
|
|
9
|
+
* Contrato: contratos/sema/guard.sema
|
|
10
|
+
*/
|
|
11
|
+
export interface EstadoGuarda {
|
|
12
|
+
ativo: boolean;
|
|
13
|
+
sessaoId: string;
|
|
14
|
+
ativadoEm: string;
|
|
15
|
+
docsImpactoChamado: boolean;
|
|
16
|
+
intencao?: string;
|
|
17
|
+
docsLidas: string[];
|
|
18
|
+
ultimaAtualizacao: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ResultadoGuarda {
|
|
21
|
+
comando: string;
|
|
22
|
+
sucesso: boolean;
|
|
23
|
+
estado?: EstadoGuarda;
|
|
24
|
+
bloqueado?: boolean;
|
|
25
|
+
mensagem?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function ativarGuarda(baseProjeto: string): Promise<ResultadoGuarda>;
|
|
28
|
+
export declare function desativarGuarda(baseProjeto: string): Promise<ResultadoGuarda>;
|
|
29
|
+
export declare function statusGuarda(baseProjeto: string): Promise<ResultadoGuarda>;
|
|
30
|
+
export declare function registrarDocsImpacto(baseProjeto: string, intencao: string): Promise<ResultadoGuarda>;
|
|
31
|
+
export declare function registrarDocLida(baseProjeto: string, caminhoDoc: string): Promise<ResultadoGuarda>;
|
|
32
|
+
export declare function verificarSePodeProsseguir(baseProjeto: string, operacao: string): Promise<{
|
|
33
|
+
pode: boolean;
|
|
34
|
+
motivo?: string;
|
|
35
|
+
}>;
|
package/dist/guard.js
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guarda de governança Sema.
|
|
3
|
+
*
|
|
4
|
+
* Cria um bloqueio local que obriga a chamada de `docs-impacto`
|
|
5
|
+
* antes de operações destrutivas (compilar, publicar, validar pesado).
|
|
6
|
+
*
|
|
7
|
+
* Arquivo de estado: .sema/guard.json
|
|
8
|
+
*
|
|
9
|
+
* Contrato: contratos/sema/guard.sema
|
|
10
|
+
*/
|
|
11
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
import { randomUUID } from "node:crypto";
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Constantes
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
const ARQUIVO_GUARD = path.join(".sema", "guard.json");
|
|
18
|
+
function caminhoGuard(baseProjeto) {
|
|
19
|
+
return path.resolve(baseProjeto, ARQUIVO_GUARD);
|
|
20
|
+
}
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Estado padrão
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
function estadoVazio() {
|
|
25
|
+
return {
|
|
26
|
+
ativo: false,
|
|
27
|
+
sessaoId: "",
|
|
28
|
+
ativadoEm: "",
|
|
29
|
+
docsImpactoChamado: false,
|
|
30
|
+
docsLidas: [],
|
|
31
|
+
ultimaAtualizacao: "",
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Ler / escrever estado do guarda
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
async function lerEstado(baseProjeto) {
|
|
38
|
+
try {
|
|
39
|
+
const conteudo = await readFile(caminhoGuard(baseProjeto), "utf8");
|
|
40
|
+
return JSON.parse(conteudo);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return estadoVazio();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async function escreverEstado(baseProjeto, estado) {
|
|
47
|
+
const dir = path.dirname(caminhoGuard(baseProjeto));
|
|
48
|
+
await mkdir(dir, { recursive: true });
|
|
49
|
+
estado.ultimaAtualizacao = new Date().toISOString();
|
|
50
|
+
await writeFile(caminhoGuard(baseProjeto), JSON.stringify(estado, null, 2), "utf8");
|
|
51
|
+
}
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// Ações do guarda
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
export async function ativarGuarda(baseProjeto) {
|
|
56
|
+
const estado = await lerEstado(baseProjeto);
|
|
57
|
+
if (estado.ativo) {
|
|
58
|
+
return {
|
|
59
|
+
comando: "guard on",
|
|
60
|
+
sucesso: false,
|
|
61
|
+
estado,
|
|
62
|
+
mensagem: `Guarda ja esta ativo (sessao: ${estado.sessaoId}). Desative com 'sema guard off' primeiro.`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const novoEstado = {
|
|
66
|
+
ativo: true,
|
|
67
|
+
sessaoId: randomUUID(),
|
|
68
|
+
ativadoEm: new Date().toISOString(),
|
|
69
|
+
docsImpactoChamado: false,
|
|
70
|
+
docsLidas: [],
|
|
71
|
+
ultimaAtualizacao: new Date().toISOString(),
|
|
72
|
+
};
|
|
73
|
+
await escreverEstado(baseProjeto, novoEstado);
|
|
74
|
+
return {
|
|
75
|
+
comando: "guard on",
|
|
76
|
+
sucesso: true,
|
|
77
|
+
estado: novoEstado,
|
|
78
|
+
mensagem: `Guarda ativado. Sessao: ${novoEstado.sessaoId.slice(0, 8)}...`,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export async function desativarGuarda(baseProjeto) {
|
|
82
|
+
const estado = await lerEstado(baseProjeto);
|
|
83
|
+
if (!estado.ativo) {
|
|
84
|
+
return {
|
|
85
|
+
comando: "guard off",
|
|
86
|
+
sucesso: false,
|
|
87
|
+
estado,
|
|
88
|
+
mensagem: "Guarda nao esta ativo.",
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
await escreverEstado(baseProjeto, estadoVazio());
|
|
92
|
+
return {
|
|
93
|
+
comando: "guard off",
|
|
94
|
+
sucesso: true,
|
|
95
|
+
estado: estadoVazio(),
|
|
96
|
+
mensagem: "Guarda desativado.",
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export async function statusGuarda(baseProjeto) {
|
|
100
|
+
const estado = await lerEstado(baseProjeto);
|
|
101
|
+
return {
|
|
102
|
+
comando: "guard status",
|
|
103
|
+
sucesso: true,
|
|
104
|
+
estado,
|
|
105
|
+
bloqueado: estado.ativo && !estado.docsImpactoChamado,
|
|
106
|
+
mensagem: estado.ativo
|
|
107
|
+
? estado.docsImpactoChamado
|
|
108
|
+
? `Guarda ativo. Docs-impacto ja registrado. Sessao: ${estado.sessaoId.slice(0, 8)}...`
|
|
109
|
+
: `Guarda ativo. Docs-impacto pendente! Sessao: ${estado.sessaoId.slice(0, 8)}...`
|
|
110
|
+
: "Guarda inativo.",
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export async function registrarDocsImpacto(baseProjeto, intencao) {
|
|
114
|
+
const estado = await lerEstado(baseProjeto);
|
|
115
|
+
if (!estado.ativo) {
|
|
116
|
+
// Guarda inativo: registrar mesmo assim (útil pra relatório)
|
|
117
|
+
return {
|
|
118
|
+
comando: "guard registrar-docs",
|
|
119
|
+
sucesso: true,
|
|
120
|
+
mensagem: "Guarda inativo. Docs-impacto registrado em cache leve.",
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
estado.docsImpactoChamado = true;
|
|
124
|
+
estado.intencao = intencao;
|
|
125
|
+
await escreverEstado(baseProjeto, estado);
|
|
126
|
+
return {
|
|
127
|
+
comando: "guard registrar-docs",
|
|
128
|
+
sucesso: true,
|
|
129
|
+
estado,
|
|
130
|
+
mensagem: `Docs-impacto registrado: "${intencao.slice(0, 60)}"`,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
export async function registrarDocLida(baseProjeto, caminhoDoc) {
|
|
134
|
+
const estado = await lerEstado(baseProjeto);
|
|
135
|
+
if (!estado.ativo) {
|
|
136
|
+
return { comando: "guard registrar-doc", sucesso: true };
|
|
137
|
+
}
|
|
138
|
+
if (!estado.docsLidas.includes(caminhoDoc)) {
|
|
139
|
+
estado.docsLidas.push(caminhoDoc);
|
|
140
|
+
}
|
|
141
|
+
await escreverEstado(baseProjeto, estado);
|
|
142
|
+
return {
|
|
143
|
+
comando: "guard registrar-doc",
|
|
144
|
+
sucesso: true,
|
|
145
|
+
estado,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
// Verificação: operação pode prosseguir?
|
|
150
|
+
// ---------------------------------------------------------------------------
|
|
151
|
+
export async function verificarSePodeProsseguir(baseProjeto, operacao) {
|
|
152
|
+
const estado = await lerEstado(baseProjeto);
|
|
153
|
+
if (!estado.ativo) {
|
|
154
|
+
return { pode: true }; // Guarda inativo: liberado
|
|
155
|
+
}
|
|
156
|
+
if (!estado.docsImpactoChamado) {
|
|
157
|
+
return {
|
|
158
|
+
pode: false,
|
|
159
|
+
motivo: `Guarda ativo bloqueou "${operacao}". Execute 'sema docs-impacto --intencao "${operacao}"' primeiro.`,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return { pode: true };
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
|