@semacode/cli 1.5.47 → 1.5.52
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/LICENSE +39 -21
- package/README.md +47 -48
- package/dist/agentContext.d.ts +2 -2
- package/dist/agentContext.js +1 -1
- package/dist/agentContextPack.d.ts +1 -1
- package/dist/agentContextPack.js +70 -48
- package/dist/agentContextTipos.d.ts +2 -2
- package/dist/agentContextTipos.js +7 -13
- package/dist/agentEntryPoints.js +311 -271
- package/dist/billing/index.d.ts +1 -58
- package/dist/billing/index.js +17 -278
- package/dist/cliArgs.js +0 -3
- package/dist/comandos.js +15 -131
- package/dist/contexto.d.ts +0 -9
- package/dist/contexto.js +59 -109
- package/dist/docs.part01.js +30 -51
- package/dist/drift.part01.d.ts +1 -1
- package/dist/drift.part04.d.ts +1 -1
- package/dist/drift.part04.js +2 -2
- package/dist/drift.part05.d.ts +3 -3
- package/dist/drift.part05.js +8 -8
- package/dist/drift.part06.js +15 -8
- package/dist/drift.part09.js +11 -7
- package/dist/drift.part14.js +18 -3
- package/dist/driftOrcamento.d.ts +11 -1
- package/dist/driftOrcamento.js +49 -20
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -6
- package/dist/index.part01.d.ts +1 -1
- package/dist/index.part01.js +1 -3
- package/dist/index.part02.js +4 -2
- package/dist/index.part04.js +7 -7
- package/dist/index.part08.js +1 -22
- package/dist/initTemplatesBase.js +5 -5
- package/dist/profileArtefatoValidadores.js +42 -0
- package/dist/profileI18nCatalogo.js +2 -0
- package/dist/projetoConfig.js +7 -0
- package/dist/projetoLegado.js +10 -3
- package/dist/sync/index.js +1 -1
- package/dist/tipos.d.ts +1 -1
- package/docs/README.md +19 -0
- package/docs/ai-integration.md +90 -0
- package/docs/ai-onboarding.md +33 -0
- package/docs/ai-workflow.md +62 -0
- package/docs/auth.md +16 -0
- package/docs/cli.md +36 -95
- package/docs/commands.md +90 -0
- package/docs/database.md +15 -0
- package/docs/deploy.md +6 -38
- package/docs/documentation.md +39 -0
- package/docs/env.md +8 -109
- package/docs/frontend.md +41 -0
- package/docs/getting-started.md +33 -0
- package/docs/i18n.md +15 -0
- package/docs/profiles.md +43 -0
- package/docs/repositories.md +19 -61
- package/docs/rollback.md +9 -20
- package/docs/security.md +24 -0
- package/docs/support.md +8 -0
- package/docs/syntax.md +128 -0
- package/docs/testing.md +17 -0
- package/docs/vocabulary.md +28 -0
- package/node_modules/@sema/gerador-css/dist/index.part01.js +1 -0
- package/node_modules/@sema/gerador-css/dist/index.part01.js.map +1 -1
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/dist/index.js +1 -0
- package/node_modules/@sema/gerador-dart/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/dist/index.js +1 -0
- package/node_modules/@sema/gerador-html/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/dist/index.js +1 -0
- package/node_modules/@sema/gerador-javascript/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +11 -0
- package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/dist/index.part02.js +1 -0
- package/node_modules/@sema/gerador-python/dist/index.part02.js.map +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js +1 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +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/diagnosticos/melhorador.js +1 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js +4 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part02.d.ts +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
- package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js +3 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.d.ts +2 -2
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js +4 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.d.ts +2 -2
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js +11 -5
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.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 +15 -22
- package/AGENTS.md +0 -324
- package/AGENT_CONTEXT_PACK.json +0 -470
- package/SEMA_BRIEF.curto.txt +0 -18
- package/SEMA_BRIEF.md +0 -705
- package/SEMA_BRIEF.micro.txt +0 -16
- package/SEMA_INDEX.json +0 -10759
- package/dist/agentContext.js.map +0 -1
- package/dist/agentContextPack.js.map +0 -1
- package/dist/agentContextTipos.js.map +0 -1
- package/dist/agentEntryPoints.js.map +0 -1
- package/dist/angular-consumer-standalone.js.map +0 -1
- package/dist/authorAnalise.js.map +0 -1
- package/dist/authorPoliticas.js.map +0 -1
- package/dist/billing/index.js.map +0 -1
- package/dist/bridge.d.ts +0 -52
- package/dist/bridge.js +0 -333
- package/dist/bridge.js.map +0 -1
- package/dist/carregarModulos.js.map +0 -1
- package/dist/cliArgs.js.map +0 -1
- package/dist/comandos.js.map +0 -1
- package/dist/contexto.js.map +0 -1
- package/dist/controleComercialSupabase.d.ts +0 -7
- package/dist/controleComercialSupabase.js +0 -6
- package/dist/controleComercialSupabase.js.map +0 -1
- package/dist/controleComercialSupabaseAdmin.d.ts +0 -7
- package/dist/controleComercialSupabaseAdmin.js +0 -138
- package/dist/controleComercialSupabaseAdmin.js.map +0 -1
- package/dist/controleComercialSupabaseCadastro.d.ts +0 -4
- package/dist/controleComercialSupabaseCadastro.js +0 -85
- package/dist/controleComercialSupabaseCadastro.js.map +0 -1
- package/dist/controleComercialSupabaseConstantes.d.ts +0 -28
- package/dist/controleComercialSupabaseConstantes.js +0 -44
- package/dist/controleComercialSupabaseConstantes.js.map +0 -1
- package/dist/controleComercialSupabaseConsumo.d.ts +0 -2
- package/dist/controleComercialSupabaseConsumo.js +0 -77
- package/dist/controleComercialSupabaseConsumo.js.map +0 -1
- package/dist/controleComercialSupabaseConta.d.ts +0 -11
- package/dist/controleComercialSupabaseConta.js +0 -157
- package/dist/controleComercialSupabaseConta.js.map +0 -1
- package/dist/controleComercialSupabaseProfiles.d.ts +0 -4
- package/dist/controleComercialSupabaseProfiles.js +0 -55
- package/dist/controleComercialSupabaseProfiles.js.map +0 -1
- package/dist/controleComercialSupabaseTipos.d.ts +0 -3
- package/dist/controleComercialSupabaseTipos.js +0 -2
- package/dist/controleComercialSupabaseTipos.js.map +0 -1
- package/dist/controleComercialSupabaseTiposAdmin.d.ts +0 -152
- package/dist/controleComercialSupabaseTiposAdmin.js +0 -2
- package/dist/controleComercialSupabaseTiposAdmin.js.map +0 -1
- package/dist/controleComercialSupabaseTiposBase.d.ts +0 -169
- package/dist/controleComercialSupabaseTiposBase.js +0 -2
- package/dist/controleComercialSupabaseTiposBase.js.map +0 -1
- package/dist/controleComercialSupabaseTiposConta.d.ts +0 -220
- package/dist/controleComercialSupabaseTiposConta.js +0 -2
- package/dist/controleComercialSupabaseTiposConta.js.map +0 -1
- package/dist/cpp-symbols.js.map +0 -1
- package/dist/dev/index.js.map +0 -1
- package/dist/dev/watcher.js.map +0 -1
- package/dist/docs/resolver.js.map +0 -1
- package/dist/docs.js.map +0 -1
- package/dist/docs.part01.js.map +0 -1
- package/dist/docs.part02.js.map +0 -1
- package/dist/doctorCommand.js.map +0 -1
- package/dist/dotnet-http.js.map +0 -1
- package/dist/drift.contrato.js.map +0 -1
- package/dist/drift.js.map +0 -1
- package/dist/drift.part01.js.map +0 -1
- package/dist/drift.part02.js.map +0 -1
- package/dist/drift.part03.js.map +0 -1
- package/dist/drift.part04.js.map +0 -1
- package/dist/drift.part05.js.map +0 -1
- package/dist/drift.part06.js.map +0 -1
- package/dist/drift.part07.js.map +0 -1
- package/dist/drift.part08.js.map +0 -1
- package/dist/drift.part09.js.map +0 -1
- package/dist/drift.part10.js.map +0 -1
- package/dist/drift.part11.js.map +0 -1
- package/dist/drift.part12.js.map +0 -1
- package/dist/drift.part13.js.map +0 -1
- package/dist/drift.part14.js.map +0 -1
- package/dist/driftOrcamento.js.map +0 -1
- package/dist/driftScore.js.map +0 -1
- package/dist/execucoesExternas.js.map +0 -1
- package/dist/exemplosOficiais.js.map +0 -1
- package/dist/fsGovernado.js.map +0 -1
- package/dist/geracaoCore.js.map +0 -1
- package/dist/go-http.js.map +0 -1
- package/dist/guard.js.map +0 -1
- package/dist/iaPrompts.js.map +0 -1
- package/dist/importador.js.map +0 -1
- package/dist/importador.part01.js.map +0 -1
- package/dist/importador.part02.js.map +0 -1
- package/dist/importador.part03.js.map +0 -1
- package/dist/importador.part04.js.map +0 -1
- package/dist/importador.part05.js.map +0 -1
- package/dist/importador.part06.js.map +0 -1
- package/dist/importador.part07.js.map +0 -1
- package/dist/importador.part08.js.map +0 -1
- package/dist/importador.part09.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.part01.js.map +0 -1
- package/dist/index.part02.js.map +0 -1
- package/dist/index.part03.js.map +0 -1
- package/dist/index.part04.js.map +0 -1
- package/dist/index.part05.js.map +0 -1
- package/dist/index.part06.js.map +0 -1
- package/dist/index.part07.js.map +0 -1
- package/dist/index.part08.js.map +0 -1
- package/dist/init/index.js.map +0 -1
- package/dist/init/templates.js.map +0 -1
- package/dist/init/templates.part01.js.map +0 -1
- package/dist/init/templates.part02.js.map +0 -1
- package/dist/initCommand.js.map +0 -1
- package/dist/initTemplatesBackend.js.map +0 -1
- package/dist/initTemplatesBase.js.map +0 -1
- package/dist/initTemplatesFlutter.js.map +0 -1
- package/dist/initTemplatesRuntime.js.map +0 -1
- package/dist/initTemplatesWeb.js.map +0 -1
- package/dist/java-http.js.map +0 -1
- package/dist/lua-symbols.js.map +0 -1
- package/dist/mcpInstalarChaveCommand.d.ts +0 -1
- package/dist/mcpInstalarChaveCommand.js +0 -168
- package/dist/mcpInstalarChaveCommand.js.map +0 -1
- package/dist/mcpRemoto.d.ts +0 -32
- package/dist/mcpRemoto.js +0 -61
- package/dist/mcpRemoto.js.map +0 -1
- package/dist/mcp_chave.d.ts +0 -1
- package/dist/mcp_chave.js +0 -4
- package/dist/mcp_chave.js.map +0 -1
- package/dist/profileArtefatoBase.js.map +0 -1
- package/dist/profileArtefatoValidadores.js.map +0 -1
- package/dist/profileAuthorCommand.js.map +0 -1
- package/dist/profileAuthorTipos.js.map +0 -1
- package/dist/profileCatalogo.js.map +0 -1
- package/dist/profileCommand.js.map +0 -1
- package/dist/profileI18nCatalogo.js.map +0 -1
- package/dist/profileI18nVisivel.js.map +0 -1
- package/dist/profileOrquestracao.js.map +0 -1
- package/dist/profileRegras.js.map +0 -1
- package/dist/profileRulePacks.js.map +0 -1
- package/dist/profiles/validate.js.map +0 -1
- package/dist/projeto.js.map +0 -1
- package/dist/projetoBusca.js.map +0 -1
- package/dist/projetoCarregar.js.map +0 -1
- package/dist/projetoConfig.js.map +0 -1
- package/dist/projetoLegado.js.map +0 -1
- package/dist/projetoOrigens.js.map +0 -1
- package/dist/projetoResolucao.js.map +0 -1
- package/dist/projetoTipos.js.map +0 -1
- package/dist/python-http.js.map +0 -1
- package/dist/runnerValidacaoRemota.d.ts +0 -9
- package/dist/runnerValidacaoRemota.js +0 -9
- package/dist/runnerValidacaoRemota.js.map +0 -1
- package/dist/runnerValidacaoRemotaBateria.d.ts +0 -10
- package/dist/runnerValidacaoRemotaBateria.js +0 -117
- package/dist/runnerValidacaoRemotaBateria.js.map +0 -1
- package/dist/runnerValidacaoRemotaCli.d.ts +0 -4
- package/dist/runnerValidacaoRemotaCli.js +0 -86
- package/dist/runnerValidacaoRemotaCli.js.map +0 -1
- package/dist/runnerValidacaoRemotaComandos.d.ts +0 -7
- package/dist/runnerValidacaoRemotaComandos.js +0 -123
- package/dist/runnerValidacaoRemotaComandos.js.map +0 -1
- package/dist/runnerValidacaoRemotaEscopo.d.ts +0 -4
- package/dist/runnerValidacaoRemotaEscopo.js +0 -79
- package/dist/runnerValidacaoRemotaEscopo.js.map +0 -1
- package/dist/runnerValidacaoRemotaExecucao.d.ts +0 -2
- package/dist/runnerValidacaoRemotaExecucao.js +0 -104
- package/dist/runnerValidacaoRemotaExecucao.js.map +0 -1
- package/dist/runnerValidacaoRemotaRelatorio.d.ts +0 -3
- package/dist/runnerValidacaoRemotaRelatorio.js +0 -95
- package/dist/runnerValidacaoRemotaRelatorio.js.map +0 -1
- package/dist/runnerValidacaoRemotaServidor.d.ts +0 -4
- package/dist/runnerValidacaoRemotaServidor.js +0 -185
- package/dist/runnerValidacaoRemotaServidor.js.map +0 -1
- package/dist/runnerValidacaoRemotaSnapshot.d.ts +0 -10
- package/dist/runnerValidacaoRemotaSnapshot.js +0 -219
- package/dist/runnerValidacaoRemotaSnapshot.js.map +0 -1
- package/dist/runnerValidacaoRemotaTipos.d.ts +0 -158
- package/dist/runnerValidacaoRemotaTipos.js +0 -35
- package/dist/runnerValidacaoRemotaTipos.js.map +0 -1
- package/dist/runnerValidacaoRemotaUtil.d.ts +0 -3
- package/dist/runnerValidacaoRemotaUtil.js +0 -18
- package/dist/runnerValidacaoRemotaUtil.js.map +0 -1
- package/dist/runnerValidacaoRemotaWorkspace.d.ts +0 -2
- package/dist/runnerValidacaoRemotaWorkspace.js +0 -112
- package/dist/runnerValidacaoRemotaWorkspace.js.map +0 -1
- package/dist/rust-http.js.map +0 -1
- package/dist/semaChatCommand.d.ts +0 -1
- package/dist/semaChatCommand.js +0 -43
- package/dist/semaChatCommand.js.map +0 -1
- package/dist/semaChatRuntime.d.ts +0 -23
- package/dist/semaChatRuntime.js +0 -202
- package/dist/semaChatRuntime.js.map +0 -1
- package/dist/sync/index.js.map +0 -1
- package/dist/textoListas.js.map +0 -1
- package/dist/tipos.js.map +0 -1
- package/dist/typescript-http-body.js.map +0 -1
- package/dist/typescript-http-expressoes.js.map +0 -1
- package/dist/typescript-http-modelos.js.map +0 -1
- package/dist/typescript-http-rotas.js.map +0 -1
- package/dist/typescript-http-semantica.js.map +0 -1
- package/dist/typescript-http.js.map +0 -1
- package/docs/AGENT_STARTER.md +0 -111
- package/docs/agentes-por-capacidade.md +0 -126
- package/docs/api.md +0 -82
- package/docs/comandos.md +0 -702
- package/docs/como-ensinar-a-sema-para-ia.md +0 -30
- package/docs/documentacao.md +0 -74
- package/docs/extensao-vscode.md +0 -49
- package/docs/fluxo-pratico-ia-sema.md +0 -215
- package/docs/instalacao-e-primeiro-uso.md +0 -60
- package/docs/integracao-com-ia.md +0 -44
- package/docs/mcp.md +0 -69
- 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/seguranca.md +0 -126
- package/docs/sintaxe.md +0 -218
- package/llms-full.txt +0 -40
- package/llms.txt +0 -23
package/dist/contexto.js
CHANGED
|
@@ -1,112 +1,79 @@
|
|
|
1
1
|
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
-
// Descricao:
|
|
3
|
-
/**
|
|
4
|
-
* Gerador de pacote de contexto para chats web (ChatGPT, Lovable, etc.).
|
|
5
|
-
*
|
|
6
|
-
* A CLI lê contratos e código selecionado do disco local e gera um pacote
|
|
7
|
-
* compacto que o usuário cola no chat. Isso elimina o sync manual — a CLI
|
|
8
|
-
* faz o trabalho pesado de I/O local e entrega um payload pronto.
|
|
9
|
-
*
|
|
10
|
-
* Contrato: contratos/sema/mcp_client_bridge.sema — task gerar_pacote_contexto_para_chat
|
|
11
|
-
*/
|
|
2
|
+
// Descricao: gera um pacote local de contexto Sema sem depender de servico externo.
|
|
12
3
|
import { readFile, mkdir, writeFile } from "node:fs/promises";
|
|
13
4
|
import path from "node:path";
|
|
14
|
-
|
|
15
|
-
// Constantes
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
17
|
-
const LIMITE_TAMANHO_INLINE = 100_000; // 100KB
|
|
5
|
+
const LIMITE_TAMANHO_INLINE = 100_000;
|
|
18
6
|
const PADROES_SEGREDO = [
|
|
19
|
-
/(?:api[_-]?key|secret|token|password|senha)\s*[:=]\s*["']?[A-Za-z0-9_
|
|
20
|
-
/\bsk-[A-Za-z0-9_
|
|
21
|
-
/\beyJ[A-Za-z0-9_
|
|
7
|
+
/(?:api[_-]?key|secret|token|password|senha)\s*[:=]\s*["']?[A-Za-z0-9_-]{16,}/gi,
|
|
8
|
+
/\bsk-[A-Za-z0-9_-]{20,}\b/g,
|
|
9
|
+
/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,
|
|
22
10
|
];
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
// Gerar pacote de contexto para chat
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
11
|
export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
27
12
|
if (!entrada.contratos || entrada.contratos.length === 0) {
|
|
28
|
-
throw new Error("
|
|
13
|
+
throw new Error("No contract was provided. Use --contratos <file1.sema> <file2.sema>.");
|
|
29
14
|
}
|
|
30
|
-
// Ler contratos
|
|
31
15
|
const contratosConteudo = [];
|
|
32
16
|
for (const contrato of entrada.contratos) {
|
|
33
17
|
const absoluto = path.resolve(cwd, contrato);
|
|
34
18
|
const conteudo = await readFile(absoluto, "utf8");
|
|
35
19
|
contratosConteudo.push({ caminho: contrato, conteudo });
|
|
36
20
|
}
|
|
37
|
-
// Ler código selecionado (se houver)
|
|
38
21
|
const codigoConteudo = [];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
catch {
|
|
48
|
-
// Arquivo não existe — ignora silenciosamente
|
|
49
|
-
}
|
|
22
|
+
for (const arquivo of entrada.codigoSelecionado ?? []) {
|
|
23
|
+
try {
|
|
24
|
+
const absoluto = path.resolve(cwd, arquivo);
|
|
25
|
+
const conteudo = sanitizarConteudo(await readFile(absoluto, "utf8"));
|
|
26
|
+
codigoConteudo.push({ caminho: arquivo, conteudo });
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// Missing selected files are ignored because this helper is best-effort context assembly.
|
|
50
30
|
}
|
|
51
31
|
}
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
const rotas = contratosConteudo.flatMap((c) => extrairRotas(c.conteudo));
|
|
32
|
+
const modulos = contratosConteudo.map((contrato) => extrairModulo(contrato.conteudo)).filter(Boolean);
|
|
33
|
+
const tarefas = contratosConteudo.flatMap((contrato) => extrairTarefas(contrato.conteudo));
|
|
34
|
+
const rotas = contratosConteudo.flatMap((contrato) => extrairRotas(contrato.conteudo));
|
|
56
35
|
const resumo = [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
...contratosConteudo.map((
|
|
66
|
-
|
|
36
|
+
"# Sema Local Context",
|
|
37
|
+
"",
|
|
38
|
+
`Modules: ${modulos.join(", ") || "none"}`,
|
|
39
|
+
`Tasks: ${tarefas.length}`,
|
|
40
|
+
`Routes: ${rotas.length}`,
|
|
41
|
+
`Selected code files: ${codigoConteudo.length}`,
|
|
42
|
+
"",
|
|
43
|
+
"## Contracts",
|
|
44
|
+
...contratosConteudo.map((contrato) => `### ${contrato.caminho}\n\`\`\`sema\n${contrato.conteudo}\n\`\`\``),
|
|
45
|
+
"",
|
|
67
46
|
].join("\n");
|
|
68
|
-
// Código selecionado (resumido)
|
|
69
47
|
const codigoResumido = codigoConteudo.length > 0
|
|
70
48
|
? [
|
|
71
|
-
|
|
72
|
-
...codigoConteudo.map((
|
|
73
|
-
const ext = path.extname(
|
|
74
|
-
return `### ${
|
|
49
|
+
"## Selected Code",
|
|
50
|
+
...codigoConteudo.map((arquivo) => {
|
|
51
|
+
const ext = path.extname(arquivo.caminho).slice(1) || "txt";
|
|
52
|
+
return `### ${arquivo.caminho}\n\`\`\`${ext}\n${arquivo.conteudo}\n\`\`\``;
|
|
75
53
|
}),
|
|
76
|
-
|
|
54
|
+
"",
|
|
77
55
|
].join("\n")
|
|
78
56
|
: "";
|
|
79
|
-
// IR resumida
|
|
80
57
|
const irResumida = [
|
|
81
|
-
|
|
82
|
-
`-
|
|
83
|
-
`-
|
|
84
|
-
`-
|
|
85
|
-
|
|
58
|
+
"## IR Summary",
|
|
59
|
+
`- Modules: ${modulos.join(", ") || "none"}`,
|
|
60
|
+
`- Tasks: ${tarefas.map((tarefa) => `\`${tarefa}\``).join(", ") || "none"}`,
|
|
61
|
+
`- Routes: ${rotas.map((rota) => `\`${rota}\``).join(", ") || "none"}`,
|
|
62
|
+
"",
|
|
86
63
|
].join("\n");
|
|
87
|
-
// Drift resumido (placeholder — a CLI faz drift real via `sema drift`)
|
|
88
64
|
const driftResumido = entrada.incluirDrift
|
|
89
|
-
?
|
|
90
|
-
|
|
91
|
-
`⚠️ Drift real requer \`sema drift\` CLI.`,
|
|
92
|
-
`Este pacote contém contratos e código para o MCP executar drift remoto.`,
|
|
93
|
-
``,
|
|
94
|
-
].join("\n")
|
|
95
|
-
: `## Drift\nNão incluído (use --drift para incluir).\n`;
|
|
96
|
-
// Impact map (placeholder)
|
|
65
|
+
? "## Drift\nRun `sema drift` locally for the authoritative drift result.\n"
|
|
66
|
+
: "## Drift\nNot included. Run `sema drift` locally when drift evidence is required.\n";
|
|
97
67
|
const impactMap = entrada.incluirImpacto
|
|
98
|
-
? tarefas.map((
|
|
68
|
+
? tarefas.map((tarefa) => `- \`${tarefa}\`: local contract and linked implementation must be inspected with \`sema impacto\`.`)
|
|
99
69
|
: [];
|
|
100
|
-
// Docs relevantes
|
|
101
70
|
const docsRelevantes = [
|
|
102
71
|
"AGENTS.md",
|
|
103
|
-
"docs/mcp.md",
|
|
104
72
|
"docs/cli.md",
|
|
105
|
-
"docs/
|
|
73
|
+
"docs/syntax.md",
|
|
74
|
+
"docs/documentation.md",
|
|
106
75
|
];
|
|
107
|
-
|
|
108
|
-
const conteudoTotal = contratosConteudo.map((c) => c.conteudo).join("");
|
|
109
|
-
const checksum = checksumSimples(conteudoTotal);
|
|
76
|
+
const checksum = checksumSimples(contratosConteudo.map((contrato) => contrato.conteudo).join(""));
|
|
110
77
|
const pacote = {
|
|
111
78
|
contratos: entrada.contratos,
|
|
112
79
|
resumo,
|
|
@@ -116,7 +83,6 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
|
116
83
|
docsRelevantes,
|
|
117
84
|
checksum,
|
|
118
85
|
};
|
|
119
|
-
// Montar texto inline completo
|
|
120
86
|
const inlineTexto = [
|
|
121
87
|
`<!-- SEMA_CONTEXT_PACK v1 checksum=${checksum} -->`,
|
|
122
88
|
resumo,
|
|
@@ -124,20 +90,19 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
|
124
90
|
irResumida,
|
|
125
91
|
driftResumido,
|
|
126
92
|
impactMap.length > 0 ? `## Impact Map\n${impactMap.join("\n")}\n` : "",
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
...docsRelevantes.map((
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
93
|
+
"## Relevant Docs",
|
|
94
|
+
"Read these files before acting:",
|
|
95
|
+
...docsRelevantes.map((doc) => `- \`${doc}\``),
|
|
96
|
+
"",
|
|
97
|
+
"## Agent Instructions",
|
|
98
|
+
"1. Read the contracts above. They are the source of truth.",
|
|
99
|
+
"2. Treat selected code as context, not as a substitute for the contract.",
|
|
100
|
+
"3. Run `sema docs-impacto` with the declared intention before changing files.",
|
|
101
|
+
"4. Run `sema drift` and `sema impacto` locally before editing governed code.",
|
|
102
|
+
"5. Close with `sema finalizar-mudanca` and concrete evidence.",
|
|
137
103
|
].join("\n");
|
|
138
104
|
const tamanhoBytes = Buffer.byteLength(inlineTexto, "utf8");
|
|
139
105
|
const prontoParaChat = tamanhoBytes <= LIMITE_TAMANHO_INLINE;
|
|
140
|
-
// Gerar arquivos se solicitado
|
|
141
106
|
const arquivosGerados = [];
|
|
142
107
|
if (entrada.formatoSaida === "arquivo" || entrada.formatoSaida === "ambos") {
|
|
143
108
|
const pastaSaida = path.resolve(cwd, ".tmp", "sema-contexto-chat");
|
|
@@ -145,7 +110,6 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
|
145
110
|
const arquivoContexto = path.join(pastaSaida, "SEMA_CONTEXT_CHAT.md");
|
|
146
111
|
await writeFile(arquivoContexto, inlineTexto, "utf8");
|
|
147
112
|
arquivosGerados.push(arquivoContexto);
|
|
148
|
-
// Também gerar JSON estruturado
|
|
149
113
|
const arquivoJson = path.join(pastaSaida, "contexto-chat.json");
|
|
150
114
|
await writeFile(arquivoJson, JSON.stringify({ pacote, tamanhoBytes, prontoParaChat }, null, 2), "utf8");
|
|
151
115
|
arquivosGerados.push(arquivoJson);
|
|
@@ -158,40 +122,26 @@ export async function gerarPacoteContextoChat(entrada, cwd = process.cwd()) {
|
|
|
158
122
|
inlineTexto: entrada.formatoSaida === "inline" || entrada.formatoSaida === "ambos" ? inlineTexto : undefined,
|
|
159
123
|
};
|
|
160
124
|
}
|
|
161
|
-
// ---------------------------------------------------------------------------
|
|
162
|
-
// Helpers de extração
|
|
163
|
-
// ---------------------------------------------------------------------------
|
|
164
125
|
function extrairModulo(conteudo) {
|
|
165
126
|
const match = conteudo.match(/^module\s+([\w.]+)\s*\{/m);
|
|
166
127
|
return match ? match[1] : null;
|
|
167
128
|
}
|
|
168
129
|
function extrairTarefas(conteudo) {
|
|
169
|
-
|
|
170
|
-
const regex = /^\s*task\s+(\w+)\s*\{/gm;
|
|
171
|
-
let match;
|
|
172
|
-
while ((match = regex.exec(conteudo)) !== null) {
|
|
173
|
-
tarefas.push(match[1]);
|
|
174
|
-
}
|
|
175
|
-
return tarefas;
|
|
130
|
+
return [...conteudo.matchAll(/^\s*task\s+(\w+)\s*\{/gm)].map((match) => match[1]);
|
|
176
131
|
}
|
|
177
132
|
function extrairRotas(conteudo) {
|
|
178
|
-
|
|
179
|
-
const regex = /^\s*route\s+(\w+)\s*\{/gm;
|
|
180
|
-
let match;
|
|
181
|
-
while ((match = regex.exec(conteudo)) !== null) {
|
|
182
|
-
rotas.push(match[1]);
|
|
183
|
-
}
|
|
184
|
-
return rotas;
|
|
133
|
+
return [...conteudo.matchAll(/^\s*route\s+(\w+)\s*\{/gm)].map((match) => match[1]);
|
|
185
134
|
}
|
|
186
135
|
function sanitizarConteudo(conteudo) {
|
|
136
|
+
let sanitizado = conteudo;
|
|
187
137
|
for (const padrao of PADROES_SEGREDO) {
|
|
188
|
-
|
|
138
|
+
sanitizado = sanitizado.replace(padrao, "[REDACTED]");
|
|
189
139
|
}
|
|
190
|
-
return
|
|
140
|
+
return sanitizado;
|
|
191
141
|
}
|
|
192
142
|
function checksumSimples(texto) {
|
|
193
143
|
let hash = 0;
|
|
194
|
-
for (let i = 0; i < texto.length; i
|
|
144
|
+
for (let i = 0; i < texto.length; i += 1) {
|
|
195
145
|
hash = ((hash << 5) - hash + texto.charCodeAt(i)) | 0;
|
|
196
146
|
}
|
|
197
147
|
return Math.abs(hash).toString(16).padStart(8, "0");
|
package/dist/docs.part01.js
CHANGED
|
@@ -146,7 +146,7 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
146
146
|
categoria: "author",
|
|
147
147
|
padroes: [/\bauthor\b/, /autoral/, /obra/, /cliche/, /estilo/, /personagem/, /narrativa/, /sensibility/, /sensitivity/],
|
|
148
148
|
docs: [
|
|
149
|
-
{ relativo: "docs/profiles
|
|
149
|
+
{ relativo: "docs/profiles.md", tipo: "documentacao", motivo: "Author profile and local validation guardrails", permitirCriacao: false },
|
|
150
150
|
],
|
|
151
151
|
},
|
|
152
152
|
{
|
|
@@ -154,7 +154,6 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
154
154
|
padroes: [/\bprofiles\b/, /\bworkflow\b/, /\bn8n\b/, /\bops\b/, /\bgame\b/, /\blegal\b/, /\bresearch\b/, /pesquisa/, /juridic/, /orquestracao/, /automacao/],
|
|
155
155
|
docs: [
|
|
156
156
|
{ relativo: "docs/profiles.md", tipo: "documentacao", motivo: "profiles oficiais, gates e fronteiras de adapter", permitirCriacao: false },
|
|
157
|
-
{ relativo: "docs/scorecard-compatibilidade.md", tipo: "documentacao", motivo: "scorecard de compatibilidade para runtimes e adapters", permitirCriacao: false },
|
|
158
157
|
],
|
|
159
158
|
},
|
|
160
159
|
{
|
|
@@ -162,23 +161,21 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
162
161
|
padroes: [/(^|[^a-z0-9])auth([^a-z0-9]|$)/, /autentic/, /login/, /permiss/, /autoriz/, /token/, /oauth/, /seguranca/],
|
|
163
162
|
docs: [
|
|
164
163
|
{ relativo: "docs/auth.md", tipo: "documentacao", motivo: "regras de autenticacao, autorizacao e tokens", permitirCriacao: true },
|
|
165
|
-
{ relativo: "docs/
|
|
164
|
+
{ relativo: "docs/security.md", tipo: "documentacao", motivo: "politicas de seguranca afetadas pela mudanca", permitirCriacao: true },
|
|
166
165
|
],
|
|
167
166
|
},
|
|
168
167
|
{
|
|
169
168
|
categoria: "persistencia",
|
|
170
169
|
padroes: [/banco/, /database/, /persist/, /migration/, /migracao/, /prisma/, /postgres/, /redis/, /mongodb/],
|
|
171
170
|
docs: [
|
|
172
|
-
{ relativo: "docs/persistencia-vendor-first.md", tipo: "documentacao", motivo: "regras de persistencia vendor-first", permitirCriacao: false },
|
|
173
171
|
{ relativo: "docs/database.md", tipo: "runbook", motivo: "operacao de banco, migracoes e validacao de dados", permitirCriacao: true },
|
|
174
172
|
],
|
|
175
173
|
},
|
|
176
174
|
{
|
|
177
|
-
categoria: "
|
|
178
|
-
padroes: [
|
|
175
|
+
categoria: "integracao_ia",
|
|
176
|
+
padroes: [/tool/, /ferramenta/, /agent/, /agente/, /copilot/, /cursor/, /cline/, /roo/, /opencode/],
|
|
179
177
|
docs: [
|
|
180
|
-
{ relativo: "docs/
|
|
181
|
-
{ relativo: "docs/mcp.md", tipo: "documentacao", motivo: "runbook do MCP privado e ferramentas remotas", permitirCriacao: true },
|
|
178
|
+
{ relativo: "docs/ai-integration.md", tipo: "documentacao", motivo: "integracao do Sema com agentes IA", permitirCriacao: false },
|
|
182
179
|
],
|
|
183
180
|
},
|
|
184
181
|
{
|
|
@@ -189,20 +186,12 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
189
186
|
{ relativo: "docs/cli.md", tipo: "documentacao", motivo: "guia operacional dos comandos da CLI", permitirCriacao: false },
|
|
190
187
|
],
|
|
191
188
|
},
|
|
192
|
-
{
|
|
193
|
-
categoria: "extensao",
|
|
194
|
-
padroes: [/vscode/, /extension/, /extensao/, /editor/, /\blsp\b/, /language server/],
|
|
195
|
-
docs: [
|
|
196
|
-
{ relativo: "pacotes/editor-vscode/README.md", tipo: "pacote", motivo: "documentacao publica da extensao VS Code", permitirCriacao: false },
|
|
197
|
-
{ relativo: "docs/extensao-vscode.md", tipo: "documentacao", motivo: "runbook da extensao VS Code", permitirCriacao: true },
|
|
198
|
-
],
|
|
199
|
-
},
|
|
200
189
|
{
|
|
201
190
|
categoria: "contrato",
|
|
202
191
|
padroes: [/contrato/, /\.sema/, /semant/, /\bsema\b/, /drift/, /governanca/],
|
|
203
192
|
docs: [
|
|
204
|
-
{ relativo: "docs/
|
|
205
|
-
{ relativo: "docs/
|
|
193
|
+
{ relativo: "docs/syntax.md", tipo: "documentacao", motivo: "sintaxe e blocos de contrato Sema", permitirCriacao: false },
|
|
194
|
+
{ relativo: "docs/ai-workflow.md", tipo: "documentacao", motivo: "fluxo IA-first antes de editar contratos", permitirCriacao: false },
|
|
206
195
|
],
|
|
207
196
|
},
|
|
208
197
|
{
|
|
@@ -216,7 +205,7 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
216
205
|
categoria: "testes",
|
|
217
206
|
padroes: [/teste/, /testar/, /qa/, /validacao/, /regressao/],
|
|
218
207
|
docs: [
|
|
219
|
-
{ relativo: "docs/
|
|
208
|
+
{ relativo: "docs/testing.md", tipo: "runbook", motivo: "estrategia de testes e regressao", permitirCriacao: true },
|
|
220
209
|
],
|
|
221
210
|
},
|
|
222
211
|
{
|
|
@@ -224,7 +213,7 @@ export const REGRAS_DOCUMENTACAO = [
|
|
|
224
213
|
padroes: [/doc/, /readme/, /manual/, /runbook/, /onboarding/],
|
|
225
214
|
docs: [
|
|
226
215
|
{ relativo: "docs/README.md", tipo: "documentacao", motivo: "indice de documentacao do projeto", permitirCriacao: false },
|
|
227
|
-
{ relativo: "docs/
|
|
216
|
+
{ relativo: "docs/documentation.md", tipo: "documentacao", motivo: "politica de atualizacao documental", permitirCriacao: true },
|
|
228
217
|
],
|
|
229
218
|
},
|
|
230
219
|
];
|
|
@@ -240,56 +229,46 @@ export function criarTemplateDoc(doc, intencao, categorias, arquivosAlvo) {
|
|
|
240
229
|
const linhas = [
|
|
241
230
|
`# ${titulo}`,
|
|
242
231
|
"",
|
|
243
|
-
"## English",
|
|
244
|
-
"",
|
|
245
232
|
"This document was created by Sema because an AI declared an intention that requires operational reading before action.",
|
|
246
233
|
"",
|
|
247
|
-
"##
|
|
248
|
-
"",
|
|
249
|
-
"Documento criado pela Sema porque uma IA declarou uma intenção que exige leitura operacional antes de agir.",
|
|
250
|
-
"",
|
|
251
|
-
"## Español",
|
|
252
|
-
"",
|
|
253
|
-
"Documento creado por Sema porque una IA declaró una intención que exige lectura operativa antes de actuar.",
|
|
254
|
-
"",
|
|
255
|
-
"## Intenção",
|
|
234
|
+
"## Intention",
|
|
256
235
|
"",
|
|
257
|
-
intencao || "
|
|
236
|
+
intencao || "Describe the operational intention before making the change.",
|
|
258
237
|
"",
|
|
259
|
-
"##
|
|
238
|
+
"## Scope",
|
|
260
239
|
"",
|
|
261
240
|
arquivosAlvo.length > 0
|
|
262
241
|
? arquivosAlvo.map((arquivo) => `- ${arquivo}`).join("\n")
|
|
263
|
-
: "-
|
|
242
|
+
: "- Declare the affected files, services, or contracts.",
|
|
264
243
|
"",
|
|
265
|
-
"##
|
|
244
|
+
"## Required Reading Before Action",
|
|
266
245
|
"",
|
|
267
|
-
"-
|
|
268
|
-
"-
|
|
269
|
-
"-
|
|
246
|
+
"- Read this whole document.",
|
|
247
|
+
"- Read related `.sema` contracts before editing code.",
|
|
248
|
+
"- Read the involved README, runbooks, and package docs.",
|
|
270
249
|
"",
|
|
271
|
-
"##
|
|
250
|
+
"## Procedure",
|
|
272
251
|
"",
|
|
273
|
-
"-
|
|
274
|
-
"-
|
|
275
|
-
"-
|
|
252
|
+
"- Describe the safe commands or steps.",
|
|
253
|
+
"- Declare preconditions, variables, and dependencies.",
|
|
254
|
+
"- Record how success will be validated.",
|
|
276
255
|
"",
|
|
277
|
-
"##
|
|
256
|
+
"## Validation",
|
|
278
257
|
"",
|
|
279
|
-
"-
|
|
280
|
-
"-
|
|
258
|
+
"- List build, test, verification, or smoke-check commands.",
|
|
259
|
+
"- Record expected evidence.",
|
|
281
260
|
"",
|
|
282
261
|
"## Rollback",
|
|
283
262
|
"",
|
|
284
|
-
"-
|
|
285
|
-
"-
|
|
263
|
+
"- Describe how to undo the change.",
|
|
264
|
+
"- Declare signals that require rollback.",
|
|
286
265
|
"",
|
|
287
|
-
"##
|
|
266
|
+
"## Documentation Update",
|
|
288
267
|
"",
|
|
289
|
-
"-
|
|
290
|
-
"-
|
|
268
|
+
"- Update this file when the operational flow changes.",
|
|
269
|
+
"- Update related docs and contracts in the same change.",
|
|
291
270
|
"",
|
|
292
|
-
`
|
|
271
|
+
`Inferred categories: ${categorias.join(", ")}`,
|
|
293
272
|
"",
|
|
294
273
|
];
|
|
295
274
|
return `${linhas.join("\n")}\n`;
|
package/dist/drift.part01.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EngineBanco, NivelConfiancaSemantica, NivelRiscoSemantico, TipoRecursoPersistencia } from "@sema/nucleo";
|
|
2
2
|
import type { ContextoProjetoCarregado } from "./projeto.js";
|
|
3
|
-
export type OrigemCodigoDrift = "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
|
|
3
|
+
export type OrigemCodigoDrift = "ts" | "js" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
|
|
4
4
|
export type OrigemSimboloDrift = OrigemCodigoDrift | "sql";
|
|
5
5
|
export interface SimboloResolvido {
|
|
6
6
|
origem: OrigemSimboloDrift;
|
package/dist/drift.part04.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export declare function listarArquivosRecursivos(diretorio: string, extensoes: s
|
|
|
41
41
|
export declare const EXTENSOES_ARQUIVOS_RASTREAVEIS_DRIFT: string[];
|
|
42
42
|
export declare function indexarArquivosRastreaveis(diretorios: string[]): Promise<string[]>;
|
|
43
43
|
export declare function caminhosSimbolicos(baseDiretorio: string, arquivo: string): string[];
|
|
44
|
-
export declare function registrarSimboloTypeScript(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, nome: string, nomeClasse?: string): void;
|
|
44
|
+
export declare function registrarSimboloTypeScript(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, nome: string, nomeClasse?: string, origem?: "ts" | "js"): void;
|
|
45
45
|
export declare function desembrulharExpressaoTypeScript(expr: ts.Expression): ts.Expression;
|
|
46
46
|
export declare function extrairNomePropriedadeTypeScript(nome: ts.PropertyName, sourceFile: ts.SourceFile): string | undefined;
|
|
47
47
|
export declare function extrairNomeClassePrototypeTypeScript(expr: ts.Expression, sourceFile: ts.SourceFile): string | undefined;
|
package/dist/drift.part04.js
CHANGED
|
@@ -317,13 +317,13 @@ export function caminhosSimbolicos(baseDiretorio, arquivo) {
|
|
|
317
317
|
: [];
|
|
318
318
|
return [...new Set([semPrefixo, comPrefixo, ...aliasesIndex].filter(Boolean))];
|
|
319
319
|
}
|
|
320
|
-
export function registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, nome, nomeClasse) {
|
|
320
|
+
export function registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, nome, nomeClasse, origem = "ts") {
|
|
321
321
|
for (const baseSimbolica of basesSimbolicas) {
|
|
322
322
|
const caminho = nomeClasse
|
|
323
323
|
? `${baseSimbolica}.${nomeClasse}.${nome}`
|
|
324
324
|
: `${baseSimbolica}.${nome}`;
|
|
325
325
|
simbolos.set(caminho, {
|
|
326
|
-
origem
|
|
326
|
+
origem,
|
|
327
327
|
caminho,
|
|
328
328
|
arquivo,
|
|
329
329
|
simbolo: nomeClasse ? `${nomeClasse}.${nome}` : nome,
|
package/dist/drift.part05.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
import { RegistroConsumerSurfaceDrift, SimboloResolvido } from "./drift.part01.js";
|
|
3
|
-
export declare function registrarMetodoTypeScriptProtoOuObjeto(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, nomeMetodo: string, nomeClasse?: string): void;
|
|
4
|
-
export declare function registrarMetodosObjectAssignTypeScript(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, objeto: ts.ObjectLiteralExpression, sourceFile: ts.SourceFile, nomeClasse?: string): void;
|
|
5
|
-
export declare function registrarAtribuicaoPrototypeTypeScript(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, sourceFile: ts.SourceFile, esquerda: ts.Expression, direita: ts.Expression): void;
|
|
3
|
+
export declare function registrarMetodoTypeScriptProtoOuObjeto(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, nomeMetodo: string, nomeClasse?: string, origem?: "ts" | "js"): void;
|
|
4
|
+
export declare function registrarMetodosObjectAssignTypeScript(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, objeto: ts.ObjectLiteralExpression, sourceFile: ts.SourceFile, nomeClasse?: string, origem?: "ts" | "js"): void;
|
|
5
|
+
export declare function registrarAtribuicaoPrototypeTypeScript(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, sourceFile: ts.SourceFile, esquerda: ts.Expression, direita: ts.Expression, origem?: "ts" | "js"): void;
|
|
6
6
|
export declare function normalizarRelacaoConsumer(relacaoArquivo: string): string;
|
|
7
7
|
export declare function normalizarSegmentoRotaConsumer(segmento: string): string;
|
|
8
8
|
export declare function montarRotaConsumer(partes: string[]): string;
|
package/dist/drift.part05.js
CHANGED
|
@@ -4,21 +4,21 @@ import { readFile } from "node:fs/promises";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import ts from "typescript";
|
|
6
6
|
import { desembrulharExpressaoTypeScript, extrairNomePropriedadeTypeScript, registrarSimboloTypeScript } from "./drift.part04.js";
|
|
7
|
-
export function registrarMetodoTypeScriptProtoOuObjeto(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse) {
|
|
7
|
+
export function registrarMetodoTypeScriptProtoOuObjeto(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse, origem = "ts") {
|
|
8
8
|
if (!nomeMetodo) {
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
if (nomeClasse) {
|
|
12
|
-
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse);
|
|
12
|
+
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse, origem);
|
|
13
13
|
}
|
|
14
|
-
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, nomeMetodo);
|
|
14
|
+
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, nomeMetodo, undefined, origem);
|
|
15
15
|
}
|
|
16
|
-
export function registrarMetodosObjectAssignTypeScript(simbolos, basesSimbolicas, arquivo, objeto, sourceFile, nomeClasse) {
|
|
16
|
+
export function registrarMetodosObjectAssignTypeScript(simbolos, basesSimbolicas, arquivo, objeto, sourceFile, nomeClasse, origem = "ts") {
|
|
17
17
|
for (const propriedade of objeto.properties) {
|
|
18
18
|
if (ts.isMethodDeclaration(propriedade) && propriedade.name) {
|
|
19
19
|
const nomeMetodo = extrairNomePropriedadeTypeScript(propriedade.name, sourceFile);
|
|
20
20
|
if (nomeMetodo) {
|
|
21
|
-
registrarMetodoTypeScriptProtoOuObjeto(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse);
|
|
21
|
+
registrarMetodoTypeScriptProtoOuObjeto(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse, origem);
|
|
22
22
|
}
|
|
23
23
|
continue;
|
|
24
24
|
}
|
|
@@ -28,11 +28,11 @@ export function registrarMetodosObjectAssignTypeScript(simbolos, basesSimbolicas
|
|
|
28
28
|
const nomeMetodo = extrairNomePropriedadeTypeScript(propriedade.name, sourceFile);
|
|
29
29
|
const valor = desembrulharExpressaoTypeScript(propriedade.initializer);
|
|
30
30
|
if (nomeMetodo && (ts.isFunctionExpression(valor) || ts.isArrowFunction(valor))) {
|
|
31
|
-
registrarMetodoTypeScriptProtoOuObjeto(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse);
|
|
31
|
+
registrarMetodoTypeScriptProtoOuObjeto(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse, origem);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
export function registrarAtribuicaoPrototypeTypeScript(simbolos, basesSimbolicas, arquivo, sourceFile, esquerda, direita) {
|
|
35
|
+
export function registrarAtribuicaoPrototypeTypeScript(simbolos, basesSimbolicas, arquivo, sourceFile, esquerda, direita, origem = "ts") {
|
|
36
36
|
const alvo = desembrulharExpressaoTypeScript(esquerda);
|
|
37
37
|
const valor = desembrulharExpressaoTypeScript(direita);
|
|
38
38
|
if (!ts.isPropertyAccessExpression(alvo) || !ts.isPropertyAccessExpression(alvo.expression)) {
|
|
@@ -46,7 +46,7 @@ export function registrarAtribuicaoPrototypeTypeScript(simbolos, basesSimbolicas
|
|
|
46
46
|
}
|
|
47
47
|
const nomeClasse = alvo.expression.expression.getText(sourceFile).trim();
|
|
48
48
|
const nomeMetodo = alvo.name.getText(sourceFile).trim();
|
|
49
|
-
registrarMetodoTypeScriptProtoOuObjeto(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse || undefined);
|
|
49
|
+
registrarMetodoTypeScriptProtoOuObjeto(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse || undefined, origem);
|
|
50
50
|
}
|
|
51
51
|
export function normalizarRelacaoConsumer(relacaoArquivo) {
|
|
52
52
|
return relacaoArquivo.replace(/\\/g, "/");
|
package/dist/drift.part06.js
CHANGED
|
@@ -115,7 +115,7 @@ function aplicarReexportacoesTypeScript(simbolos, reexportacoes) {
|
|
|
115
115
|
const caminho = `${baseFacade}.${nomeExportado ?? sufixo}`;
|
|
116
116
|
if (!simbolos.has(caminho)) {
|
|
117
117
|
simbolos.set(caminho, {
|
|
118
|
-
origem:
|
|
118
|
+
origem: simbolo.origem,
|
|
119
119
|
caminho,
|
|
120
120
|
arquivo: simbolo.arquivo,
|
|
121
121
|
simbolo: simbolo.simbolo,
|
|
@@ -145,7 +145,14 @@ export async function indexarTypeScript(diretorios) {
|
|
|
145
145
|
const reexportacoes = [];
|
|
146
146
|
for (const arquivo of arquivos) {
|
|
147
147
|
const codigo = await readFile(arquivo, "utf8");
|
|
148
|
-
const
|
|
148
|
+
const origemArquivo = /\.(?:js|jsx|mjs|cjs)$/i.test(arquivo) ? "js" : "ts";
|
|
149
|
+
const scriptKind = arquivo.endsWith(".tsx")
|
|
150
|
+
? ts.ScriptKind.TSX
|
|
151
|
+
: arquivo.endsWith(".jsx")
|
|
152
|
+
? ts.ScriptKind.JSX
|
|
153
|
+
: origemArquivo === "js"
|
|
154
|
+
? ts.ScriptKind.JS
|
|
155
|
+
: ts.ScriptKind.TS;
|
|
149
156
|
const sourceFile = ts.createSourceFile(arquivo, codigo, ts.ScriptTarget.Latest, true, scriptKind);
|
|
150
157
|
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
151
158
|
const relacao = path.relative(diretorio, arquivo);
|
|
@@ -251,7 +258,7 @@ export async function indexarTypeScript(diretorios) {
|
|
|
251
258
|
reexportacoes.push(reexportacao);
|
|
252
259
|
}
|
|
253
260
|
if (ts.isFunctionDeclaration(node) && node.name) {
|
|
254
|
-
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, node.name.text);
|
|
261
|
+
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, node.name.text, undefined, origemArquivo);
|
|
255
262
|
}
|
|
256
263
|
if (ts.isVariableStatement(node)) {
|
|
257
264
|
for (const declaracao of node.declarationList.declarations) {
|
|
@@ -259,7 +266,7 @@ export async function indexarTypeScript(diretorios) {
|
|
|
259
266
|
continue;
|
|
260
267
|
}
|
|
261
268
|
if (ts.isArrowFunction(declaracao.initializer) || ts.isFunctionExpression(declaracao.initializer)) {
|
|
262
|
-
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, declaracao.name.text);
|
|
269
|
+
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, declaracao.name.text, undefined, origemArquivo);
|
|
263
270
|
}
|
|
264
271
|
}
|
|
265
272
|
}
|
|
@@ -277,12 +284,12 @@ export async function indexarTypeScript(diretorios) {
|
|
|
277
284
|
for (const argumento of expr.arguments.slice(1)) {
|
|
278
285
|
const valor = desembrulharExpressaoTypeScript(argumento);
|
|
279
286
|
if (ts.isObjectLiteralExpression(valor)) {
|
|
280
|
-
registrarMetodosObjectAssignTypeScript(simbolos, basesSimbolicas, arquivo, valor, sourceFile, nomeClasse);
|
|
287
|
+
registrarMetodosObjectAssignTypeScript(simbolos, basesSimbolicas, arquivo, valor, sourceFile, nomeClasse, origemArquivo);
|
|
281
288
|
}
|
|
282
289
|
}
|
|
283
290
|
}
|
|
284
291
|
else if (ts.isBinaryExpression(expr) && expr.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
285
|
-
registrarAtribuicaoPrototypeTypeScript(simbolos, basesSimbolicas, arquivo, sourceFile, expr.left, expr.right);
|
|
292
|
+
registrarAtribuicaoPrototypeTypeScript(simbolos, basesSimbolicas, arquivo, sourceFile, expr.left, expr.right, origemArquivo);
|
|
286
293
|
}
|
|
287
294
|
}
|
|
288
295
|
continue;
|
|
@@ -297,12 +304,12 @@ export async function indexarTypeScript(diretorios) {
|
|
|
297
304
|
if (nomeMetodo === "constructor") {
|
|
298
305
|
continue;
|
|
299
306
|
}
|
|
300
|
-
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, nomeMetodo, node.name.text);
|
|
307
|
+
registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, nomeMetodo, node.name.text, origemArquivo);
|
|
301
308
|
const metodoEhInterno = member.modifiers?.some((m) => m.kind === ts.SyntaxKind.PrivateKeyword || m.kind === ts.SyntaxKind.ProtectedKeyword);
|
|
302
309
|
for (const baseSimbolica of basesSimbolicas) {
|
|
303
310
|
const caminhoMetodoDireto = `${baseSimbolica}.${nomeMetodo}`;
|
|
304
311
|
if (!simbolos.has(caminhoMetodoDireto)) {
|
|
305
|
-
simbolos.set(caminhoMetodoDireto, { origem:
|
|
312
|
+
simbolos.set(caminhoMetodoDireto, { origem: origemArquivo, caminho: caminhoMetodoDireto, arquivo, simbolo: nomeMetodo });
|
|
306
313
|
}
|
|
307
314
|
}
|
|
308
315
|
if (controllerDecorator && !metodoEhInterno) {
|