@saulwade/swl-ses 2.3.0 → 2.4.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/CLAUDE.md +241 -199
- package/README.md +597 -597
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/accesibilidad-wcag-swl.md +2 -2
- package/agentes/arquitecto-swl.md +2 -2
- package/agentes/auto-evolucion-swl.md +2 -2
- package/agentes/backend-api-swl.md +2 -2
- package/agentes/backend-csharp-swl.md +2 -2
- package/agentes/backend-go-swl.md +2 -2
- package/agentes/backend-java-swl.md +2 -2
- package/agentes/backend-node-swl.md +2 -2
- package/agentes/backend-python-swl.md +2 -2
- package/agentes/backend-rust-swl.md +2 -2
- package/agentes/backend-workers-swl.md +2 -2
- package/agentes/cloud-infra-swl.md +2 -2
- package/agentes/consolidador-swl.md +2 -2
- package/agentes/datos-swl.md +2 -2
- package/agentes/depurador-swl.md +2 -2
- package/agentes/devops-ci-swl.md +2 -2
- package/agentes/disenador-ui-swl.md +2 -2
- package/agentes/documentador-swl.md +2 -2
- package/agentes/frontend-angular-swl.md +2 -2
- package/agentes/frontend-css-swl.md +2 -2
- package/agentes/frontend-react-swl.md +2 -2
- package/agentes/frontend-swl.md +2 -2
- package/agentes/frontend-tailwind-swl.md +2 -2
- package/agentes/gh-fix-ci-swl.md +275 -275
- package/agentes/implementador-swl.md +2 -2
- package/agentes/investigador-swl.md +2 -2
- package/agentes/investigador-ux-swl.md +2 -2
- package/agentes/llm-apps-swl.md +2 -2
- package/agentes/migrador-swl.md +2 -2
- package/agentes/mobile-android-swl.md +2 -2
- package/agentes/mobile-cross-swl.md +2 -2
- package/agentes/mobile-ios-swl.md +2 -2
- package/agentes/mobile-testing-swl.md +2 -2
- package/agentes/nemesis-auditor-swl.md +1 -1
- package/agentes/notificador-swl.md +2 -2
- package/agentes/observabilidad-swl.md +2 -2
- package/agentes/orquestador-swl.md +41 -14
- package/agentes/pagos-swl.md +2 -2
- package/agentes/perfilador-usuario-swl.md +2 -2
- package/agentes/planificador-swl.md +2 -2
- package/agentes/producto-prd-swl.md +2 -2
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +2 -2
- package/agentes/rendimiento-swl.md +2 -2
- package/agentes/resolutor-build-swl.md +2 -2
- package/agentes/revisor-angular-swl.md +2 -2
- package/agentes/revisor-codigo-swl.md +36 -3
- package/agentes/revisor-csharp-swl.md +2 -2
- package/agentes/revisor-go-swl.md +2 -2
- package/agentes/revisor-java-swl.md +2 -2
- package/agentes/revisor-kotlin-swl.md +2 -2
- package/agentes/revisor-nextjs-swl.md +2 -2
- package/agentes/revisor-php-swl.md +2 -2
- package/agentes/revisor-react-swl.md +2 -2
- package/agentes/revisor-rust-swl.md +2 -2
- package/agentes/revisor-seguridad-swl.md +2 -2
- package/agentes/revisor-swift-swl.md +2 -2
- package/agentes/revisor-typescript-swl.md +2 -2
- package/agentes/sre-swl.md +2 -2
- package/agentes/tdd-qa-swl.md +2 -2
- package/comandos/swl/briefing.md +119 -119
- package/comandos/swl/contexto.md +0 -2
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/deuda-codigo.md +97 -0
- package/comandos/swl/predecir.md +139 -139
- package/comandos/swl/sesiones.md +1 -1
- package/gateway/agent-executor.js +1 -1
- package/gateway/lib/event-channel.js +191 -191
- package/habilidades/agent-deep-links/SKILL.md +148 -148
- package/habilidades/agentes-como-servicio/SKILL.md +2 -2
- package/habilidades/angular-moderno/SKILL.md +24 -1
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
- package/habilidades/backend-async-postgres-testing/SKILL.md +215 -215
- package/habilidades/backend-error-design/SKILL.md +221 -221
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/benchmark-memoria/SKILL.md +186 -186
- package/habilidades/calidad-anti-patrones-universales/SKILL.md +368 -368
- package/habilidades/calidad-contract-testing/SKILL.md +165 -165
- package/habilidades/calidad-mutation-testing/SKILL.md +170 -170
- package/habilidades/changelog-generator/scripts/parse-commits.js +367 -367
- package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
- package/habilidades/contenedores-docker/SKILL.md +3 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/drift-detection/SKILL.md +179 -179
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +1 -1
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
- package/habilidades/eval-framework/SKILL.md +212 -212
- package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
- package/habilidades/harness-claude-code/SKILL.md +4 -4
- package/habilidades/harness-claude-code/recursos/disciplina-harness-regla.md +253 -252
- package/habilidades/legacy-code-rescue/SKILL.md +268 -267
- package/habilidades/meta-skills-estandar/SKILL.md +1 -1
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +2 -2
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/perfil-usuario/SKILL.md +200 -200
- package/habilidades/postgresql-experto/SKILL.md +3 -1
- package/habilidades/prevencion-sobreingenieria/SKILL.md +70 -92
- package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -0
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -0
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +255 -255
- package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -105
- package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
- package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -138
- package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -65
- package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -65
- package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
- package/habilidades/proceso-modular-split/SKILL.md +256 -256
- package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +2 -2
- package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
- package/habilidades/structured-outputs/SKILL.md +2 -2
- package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -83
- package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -85
- package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -94
- package/habilidades/swl-dashboard/SKILL.md +2 -2
- package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
- package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +1 -1
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +1 -1
- package/hooks/audit-trail.js +4 -4
- package/hooks/calidad-pre-commit.js +15 -11
- package/hooks/captura-acciones-post.js +3 -2
- package/hooks/captura-acciones-session.js +3 -2
- package/hooks/ciclo-evolucion-subagente.js +26 -26
- package/hooks/ciclo-evolucion.js +26 -26
- package/hooks/claudemd-bloat-detector.js +161 -161
- package/hooks/claudemd-duplicacion-detector.js +170 -170
- package/hooks/contexto-iteracion.js +145 -144
- package/hooks/contexto-subagente.js +68 -0
- package/hooks/guardrail-modelo.js +14 -4
- package/hooks/inyeccion-contexto.js +12 -12
- package/hooks/lib/agent-routing.js +107 -107
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/autonomia.js +208 -208
- package/hooks/lib/ciclo-evolucion.js +47 -47
- package/hooks/lib/deep-links.js +185 -185
- package/hooks/lib/error-classifier.js +308 -308
- package/hooks/lib/etapa-auto-evolucion.js +701 -701
- package/hooks/lib/etapa-metricas.js +388 -388
- package/hooks/lib/etapa-perfil-usuario.js +376 -376
- package/hooks/lib/loop-telemetry.js +321 -321
- package/hooks/lib/merkle-audit.js +96 -96
- package/hooks/lib/model-router.js +2 -2
- package/hooks/lib/propose-step.js +358 -358
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/rate-limit-tracker.js +253 -253
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/security-net.js +201 -201
- package/hooks/lib/skill-auditor.js +588 -588
- package/hooks/lib/sync-status.js +228 -228
- package/hooks/lib/taint-tracker.js +107 -107
- package/hooks/lib/text-similarity.js +241 -241
- package/hooks/lib/token-estimator.js +1 -0
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/lib/usage-model.js +1 -1
- package/hooks/registro-turnos.js +210 -209
- package/hooks/session-briefing.js +98 -98
- package/hooks/spec-gate.js +212 -211
- package/hooks/sugerir-contribuir.js +2 -1
- package/hooks/sugerir-regenerar-inventario.js +171 -170
- package/hooks/tdd-gate.js +242 -241
- package/hooks/telemetria-skill-routing.js +100 -100
- package/hooks/validar-formato-post-subagente.js +140 -140
- package/hooks/validar-intent-spec.js +242 -242
- package/hooks/validar-memoria-hook.js +218 -218
- package/hooks/validar-planning-paths.js +134 -134
- package/instintos/autonomia.yaml +27 -27
- package/instintos/prompt-appendices.yaml +57 -57
- package/llms.txt +29 -29
- package/manifiestos/agent-output-schemas.json +57 -57
- package/manifiestos/canonical-hashes.json +2948 -1964
- package/manifiestos/hook-profiles.json +0 -2
- package/manifiestos/hooks-config.json +469 -477
- package/manifiestos/invariantes-criticos.json +30 -0
- package/manifiestos/modulos.json +1390 -1390
- package/manifiestos/planning-paths.json +44 -44
- package/manifiestos/skills-lock.json +1282 -1282
- package/package.json +93 -93
- package/plantillas/auditor-veto-template.md +105 -105
- package/plantillas/github-workflows/README.md +47 -47
- package/plantillas/github-workflows/release-please.yml +44 -44
- package/plantillas/github-workflows/swl-ci.yml +107 -107
- package/plantillas/github-workflows/swl-security.yml +51 -51
- package/plugin.json +369 -371
- package/reglas/accesibilidad.md +10 -10
- package/reglas/analisis-previo-tareas-grandes.md +172 -172
- package/reglas/api-diseno.md +9 -9
- package/reglas/arreglar-al-detectar.md +240 -240
- package/reglas/auditorias-documentales-estructurales.md +7 -7
- package/reglas/cloud-infra.md +8 -8
- package/reglas/consultar-vault-primero.md +195 -195
- package/reglas/debatir-antes-de-aceptar.md +158 -158
- package/reglas/fragmentos-compartidos.md +183 -183
- package/reglas/hooks.md +6 -6
- package/reglas/intent-engineering.md +218 -218
- package/reglas/markitdown.md +8 -8
- package/reglas/monitor-ci.md +309 -309
- package/reglas/patrones.md +6 -6
- package/reglas/sesiones-paralelas.md +180 -180
- package/reglas/sin-duplicacion-reglas-globales.md +182 -182
- package/reglas/skills-estandar.md +6 -6
- package/reglas/testing.md +7 -7
- package/reglas/tests-cleanup.md +224 -224
- package/reglas/usar-code-review-graph.md +155 -155
- package/reglas/usar-context7.md +226 -226
- package/reglas/verificar-citas-normativas.md +548 -548
- package/schemas/agent-frontmatter.schema.json +5 -3
- package/schemas/agent-message.schema.json +73 -73
- package/schemas/agent-output-implementacion.schema.json +114 -114
- package/schemas/agent-output-planificacion.schema.json +150 -150
- package/schemas/agent-output-review.schema.json +98 -98
- package/schemas/diary-entry.schema.json +112 -112
- package/schemas/hook-profiles.schema.json +54 -54
- package/schemas/hooks-config.schema.json +89 -89
- package/schemas/modulos.schema.json +38 -38
- package/schemas/perfiles.schema.json +36 -36
- package/schemas/plugin.schema.json +77 -77
- package/schemas/skill-evals.schema.json +119 -119
- package/schemas/skill-frontmatter.schema.json +245 -245
- package/scripts/audit-tools/audit-history.js +330 -330
- package/scripts/audit-tools/bundle-tracker.js +290 -290
- package/scripts/audit-tools/canary-monitor.js +352 -352
- package/scripts/audit-tools/code-profiler.js +605 -605
- package/scripts/audit-tools/dep-doctor.js +320 -320
- package/scripts/audit-tools/env-validator.js +206 -206
- package/scripts/audit-tools/lib/fs-walk.js +48 -48
- package/scripts/audit-tools/lib/output.js +23 -23
- package/scripts/audit-tools/migration-checker.js +392 -392
- package/scripts/audit-tools/pentest-scanner.js +1436 -1436
- package/scripts/benchmark-memoria.js +167 -167
- package/scripts/cli/aprobar-plan.js +73 -73
- package/scripts/cli/briefing.js +23 -23
- package/scripts/cli/ciclo-evolucion.js +26 -26
- package/scripts/cli/configurar-ci.js +40 -40
- package/scripts/cli/derivar-feature-list.js +25 -25
- package/scripts/cli/detectar-host.js +27 -27
- package/scripts/cli/diary-entry.js +69 -69
- package/scripts/cli/execution-state.js +18 -18
- package/scripts/cli/gateway-notify.js +41 -41
- package/scripts/cli/liberar-fase.js +42 -42
- package/scripts/cli/loop-telemetry.js +125 -125
- package/scripts/cli/mark-evolved.js +56 -56
- package/scripts/cli/metricas-dora.js +26 -26
- package/scripts/cli/near-duplicate.js +55 -55
- package/scripts/cli/notificaciones.js +123 -123
- package/scripts/cli/propose-step.js +29 -29
- package/scripts/cli/schedule-parse.js +19 -19
- package/scripts/cli/sugerir-modelo.js +20 -20
- package/scripts/cli/verificar-plan.js +36 -36
- package/scripts/cli/verificar-trazabilidad.js +35 -35
- package/scripts/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/field-report.js +199 -199
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-matriz-lenguajes.js +271 -271
- package/scripts/instalador.js +4 -1
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/auditar-invocaciones-comandos.js +104 -104
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/ci-reader.js +193 -193
- package/scripts/lib/claude-sessions.js +1 -0
- package/scripts/lib/configurar-ci.js +380 -380
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-host-swl.js +175 -175
- package/scripts/lib/detectar-stack-detallado.js +307 -307
- package/scripts/lib/detector-autoduplicacion-intra-archivo.js +234 -234
- package/scripts/lib/detector-reglas-duplicadas.js +220 -220
- package/scripts/lib/diary-entry.js +234 -234
- package/scripts/lib/eval-metrics-store.js +218 -218
- package/scripts/lib/eval-quality.js +171 -171
- package/scripts/lib/eval-schemas.js +144 -144
- package/scripts/lib/eval-self-correct.js +106 -106
- package/scripts/lib/eval-validator.js +185 -185
- package/scripts/lib/evidencia-release.js +322 -322
- package/scripts/lib/gate-hooks-requires.js +249 -249
- package/scripts/lib/gate-licencias.js +212 -212
- package/scripts/lib/git-metricas.js +257 -257
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/metricas-dora.js +204 -204
- package/scripts/lib/npm-version.js +261 -261
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/plan-lock.js +275 -275
- package/scripts/lib/pr-analyzer.js +399 -399
- package/scripts/lib/preservar-usuario.js +39 -5
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/reglas-globales-conocidas.json +180 -180
- package/scripts/lib/resolver-plan-fase.js +37 -37
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/schema-version.js +164 -164
- package/scripts/lib/scoring-instintos.js +277 -277
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/lib/tool-cost-analyzer.js +1 -0
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +200 -200
- package/scripts/publicar.js +497 -497
- package/scripts/run-eval.js +141 -141
- package/scripts/tui/componentes/selector-multi.js +189 -189
- package/scripts/tui/componentes/selector-unico.js +158 -158
- package/scripts/tui/ejecutores.js +375 -375
- package/scripts/tui/index.js +162 -162
- package/scripts/tui/lib/colores.js +129 -129
- package/scripts/tui/lib/render.js +264 -264
- package/scripts/tui/lib/teclas.js +113 -113
- package/scripts/tui/pantallas/inspect.js +173 -173
- package/scripts/tui/pantallas/install-wizard.js +334 -334
- package/scripts/tui/pantallas/menu-principal.js +52 -52
- package/scripts/tui/pantallas/progreso.js +274 -274
- package/scripts/tui/pantallas/resumen.js +132 -132
- package/scripts/tui/pantallas/uninstall-wizard.js +208 -208
- package/scripts/tui/pantallas/update-wizard.js +232 -232
- package/scripts/tui/pantallas/welcome.js +187 -187
- package/scripts/validar-userland-vacio.js +110 -110
- package/scripts/validar.js +1 -1
- package/scripts/verificar-release.js +51 -0
- package/hooks/lib/context-compressor.js +0 -657
- package/hooks/linea-estado.js +0 -326
- package/hooks/monitor-contexto.js +0 -373
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI `swl-ses notificaciones <op>` — gestiona las notificaciones
|
|
5
|
-
* Telegram y su bot daemon. Reemplaza los inline
|
|
6
|
-
* `require('./scripts/lib/notificaciones-telegram')` relativos al proyecto
|
|
7
|
-
* (rotos downstream; ver docs/invocacion-cli-cross-scope.md). Encapsula también
|
|
8
|
-
* el formato de salida que antes vivía en el comando.
|
|
9
|
-
*
|
|
10
|
-
* Ops:
|
|
11
|
-
* init (requiere TTY) bot-start
|
|
12
|
-
* status bot-stop
|
|
13
|
-
* disable [--purge] bot-status
|
|
14
|
-
* repair bot-restart
|
|
15
|
-
* bot-enable-autostart
|
|
16
|
-
* bot-disable-autostart
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
const nt = require('../lib/notificaciones-telegram');
|
|
20
|
-
|
|
21
|
-
function imprimirStatus() {
|
|
22
|
-
const s = nt.status();
|
|
23
|
-
const botS = nt.botStatus();
|
|
24
|
-
const autostartLabel =
|
|
25
|
-
process.platform === 'win32'
|
|
26
|
-
? 'Scheduled Task'
|
|
27
|
-
: process.platform === 'linux'
|
|
28
|
-
? 'systemd --user'
|
|
29
|
-
: 'LaunchAgent';
|
|
30
|
-
const mudos = s.proyectosSilenciados.length
|
|
31
|
-
? s.proyectosSilenciados.join(', ')
|
|
32
|
-
: 'ninguno';
|
|
33
|
-
console.log('');
|
|
34
|
-
console.log('Notificaciones Telegram — estado actual');
|
|
35
|
-
console.log(' .env: ', s.envExiste ? 'existe' : 'no existe');
|
|
36
|
-
console.log(' token: ', s.tokenConfigurado ? 'configurado' : 'no configurado');
|
|
37
|
-
console.log(
|
|
38
|
-
' chat_id: ',
|
|
39
|
-
s.chatIdConfigurado ? 'configurado (' + s.chatIdParcial + ')' : 'no configurado'
|
|
40
|
-
);
|
|
41
|
-
console.log(' proyectos mudos: ', mudos);
|
|
42
|
-
console.log(' bot daemon: ', botS.activo ? 'activo (PID ' + botS.pid + ')' : 'detenido');
|
|
43
|
-
console.log(' autostart: usar /swl:notificaciones bot enable-autostart (' + autostartLabel + ')');
|
|
44
|
-
console.log('');
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function imprimirBotStatus() {
|
|
48
|
-
const r = nt.botStatus();
|
|
49
|
-
console.log('');
|
|
50
|
-
console.log('Bot daemon — estado actual');
|
|
51
|
-
console.log(' activo:', r.activo ? 'sí' : 'no');
|
|
52
|
-
console.log(' pid: ', r.pid !== null ? r.pid : 'n/a');
|
|
53
|
-
console.log('');
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function reportarOk(prefijo, r, mensajeDefault) {
|
|
57
|
-
if (r.ok) {
|
|
58
|
-
console.log('[' + prefijo + ']', r.mensaje || mensajeDefault);
|
|
59
|
-
} else {
|
|
60
|
-
console.error('[' + prefijo + '] Error:', r.error);
|
|
61
|
-
process.exitCode = 1;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Tabla de dispatch de los ops del bot daemon: [prefijo, fn, mensajeDefault].
|
|
66
|
-
const BOT_OPS = {
|
|
67
|
-
'bot-start': ['bot', () => nt.botStart(), 'Bot iniciado.'],
|
|
68
|
-
'bot-stop': ['bot', () => nt.botStop(), 'Bot detenido.'],
|
|
69
|
-
'bot-restart': ['bot', () => nt.botRestart(), 'Bot reiniciado.'],
|
|
70
|
-
'bot-enable-autostart': ['autostart', () => nt.botEnableAutostart(), 'Autostart habilitado.'],
|
|
71
|
-
'bot-disable-autostart': ['autostart', () => nt.botDisableAutostart(), 'Autostart deshabilitado.'],
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
async function notificaciones(opciones = {}) {
|
|
75
|
-
const op = (opciones._args && opciones._args[0]) || opciones.op || 'status';
|
|
76
|
-
|
|
77
|
-
if (BOT_OPS[op]) {
|
|
78
|
-
const [prefijo, fn, msg] = BOT_OPS[op];
|
|
79
|
-
reportarOk(prefijo, fn(), msg);
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
switch (op) {
|
|
84
|
-
case 'init': {
|
|
85
|
-
if (!process.stdin.isTTY) {
|
|
86
|
-
console.log('Este subcomando requiere entrada interactiva (TTY).');
|
|
87
|
-
console.log('Ejecuta desde tu terminal:');
|
|
88
|
-
console.log(' swl-ses notificaciones init');
|
|
89
|
-
console.log('O usa el instalador:');
|
|
90
|
-
console.log(' npx -y @saulwade/swl-ses@latest install');
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
const r = await nt.init({ esTty: true });
|
|
94
|
-
console.log('[resultado]', r.resultado, r.detalle || '');
|
|
95
|
-
if (r.resultado === 'error') process.exitCode = 1;
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
case 'status':
|
|
99
|
-
imprimirStatus();
|
|
100
|
-
return;
|
|
101
|
-
case 'disable': {
|
|
102
|
-
const r = nt.disable({ confirmar: true, conservarEnv: !opciones.purge });
|
|
103
|
-
console.log('[resultado]', r.resultado, r.detalle || '');
|
|
104
|
-
if (r.resultado === 'error') process.exitCode = 1;
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
case 'repair': {
|
|
108
|
-
const r = await nt.repair();
|
|
109
|
-
console.log('[repair]', r.resultado, r.detalle || '');
|
|
110
|
-
if (r.resultado === 'error') process.exitCode = 1;
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
case 'bot-status':
|
|
114
|
-
imprimirBotStatus();
|
|
115
|
-
return;
|
|
116
|
-
default:
|
|
117
|
-
console.error('Op desconocida: ' + op);
|
|
118
|
-
console.error('Ops: init|status|disable|repair|bot-start|bot-stop|bot-status|bot-restart|bot-enable-autostart|bot-disable-autostart');
|
|
119
|
-
process.exitCode = 1;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
module.exports = notificaciones;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI `swl-ses notificaciones <op>` — gestiona las notificaciones
|
|
5
|
+
* Telegram y su bot daemon. Reemplaza los inline
|
|
6
|
+
* `require('./scripts/lib/notificaciones-telegram')` relativos al proyecto
|
|
7
|
+
* (rotos downstream; ver docs/invocacion-cli-cross-scope.md). Encapsula también
|
|
8
|
+
* el formato de salida que antes vivía en el comando.
|
|
9
|
+
*
|
|
10
|
+
* Ops:
|
|
11
|
+
* init (requiere TTY) bot-start
|
|
12
|
+
* status bot-stop
|
|
13
|
+
* disable [--purge] bot-status
|
|
14
|
+
* repair bot-restart
|
|
15
|
+
* bot-enable-autostart
|
|
16
|
+
* bot-disable-autostart
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const nt = require('../lib/notificaciones-telegram');
|
|
20
|
+
|
|
21
|
+
function imprimirStatus() {
|
|
22
|
+
const s = nt.status();
|
|
23
|
+
const botS = nt.botStatus();
|
|
24
|
+
const autostartLabel =
|
|
25
|
+
process.platform === 'win32'
|
|
26
|
+
? 'Scheduled Task'
|
|
27
|
+
: process.platform === 'linux'
|
|
28
|
+
? 'systemd --user'
|
|
29
|
+
: 'LaunchAgent';
|
|
30
|
+
const mudos = s.proyectosSilenciados.length
|
|
31
|
+
? s.proyectosSilenciados.join(', ')
|
|
32
|
+
: 'ninguno';
|
|
33
|
+
console.log('');
|
|
34
|
+
console.log('Notificaciones Telegram — estado actual');
|
|
35
|
+
console.log(' .env: ', s.envExiste ? 'existe' : 'no existe');
|
|
36
|
+
console.log(' token: ', s.tokenConfigurado ? 'configurado' : 'no configurado');
|
|
37
|
+
console.log(
|
|
38
|
+
' chat_id: ',
|
|
39
|
+
s.chatIdConfigurado ? 'configurado (' + s.chatIdParcial + ')' : 'no configurado'
|
|
40
|
+
);
|
|
41
|
+
console.log(' proyectos mudos: ', mudos);
|
|
42
|
+
console.log(' bot daemon: ', botS.activo ? 'activo (PID ' + botS.pid + ')' : 'detenido');
|
|
43
|
+
console.log(' autostart: usar /swl:notificaciones bot enable-autostart (' + autostartLabel + ')');
|
|
44
|
+
console.log('');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function imprimirBotStatus() {
|
|
48
|
+
const r = nt.botStatus();
|
|
49
|
+
console.log('');
|
|
50
|
+
console.log('Bot daemon — estado actual');
|
|
51
|
+
console.log(' activo:', r.activo ? 'sí' : 'no');
|
|
52
|
+
console.log(' pid: ', r.pid !== null ? r.pid : 'n/a');
|
|
53
|
+
console.log('');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function reportarOk(prefijo, r, mensajeDefault) {
|
|
57
|
+
if (r.ok) {
|
|
58
|
+
console.log('[' + prefijo + ']', r.mensaje || mensajeDefault);
|
|
59
|
+
} else {
|
|
60
|
+
console.error('[' + prefijo + '] Error:', r.error);
|
|
61
|
+
process.exitCode = 1;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Tabla de dispatch de los ops del bot daemon: [prefijo, fn, mensajeDefault].
|
|
66
|
+
const BOT_OPS = {
|
|
67
|
+
'bot-start': ['bot', () => nt.botStart(), 'Bot iniciado.'],
|
|
68
|
+
'bot-stop': ['bot', () => nt.botStop(), 'Bot detenido.'],
|
|
69
|
+
'bot-restart': ['bot', () => nt.botRestart(), 'Bot reiniciado.'],
|
|
70
|
+
'bot-enable-autostart': ['autostart', () => nt.botEnableAutostart(), 'Autostart habilitado.'],
|
|
71
|
+
'bot-disable-autostart': ['autostart', () => nt.botDisableAutostart(), 'Autostart deshabilitado.'],
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
async function notificaciones(opciones = {}) {
|
|
75
|
+
const op = (opciones._args && opciones._args[0]) || opciones.op || 'status';
|
|
76
|
+
|
|
77
|
+
if (BOT_OPS[op]) {
|
|
78
|
+
const [prefijo, fn, msg] = BOT_OPS[op];
|
|
79
|
+
reportarOk(prefijo, fn(), msg);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
switch (op) {
|
|
84
|
+
case 'init': {
|
|
85
|
+
if (!process.stdin.isTTY) {
|
|
86
|
+
console.log('Este subcomando requiere entrada interactiva (TTY).');
|
|
87
|
+
console.log('Ejecuta desde tu terminal:');
|
|
88
|
+
console.log(' swl-ses notificaciones init');
|
|
89
|
+
console.log('O usa el instalador:');
|
|
90
|
+
console.log(' npx -y @saulwade/swl-ses@latest install');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const r = await nt.init({ esTty: true });
|
|
94
|
+
console.log('[resultado]', r.resultado, r.detalle || '');
|
|
95
|
+
if (r.resultado === 'error') process.exitCode = 1;
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
case 'status':
|
|
99
|
+
imprimirStatus();
|
|
100
|
+
return;
|
|
101
|
+
case 'disable': {
|
|
102
|
+
const r = nt.disable({ confirmar: true, conservarEnv: !opciones.purge });
|
|
103
|
+
console.log('[resultado]', r.resultado, r.detalle || '');
|
|
104
|
+
if (r.resultado === 'error') process.exitCode = 1;
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
case 'repair': {
|
|
108
|
+
const r = await nt.repair();
|
|
109
|
+
console.log('[repair]', r.resultado, r.detalle || '');
|
|
110
|
+
if (r.resultado === 'error') process.exitCode = 1;
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
case 'bot-status':
|
|
114
|
+
imprimirBotStatus();
|
|
115
|
+
return;
|
|
116
|
+
default:
|
|
117
|
+
console.error('Op desconocida: ' + op);
|
|
118
|
+
console.error('Ops: init|status|disable|repair|bot-start|bot-stop|bot-status|bot-restart|bot-enable-autostart|bot-disable-autostart');
|
|
119
|
+
process.exitCode = 1;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
module.exports = notificaciones;
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI para `swl-ses propose-step` — anexo propositivo del RESUMEN de
|
|
5
|
-
* fase (ADR-0037). Envuelve hooks/lib/propose-step.js (que lee process.argv).
|
|
6
|
-
*
|
|
7
|
-
* Reemplaza el `node hooks/lib/propose-step.js --rango=...` relativo al proyecto
|
|
8
|
-
* que /swl:ejecutar-fase invocaba — roto downstream (ver
|
|
9
|
-
* docs/invocacion-cli-cross-scope.md).
|
|
10
|
-
*
|
|
11
|
-
* Uso: swl-ses propose-step --rango=<base>..HEAD (opt-out SWL_PROPOSE=0)
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
const { main } = require('../../hooks/lib/propose-step.js');
|
|
15
|
-
|
|
16
|
-
function proposeStep(opciones = {}) {
|
|
17
|
-
opciones = opciones || {};
|
|
18
|
-
const args = ['node', 'propose-step'];
|
|
19
|
-
if (opciones.rango) args.push(`--rango=${opciones.rango}`);
|
|
20
|
-
const argvOriginal = process.argv;
|
|
21
|
-
process.argv = args;
|
|
22
|
-
try {
|
|
23
|
-
return main(process.argv);
|
|
24
|
-
} finally {
|
|
25
|
-
process.argv = argvOriginal;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
module.exports = proposeStep;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI para `swl-ses propose-step` — anexo propositivo del RESUMEN de
|
|
5
|
+
* fase (ADR-0037). Envuelve hooks/lib/propose-step.js (que lee process.argv).
|
|
6
|
+
*
|
|
7
|
+
* Reemplaza el `node hooks/lib/propose-step.js --rango=...` relativo al proyecto
|
|
8
|
+
* que /swl:ejecutar-fase invocaba — roto downstream (ver
|
|
9
|
+
* docs/invocacion-cli-cross-scope.md).
|
|
10
|
+
*
|
|
11
|
+
* Uso: swl-ses propose-step --rango=<base>..HEAD (opt-out SWL_PROPOSE=0)
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const { main } = require('../../hooks/lib/propose-step.js');
|
|
15
|
+
|
|
16
|
+
function proposeStep(opciones = {}) {
|
|
17
|
+
opciones = opciones || {};
|
|
18
|
+
const args = ['node', 'propose-step'];
|
|
19
|
+
if (opciones.rango) args.push(`--rango=${opciones.rango}`);
|
|
20
|
+
const argvOriginal = process.argv;
|
|
21
|
+
process.argv = args;
|
|
22
|
+
try {
|
|
23
|
+
return main(process.argv);
|
|
24
|
+
} finally {
|
|
25
|
+
process.argv = argvOriginal;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = proposeStep;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI `swl-ses schedule-parse` — parsea una frase en inglés a expresión
|
|
5
|
-
* cron. Reemplaza el inline `require('./scripts/lib/schedule-parser')` relativo
|
|
6
|
-
* al proyecto (roto downstream; ver docs/invocacion-cli-cross-scope.md).
|
|
7
|
-
*
|
|
8
|
-
* Uso: swl-ses schedule-parse "every morning at 9am"
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
const { parseNaturalSchedule } = require('../lib/schedule-parser');
|
|
12
|
-
|
|
13
|
-
function scheduleParse(opciones = {}) {
|
|
14
|
-
const frase =
|
|
15
|
-
(opciones._args && opciones._args.join(' ')) || opciones.texto || '';
|
|
16
|
-
console.log(JSON.stringify(parseNaturalSchedule(frase), null, 2));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
module.exports = scheduleParse;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI `swl-ses schedule-parse` — parsea una frase en inglés a expresión
|
|
5
|
+
* cron. Reemplaza el inline `require('./scripts/lib/schedule-parser')` relativo
|
|
6
|
+
* al proyecto (roto downstream; ver docs/invocacion-cli-cross-scope.md).
|
|
7
|
+
*
|
|
8
|
+
* Uso: swl-ses schedule-parse "every morning at 9am"
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const { parseNaturalSchedule } = require('../lib/schedule-parser');
|
|
12
|
+
|
|
13
|
+
function scheduleParse(opciones = {}) {
|
|
14
|
+
const frase =
|
|
15
|
+
(opciones._args && opciones._args.join(' ')) || opciones.texto || '';
|
|
16
|
+
console.log(JSON.stringify(parseNaturalSchedule(frase), null, 2));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
module.exports = scheduleParse;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI `swl-ses sugerir-modelo` — evalúa la complejidad de una tarea y
|
|
5
|
-
* sugiere el modelo (opus/sonnet/haiku). Reemplaza el inline
|
|
6
|
-
* `require('./hooks/lib/model-router.js')` relativo al proyecto (roto downstream;
|
|
7
|
-
* ver docs/invocacion-cli-cross-scope.md).
|
|
8
|
-
*
|
|
9
|
-
* Uso: swl-ses sugerir-modelo "<descripción de la tarea>"
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
const { sugerirModelo } = require('../../hooks/lib/model-router.js');
|
|
13
|
-
|
|
14
|
-
function sugerirModeloCli(opciones = {}) {
|
|
15
|
-
const desc =
|
|
16
|
-
(opciones._args && opciones._args.join(' ')) || opciones.desc || '';
|
|
17
|
-
console.log(JSON.stringify(sugerirModelo(desc), null, 2));
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
module.exports = sugerirModeloCli;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI `swl-ses sugerir-modelo` — evalúa la complejidad de una tarea y
|
|
5
|
+
* sugiere el modelo (opus/sonnet/haiku). Reemplaza el inline
|
|
6
|
+
* `require('./hooks/lib/model-router.js')` relativo al proyecto (roto downstream;
|
|
7
|
+
* ver docs/invocacion-cli-cross-scope.md).
|
|
8
|
+
*
|
|
9
|
+
* Uso: swl-ses sugerir-modelo "<descripción de la tarea>"
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const { sugerirModelo } = require('../../hooks/lib/model-router.js');
|
|
13
|
+
|
|
14
|
+
function sugerirModeloCli(opciones = {}) {
|
|
15
|
+
const desc =
|
|
16
|
+
(opciones._args && opciones._args.join(' ')) || opciones.desc || '';
|
|
17
|
+
console.log(JSON.stringify(sugerirModelo(desc), null, 2));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports = sugerirModeloCli;
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Subcomando `swl-ses verificar-plan --fase=N` — verificación read-only del lock
|
|
5
|
-
* de un PLAN (gate G1). Lo usa /swl:ejecutar-fase antes de implementar y
|
|
6
|
-
* /swl:aprobar-plan Paso 2 para detectar planes ya firmados/mutados/legacy.
|
|
7
|
-
*
|
|
8
|
-
* Reemplaza el `node -e "require('./scripts/lib/plan-lock')"` inline que se
|
|
9
|
-
* rompía downstream (ver docs/invocacion-cli-cross-scope.md).
|
|
10
|
-
*
|
|
11
|
-
* Exit 0 si ok (firmado o legacy); exit 1 si mutado/sin-firmar/corrupto.
|
|
12
|
-
*
|
|
13
|
-
* Uso: swl-ses verificar-plan --fase=N [--plan=<ruta>]
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
const { verificarPlan } = require('../lib/plan-lock');
|
|
17
|
-
const { resolverPlanPath } = require('../lib/resolver-plan-fase');
|
|
18
|
-
|
|
19
|
-
function verificarPlanCli(opciones = {}) {
|
|
20
|
-
opciones = opciones || {};
|
|
21
|
-
const planPath = resolverPlanPath(opciones);
|
|
22
|
-
if (!planPath) {
|
|
23
|
-
console.error('Uso: swl-ses verificar-plan --fase=N [--plan=<ruta>]');
|
|
24
|
-
process.exit(1);
|
|
25
|
-
}
|
|
26
|
-
const r = verificarPlan(planPath);
|
|
27
|
-
console.log(JSON.stringify(r, null, 2));
|
|
28
|
-
process.exit(r.ok ? 0 : 1);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
module.exports = verificarPlanCli;
|
|
32
|
-
|
|
33
|
-
if (require.main === module) {
|
|
34
|
-
const { parsearOpciones } = require('../lib/parsear-opciones');
|
|
35
|
-
verificarPlanCli(parsearOpciones(process.argv.slice(2)));
|
|
36
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Subcomando `swl-ses verificar-plan --fase=N` — verificación read-only del lock
|
|
5
|
+
* de un PLAN (gate G1). Lo usa /swl:ejecutar-fase antes de implementar y
|
|
6
|
+
* /swl:aprobar-plan Paso 2 para detectar planes ya firmados/mutados/legacy.
|
|
7
|
+
*
|
|
8
|
+
* Reemplaza el `node -e "require('./scripts/lib/plan-lock')"` inline que se
|
|
9
|
+
* rompía downstream (ver docs/invocacion-cli-cross-scope.md).
|
|
10
|
+
*
|
|
11
|
+
* Exit 0 si ok (firmado o legacy); exit 1 si mutado/sin-firmar/corrupto.
|
|
12
|
+
*
|
|
13
|
+
* Uso: swl-ses verificar-plan --fase=N [--plan=<ruta>]
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const { verificarPlan } = require('../lib/plan-lock');
|
|
17
|
+
const { resolverPlanPath } = require('../lib/resolver-plan-fase');
|
|
18
|
+
|
|
19
|
+
function verificarPlanCli(opciones = {}) {
|
|
20
|
+
opciones = opciones || {};
|
|
21
|
+
const planPath = resolverPlanPath(opciones);
|
|
22
|
+
if (!planPath) {
|
|
23
|
+
console.error('Uso: swl-ses verificar-plan --fase=N [--plan=<ruta>]');
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
const r = verificarPlan(planPath);
|
|
27
|
+
console.log(JSON.stringify(r, null, 2));
|
|
28
|
+
process.exit(r.ok ? 0 : 1);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module.exports = verificarPlanCli;
|
|
32
|
+
|
|
33
|
+
if (require.main === module) {
|
|
34
|
+
const { parsearOpciones } = require('../lib/parsear-opciones');
|
|
35
|
+
verificarPlanCli(parsearOpciones(process.argv.slice(2)));
|
|
36
|
+
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI para el subcomando `swl-ses verificar-trazabilidad`.
|
|
5
|
-
*
|
|
6
|
-
* Traduce las opciones parseadas del bin a las flags que espera el script
|
|
7
|
-
* standalone `scripts/verificar-trazabilidad.js` (que lee process.argv y hace
|
|
8
|
-
* su propio process.exit). Mismo patrón que scripts/cli/audit-claudemd.js.
|
|
9
|
-
*
|
|
10
|
-
* Reemplaza el `node scripts/verificar-trazabilidad.js` relativo al proyecto que
|
|
11
|
-
* /swl:aprobar-plan invocaba — roto downstream (ver
|
|
12
|
-
* docs/invocacion-cli-cross-scope.md).
|
|
13
|
-
*
|
|
14
|
-
* Uso: swl-ses verificar-trazabilidad --fase=N [--solo-plan] [--json]
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
const { main } = require('../verificar-trazabilidad.js');
|
|
18
|
-
|
|
19
|
-
function verificarTrazabilidad(opciones = {}) {
|
|
20
|
-
opciones = opciones || {};
|
|
21
|
-
const args = [];
|
|
22
|
-
if (opciones.fase != null && opciones.fase !== true) args.push(`--fase=${opciones.fase}`);
|
|
23
|
-
if (opciones['solo-plan'] || opciones.solo_plan) args.push('--solo-plan');
|
|
24
|
-
if (opciones.json) args.push('--json');
|
|
25
|
-
|
|
26
|
-
const argvOriginal = process.argv;
|
|
27
|
-
process.argv = ['node', 'verificar-trazabilidad.js', ...args];
|
|
28
|
-
try {
|
|
29
|
-
main();
|
|
30
|
-
} finally {
|
|
31
|
-
process.argv = argvOriginal;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
module.exports = verificarTrazabilidad;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI para el subcomando `swl-ses verificar-trazabilidad`.
|
|
5
|
+
*
|
|
6
|
+
* Traduce las opciones parseadas del bin a las flags que espera el script
|
|
7
|
+
* standalone `scripts/verificar-trazabilidad.js` (que lee process.argv y hace
|
|
8
|
+
* su propio process.exit). Mismo patrón que scripts/cli/audit-claudemd.js.
|
|
9
|
+
*
|
|
10
|
+
* Reemplaza el `node scripts/verificar-trazabilidad.js` relativo al proyecto que
|
|
11
|
+
* /swl:aprobar-plan invocaba — roto downstream (ver
|
|
12
|
+
* docs/invocacion-cli-cross-scope.md).
|
|
13
|
+
*
|
|
14
|
+
* Uso: swl-ses verificar-trazabilidad --fase=N [--solo-plan] [--json]
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const { main } = require('../verificar-trazabilidad.js');
|
|
18
|
+
|
|
19
|
+
function verificarTrazabilidad(opciones = {}) {
|
|
20
|
+
opciones = opciones || {};
|
|
21
|
+
const args = [];
|
|
22
|
+
if (opciones.fase != null && opciones.fase !== true) args.push(`--fase=${opciones.fase}`);
|
|
23
|
+
if (opciones['solo-plan'] || opciones.solo_plan) args.push('--solo-plan');
|
|
24
|
+
if (opciones.json) args.push('--json');
|
|
25
|
+
|
|
26
|
+
const argvOriginal = process.argv;
|
|
27
|
+
process.argv = ['node', 'verificar-trazabilidad.js', ...args];
|
|
28
|
+
try {
|
|
29
|
+
main();
|
|
30
|
+
} finally {
|
|
31
|
+
process.argv = argvOriginal;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
module.exports = verificarTrazabilidad;
|