@semacode/cli 2.3.0 → 2.3.1
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 -39
- package/README.md +251 -228
- package/dist/agentEntryPoints.js +551 -550
- package/dist/angular-consumer-standalone.d.ts +3 -1
- package/dist/angular-consumer-standalone.js +12 -8
- package/dist/drift.part01.d.ts +32 -2
- package/dist/drift.part01.js +2 -0
- package/dist/drift.part04.d.ts +3 -2
- package/dist/drift.part04.js +6 -3
- package/dist/drift.part05.d.ts +2 -1
- package/dist/drift.part05.js +4 -3
- package/dist/drift.part06.d.ts +2 -1
- package/dist/drift.part06.js +9 -5
- package/dist/drift.part07.d.ts +11 -10
- package/dist/drift.part07.js +40 -30
- package/dist/drift.part08.d.ts +2 -1
- package/dist/drift.part08.js +4 -3
- package/dist/drift.part11.js +71 -6
- package/dist/drift.part12.js +14 -1
- package/dist/drift.part13.d.ts +42 -7
- package/dist/drift.part13.js +660 -36
- package/dist/driftCache.d.ts +49 -0
- package/dist/driftCache.js +311 -0
- package/dist/driftCacheIncremental.d.ts +98 -0
- package/dist/driftCacheIncremental.js +596 -0
- package/dist/driftCatalogo.d.ts +91 -0
- package/dist/driftCatalogo.js +657 -0
- package/dist/driftCatalogoPersistente.d.ts +8 -0
- package/dist/driftCatalogoPersistente.js +77 -0
- package/dist/driftEscopo.d.ts +23 -0
- package/dist/driftEscopo.js +563 -0
- package/dist/driftEscopoReferencias.d.ts +4 -0
- package/dist/driftEscopoReferencias.js +265 -0
- package/dist/driftOrcamento.d.ts +12 -0
- package/dist/driftOrcamento.js +19 -3
- package/dist/execucoesExternas.js +5 -19
- package/dist/iaPrompts.js +310 -310
- package/dist/index.part01.d.ts +16 -1
- package/dist/index.part01.js +80 -4
- package/dist/index.part02.js +21 -21
- package/dist/index.part03.d.ts +2 -2
- package/dist/index.part03.js +14 -3
- package/dist/index.part04.d.ts +2 -2
- package/dist/index.part04.js +113 -101
- package/dist/index.part05.d.ts +1 -1
- package/dist/index.part05.js +99 -22
- package/dist/index.part06.js +3 -2
- package/dist/index.part07.js +24 -24
- package/dist/index.part08.js +1 -1
- package/dist/init/templates.part01.js +393 -393
- package/dist/init/templates.part02.js +189 -189
- package/dist/initTemplatesBackend.js +73 -73
- package/dist/initTemplatesBase.js +81 -81
- package/dist/initTemplatesFlutter.js +137 -137
- package/dist/initTemplatesRuntime.js +350 -350
- package/dist/initTemplatesWeb.js +309 -309
- package/dist/pipelineConteudo/command.js +1 -36
- package/dist/projeto.d.ts +1 -1
- package/dist/projetoCarregar.d.ts +2 -2
- package/dist/projetoCarregar.js +47 -24
- package/dist/projetoCatalogo.d.ts +7 -0
- package/dist/projetoCatalogo.js +125 -0
- package/dist/projetoTipos.d.ts +14 -5
- package/dist/sync/index.js +35 -35
- package/docs/README.md +34 -34
- package/docs/ai-integration.md +1 -7
- package/docs/ai-onboarding.md +62 -62
- package/docs/ai-workflow.md +4 -0
- package/docs/auth.md +26 -26
- package/docs/cli.md +79 -79
- package/docs/commands.md +16 -13
- package/docs/database.md +15 -15
- package/docs/deploy.md +41 -41
- package/docs/descoberta-capacidades.md +106 -106
- package/docs/documentation.md +37 -46
- package/docs/env.md +16 -16
- package/docs/frontend.md +41 -41
- package/docs/getting-started.md +57 -57
- package/docs/i18n.md +15 -15
- package/docs/pipeline-conteudo.md +246 -246
- package/docs/profiles.md +54 -54
- package/docs/repositories.md +43 -43
- package/docs/rollback.md +31 -31
- package/docs/security.md +32 -32
- package/docs/sistemas-interativos.md +373 -378
- package/docs/support.md +8 -8
- package/docs/testing.md +51 -44
- package/docs/vocabulary.md +29 -29
- package/exemplos/agendamento.sema +1 -1
- package/exemplos/assinatura.sema +1 -1
- package/exemplos/auditoria.sema +1 -1
- package/exemplos/autenticacao.sema +1 -1
- package/exemplos/author_obra_comum.sema +1 -1
- package/exemplos/author_tema_sensivel.sema +1 -1
- package/exemplos/automacao.sema +1 -1
- package/exemplos/cadastro_usuario.sema +1 -1
- package/exemplos/calculadora.sema +1 -1
- package/exemplos/crud_simples.sema +1 -1
- package/exemplos/estoque.sema +1 -1
- package/exemplos/exportacao.sema +1 -1
- package/exemplos/fila.sema +1 -1
- package/exemplos/integracao_externa.sema +1 -1
- package/exemplos/multi_tenant.sema +1 -1
- package/exemplos/notificacao.sema +1 -1
- package/exemplos/operacao_estrategia.sema +132 -132
- package/exemplos/operacao_estrategia_discovery.sema +220 -220
- package/exemplos/operacao_estrategia_fluxo.sema +114 -114
- package/exemplos/operacao_estrategia_gates.sema +106 -106
- package/exemplos/operacao_estrategia_quarentena.sema +133 -133
- package/exemplos/operacao_estrategia_rollout.sema +124 -124
- package/exemplos/pagamento.sema +1 -1
- package/exemplos/pagamento_dominio.sema +1 -1
- package/exemplos/pedido.sema +1 -1
- package/exemplos/permissao.sema +1 -1
- package/exemplos/persistencia_vendor_first.sema +1 -1
- package/exemplos/pipeline-conteudo/README.md +44 -44
- package/exemplos/pipeline-conteudo/alvos.json +23 -23
- package/exemplos/pipeline-conteudo/definicao.json +136 -136
- package/exemplos/profile_conversas.sema +165 -165
- package/exemplos/profile_game.sema +1 -1
- package/exemplos/profile_legal.sema +1 -1
- package/exemplos/profile_ops.sema +1 -1
- package/exemplos/profile_research.sema +1 -1
- package/exemplos/profile_simulation.sema +211 -211
- package/exemplos/profile_software.sema +1 -1
- package/exemplos/profile_workflow_n8n.sema +1 -1
- package/exemplos/relatorio.sema +1 -1
- package/exemplos/replica_analitica_erp.sema +1 -1
- package/exemplos/sistemas-interativos/README.md +100 -100
- package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -5
- package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -16
- package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -32
- package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -93
- package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -78
- package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -27
- package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -79
- package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -42
- package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -32
- package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -23
- package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -39
- package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -46
- package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -39
- package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -37
- package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -104
- package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -27
- package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -118
- package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -459
- package/exemplos/sistemas-interativos/game-2d.json +83 -83
- package/exemplos/sistemas-interativos/game-3d-human.json +81 -81
- package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -97
- package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -94
- package/exemplos/sistemas-interativos/game-xr-human.json +80 -80
- package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -108
- package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -75
- package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -58
- package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -97
- package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -141
- package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -112
- package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -103
- package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -95
- package/exemplos/testes_embutidos.sema +1 -1
- package/exemplos/tratamento_erro.sema +1 -1
- package/exemplos/upload_arquivo.sema +1 -1
- package/exemplos/webhook.sema +1 -1
- package/node_modules/@sema/gerador-cpp/dist/index.js +176 -176
- package/node_modules/@sema/gerador-cpp/package.json +1 -1
- package/node_modules/@sema/gerador-css/dist/index.part01.js +10 -10
- package/node_modules/@sema/gerador-css/dist/index.part02.js +460 -460
- package/node_modules/@sema/gerador-dotnet/dist/index.js +169 -169
- package/node_modules/@sema/gerador-dotnet/package.json +1 -1
- package/node_modules/@sema/gerador-html/dist/index.js +17 -17
- package/node_modules/@sema/gerador-lua/dist/index.js +51 -51
- package/node_modules/@sema/gerador-php/dist/index.js +113 -113
- package/node_modules/@sema/gerador-python/dist/index.part02.js +3 -3
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js +11 -11
- package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +42 -42
- package/package.json +3 -3
package/dist/index.part05.js
CHANGED
|
@@ -7,10 +7,14 @@ import { escreverArquivos, formatarAvisoArtefatosGeradosAcimaDoLimite, } from '.
|
|
|
7
7
|
import { carregarModulos } from './carregarModulos.js';
|
|
8
8
|
import { obterOpcao } from './cliArgs.js';
|
|
9
9
|
import { resumirDriftPorModulo } from "./index.part03.js";
|
|
10
|
-
import { resolverOpcoesDriftCli } from "./index.part01.js";
|
|
11
|
-
export async function comandoInspecionar(entrada, emJson, cwd = process.cwd()) {
|
|
12
|
-
const
|
|
13
|
-
const
|
|
10
|
+
import { criarResultadoDriftNaoExecutado, resolverAnaliseDriftCli, resolverOpcoesDriftCli } from "./index.part01.js";
|
|
11
|
+
export async function comandoInspecionar(entrada, emJson, cwd = process.cwd(), args = []) {
|
|
12
|
+
const analiseDrift = resolverAnaliseDriftCli(args, "none");
|
|
13
|
+
const contextoProjeto = await carregarProjeto(entrada, cwd, { escopo: analiseDrift.opcoes.escopo });
|
|
14
|
+
const driftExecutado = analiseDrift.modo !== "none";
|
|
15
|
+
const resultadoDrift = driftExecutado
|
|
16
|
+
? await analisarDriftLegado(contextoProjeto, analiseDrift.opcoes)
|
|
17
|
+
: criarResultadoDriftNaoExecutado(contextoProjeto, analiseDrift.opcoes);
|
|
14
18
|
const framework = resolverFrameworkPadrao(undefined, contextoProjeto.configCarregada);
|
|
15
19
|
const estruturaSaida = resolverEstruturaSaidaPadrao(undefined, framework, contextoProjeto.configCarregada);
|
|
16
20
|
const alvos = resolverAlvosVerificacao(contextoProjeto.configCarregada);
|
|
@@ -29,22 +33,56 @@ export async function comandoInspecionar(entrada, emJson, cwd = process.cwd()) {
|
|
|
29
33
|
diretoriosCodigo: contextoProjeto.diretoriosCodigo,
|
|
30
34
|
fontesLegado: contextoProjeto.fontesLegado,
|
|
31
35
|
modoAdocao: contextoProjeto.modoAdocao,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
analiseDrift: {
|
|
37
|
+
modo: analiseDrift.modo,
|
|
38
|
+
executada: driftExecutado,
|
|
39
|
+
cache: analiseDrift.modo === "fresh" ? "refresh" : analiseDrift.modo === "cache" ? "auto" : null,
|
|
40
|
+
aviso: driftExecutado
|
|
41
|
+
? null
|
|
42
|
+
: "Análise de drift não executada; código, rotas, vínculos e implementações não foram verificados.",
|
|
43
|
+
},
|
|
44
|
+
scoreDrift: driftExecutado ? resultadoDrift.resumo_operacional.scoreMedio : null,
|
|
45
|
+
confiancaGeral: driftExecutado ? resultadoDrift.resumo_operacional.confiancaGeral : null,
|
|
46
|
+
consumerFramework: driftExecutado ? resultadoDrift.consumerFramework : null,
|
|
47
|
+
appRoutes: driftExecutado ? resultadoDrift.appRoutes : null,
|
|
48
|
+
consumerSurfaces: driftExecutado ? resultadoDrift.consumerSurfaces : null,
|
|
49
|
+
consumerBridges: driftExecutado ? resultadoDrift.consumerBridges : null,
|
|
38
50
|
},
|
|
39
51
|
projeto: {
|
|
40
52
|
arquivos: contextoProjeto.arquivosProjeto,
|
|
53
|
+
arquivosDescobertos: contextoProjeto.arquivosDescobertos,
|
|
41
54
|
modulos: contextoProjeto.modulosSelecionados.map((item) => ({
|
|
42
55
|
caminho: item.caminho,
|
|
43
56
|
modulo: item.resultado.modulo?.nome ?? null,
|
|
44
57
|
sucesso: !temErros(item.resultado.diagnosticos),
|
|
45
58
|
diagnosticos: item.resultado.diagnosticos.length,
|
|
46
59
|
superficies: item.resultado.ir?.superficies.map((superficie) => `${superficie.tipo}:${superficie.nome}`) ?? [],
|
|
47
|
-
|
|
60
|
+
tasks: item.resultado.ir?.tasks.map((task) => task.nome) ?? [],
|
|
61
|
+
vinculos: item.resultado.ir
|
|
62
|
+
? [
|
|
63
|
+
...item.resultado.ir.vinculos,
|
|
64
|
+
...item.resultado.ir.tasks.flatMap((task) => task.vinculos),
|
|
65
|
+
...item.resultado.ir.flows.flatMap((flow) => flow.vinculos),
|
|
66
|
+
...item.resultado.ir.routes.flatMap((route) => route.vinculos),
|
|
67
|
+
...item.resultado.ir.superficies.flatMap((superficie) => superficie.vinculos),
|
|
68
|
+
]
|
|
69
|
+
: [],
|
|
70
|
+
arquivosEsperados: item.resultado.ir
|
|
71
|
+
? [...new Set([
|
|
72
|
+
...item.resultado.ir.vinculos,
|
|
73
|
+
...item.resultado.ir.tasks.flatMap((task) => task.vinculos),
|
|
74
|
+
...item.resultado.ir.flows.flatMap((flow) => flow.vinculos),
|
|
75
|
+
...item.resultado.ir.routes.flatMap((route) => route.vinculos),
|
|
76
|
+
...item.resultado.ir.superficies.flatMap((superficie) => superficie.vinculos),
|
|
77
|
+
].flatMap((vinculo) => [
|
|
78
|
+
vinculo.arquivo,
|
|
79
|
+
vinculo.tipo === "arquivo" ? vinculo.valor : undefined,
|
|
80
|
+
]).filter((arquivo) => Boolean(arquivo)))]
|
|
81
|
+
.sort((a, b) => a.localeCompare(b, "pt-BR"))
|
|
82
|
+
: [],
|
|
83
|
+
implementacao: driftExecutado
|
|
84
|
+
? resumirDriftPorModulo(item.resultado.modulo?.nome ?? null, item.caminho, resultadoDrift)
|
|
85
|
+
: null,
|
|
48
86
|
})),
|
|
49
87
|
},
|
|
50
88
|
};
|
|
@@ -60,8 +98,14 @@ export async function comandoInspecionar(entrada, emJson, cwd = process.cwd()) {
|
|
|
60
98
|
console.log(`- Estrutura de saida: ${payload.configuracao.estruturaSaida}`);
|
|
61
99
|
console.log(`- Alvos: ${payload.configuracao.alvos.join(", ")}`);
|
|
62
100
|
console.log(`- Modo de adocao: ${payload.configuracao.modoAdocao}`);
|
|
63
|
-
console.log(`-
|
|
64
|
-
|
|
101
|
+
console.log(`- Análise de drift: ${payload.configuracao.analiseDrift.modo} (${payload.configuracao.analiseDrift.executada ? "executada" : "não executada"})`);
|
|
102
|
+
if (payload.configuracao.analiseDrift.executada) {
|
|
103
|
+
console.log(`- Score medio de drift: ${payload.configuracao.scoreDrift}`);
|
|
104
|
+
console.log(`- Confianca geral: ${payload.configuracao.confiancaGeral}`);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
console.log(`- Aviso: ${payload.configuracao.analiseDrift.aviso}`);
|
|
108
|
+
}
|
|
65
109
|
console.log("- Saidas por alvo:");
|
|
66
110
|
for (const [alvo, saida] of Object.entries(payload.configuracao.saidas)) {
|
|
67
111
|
console.log(` - ${alvo}: ${saida}`);
|
|
@@ -75,25 +119,50 @@ export async function comandoInspecionar(entrada, emJson, cwd = process.cwd()) {
|
|
|
75
119
|
console.log(` - ${diretorio}`);
|
|
76
120
|
}
|
|
77
121
|
console.log(`- Fontes de legado detectadas: ${payload.configuracao.fontesLegado.join(", ") || "nenhuma"}`);
|
|
122
|
+
console.log(`- Contratos carregados: ${payload.projeto.arquivos.length}`);
|
|
123
|
+
console.log(`- Contratos descobertos: ${payload.projeto.arquivosDescobertos.length}`);
|
|
78
124
|
console.log("- Modulos selecionados:");
|
|
79
125
|
for (const modulo of payload.projeto.modulos) {
|
|
80
126
|
console.log(` - ${modulo.modulo ?? "(sem modulo)"} :: ${modulo.caminho} :: diagnosticos=${modulo.diagnosticos}`);
|
|
81
|
-
console.log(`
|
|
82
|
-
for (const
|
|
83
|
-
console.log(` arquivo
|
|
127
|
+
console.log(` tasks=${modulo.tasks.length} vinculos=${modulo.vinculos.length} arquivos esperados=${modulo.arquivosEsperados.length}`);
|
|
128
|
+
for (const arquivoEsperado of modulo.arquivosEsperados.slice(0, 8)) {
|
|
129
|
+
console.log(` arquivo esperado: ${arquivoEsperado}`);
|
|
130
|
+
}
|
|
131
|
+
if (modulo.implementacao) {
|
|
132
|
+
console.log(` impls validos=${modulo.implementacao.implsValidos} quebrados=${modulo.implementacao.implsQuebrados} recursos divergentes=${modulo.implementacao.recursosDivergentesCount} sem_impl=${modulo.implementacao.tasksSemImplementacao}`);
|
|
133
|
+
for (const arquivoRelacionado of modulo.implementacao.arquivosRelacionados.slice(0, 5)) {
|
|
134
|
+
console.log(` arquivo relacionado: ${arquivoRelacionado}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
console.log(" implementação: não verificada neste modo");
|
|
84
139
|
}
|
|
85
140
|
}
|
|
86
141
|
return 0;
|
|
87
142
|
}
|
|
88
143
|
export async function comandoDrift(entrada, args, emJson, cwd = process.cwd()) {
|
|
89
|
-
const
|
|
90
|
-
const
|
|
144
|
+
const opcoes = resolverOpcoesDriftCli(args);
|
|
145
|
+
const contextoProjeto = await carregarProjeto(entrada, cwd, { escopo: opcoes.escopo });
|
|
146
|
+
const resultado = await analisarDriftLegado(contextoProjeto, opcoes);
|
|
91
147
|
if (emJson) {
|
|
92
148
|
console.log(JSON.stringify(resultado, null, 2));
|
|
93
149
|
return resultado.sucesso ? 0 : 1;
|
|
94
150
|
}
|
|
95
151
|
console.log("Drift entre Sema e codigo legado");
|
|
96
152
|
console.log(`- Escopo aplicado: ${resultado.escopo_aplicado.escopo}`);
|
|
153
|
+
console.log(`- Estrategia fisica: ${resultado.escopo_aplicado.estrategia ?? "legado"}`);
|
|
154
|
+
console.log(`- Cobertura: ${resultado.escopo_aplicado.cobertura ?? "nao informada"}`);
|
|
155
|
+
console.log(`- Arquivos planejados: ${resultado.escopo_aplicado.arquivosPlanejados?.length ?? 0}`);
|
|
156
|
+
console.log(`- Cache: ${resultado.escopo_aplicado.cache?.politica ?? "nao informado"} (${resultado.escopo_aplicado.cache?.origem ?? "nao informado"})`);
|
|
157
|
+
console.log(`- Catálogo: ${resultado.escopo_aplicado.catalogo?.arquivosCatalogados ?? 0} arquivos, ${resultado.escopo_aplicado.catalogo?.diretoriosVisitados ?? 0} diretórios visitados, ${resultado.escopo_aplicado.catalogo?.leiturasConteudo ?? 0} leituras`);
|
|
158
|
+
const cacheIncremental = resultado.escopo_aplicado.cache?.incremental;
|
|
159
|
+
if (cacheIncremental) {
|
|
160
|
+
console.log(`- Cache incremental: ${cacheIncremental.metadataHits} metadata hits, ${cacheIncremental.contentHits} content hits, ${cacheIncremental.groupHits} grupos reutilizados, ${cacheIncremental.groupMisses} grupos recalculados`);
|
|
161
|
+
}
|
|
162
|
+
const fases = resultado.escopo_aplicado.cache?.fasesMs;
|
|
163
|
+
if (fases) {
|
|
164
|
+
console.log(`- Fases: plano ${fases.planejamento}ms, catálogo ${fases.catalogacao}ms, dependências ${fases.dependencias}ms, assinaturas ${fases.assinaturas}ms, índices ${fases.indexacao}ms, total ${fases.total}ms`);
|
|
165
|
+
}
|
|
97
166
|
console.log(`- Ignorar worktrees: ${resultado.escopo_aplicado.ignorarWorktrees ? "sim" : "nao"}`);
|
|
98
167
|
console.log(`- Ignorar consumidores laterais: ${resultado.escopo_aplicado.ignorarConsumidoresLaterais ? "sim" : "nao"}`);
|
|
99
168
|
console.log(`- Modulos analisados: ${resultado.modulos.length}`);
|
|
@@ -181,8 +250,12 @@ export async function comandoImpacto(entrada, args, emJson, cwd = process.cwd())
|
|
|
181
250
|
console.error("Uso: sema impacto <arquivo-ou-pasta> --alvo <token-semântico> [--mudanca <descricao>] [--escopo <arquivo|modulo|projeto>] [--incluir-worktrees] [--incluir-consumidores-laterais] [--json]");
|
|
182
251
|
return 1;
|
|
183
252
|
}
|
|
184
|
-
const
|
|
185
|
-
|
|
253
|
+
const opcoes = resolverOpcoesDriftCli(args);
|
|
254
|
+
if (!obterOpcao(args, "--escopo")) {
|
|
255
|
+
opcoes.escopo = entrada?.toLowerCase().endsWith(".sema") ? "modulo" : "projeto";
|
|
256
|
+
}
|
|
257
|
+
const contextoProjeto = await carregarProjeto(entrada, cwd, { escopo: opcoes.escopo });
|
|
258
|
+
const resultado = await gerarMapaImpactoSemantico(contextoProjeto, alvoSemantico, obterOpcao(args, "--mudanca", `avaliar impacto de ${alvoSemantico}`), opcoes);
|
|
186
259
|
if (emJson) {
|
|
187
260
|
console.log(JSON.stringify(resultado, null, 2));
|
|
188
261
|
return resultado.sucesso ? 0 : 1;
|
|
@@ -215,8 +288,12 @@ export async function comandoRenomearSemantico(entrada, args, emJson, cwd = proc
|
|
|
215
288
|
console.error("Uso: sema renomear-semantico <arquivo-ou-pasta> --de <nome-atual> --para <nome-novo> [--escopo <arquivo|modulo|projeto>] [--incluir-worktrees] [--incluir-consumidores-laterais] [--json]");
|
|
216
289
|
return 1;
|
|
217
290
|
}
|
|
218
|
-
const
|
|
219
|
-
|
|
291
|
+
const opcoes = resolverOpcoesDriftCli(args);
|
|
292
|
+
if (!obterOpcao(args, "--escopo")) {
|
|
293
|
+
opcoes.escopo = entrada?.toLowerCase().endsWith(".sema") ? "modulo" : "projeto";
|
|
294
|
+
}
|
|
295
|
+
const contextoProjeto = await carregarProjeto(entrada, cwd, { escopo: opcoes.escopo });
|
|
296
|
+
const resultado = await assistirRenomeacaoSemantica(contextoProjeto, nomeAtual, nomeNovo, opcoes);
|
|
220
297
|
if (emJson) {
|
|
221
298
|
console.log(JSON.stringify(resultado, null, 2));
|
|
222
299
|
return resultado.sucesso ? 0 : 1;
|
package/dist/index.part06.js
CHANGED
|
@@ -209,6 +209,7 @@ export async function comandoAjudaIa() {
|
|
|
209
209
|
"Use `sema sync-codex` para regenerar o contexto governado do Codex na raiz.",
|
|
210
210
|
"Use `sema instalar-exemplos` para materializar `exemplos/` oficiais sem sobrescrever arquivos locais.",
|
|
211
211
|
"Use `sema resumo <arquivo> --micro --para onboarding --json` para IA fraca; o resumo vem no stdout.",
|
|
212
|
+
"Use `--drift fresh|cache|none` em `resumo` para escolher análise nova, cache válido ou somente contratos; `--micro` usa `none` por padrão e os demais usam `fresh`.",
|
|
212
213
|
"Se `sema resumo` ou outro gate estourar timeout local, aumente o timeout e tente de novo; timeout do agente nao e falha do Sema.",
|
|
213
214
|
"Use `sema prompt-curto <arquivo> --curto --para mudanca` para colar contexto em modelo gratuito.",
|
|
214
215
|
"Use `sema prompt-ia`, `sema prompt-ia-ui`, `sema prompt-ia-react` e `sema prompt-ia-sema-primeiro` conforme a tarefa.",
|
|
@@ -287,7 +288,7 @@ export async function comandoResumo(entrada, args, emJson) {
|
|
|
287
288
|
const escreverNaRaiz = possuiFlag(args, "--raiz");
|
|
288
289
|
const alvo = entrada ? path.resolve(process.cwd(), entrada) : process.cwd();
|
|
289
290
|
if (entrada && entrada.toLowerCase().endsWith(".sema")) {
|
|
290
|
-
const contexto = await carregarContextoModuloIa(alvo);
|
|
291
|
+
const contexto = await carregarContextoModuloIa(alvo, args, tamanho === "micro" ? "none" : "fresh");
|
|
291
292
|
const resumoSemantico = coletarResumoSemanticoModulo(contexto);
|
|
292
293
|
const guiaPorCapacidade = criarGuiaCapacidadeIa();
|
|
293
294
|
const texto = tamanho === "medio"
|
|
@@ -324,7 +325,7 @@ export async function comandoResumo(entrada, args, emJson) {
|
|
|
324
325
|
console.log(texto);
|
|
325
326
|
return 0;
|
|
326
327
|
}
|
|
327
|
-
const resumoProjeto = await gerarResumoProjetoIa(alvo, pastaSaida, escreverNaRaiz);
|
|
328
|
+
const resumoProjeto = await gerarResumoProjetoIa(alvo, pastaSaida, escreverNaRaiz, args, tamanho === "micro" ? "none" : "fresh");
|
|
328
329
|
const arquivoResumo = tamanho === "micro"
|
|
329
330
|
? "SEMA_BRIEF.micro.txt"
|
|
330
331
|
: tamanho === "curto"
|
package/dist/index.part07.js
CHANGED
|
@@ -45,30 +45,30 @@ export async function comandoPromptCurto(entrada, args, emJson) {
|
|
|
45
45
|
: "SEMA_BRIEF.md";
|
|
46
46
|
const contextoProjeto = await readFile(path.join(resumoProjeto.pastaSaida, arquivoResumo), "utf8");
|
|
47
47
|
const capacidade = tamanho === "micro" ? "fraca" : tamanho === "curto" ? "media" : "forte";
|
|
48
|
-
const prompt = `⚠️ REGRA OBRIGATÓRIA DE GOVERNANÇA:
|
|
49
|
-
|
|
50
|
-
ANTES DE QUALQUER AÇÃO (editar, criar, deletar, executar, consultar ou modificar):
|
|
51
|
-
1. Rode \`sema docs-impacto --intencao "<ação>" --json\` com sua intenção declarada.
|
|
52
|
-
2. Aguarde a resposta com as docs obrigatórias.
|
|
53
|
-
3. Leia as docs antes de agir.
|
|
54
|
-
4. Antes de concluir, rode \`sema finalizar-mudanca --intencao "<ação>" --doc-lida <arquivo> --json\` com todas as docs lidas.
|
|
55
|
-
|
|
56
|
-
Você está operando Sema em modo IA-first.
|
|
57
|
-
|
|
58
|
-
Isto é contexto comprimido para IA operar contrato semântico antes de tocar código vivo.
|
|
59
|
-
|
|
60
|
-
Capacidade alvo: ${capacidade}
|
|
61
|
-
Modo da tarefa: ${modo}
|
|
62
|
-
|
|
63
|
-
Regras:
|
|
64
|
-
- ANTES DE TUDO: rode \`sema docs-impacto --intencao "<ação>" --json\`.
|
|
65
|
-
- Comece pelo resumo compacto abaixo.
|
|
66
|
-
- Se a tarefa pedir mais contexto, abra \`AGENT_CONTEXT_PACK.json\` e depois \`SEMA_INDEX.json\`.
|
|
67
|
-
- Não tente ler o repositório inteiro se o resumo já disser onde tocar.
|
|
68
|
-
- Preserve contrato, risco, lacuna e checks sugeridos.
|
|
69
|
-
|
|
70
|
-
Contexto do projeto:
|
|
71
|
-
${contextoProjeto.trim()}
|
|
48
|
+
const prompt = `⚠️ REGRA OBRIGATÓRIA DE GOVERNANÇA:
|
|
49
|
+
|
|
50
|
+
ANTES DE QUALQUER AÇÃO (editar, criar, deletar, executar, consultar ou modificar):
|
|
51
|
+
1. Rode \`sema docs-impacto --intencao "<ação>" --json\` com sua intenção declarada.
|
|
52
|
+
2. Aguarde a resposta com as docs obrigatórias.
|
|
53
|
+
3. Leia as docs antes de agir.
|
|
54
|
+
4. Antes de concluir, rode \`sema finalizar-mudanca --intencao "<ação>" --doc-lida <arquivo> --json\` com todas as docs lidas.
|
|
55
|
+
|
|
56
|
+
Você está operando Sema em modo IA-first.
|
|
57
|
+
|
|
58
|
+
Isto é contexto comprimido para IA operar contrato semântico antes de tocar código vivo.
|
|
59
|
+
|
|
60
|
+
Capacidade alvo: ${capacidade}
|
|
61
|
+
Modo da tarefa: ${modo}
|
|
62
|
+
|
|
63
|
+
Regras:
|
|
64
|
+
- ANTES DE TUDO: rode \`sema docs-impacto --intencao "<ação>" --json\`.
|
|
65
|
+
- Comece pelo resumo compacto abaixo.
|
|
66
|
+
- Se a tarefa pedir mais contexto, abra \`AGENT_CONTEXT_PACK.json\` e depois \`SEMA_INDEX.json\`.
|
|
67
|
+
- Não tente ler o repositório inteiro se o resumo já disser onde tocar.
|
|
68
|
+
- Preserve contrato, risco, lacuna e checks sugeridos.
|
|
69
|
+
|
|
70
|
+
Contexto do projeto:
|
|
71
|
+
${contextoProjeto.trim()}
|
|
72
72
|
`;
|
|
73
73
|
if (emJson) {
|
|
74
74
|
console.log(JSON.stringify({
|
package/dist/index.part08.js
CHANGED
|
@@ -105,7 +105,7 @@ export async function principal() {
|
|
|
105
105
|
: await comandoVerificar(posicionais[0], resolverSaidaPadrao(obterOpcao(resto, "--saida", "./.tmp/sema-verificar"), "typescript", await carregarConfiguracaoProjeto(posicionais[0] ? path.resolve(cwd, posicionais[0]) : cwd)), cwd);
|
|
106
106
|
break;
|
|
107
107
|
case "inspecionar":
|
|
108
|
-
codigoSaida = await comandoInspecionar(posicionais[0], possuiFlag(resto, "--json"), cwd);
|
|
108
|
+
codigoSaida = await comandoInspecionar(posicionais[0], possuiFlag(resto, "--json"), cwd, resto);
|
|
109
109
|
break;
|
|
110
110
|
case "drift":
|
|
111
111
|
codigoSaida = await comandoDrift(posicionais[0], resto, possuiFlag(resto, "--json"), cwd);
|