@semacode/cli 2.2.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 -141
- package/dist/agentContext.d.ts +1 -1
- package/dist/agentContextPack.js +6 -1
- package/dist/agentContextTipos.d.ts +4 -2
- package/dist/agentContextTipos.js +7 -0
- package/dist/agentEntryPoints.js +551 -499
- package/dist/angular-consumer-standalone.d.ts +3 -1
- package/dist/angular-consumer-standalone.js +12 -8
- package/dist/comandos.js +4 -0
- package/dist/discovery/catalog.d.ts +11 -0
- package/dist/discovery/catalog.js +521 -0
- package/dist/discovery/command.d.ts +11 -0
- package/dist/discovery/command.js +226 -0
- package/dist/discovery/index.d.ts +5 -0
- package/dist/discovery/index.js +8 -0
- package/dist/discovery/ranker.d.ts +3 -0
- package/dist/discovery/ranker.js +310 -0
- package/dist/discovery/redaction.d.ts +2 -0
- package/dist/discovery/redaction.js +21 -0
- package/dist/discovery/render.d.ts +2 -0
- package/dist/discovery/render.js +100 -0
- package/dist/discovery/types.d.ts +119 -0
- package/dist/discovery/types.js +13 -0
- 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/exemplosOficiais.js +29 -8
- package/dist/iaPrompts.d.ts +1 -1
- package/dist/iaPrompts.js +310 -307
- package/dist/index.d.ts +2 -0
- package/dist/index.js +23 -5
- package/dist/index.part01.d.ts +17 -2
- package/dist/index.part01.js +119 -8
- 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 +6 -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 -80
- 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/profileArtefatoValidadores.d.ts +3 -2
- package/dist/profileArtefatoValidadores.js +81 -0
- package/dist/profileAuthorTipos.d.ts +4 -3
- package/dist/profileCatalogo.d.ts +5 -5
- package/dist/profileCatalogo.js +30 -0
- package/dist/profileCommand.d.ts +8 -2
- package/dist/profileCommand.js +15 -5
- package/dist/profileRegras.d.ts +5 -5
- package/dist/profileRegras.js +13 -1
- package/dist/profileRulePacks.js +68 -0
- 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/sistemasInterativos/adapterProtocol.d.ts +3 -0
- package/dist/sistemasInterativos/adapterProtocol.js +240 -0
- package/dist/sistemasInterativos/advancedCatalog.d.ts +5 -0
- package/dist/sistemasInterativos/advancedCatalog.js +442 -0
- package/dist/sistemasInterativos/autonomy.d.ts +230 -0
- package/dist/sistemasInterativos/autonomy.js +753 -0
- package/dist/sistemasInterativos/canonical.d.ts +3 -0
- package/dist/sistemasInterativos/canonical.js +43 -0
- package/dist/sistemasInterativos/catalog.d.ts +116 -0
- package/dist/sistemasInterativos/catalog.js +543 -0
- package/dist/sistemasInterativos/command.d.ts +7 -0
- package/dist/sistemasInterativos/command.js +311 -0
- package/dist/sistemasInterativos/controlRun.d.ts +56 -0
- package/dist/sistemasInterativos/controlRun.js +391 -0
- package/dist/sistemasInterativos/evidence.d.ts +5 -0
- package/dist/sistemasInterativos/evidence.js +306 -0
- package/dist/sistemasInterativos/experienceIr.d.ts +12 -0
- package/dist/sistemasInterativos/experienceIr.js +895 -0
- package/dist/sistemasInterativos/experienceIrSemantics.d.ts +30 -0
- package/dist/sistemasInterativos/experienceIrSemantics.js +368 -0
- package/dist/sistemasInterativos/experienceIrTypes.d.ts +370 -0
- package/dist/sistemasInterativos/experienceIrTypes.js +5 -0
- package/dist/sistemasInterativos/extensionCommand.d.ts +391 -0
- package/dist/sistemasInterativos/extensionCommand.js +383 -0
- package/dist/sistemasInterativos/index.d.ts +19 -0
- package/dist/sistemasInterativos/index.js +22 -0
- package/dist/sistemasInterativos/operations.d.ts +40 -0
- package/dist/sistemasInterativos/operations.js +1167 -0
- package/dist/sistemasInterativos/operationsTypes.d.ts +297 -0
- package/dist/sistemasInterativos/operationsTypes.js +11 -0
- package/dist/sistemasInterativos/planner.d.ts +2 -0
- package/dist/sistemasInterativos/planner.js +159 -0
- package/dist/sistemasInterativos/portability.d.ts +164 -0
- package/dist/sistemasInterativos/portability.js +539 -0
- package/dist/sistemasInterativos/render.d.ts +3 -0
- package/dist/sistemasInterativos/render.js +179 -0
- package/dist/sistemasInterativos/temporal.d.ts +183 -0
- package/dist/sistemasInterativos/temporal.js +543 -0
- package/dist/sistemasInterativos/types.d.ts +215 -0
- package/dist/sistemasInterativos/types.js +4 -0
- package/dist/sistemasInterativos/validator.d.ts +2 -0
- package/dist/sistemasInterativos/validator.js +305 -0
- package/dist/sync/index.js +35 -35
- package/docs/README.md +34 -28
- package/docs/ai-onboarding.md +62 -62
- package/docs/ai-workflow.md +9 -4
- package/docs/auth.md +26 -26
- package/docs/cli.md +79 -79
- package/docs/commands.md +47 -2
- package/docs/database.md +15 -15
- package/docs/deploy.md +41 -41
- package/docs/descoberta-capacidades.md +106 -0
- package/docs/documentation.md +39 -39
- 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 -45
- package/docs/repositories.md +43 -43
- package/docs/rollback.md +31 -31
- package/docs/security.md +32 -32
- package/docs/sistemas-interativos.md +376 -0
- package/docs/support.md +8 -8
- package/docs/testing.md +51 -35
- 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 -0
- 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 -0
- package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -0
- package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -0
- package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -0
- package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -0
- package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -0
- package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -0
- package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -0
- package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -0
- package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -0
- package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -0
- package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -0
- package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -0
- package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -0
- package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -0
- package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -0
- package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -0
- package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -0
- package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -0
- package/exemplos/sistemas-interativos/game-2d.json +83 -0
- package/exemplos/sistemas-interativos/game-3d-human.json +81 -0
- package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -0
- package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -0
- package/exemplos/sistemas-interativos/game-xr-human.json +80 -0
- package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -0
- package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -0
- package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -0
- package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -0
- package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -0
- package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -0
- package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -0
- package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -0
- 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 +76 -47
- package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -1
- 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.part04.js
CHANGED
|
@@ -16,7 +16,7 @@ import { carregarModulos } from './carregarModulos.js';
|
|
|
16
16
|
import { obterOpcao, obterOpcoesRepetidas, possuiFlag } from './cliArgs.js';
|
|
17
17
|
import { resumirListaTexto, unicosOrdenados } from './textoListas.js';
|
|
18
18
|
import { EXTENSOES_CODIGO, listarArquivosRecursivosLimitado } from './projetoBusca.js';
|
|
19
|
-
import { VERSAO_CLI } from "./index.part01.js";
|
|
19
|
+
import { VERSAO_CLI, criarResultadoDriftNaoExecutado, resolverAnaliseDriftCli, } from "./index.part01.js";
|
|
20
20
|
import { coletarResumoSemanticoModulo, descreverFontesConclusao, detectarFontesConclusaoSnapshot, detectarModoVerificacaoCodigo } from "./index.part02.js";
|
|
21
21
|
import { ARQUIVOS_RESUMO_MODULO_IA, carregarContextoModuloIa, criarBriefingAgente, gerarArquivosResumoModuloIa, renderizarResumoProjetoMarkdown, resumirDriftPorModulo } from "./index.part03.js";
|
|
22
22
|
export const ARQUIVOS_RESUMO_PROJETO_IA = [
|
|
@@ -53,15 +53,22 @@ function escolherTopArquivosResumo(modulos, arquivosCodigoDetectados) {
|
|
|
53
53
|
}
|
|
54
54
|
return { arquivos: [], fonte: "nenhum" };
|
|
55
55
|
}
|
|
56
|
-
export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escreverNaRaiz = false) {
|
|
56
|
+
export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escreverNaRaiz = false, args = [], modoDriftPadrao = "fresh") {
|
|
57
57
|
const contextoProjeto = await carregarProjeto(entrada, process.cwd());
|
|
58
58
|
const geradoEm = new Date().toISOString();
|
|
59
59
|
const guiaPorCapacidade = criarGuiaCapacidadeIa();
|
|
60
60
|
const entradaCanonica = criarEntradaCanonicaProjeto(guiaPorCapacidade);
|
|
61
61
|
const agentContextPack = entradaCanonica.agentContextPack;
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
|
|
62
|
+
const analiseDrift = resolverAnaliseDriftCli(args, modoDriftPadrao);
|
|
63
|
+
const modoVerificacaoCodigo = analiseDrift.modo === "none"
|
|
64
|
+
? "contratos_apenas"
|
|
65
|
+
: await detectarModoVerificacaoCodigo(contextoProjeto.baseProjeto, contextoProjeto.diretoriosCodigo);
|
|
66
|
+
const fontesConclusao = analiseDrift.modo === "none"
|
|
67
|
+
? ["contrato"]
|
|
68
|
+
: await detectarFontesConclusaoSnapshot(contextoProjeto.baseProjeto);
|
|
69
|
+
const resultadoDrift = analiseDrift.modo === "none"
|
|
70
|
+
? criarResultadoDriftNaoExecutado(contextoProjeto, analiseDrift.opcoes)
|
|
71
|
+
: await analisarDriftLegado(contextoProjeto, analiseDrift.opcoes);
|
|
65
72
|
const modulos = contextoProjeto.modulosSelecionados.map((item) => {
|
|
66
73
|
const modulo = item.resultado.modulo?.nome ?? path.basename(item.caminho, ".sema");
|
|
67
74
|
const driftResumo = resumirDriftPorModulo(modulo, item.caminho, resultadoDrift);
|
|
@@ -77,6 +84,11 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
77
84
|
caminho: item.caminho,
|
|
78
85
|
modulo,
|
|
79
86
|
sucesso: resultadoDrift.sucesso,
|
|
87
|
+
modoAnalise: analiseDrift.modo,
|
|
88
|
+
executado: analiseDrift.modo !== "none",
|
|
89
|
+
aviso: analiseDrift.modo === "none"
|
|
90
|
+
? "Análise de drift não executada; nenhuma conclusão sobre o código foi produzida."
|
|
91
|
+
: null,
|
|
80
92
|
resumo: driftResumo,
|
|
81
93
|
drift: resultadoDrift,
|
|
82
94
|
},
|
|
@@ -206,102 +218,102 @@ export async function gerarContextoIa(arquivoEntrada, pastaSaidaOpcional) {
|
|
|
206
218
|
await escreverArquivoWorkspaceSeguro(pastaBase, artefato.caminhoRelativo, artefato.conteudo, { sobrescrever: true });
|
|
207
219
|
}
|
|
208
220
|
const resumoGerado = await gerarArquivosResumoModuloIa(contexto, pastaBase);
|
|
209
|
-
const resumo = `# Contexto de IA para ${contexto.modulo}
|
|
210
|
-
|
|
211
|
-
- Arquivo alvo: \`${contexto.arquivo}\`
|
|
212
|
-
- Modulo: \`${contexto.modulo}\`
|
|
213
|
-
- Sucesso em validar: \`${contexto.sucesso}\`
|
|
214
|
-
- Quantidade de diagnosticos: \`${contexto.diagnosticos.length}\`
|
|
215
|
-
- Gerado em: \`${contexto.geradoEm}\`
|
|
216
|
-
|
|
217
|
-
## Arquivos gerados neste pacote
|
|
218
|
-
|
|
219
|
-
- \`agent-context-pack.json\`
|
|
220
|
-
- \`${ARQUIVO_SEMA_BOOT}\`
|
|
221
|
-
- \`${ARQUIVO_SEMA_SMALL_MODEL}\`
|
|
222
|
-
- \`resumo.micro.txt\`
|
|
223
|
-
- \`resumo.curto.txt\`
|
|
224
|
-
- \`resumo.md\`
|
|
225
|
-
- \`briefing.min.json\`
|
|
226
|
-
- \`prompt-curto.txt\`
|
|
227
|
-
- \`validar.json\`
|
|
228
|
-
- \`diagnosticos.json\`
|
|
229
|
-
- \`ast.json\`
|
|
230
|
-
- \`ir.json\`
|
|
231
|
-
- \`drift.json\`
|
|
232
|
-
- \`briefing.json\`
|
|
233
|
-
|
|
234
|
-
## Fluxo recomendado para o agente
|
|
235
|
-
|
|
236
|
-
Antes de escolher arquivo de código, leia \`${ARQUIVO_SEMA_BOOT}\` e \`agent-context-pack.json\`. Eles declaram regras obrigatórias, proibições, prioridades, idioma humano e quando abrir texto bruto como \`AGENTS.md\`, \`exemplos/\`, docs e contratos.
|
|
237
|
-
|
|
238
|
-
## Políticas da plataforma
|
|
239
|
-
|
|
240
|
-
- Sema governa contrato, escopo, drift, evidência e qualidade; não contorna políticas, termos, permissões, segurança ou leis.
|
|
241
|
-
- Se houver alerta externo, trate como bloqueio da plataforma ou falso positivo possível, explique de forma neutra e não tente burlar filtro.
|
|
242
|
-
|
|
243
|
-
### IA fraca, gratuita ou com pouca disciplina
|
|
244
|
-
|
|
245
|
-
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
246
|
-
2. Ler \`${ARQUIVO_SEMA_SMALL_MODEL}\`.
|
|
247
|
-
3. Ler \`agent-context-pack.json\`.
|
|
248
|
-
4. Ler \`resumo.micro.txt\`.
|
|
249
|
-
5. Ler \`briefing.min.json\`.
|
|
250
|
-
6. Se ainda couber contexto, ler \`resumo.curto.txt\`.
|
|
251
|
-
|
|
252
|
-
### IA média
|
|
253
|
-
|
|
254
|
-
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
255
|
-
2. Ler \`agent-context-pack.json\`.
|
|
256
|
-
3. Ler \`resumo.curto.txt\`.
|
|
257
|
-
4. Ler \`briefing.min.json\`.
|
|
258
|
-
5. Ler \`drift.json\`.
|
|
259
|
-
6. Se precisar, subir para \`resumo.md\`.
|
|
260
|
-
|
|
261
|
-
### IA forte ou com tool use
|
|
262
|
-
|
|
263
|
-
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
264
|
-
2. Ler \`agent-context-pack.json\`.
|
|
265
|
-
3. Ler \`README.md\`.
|
|
266
|
-
4. Ler \`resumo.md\`.
|
|
267
|
-
5. Ler \`briefing.json\`.
|
|
268
|
-
6. Ler \`drift.json\`.
|
|
269
|
-
7. Só depois abrir \`ir.json\` e \`ast.json\`.
|
|
270
|
-
|
|
271
|
-
## Idioma humano
|
|
272
|
-
|
|
273
|
-
- Responda no idioma do usuário.
|
|
274
|
-
- Em PT-BR, use acentos, cedilha, pontuação e símbolos normais.
|
|
275
|
-
- A DSL \`.sema\` pode ser ASCII; texto humano não precisa ser.
|
|
276
|
-
|
|
277
|
-
## Texto bruto sob demanda
|
|
278
|
-
|
|
279
|
-
- Abra \`AGENTS.md\` antes de editar código, contrato, docs operacionais, release ou deploy.
|
|
280
|
-
- Abra \`exemplos/\` antes de criar ou corrigir sintaxe \`.sema\`.
|
|
281
|
-
- Abra \`docs/syntax.md\` quando exemplos não bastarem para resolver a gramática.
|
|
282
|
-
- Abra \`contratos/\` antes de qualquer implementação ou mudança de comportamento.
|
|
283
|
-
|
|
284
|
-
## Timeout e retry
|
|
285
|
-
|
|
286
|
-
- Timeout local do agente não é falha do Sema.
|
|
287
|
-
- Se uma chamada Sema estourar, aumente o timeout e tente de novo.
|
|
288
|
-
- Se o projeto inteiro for lento, escopar para \`sema resumo "${contexto.arquivo}" --micro --para mudanca\`.
|
|
289
|
-
- Se o ambiente impedir continuar, pare bloqueado e não avance com código sem Sema.
|
|
290
|
-
|
|
291
|
-
## Fechamento
|
|
292
|
-
|
|
293
|
-
1. Editar o arquivo \`.sema\`.
|
|
294
|
-
2. Rodar \`sema formatar "${contexto.arquivo}"\`.
|
|
295
|
-
3. Rodar \`sema validar "${contexto.arquivo}" --json\`.
|
|
296
|
-
4. Rodar \`sema drift "${contexto.arquivo}" --json\`.
|
|
297
|
-
5. Fechar com \`sema verificar <arquivo-ou-pasta> --json --saida ./.tmp/verificacao-ia\`.
|
|
298
|
-
|
|
299
|
-
## Textos base para onboarding do agente
|
|
300
|
-
|
|
301
|
-
- \`sema starter-ia\`
|
|
302
|
-
- \`sema resumo "${contexto.arquivo}" --micro --para onboarding\`
|
|
303
|
-
- \`sema prompt-curto "${contexto.arquivo}" --para mudanca\`
|
|
304
|
-
- \`sema prompt-ia\`
|
|
221
|
+
const resumo = `# Contexto de IA para ${contexto.modulo}
|
|
222
|
+
|
|
223
|
+
- Arquivo alvo: \`${contexto.arquivo}\`
|
|
224
|
+
- Modulo: \`${contexto.modulo}\`
|
|
225
|
+
- Sucesso em validar: \`${contexto.sucesso}\`
|
|
226
|
+
- Quantidade de diagnosticos: \`${contexto.diagnosticos.length}\`
|
|
227
|
+
- Gerado em: \`${contexto.geradoEm}\`
|
|
228
|
+
|
|
229
|
+
## Arquivos gerados neste pacote
|
|
230
|
+
|
|
231
|
+
- \`agent-context-pack.json\`
|
|
232
|
+
- \`${ARQUIVO_SEMA_BOOT}\`
|
|
233
|
+
- \`${ARQUIVO_SEMA_SMALL_MODEL}\`
|
|
234
|
+
- \`resumo.micro.txt\`
|
|
235
|
+
- \`resumo.curto.txt\`
|
|
236
|
+
- \`resumo.md\`
|
|
237
|
+
- \`briefing.min.json\`
|
|
238
|
+
- \`prompt-curto.txt\`
|
|
239
|
+
- \`validar.json\`
|
|
240
|
+
- \`diagnosticos.json\`
|
|
241
|
+
- \`ast.json\`
|
|
242
|
+
- \`ir.json\`
|
|
243
|
+
- \`drift.json\`
|
|
244
|
+
- \`briefing.json\`
|
|
245
|
+
|
|
246
|
+
## Fluxo recomendado para o agente
|
|
247
|
+
|
|
248
|
+
Antes de escolher arquivo de código, leia \`${ARQUIVO_SEMA_BOOT}\` e \`agent-context-pack.json\`. Eles declaram regras obrigatórias, proibições, prioridades, idioma humano e quando abrir texto bruto como \`AGENTS.md\`, \`exemplos/\`, docs e contratos.
|
|
249
|
+
|
|
250
|
+
## Políticas da plataforma
|
|
251
|
+
|
|
252
|
+
- Sema governa contrato, escopo, drift, evidência e qualidade; não contorna políticas, termos, permissões, segurança ou leis.
|
|
253
|
+
- Se houver alerta externo, trate como bloqueio da plataforma ou falso positivo possível, explique de forma neutra e não tente burlar filtro.
|
|
254
|
+
|
|
255
|
+
### IA fraca, gratuita ou com pouca disciplina
|
|
256
|
+
|
|
257
|
+
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
258
|
+
2. Ler \`${ARQUIVO_SEMA_SMALL_MODEL}\`.
|
|
259
|
+
3. Ler \`agent-context-pack.json\`.
|
|
260
|
+
4. Ler \`resumo.micro.txt\`.
|
|
261
|
+
5. Ler \`briefing.min.json\`.
|
|
262
|
+
6. Se ainda couber contexto, ler \`resumo.curto.txt\`.
|
|
263
|
+
|
|
264
|
+
### IA média
|
|
265
|
+
|
|
266
|
+
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
267
|
+
2. Ler \`agent-context-pack.json\`.
|
|
268
|
+
3. Ler \`resumo.curto.txt\`.
|
|
269
|
+
4. Ler \`briefing.min.json\`.
|
|
270
|
+
5. Ler \`drift.json\`.
|
|
271
|
+
6. Se precisar, subir para \`resumo.md\`.
|
|
272
|
+
|
|
273
|
+
### IA forte ou com tool use
|
|
274
|
+
|
|
275
|
+
1. Ler \`${ARQUIVO_SEMA_BOOT}\`.
|
|
276
|
+
2. Ler \`agent-context-pack.json\`.
|
|
277
|
+
3. Ler \`README.md\`.
|
|
278
|
+
4. Ler \`resumo.md\`.
|
|
279
|
+
5. Ler \`briefing.json\`.
|
|
280
|
+
6. Ler \`drift.json\`.
|
|
281
|
+
7. Só depois abrir \`ir.json\` e \`ast.json\`.
|
|
282
|
+
|
|
283
|
+
## Idioma humano
|
|
284
|
+
|
|
285
|
+
- Responda no idioma do usuário.
|
|
286
|
+
- Em PT-BR, use acentos, cedilha, pontuação e símbolos normais.
|
|
287
|
+
- A DSL \`.sema\` pode ser ASCII; texto humano não precisa ser.
|
|
288
|
+
|
|
289
|
+
## Texto bruto sob demanda
|
|
290
|
+
|
|
291
|
+
- Abra \`AGENTS.md\` antes de editar código, contrato, docs operacionais, release ou deploy.
|
|
292
|
+
- Abra \`exemplos/\` antes de criar ou corrigir sintaxe \`.sema\`.
|
|
293
|
+
- Abra \`docs/syntax.md\` quando exemplos não bastarem para resolver a gramática.
|
|
294
|
+
- Abra \`contratos/\` antes de qualquer implementação ou mudança de comportamento.
|
|
295
|
+
|
|
296
|
+
## Timeout e retry
|
|
297
|
+
|
|
298
|
+
- Timeout local do agente não é falha do Sema.
|
|
299
|
+
- Se uma chamada Sema estourar, aumente o timeout e tente de novo.
|
|
300
|
+
- Se o projeto inteiro for lento, escopar para \`sema resumo "${contexto.arquivo}" --micro --para mudanca\`.
|
|
301
|
+
- Se o ambiente impedir continuar, pare bloqueado e não avance com código sem Sema.
|
|
302
|
+
|
|
303
|
+
## Fechamento
|
|
304
|
+
|
|
305
|
+
1. Editar o arquivo \`.sema\`.
|
|
306
|
+
2. Rodar \`sema formatar "${contexto.arquivo}"\`.
|
|
307
|
+
3. Rodar \`sema validar "${contexto.arquivo}" --json\`.
|
|
308
|
+
4. Rodar \`sema drift "${contexto.arquivo}" --json\`.
|
|
309
|
+
5. Fechar com \`sema verificar <arquivo-ou-pasta> --json --saida ./.tmp/verificacao-ia\`.
|
|
310
|
+
|
|
311
|
+
## Textos base para onboarding do agente
|
|
312
|
+
|
|
313
|
+
- \`sema starter-ia\`
|
|
314
|
+
- \`sema resumo "${contexto.arquivo}" --micro --para onboarding\`
|
|
315
|
+
- \`sema prompt-curto "${contexto.arquivo}" --para mudanca\`
|
|
316
|
+
- \`sema prompt-ia\`
|
|
305
317
|
`;
|
|
306
318
|
await escreverArquivoWorkspaceSeguro(pastaBase, "README.md", resumo, {
|
|
307
319
|
sobrescrever: true,
|
package/dist/index.part05.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type FonteImportacao } from "./importador.js";
|
|
2
|
-
export declare function comandoInspecionar(entrada: string | undefined, emJson: boolean, cwd?: string): Promise<number>;
|
|
2
|
+
export declare function comandoInspecionar(entrada: string | undefined, emJson: boolean, cwd?: string, args?: string[]): Promise<number>;
|
|
3
3
|
export declare function comandoDrift(entrada: string | undefined, args: string[], emJson: boolean, cwd?: string): Promise<number>;
|
|
4
4
|
export declare function comandoImpacto(entrada: string | undefined, args: string[], emJson: boolean, cwd?: string): Promise<number>;
|
|
5
5
|
export declare function comandoRenomearSemantico(entrada: string | undefined, args: string[], emJson: boolean, cwd?: string): Promise<number>;
|
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
|
@@ -203,9 +203,13 @@ export async function comandoAjudaIa() {
|
|
|
203
203
|
console.log("");
|
|
204
204
|
console.log(renderizarSecaoAscii("Fluxo recomendado", [
|
|
205
205
|
"Use `sema starter-ia` para um texto curto de onboarding.",
|
|
206
|
+
"Use `sema descobrir recomendar --intencao <objetivo> --json` quando ainda não souber qual profile, workflow, pipeline, gerador ou adaptador usar.",
|
|
207
|
+
"Use `sema descobrir catalogo --json` ou `sema capabilities --json` para expor o mapa completo de capacidades à IA.",
|
|
208
|
+
"Use `sema interativo pipelines --json` para jogos, simulações e híbridos 3D, 2D, retro, texto, XR ou headless.",
|
|
206
209
|
"Use `sema sync-codex` para regenerar o contexto governado do Codex na raiz.",
|
|
207
210
|
"Use `sema instalar-exemplos` para materializar `exemplos/` oficiais sem sobrescrever arquivos locais.",
|
|
208
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`.",
|
|
209
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.",
|
|
210
214
|
"Use `sema prompt-curto <arquivo> --curto --para mudanca` para colar contexto em modelo gratuito.",
|
|
211
215
|
"Use `sema prompt-ia`, `sema prompt-ia-ui`, `sema prompt-ia-react` e `sema prompt-ia-sema-primeiro` conforme a tarefa.",
|
|
@@ -284,7 +288,7 @@ export async function comandoResumo(entrada, args, emJson) {
|
|
|
284
288
|
const escreverNaRaiz = possuiFlag(args, "--raiz");
|
|
285
289
|
const alvo = entrada ? path.resolve(process.cwd(), entrada) : process.cwd();
|
|
286
290
|
if (entrada && entrada.toLowerCase().endsWith(".sema")) {
|
|
287
|
-
const contexto = await carregarContextoModuloIa(alvo);
|
|
291
|
+
const contexto = await carregarContextoModuloIa(alvo, args, tamanho === "micro" ? "none" : "fresh");
|
|
288
292
|
const resumoSemantico = coletarResumoSemanticoModulo(contexto);
|
|
289
293
|
const guiaPorCapacidade = criarGuiaCapacidadeIa();
|
|
290
294
|
const texto = tamanho === "medio"
|
|
@@ -321,7 +325,7 @@ export async function comandoResumo(entrada, args, emJson) {
|
|
|
321
325
|
console.log(texto);
|
|
322
326
|
return 0;
|
|
323
327
|
}
|
|
324
|
-
const resumoProjeto = await gerarResumoProjetoIa(alvo, pastaSaida, escreverNaRaiz);
|
|
328
|
+
const resumoProjeto = await gerarResumoProjetoIa(alvo, pastaSaida, escreverNaRaiz, args, tamanho === "micro" ? "none" : "fresh");
|
|
325
329
|
const arquivoResumo = tamanho === "micro"
|
|
326
330
|
? "SEMA_BRIEF.micro.txt"
|
|
327
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);
|