@semacode/cli 1.5.8 → 1.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -1
- package/README.md +7 -0
- package/SEMA_BRIEF.curto.txt +2 -2
- package/SEMA_BRIEF.md +4 -4
- package/SEMA_BRIEF.micro.txt +1 -1
- package/SEMA_INDEX.json +28 -18
- package/dist/docs.d.ts +56 -0
- package/dist/docs.js +407 -0
- package/dist/docs.js.map +1 -0
- package/dist/drift.d.ts +3 -3
- package/dist/drift.js +47 -4
- package/dist/drift.js.map +1 -1
- package/dist/importador.d.ts +1 -1
- package/dist/importador.js +56 -0
- package/dist/importador.js.map +1 -1
- package/dist/index.js +117 -5
- package/dist/index.js.map +1 -1
- package/dist/lua-symbols.d.ts +6 -4
- package/dist/lua-symbols.js +74 -54
- 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/docs/AGENT_STARTER.md +3 -3
- package/docs/cli.md +7 -0
- package/docs/deploy.md +70 -0
- package/docs/documentacao.md +63 -0
- package/docs/env.md +56 -0
- package/docs/extensao-vscode.md +45 -0
- package/docs/fluxo-pratico-ia-sema.md +1 -1
- package/docs/instalacao-e-primeiro-uso.md +3 -0
- package/docs/integracao-com-ia.md +24 -0
- package/docs/mcp.md +53 -0
- package/docs/rollback.md +47 -0
- package/docs/sintaxe.md +39 -0
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +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 +1 -1
- package/node_modules/@sema/padroes/package.json +1 -1
- package/package.json +10 -10
package/dist/docs.js
ADDED
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import { mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const LIMITE_CONTEUDO_DOC = 16_000;
|
|
4
|
+
function normalizarTexto(valor) {
|
|
5
|
+
return valor
|
|
6
|
+
.normalize("NFD")
|
|
7
|
+
.replace(/[\u0300-\u036f]/g, "")
|
|
8
|
+
.toLowerCase();
|
|
9
|
+
}
|
|
10
|
+
function normalizarRelativo(valor) {
|
|
11
|
+
return valor.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
12
|
+
}
|
|
13
|
+
function tituloDeRelativo(relativo) {
|
|
14
|
+
const base = path.basename(relativo, path.extname(relativo));
|
|
15
|
+
return base
|
|
16
|
+
.split(/[-_\s]+/)
|
|
17
|
+
.filter(Boolean)
|
|
18
|
+
.map((parte) => `${parte.charAt(0).toUpperCase()}${parte.slice(1)}`)
|
|
19
|
+
.join(" ");
|
|
20
|
+
}
|
|
21
|
+
async function caminhoExiste(caminho) {
|
|
22
|
+
try {
|
|
23
|
+
await stat(caminho);
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function caminhoEstaDentro(base, alvo) {
|
|
31
|
+
const relativo = path.relative(base, alvo);
|
|
32
|
+
return relativo === "" || (!relativo.startsWith("..") && !path.isAbsolute(relativo));
|
|
33
|
+
}
|
|
34
|
+
async function listarArquivosRecursivo(base, limite = 80) {
|
|
35
|
+
const encontrados = [];
|
|
36
|
+
async function visitar(pasta) {
|
|
37
|
+
if (encontrados.length >= limite || !(await caminhoExiste(pasta))) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const entradas = await readdir(pasta, { withFileTypes: true });
|
|
41
|
+
for (const entrada of entradas.sort((a, b) => a.name.localeCompare(b.name, "pt-BR"))) {
|
|
42
|
+
if (encontrados.length >= limite) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const caminho = path.join(pasta, entrada.name);
|
|
46
|
+
if (entrada.isDirectory()) {
|
|
47
|
+
if (!["node_modules", ".git", ".tmp", "dist"].includes(entrada.name)) {
|
|
48
|
+
await visitar(caminho);
|
|
49
|
+
}
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
encontrados.push(caminho);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
await visitar(base);
|
|
56
|
+
return encontrados;
|
|
57
|
+
}
|
|
58
|
+
const REGRAS_DOCUMENTACAO = [
|
|
59
|
+
{
|
|
60
|
+
categoria: "deploy",
|
|
61
|
+
padroes: [/deploy/, /publicar/, /producao/, /release/, /pipeline/, /\bci\b/, /\bcd\b/, /vercel/, /cloudflare/, /docker/],
|
|
62
|
+
docs: [
|
|
63
|
+
{ relativo: "docs/deploy.md", tipo: "runbook", motivo: "runbook de deploy antes de publicar ou alterar pipeline", permitirCriacao: true },
|
|
64
|
+
{ relativo: "docs/env.md", tipo: "runbook", motivo: "variaveis, secrets e ambientes usados no deploy", permitirCriacao: true },
|
|
65
|
+
{ relativo: "docs/rollback.md", tipo: "runbook", motivo: "plano de rollback obrigatorio antes de deploy", permitirCriacao: true },
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
categoria: "api",
|
|
70
|
+
padroes: [/rota/, /endpoint/, /\bapi\b/, /controller/, /webhook/, /http/],
|
|
71
|
+
docs: [
|
|
72
|
+
{ relativo: "docs/api.md", tipo: "documentacao", motivo: "contrato operacional de rotas e endpoints", permitirCriacao: true },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
categoria: "auth",
|
|
77
|
+
padroes: [/auth/, /login/, /permiss/, /autoriz/, /token/, /oauth/, /seguranca/],
|
|
78
|
+
docs: [
|
|
79
|
+
{ relativo: "docs/auth.md", tipo: "documentacao", motivo: "regras de autenticacao, autorizacao e tokens", permitirCriacao: true },
|
|
80
|
+
{ relativo: "docs/seguranca.md", tipo: "documentacao", motivo: "politicas de seguranca afetadas pela mudanca", permitirCriacao: true },
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
categoria: "persistencia",
|
|
85
|
+
padroes: [/banco/, /database/, /persist/, /migration/, /migracao/, /prisma/, /postgres/, /redis/, /mongodb/],
|
|
86
|
+
docs: [
|
|
87
|
+
{ relativo: "docs/persistencia-vendor-first.md", tipo: "documentacao", motivo: "regras de persistencia vendor-first", permitirCriacao: false },
|
|
88
|
+
{ relativo: "docs/database.md", tipo: "runbook", motivo: "operacao de banco, migracoes e validacao de dados", permitirCriacao: true },
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
categoria: "mcp",
|
|
93
|
+
padroes: [/\bmcp\b/, /tool/, /ferramenta/, /server/, /stdio/],
|
|
94
|
+
docs: [
|
|
95
|
+
{ relativo: "pacotes/mcp/README.md", tipo: "pacote", motivo: "documentacao publica do pacote MCP", permitirCriacao: false },
|
|
96
|
+
{ relativo: "docs/integracao-com-ia.md", tipo: "documentacao", motivo: "integracao do Sema com agentes IA", permitirCriacao: false },
|
|
97
|
+
{ relativo: "docs/mcp.md", tipo: "documentacao", motivo: "runbook especifico de ferramentas MCP", permitirCriacao: true },
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
categoria: "cli",
|
|
102
|
+
padroes: [/\bcli\b/, /comando/, /terminal/],
|
|
103
|
+
docs: [
|
|
104
|
+
{ relativo: "pacotes/cli/README.md", tipo: "pacote", motivo: "documentacao publica da CLI", permitirCriacao: false },
|
|
105
|
+
{ relativo: "docs/cli.md", tipo: "documentacao", motivo: "guia operacional dos comandos da CLI", permitirCriacao: false },
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
categoria: "extensao",
|
|
110
|
+
padroes: [/vscode/, /extension/, /extensao/, /editor/, /\blsp\b/, /language server/],
|
|
111
|
+
docs: [
|
|
112
|
+
{ relativo: "pacotes/editor-vscode/README.md", tipo: "pacote", motivo: "documentacao publica da extensao VS Code", permitirCriacao: false },
|
|
113
|
+
{ relativo: "docs/extensao-vscode.md", tipo: "documentacao", motivo: "runbook da extensao VS Code", permitirCriacao: true },
|
|
114
|
+
],
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
categoria: "contrato",
|
|
118
|
+
padroes: [/contrato/, /\.sema/, /semant/, /\bsema\b/, /drift/, /governanca/],
|
|
119
|
+
docs: [
|
|
120
|
+
{ relativo: "docs/sintaxe.md", tipo: "documentacao", motivo: "sintaxe e blocos de contrato Sema", permitirCriacao: false },
|
|
121
|
+
{ relativo: "docs/fluxo-pratico-ia-sema.md", tipo: "documentacao", motivo: "fluxo IA-first antes de editar contratos", permitirCriacao: false },
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
categoria: "frontend",
|
|
126
|
+
padroes: [/frontend/, /\bui\b/, /react/, /vite/, /next/, /css/, /html/, /pagina/],
|
|
127
|
+
docs: [
|
|
128
|
+
{ relativo: "docs/frontend.md", tipo: "documentacao", motivo: "decisoes e validacoes de interface", permitirCriacao: true },
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
categoria: "testes",
|
|
133
|
+
padroes: [/teste/, /testar/, /qa/, /validacao/, /regressao/],
|
|
134
|
+
docs: [
|
|
135
|
+
{ relativo: "docs/testes.md", tipo: "runbook", motivo: "estrategia de testes e regressao", permitirCriacao: true },
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
categoria: "documentacao",
|
|
140
|
+
padroes: [/doc/, /readme/, /manual/, /runbook/, /onboarding/],
|
|
141
|
+
docs: [
|
|
142
|
+
{ relativo: "docs/README.md", tipo: "documentacao", motivo: "indice de documentacao do projeto", permitirCriacao: false },
|
|
143
|
+
{ relativo: "docs/documentacao.md", tipo: "documentacao", motivo: "politica de atualizacao documental", permitirCriacao: true },
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
];
|
|
147
|
+
function inferirCategorias(intencao, arquivosAlvo) {
|
|
148
|
+
const texto = normalizarTexto(`${intencao} ${arquivosAlvo.join(" ")}`);
|
|
149
|
+
const categorias = REGRAS_DOCUMENTACAO
|
|
150
|
+
.filter((regra) => regra.padroes.some((padrao) => padrao.test(texto)))
|
|
151
|
+
.map((regra) => regra.categoria);
|
|
152
|
+
return categorias.length > 0 ? [...new Set(categorias)] : ["mudanca"];
|
|
153
|
+
}
|
|
154
|
+
function criarTemplateDoc(doc, intencao, categorias, arquivosAlvo) {
|
|
155
|
+
const titulo = tituloDeRelativo(doc.relativo);
|
|
156
|
+
const linhas = [
|
|
157
|
+
`# ${titulo}`,
|
|
158
|
+
"",
|
|
159
|
+
"Documento criado pelo Sema porque uma IA declarou uma intencao que exige leitura operacional antes de agir.",
|
|
160
|
+
"",
|
|
161
|
+
"## Intencao",
|
|
162
|
+
"",
|
|
163
|
+
intencao || "Descrever a intencao operacional antes de executar a mudanca.",
|
|
164
|
+
"",
|
|
165
|
+
"## Escopo",
|
|
166
|
+
"",
|
|
167
|
+
arquivosAlvo.length > 0
|
|
168
|
+
? arquivosAlvo.map((arquivo) => `- ${arquivo}`).join("\n")
|
|
169
|
+
: "- Declarar os arquivos, servicos ou contratos afetados.",
|
|
170
|
+
"",
|
|
171
|
+
"## Leitura obrigatoria antes de agir",
|
|
172
|
+
"",
|
|
173
|
+
"- Ler este documento inteiro.",
|
|
174
|
+
"- Ler contratos .sema relacionados antes de editar codigo.",
|
|
175
|
+
"- Ler README, runbooks e docs de pacote envolvidos.",
|
|
176
|
+
"",
|
|
177
|
+
"## Procedimento",
|
|
178
|
+
"",
|
|
179
|
+
"- Descrever os comandos ou passos seguros.",
|
|
180
|
+
"- Declarar pre-condicoes, variaveis e dependencias.",
|
|
181
|
+
"- Registrar como validar sucesso.",
|
|
182
|
+
"",
|
|
183
|
+
"## Validacao",
|
|
184
|
+
"",
|
|
185
|
+
"- Listar comandos de build, teste, verificacao ou smoke test.",
|
|
186
|
+
"- Registrar evidencias esperadas.",
|
|
187
|
+
"",
|
|
188
|
+
"## Rollback",
|
|
189
|
+
"",
|
|
190
|
+
"- Descrever como desfazer a mudanca.",
|
|
191
|
+
"- Declarar sinais que exigem rollback.",
|
|
192
|
+
"",
|
|
193
|
+
"## Atualizacao documental",
|
|
194
|
+
"",
|
|
195
|
+
"- Atualizar este arquivo quando o fluxo operacional mudar.",
|
|
196
|
+
"- Atualizar docs e contratos relacionados na mesma mudanca.",
|
|
197
|
+
"",
|
|
198
|
+
`Categorias inferidas: ${categorias.join(", ")}`,
|
|
199
|
+
"",
|
|
200
|
+
];
|
|
201
|
+
return `${linhas.join("\n")}\n`;
|
|
202
|
+
}
|
|
203
|
+
function resumoConteudo(conteudo) {
|
|
204
|
+
if (conteudo.length <= LIMITE_CONTEUDO_DOC) {
|
|
205
|
+
return { conteudo, truncado: false };
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
conteudo: `${conteudo.slice(0, LIMITE_CONTEUDO_DOC)}\n\n[TRUNCADO PELO SEMA: leia o arquivo completo antes de agir.]`,
|
|
209
|
+
truncado: true,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
async function adicionarDocsRaizExistentes(baseProjeto, registrar) {
|
|
213
|
+
const docsRaiz = [
|
|
214
|
+
{ relativo: "AGENTS.md", tipo: "raiz", motivo: "regras obrigatorias do agente no projeto" },
|
|
215
|
+
{ relativo: "SEMA_INDEX.json", tipo: "raiz", motivo: "indice IA-first do projeto" },
|
|
216
|
+
{ relativo: "README.md", tipo: "raiz", motivo: "visao geral publica do projeto" },
|
|
217
|
+
{ relativo: "docs/README.md", tipo: "documentacao", motivo: "indice de documentacao" },
|
|
218
|
+
];
|
|
219
|
+
for (const doc of docsRaiz) {
|
|
220
|
+
if (await caminhoExiste(path.join(baseProjeto, doc.relativo))) {
|
|
221
|
+
registrar({ ...doc, permitirCriacao: false });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
async function adicionarReadmesDeArquivos(baseProjeto, arquivosAlvo, registrar) {
|
|
226
|
+
for (const arquivo of arquivosAlvo) {
|
|
227
|
+
const absoluto = path.resolve(baseProjeto, arquivo);
|
|
228
|
+
if (!caminhoEstaDentro(baseProjeto, absoluto)) {
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
let pasta = (await caminhoExiste(absoluto)) && (await stat(absoluto)).isDirectory()
|
|
232
|
+
? absoluto
|
|
233
|
+
: path.dirname(absoluto);
|
|
234
|
+
while (caminhoEstaDentro(baseProjeto, pasta)) {
|
|
235
|
+
const readme = path.join(pasta, "README.md");
|
|
236
|
+
if (await caminhoExiste(readme)) {
|
|
237
|
+
registrar({
|
|
238
|
+
relativo: normalizarRelativo(path.relative(baseProjeto, readme)),
|
|
239
|
+
tipo: "pacote",
|
|
240
|
+
motivo: `README mais proximo de ${normalizarRelativo(arquivo)}`,
|
|
241
|
+
permitirCriacao: false,
|
|
242
|
+
});
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
const proxima = path.dirname(pasta);
|
|
246
|
+
if (proxima === pasta) {
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
pasta = proxima;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async function adicionarContratosRelacionados(baseProjeto, categorias, intencao, arquivosAlvo, registrar) {
|
|
254
|
+
const pastaContratos = path.join(baseProjeto, "contratos");
|
|
255
|
+
if (!(await caminhoExiste(pastaContratos))) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const texto = normalizarTexto(`${intencao} ${arquivosAlvo.join(" ")} ${categorias.join(" ")}`);
|
|
259
|
+
const arquivos = (await listarArquivosRecursivo(pastaContratos)).filter((arquivo) => arquivo.endsWith(".sema"));
|
|
260
|
+
for (const arquivo of arquivos) {
|
|
261
|
+
const relativo = normalizarRelativo(path.relative(baseProjeto, arquivo));
|
|
262
|
+
const nome = normalizarTexto(relativo);
|
|
263
|
+
const relacionado = texto.split(/\W+/).filter((parte) => parte.length >= 4).some((parte) => nome.includes(parte))
|
|
264
|
+
|| (categorias.some((categoria) => ["mcp", "cli", "documentacao", "contrato"].includes(categoria)) && nome.includes("governanca_ia"));
|
|
265
|
+
if (relacionado) {
|
|
266
|
+
registrar({
|
|
267
|
+
relativo,
|
|
268
|
+
tipo: "contrato",
|
|
269
|
+
motivo: "contrato Sema relacionado a intencao declarada",
|
|
270
|
+
permitirCriacao: false,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
function criarRegistrador(baseProjeto) {
|
|
276
|
+
const docs = [];
|
|
277
|
+
const vistos = new Set();
|
|
278
|
+
return {
|
|
279
|
+
docs,
|
|
280
|
+
registrar(doc) {
|
|
281
|
+
const relativo = normalizarRelativo(doc.relativo);
|
|
282
|
+
const absoluto = path.resolve(baseProjeto, relativo);
|
|
283
|
+
if (!caminhoEstaDentro(baseProjeto, absoluto) || vistos.has(relativo)) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
vistos.add(relativo);
|
|
287
|
+
docs.push({ ...doc, relativo });
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
export async function resolverDocumentacaoObrigatoria(opcoes) {
|
|
292
|
+
const baseProjeto = path.resolve(opcoes.baseProjeto ?? process.cwd());
|
|
293
|
+
const intencao = opcoes.intencao.trim();
|
|
294
|
+
const arquivosAlvo = [...new Set((opcoes.arquivosAlvo ?? []).map(normalizarRelativo).filter(Boolean))];
|
|
295
|
+
const categorias = inferirCategorias(intencao, arquivosAlvo);
|
|
296
|
+
const { docs, registrar } = criarRegistrador(baseProjeto);
|
|
297
|
+
await adicionarDocsRaizExistentes(baseProjeto, registrar);
|
|
298
|
+
for (const regra of REGRAS_DOCUMENTACAO.filter((item) => categorias.includes(item.categoria))) {
|
|
299
|
+
for (const doc of regra.docs) {
|
|
300
|
+
registrar(doc);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
await adicionarReadmesDeArquivos(baseProjeto, arquivosAlvo, registrar);
|
|
304
|
+
await adicionarContratosRelacionados(baseProjeto, categorias, intencao, arquivosAlvo, registrar);
|
|
305
|
+
const leituraObrigatoria = [];
|
|
306
|
+
for (const doc of docs) {
|
|
307
|
+
const caminho = path.resolve(baseProjeto, doc.relativo);
|
|
308
|
+
let existe = await caminhoExiste(caminho);
|
|
309
|
+
let criado = false;
|
|
310
|
+
const template = criarTemplateDoc(doc, intencao, categorias, arquivosAlvo);
|
|
311
|
+
if (!existe && opcoes.criarAusentes && doc.permitirCriacao) {
|
|
312
|
+
await mkdir(path.dirname(caminho), { recursive: true });
|
|
313
|
+
await writeFile(caminho, template, "utf8");
|
|
314
|
+
existe = true;
|
|
315
|
+
criado = true;
|
|
316
|
+
}
|
|
317
|
+
const item = {
|
|
318
|
+
caminho,
|
|
319
|
+
relativo: doc.relativo,
|
|
320
|
+
tipo: doc.tipo,
|
|
321
|
+
motivo: doc.motivo,
|
|
322
|
+
existe,
|
|
323
|
+
criado,
|
|
324
|
+
obrigatorio: true,
|
|
325
|
+
template: existe ? undefined : template,
|
|
326
|
+
};
|
|
327
|
+
if (existe) {
|
|
328
|
+
const conteudo = resumoConteudo(await readFile(caminho, "utf8"));
|
|
329
|
+
item.conteudo = conteudo.conteudo;
|
|
330
|
+
item.truncado = conteudo.truncado;
|
|
331
|
+
}
|
|
332
|
+
leituraObrigatoria.push(item);
|
|
333
|
+
}
|
|
334
|
+
const docsAusentes = leituraObrigatoria.filter((doc) => !doc.existe);
|
|
335
|
+
const docsCriadas = leituraObrigatoria.filter((doc) => doc.criado);
|
|
336
|
+
const bloqueios = docsAusentes.map((doc) => ({
|
|
337
|
+
tipo: "documentacao_ausente",
|
|
338
|
+
severidade: 4,
|
|
339
|
+
caminho: doc.relativo,
|
|
340
|
+
mensagem: `Documento obrigatorio ausente: ${doc.relativo}. Crie ou rode com --criar-ausentes antes de agir.`,
|
|
341
|
+
}));
|
|
342
|
+
return {
|
|
343
|
+
sucesso: bloqueios.length === 0,
|
|
344
|
+
baseProjeto,
|
|
345
|
+
intencao,
|
|
346
|
+
categorias,
|
|
347
|
+
arquivosAlvo,
|
|
348
|
+
leituraObrigatoria,
|
|
349
|
+
docsAusentes,
|
|
350
|
+
docsCriadas,
|
|
351
|
+
bloqueios,
|
|
352
|
+
instrucoes: [
|
|
353
|
+
"A IA deve ler todos os itens de leituraObrigatoria antes de executar a mudanca.",
|
|
354
|
+
"Se docsAusentes nao estiver vazio, crie ou preencha os documentos antes de editar codigo, contrato, deploy ou configuracao.",
|
|
355
|
+
"Antes de concluir, rode sema finalizar-mudanca informando as docs lidas.",
|
|
356
|
+
],
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
function normalizarDocLida(baseProjeto, valor) {
|
|
360
|
+
const semEspaco = valor.trim();
|
|
361
|
+
if (!semEspaco) {
|
|
362
|
+
return "";
|
|
363
|
+
}
|
|
364
|
+
const absoluto = path.isAbsolute(semEspaco) ? semEspaco : path.resolve(baseProjeto, semEspaco);
|
|
365
|
+
return normalizarRelativo(path.relative(baseProjeto, absoluto));
|
|
366
|
+
}
|
|
367
|
+
export async function verificarDocumentacaoMudanca(opcoes) {
|
|
368
|
+
const baseProjeto = path.resolve(opcoes.baseProjeto ?? process.cwd());
|
|
369
|
+
const impacto = await resolverDocumentacaoObrigatoria({
|
|
370
|
+
baseProjeto,
|
|
371
|
+
intencao: opcoes.intencao,
|
|
372
|
+
arquivosAlvo: opcoes.arquivosAlvo,
|
|
373
|
+
criarAusentes: false,
|
|
374
|
+
});
|
|
375
|
+
const docsLidas = [...new Set((opcoes.docsLidas ?? []).map((doc) => normalizarDocLida(baseProjeto, doc)).filter(Boolean))];
|
|
376
|
+
const setDocsLidas = new Set(docsLidas);
|
|
377
|
+
const docsNaoLidas = impacto.leituraObrigatoria.filter((doc) => doc.existe && !setDocsLidas.has(doc.relativo));
|
|
378
|
+
const diagnosticos = [
|
|
379
|
+
...impacto.docsAusentes.map((doc) => ({
|
|
380
|
+
tipo: "documentacao_ausente",
|
|
381
|
+
severidade: 4,
|
|
382
|
+
caminho: doc.relativo,
|
|
383
|
+
mensagem: `Documento obrigatorio ausente: ${doc.relativo}.`,
|
|
384
|
+
})),
|
|
385
|
+
...docsNaoLidas.map((doc) => ({
|
|
386
|
+
tipo: "leitura_obrigatoria_nao_comprovada",
|
|
387
|
+
severidade: 4,
|
|
388
|
+
caminho: doc.relativo,
|
|
389
|
+
mensagem: `Leitura obrigatoria nao comprovada: ${doc.relativo}.`,
|
|
390
|
+
})),
|
|
391
|
+
];
|
|
392
|
+
return {
|
|
393
|
+
sucesso: diagnosticos.length === 0,
|
|
394
|
+
baseProjeto,
|
|
395
|
+
intencao: opcoes.intencao,
|
|
396
|
+
categorias: impacto.categorias,
|
|
397
|
+
docsLidas,
|
|
398
|
+
leituraObrigatoria: impacto.leituraObrigatoria,
|
|
399
|
+
docsNaoLidas,
|
|
400
|
+
docsAusentes: impacto.docsAusentes,
|
|
401
|
+
diagnosticos,
|
|
402
|
+
instrucoes: diagnosticos.length === 0
|
|
403
|
+
? ["Leitura documental comprovada. Continue com validar, drift e testes conforme a mudanca."]
|
|
404
|
+
: ["Nao conclua a mudanca enquanto houver diagnosticos de severidade 4+."],
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=docs.js.map
|
package/dist/docs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"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"}
|
package/dist/drift.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { EngineBanco, NivelConfiancaSemantica, NivelRiscoSemantico, TipoRecursoPersistencia } from "@sema/nucleo";
|
|
2
2
|
import type { ContextoProjetoCarregado } from "./projeto.js";
|
|
3
3
|
interface SimboloResolvido {
|
|
4
|
-
origem: "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
|
|
4
|
+
origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
|
|
5
5
|
caminho: string;
|
|
6
6
|
arquivo: string;
|
|
7
7
|
simbolo: string;
|
|
@@ -33,7 +33,7 @@ export interface DiagnosticoDrift {
|
|
|
33
33
|
interface RegistroImplDrift {
|
|
34
34
|
modulo: string;
|
|
35
35
|
task: string;
|
|
36
|
-
origem: "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
|
|
36
|
+
origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
|
|
37
37
|
caminho: string;
|
|
38
38
|
arquivo?: string;
|
|
39
39
|
simbolo?: string;
|
|
@@ -82,7 +82,7 @@ interface RegistroRepositorioPersistenciaDrift {
|
|
|
82
82
|
arquivo: string;
|
|
83
83
|
}
|
|
84
84
|
interface SimboloCandidatoDrift {
|
|
85
|
-
origem: "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
|
|
85
|
+
origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
|
|
86
86
|
caminho: string;
|
|
87
87
|
arquivo: string;
|
|
88
88
|
simbolo: string;
|
package/dist/drift.js
CHANGED
|
@@ -6,6 +6,7 @@ import { extrairSimbolosCpp } from "./cpp-symbols.js";
|
|
|
6
6
|
import { extrairRotasDotnet, extrairSimbolosDotnet } from "./dotnet-http.js";
|
|
7
7
|
import { extrairRotasGo, extrairSimbolosGo } from "./go-http.js";
|
|
8
8
|
import { extrairRotasJava, extrairSimbolosJava } from "./java-http.js";
|
|
9
|
+
import { extrairSimbolosLua } from "./lua-symbols.js";
|
|
9
10
|
import { contarIndentacaoPython, extrairRotasFlaskDecoradas, normalizarCaminhoFlask } from "./python-http.js";
|
|
10
11
|
import { extrairRotasRust, extrairSimbolosRust } from "./rust-http.js";
|
|
11
12
|
import { extrairRotasTypeScriptHttp } from "./typescript-http.js";
|
|
@@ -689,7 +690,7 @@ function extrairRecursosArquivoLocal(arquivo, codigo) {
|
|
|
689
690
|
const nomeBase = path.basename(literal, path.extname(literal));
|
|
690
691
|
registrarRecursoDrift(recursos, "arquivo", "arquivo_local", nomeBase, arquivo);
|
|
691
692
|
}
|
|
692
|
-
const nomeArquivo = path.basename(arquivo).replace(/\.(?:ts|tsx|js|jsx|mjs|cjs|py|dart|cs|java|go|rs|cpp|cc|cxx|hpp|h)$/i, "");
|
|
693
|
+
const nomeArquivo = path.basename(arquivo).replace(/\.(?:ts|tsx|js|jsx|mjs|cjs|py|dart|lua|cs|java|go|rs|cpp|cc|cxx|hpp|h)$/i, "");
|
|
693
694
|
const nomeStore = nomeArquivo
|
|
694
695
|
.replace(/(?:[_.-]?(?:repository|repositories|repo|store|storage|persistencia|persistence))$/i, "")
|
|
695
696
|
.trim();
|
|
@@ -1040,6 +1041,20 @@ async function listarArquivosRecursivos(diretorio, extensoes) {
|
|
|
1040
1041
|
}
|
|
1041
1042
|
return encontrados.sort((a, b) => a.localeCompare(b, "pt-BR"));
|
|
1042
1043
|
}
|
|
1044
|
+
const EXTENSOES_ARQUIVOS_CODIGO_DRIFT = [
|
|
1045
|
+
".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
|
|
1046
|
+
".py", ".dart", ".lua", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
|
|
1047
|
+
".sql", ".psql", ".ddl", ".prisma", ".json",
|
|
1048
|
+
];
|
|
1049
|
+
async function indexarArquivosCodigo(diretorios) {
|
|
1050
|
+
const arquivos = new Set();
|
|
1051
|
+
for (const diretorio of diretorios) {
|
|
1052
|
+
for (const arquivo of await listarArquivosRecursivos(diretorio, EXTENSOES_ARQUIVOS_CODIGO_DRIFT)) {
|
|
1053
|
+
arquivos.add(arquivo);
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
return [...arquivos].sort((a, b) => a.localeCompare(b, "pt-BR"));
|
|
1057
|
+
}
|
|
1043
1058
|
function caminhosSimbolicos(baseDiretorio, arquivo) {
|
|
1044
1059
|
const relativo = path.relative(baseDiretorio, arquivo).replace(/\.[^.]+$/, "");
|
|
1045
1060
|
const semPrefixo = relativo
|
|
@@ -1878,6 +1893,28 @@ async function indexarDart(diretorios) {
|
|
|
1878
1893
|
|| a.arquivo.localeCompare(b.arquivo, "pt-BR")),
|
|
1879
1894
|
};
|
|
1880
1895
|
}
|
|
1896
|
+
async function indexarLua(diretorios) {
|
|
1897
|
+
const simbolos = new Map();
|
|
1898
|
+
const recursos = new Map();
|
|
1899
|
+
for (const diretorio of diretorios) {
|
|
1900
|
+
const arquivos = (await listarArquivosRecursivos(diretorio, [".lua"]))
|
|
1901
|
+
.filter((arquivo) => !/(^|[\\/])tests?([\\/]|$)|(?:^|[\\/])spec([\\/]|$)|(?:_spec|_test)\.lua$/i.test(arquivo));
|
|
1902
|
+
for (const arquivo of arquivos) {
|
|
1903
|
+
const codigo = await readFile(arquivo, "utf8");
|
|
1904
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
1905
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
|
|
1906
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
1907
|
+
}
|
|
1908
|
+
for (const simbolo of extrairSimbolosLua(codigo)) {
|
|
1909
|
+
registrarSimboloGenerico(simbolos, "lua", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
}
|
|
1913
|
+
return {
|
|
1914
|
+
simbolos: [...simbolos.values()],
|
|
1915
|
+
recursos: [...recursos.values()],
|
|
1916
|
+
};
|
|
1917
|
+
}
|
|
1881
1918
|
function registrarSimboloGenerico(simbolos, origem, basesSimbolicas, arquivo, simbolo) {
|
|
1882
1919
|
for (const baseSimbolica of basesSimbolicas) {
|
|
1883
1920
|
const caminho = `${baseSimbolica}.${simbolo}`;
|
|
@@ -2043,7 +2080,7 @@ async function indexarPersistenciaDeclarativa(diretorios) {
|
|
|
2043
2080
|
const arquivos = await listarArquivosRecursivos(diretorio, [
|
|
2044
2081
|
".sql", ".psql", ".ddl", ".prisma",
|
|
2045
2082
|
".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
|
|
2046
|
-
".py", ".dart", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
|
|
2083
|
+
".py", ".dart", ".lua", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
|
|
2047
2084
|
]);
|
|
2048
2085
|
for (const arquivo of arquivos) {
|
|
2049
2086
|
const codigo = await readFile(arquivo, "utf8");
|
|
@@ -2247,7 +2284,7 @@ async function indexarPersistenciaDetalhada(diretorios) {
|
|
|
2247
2284
|
for (const diretorio of diretorios) {
|
|
2248
2285
|
const arquivos = await listarArquivosRecursivos(diretorio, [
|
|
2249
2286
|
".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
|
|
2250
|
-
".py", ".dart", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
|
|
2287
|
+
".py", ".dart", ".lua", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
|
|
2251
2288
|
".sql", ".psql", ".ddl", ".prisma",
|
|
2252
2289
|
]);
|
|
2253
2290
|
for (const arquivo of arquivos) {
|
|
@@ -2830,9 +2867,11 @@ export async function analisarDriftLegado(contexto, opcoes) {
|
|
|
2830
2867
|
diretoriosIgnoradosAtivos = resolverDiretoriosIgnoradosAtivos(opcoesResolvidas);
|
|
2831
2868
|
try {
|
|
2832
2869
|
const diretoriosCodigoAtivos = resolverDiretoriosCodigoEscopoReal(contexto, configuracaoEscopo);
|
|
2870
|
+
const arquivosCodigo = await indexarArquivosCodigo(diretoriosCodigoAtivos);
|
|
2833
2871
|
const indexTs = await indexarTypeScript(diretoriosCodigoAtivos);
|
|
2834
2872
|
const indexPy = await indexarPython(diretoriosCodigoAtivos);
|
|
2835
2873
|
const indexDart = await indexarDart(diretoriosCodigoAtivos);
|
|
2874
|
+
const indexLua = await indexarLua(diretoriosCodigoAtivos);
|
|
2836
2875
|
const indexDotnet = await indexarDotnet(diretoriosCodigoAtivos);
|
|
2837
2876
|
const indexJava = await indexarJava(diretoriosCodigoAtivos);
|
|
2838
2877
|
const indexGo = await indexarGo(diretoriosCodigoAtivos);
|
|
@@ -2844,6 +2883,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
|
|
|
2844
2883
|
...indexTs.simbolos,
|
|
2845
2884
|
...indexPy.simbolos,
|
|
2846
2885
|
...indexDart.simbolos,
|
|
2886
|
+
...indexLua.simbolos,
|
|
2847
2887
|
...indexDotnet.simbolos,
|
|
2848
2888
|
...indexJava.simbolos,
|
|
2849
2889
|
...indexGo.simbolos,
|
|
@@ -2854,6 +2894,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
|
|
|
2854
2894
|
...indexTs.simbolos.map((item) => [item.caminho, item]),
|
|
2855
2895
|
...indexPy.simbolos.map((item) => [item.caminho, item]),
|
|
2856
2896
|
...indexDart.simbolos.map((item) => [item.caminho, item]),
|
|
2897
|
+
...indexLua.simbolos.map((item) => [item.caminho, item]),
|
|
2857
2898
|
...indexDotnet.simbolos.map((item) => [item.caminho, item]),
|
|
2858
2899
|
...indexJava.simbolos.map((item) => [item.caminho, item]),
|
|
2859
2900
|
...indexGo.simbolos.map((item) => [item.caminho, item]),
|
|
@@ -2864,6 +2905,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
|
|
|
2864
2905
|
...indexTs.recursos,
|
|
2865
2906
|
...indexPy.recursos,
|
|
2866
2907
|
...indexDart.recursos,
|
|
2908
|
+
...indexLua.recursos,
|
|
2867
2909
|
...indexDotnet.recursos,
|
|
2868
2910
|
...indexJava.recursos,
|
|
2869
2911
|
...indexGo.recursos,
|
|
@@ -2882,6 +2924,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
|
|
|
2882
2924
|
...indexRust.rotas,
|
|
2883
2925
|
];
|
|
2884
2926
|
const todosArquivosConhecidos = [...new Set([
|
|
2927
|
+
...arquivosCodigo,
|
|
2885
2928
|
...todosSimbolos.map((item) => item.arquivo),
|
|
2886
2929
|
...todasRotasIndexadas.map((item) => item.arquivo),
|
|
2887
2930
|
...todosRecursos.map((item) => item.arquivo),
|
|
@@ -3508,7 +3551,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
|
|
|
3508
3551
|
const EXTENSOES_BUSCA_IMPACTO = [
|
|
3509
3552
|
".sema",
|
|
3510
3553
|
".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
|
|
3511
|
-
".py", ".dart", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
|
|
3554
|
+
".py", ".dart", ".lua", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
|
|
3512
3555
|
".sql", ".psql", ".ddl", ".prisma", ".json",
|
|
3513
3556
|
];
|
|
3514
3557
|
function construirVariantesSemanticas(valor) {
|