@saulwade/swl-ses 2.6.0 → 2.8.0
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 +209 -197
- package/README.md +647 -600
- package/agentes/accesibilidad-wcag-swl.md +690 -690
- package/agentes/arquitecto-swl.md +267 -267
- package/agentes/auto-evolucion-swl.md +932 -932
- package/agentes/backend-csharp-swl.md +420 -420
- package/agentes/backend-go-swl.md +390 -390
- package/agentes/backend-java-swl.md +281 -281
- package/agentes/backend-rust-swl.md +364 -364
- package/agentes/backend-workers-swl.md +482 -482
- package/agentes/cloud-infra-swl.md +509 -509
- package/agentes/consolidador-swl.md +541 -541
- package/agentes/depurador-swl.md +352 -352
- package/agentes/devops-ci-swl.md +400 -400
- package/agentes/disenador-ui-swl.md +569 -569
- package/agentes/documentador-swl.md +345 -345
- package/agentes/frontend-angular-swl.md +621 -621
- package/agentes/frontend-css-swl.md +716 -716
- package/agentes/frontend-react-swl.md +692 -692
- package/agentes/frontend-swl.md +496 -496
- package/agentes/frontend-tailwind-swl.md +826 -826
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/migrador-swl.md +442 -442
- package/agentes/mobile-android-swl.md +511 -511
- package/agentes/mobile-cross-swl.md +541 -541
- package/agentes/mobile-ios-swl.md +502 -502
- package/agentes/mobile-testing-swl.md +302 -302
- package/agentes/nemesis-auditor-swl.md +285 -285
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/pagos-swl.md +310 -310
- package/agentes/perfilador-usuario-swl.md +321 -321
- package/agentes/planificador-swl.md +399 -399
- package/agentes/producto-prd-swl.md +589 -589
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-csharp-swl.md +264 -264
- package/agentes/revisor-go-swl.md +259 -259
- package/agentes/revisor-java-swl.md +257 -257
- package/agentes/revisor-kotlin-swl.md +273 -273
- package/agentes/revisor-nextjs-swl.md +281 -281
- package/agentes/revisor-php-swl.md +271 -271
- package/agentes/revisor-react-swl.md +278 -278
- package/agentes/revisor-rust-swl.md +346 -346
- package/agentes/revisor-seguridad-swl.md +399 -399
- package/agentes/revisor-swift-swl.md +268 -268
- package/agentes/revisor-typescript-swl.md +346 -346
- package/agentes/tdd-qa-swl.md +393 -393
- package/bin/swl-ses.js +10 -0
- package/comandos/swl/actualizar.md +174 -174
- package/comandos/swl/adoptar-proyecto.md +265 -265
- package/comandos/swl/aprender.md +836 -836
- package/comandos/swl/aprobar-plan.md +146 -146
- package/comandos/swl/auditar-deps.md +134 -134
- package/comandos/swl/autoresearch.md +264 -264
- package/comandos/swl/ayuda.md +224 -224
- package/comandos/swl/brainstorm.md +52 -51
- package/comandos/swl/checkpoint.md +325 -325
- package/comandos/swl/claudemd.md +234 -234
- package/comandos/swl/compactar.md +310 -310
- package/comandos/swl/configurar-ci.md +235 -235
- package/comandos/swl/contexto.md +110 -110
- package/comandos/swl/crear-skill.md +292 -292
- package/comandos/swl/cron.md +194 -194
- package/comandos/swl/deuda-codigo.md +97 -97
- package/comandos/swl/discutir-fase.md +169 -169
- package/comandos/swl/ejecutar-fase.md +233 -233
- package/comandos/swl/evaluar-skill.md +520 -520
- package/comandos/swl/evolucion-continua.md +73 -73
- package/comandos/swl/evolucionar.md +267 -267
- package/comandos/swl/exportar-vault.md +583 -583
- package/comandos/swl/fix.md +118 -118
- package/comandos/swl/gateway.md +158 -158
- package/comandos/swl/inbox.md +116 -116
- package/comandos/swl/instalar.md +220 -220
- package/comandos/swl/instintos.md +86 -86
- package/comandos/swl/mapear-codebase.md +312 -312
- package/comandos/swl/mcp-status.md +176 -175
- package/comandos/swl/modelo.md +100 -100
- package/comandos/swl/nemesis.md +433 -433
- package/comandos/swl/notificaciones.md +299 -299
- package/comandos/swl/nuevo-proyecto.md +251 -251
- package/comandos/swl/planear-fase.md +263 -263
- package/comandos/swl/plugins.md +256 -256
- package/comandos/swl/predecir.md +169 -169
- package/comandos/swl/reflect-skills.md +125 -125
- package/comandos/swl/release.md +450 -450
- package/comandos/swl/revisar-impacto.md +201 -201
- package/comandos/swl/revisar.md +330 -330
- package/comandos/swl/seguridad.md +189 -189
- package/comandos/swl/sesiones.md +200 -200
- package/comandos/swl/skill-search.md +113 -113
- package/comandos/swl/status.md +345 -345
- package/comandos/swl/verificar.md +817 -817
- package/comandos/swl/wiki.md +620 -620
- package/gateway/cron/jobs.example.json +12 -12
- package/gateway/lib/event-channel.js +191 -191
- package/habilidades/agent-deep-links/SKILL.md +148 -148
- package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -294
- package/habilidades/backend-async-postgres-testing/SKILL.md +216 -215
- package/habilidades/backend-error-design/SKILL.md +221 -221
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/calidad-anti-patrones-universales/SKILL.md +105 -1
- package/habilidades/calidad-contract-testing/SKILL.md +165 -165
- package/habilidades/calidad-mutation-testing/SKILL.md +25 -1
- package/habilidades/changelog-generator/SKILL.md +174 -174
- package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
- package/habilidades/ci-cd-pipelines/SKILL.md +5 -1
- package/habilidades/compactacion-contexto/SKILL.md +2 -1
- package/habilidades/contenedores-docker/SKILL.md +4 -2
- package/habilidades/css-moderno/SKILL.md +7 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/SKILL.md +207 -207
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/drift-detection/SKILL.md +1 -1
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
- package/habilidades/extractor-de-aprendizajes/SKILL.md +12 -2
- package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
- package/habilidades/git-worktrees-paralelo/SKILL.md +19 -1
- package/habilidades/harness-claude-code/SKILL.md +315 -314
- package/habilidades/instalar-sistema/SKILL.md +227 -227
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/perfil-usuario/SKILL.md +200 -200
- package/habilidades/planear-fase/SKILL.md +358 -358
- package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
- package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
- package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
- package/habilidades/proceso-dynamic-workflows/SKILL.md +60 -0
- 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-ingenieria-requerimientos/SKILL.md +147 -147
- package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
- package/habilidades/proceso-modular-split/SKILL.md +256 -256
- package/habilidades/release-semver/SKILL.md +2 -2
- package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
- 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/tdd-workflow/SKILL.md +749 -749
- package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
- package/hooks/agente-lifecycle.js +1 -1
- package/hooks/audit-trail.js +1 -1
- package/hooks/auto-consolidacion.js +1 -1
- package/hooks/calidad-pre-commit.js +159 -10
- package/hooks/captura-acciones-post.js +1 -1
- package/hooks/captura-acciones-session.js +1 -1
- package/hooks/captura-feedback-usuario.js +1 -1
- package/hooks/ciclo-evolucion-subagente.js +26 -26
- package/hooks/ciclo-evolucion.js +26 -26
- package/hooks/contexto-iteracion.js +1 -1
- package/hooks/degradacion-instintos.js +1 -1
- package/hooks/grafo-contexto.js +1 -1
- package/hooks/guardrail-modelo.js +1 -1
- package/hooks/inbox-aviso.js +1 -1
- package/hooks/inyeccion-contexto.js +1 -1
- package/hooks/lib/agent-matcher.js +1 -1
- package/hooks/lib/agent-routing.js +1 -1
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/captura-acciones.js +1 -1
- 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-metricas.js +1 -1
- package/hooks/lib/evolution-tracker.js +1 -1
- package/hooks/lib/gateway-notify.js +193 -193
- package/hooks/lib/mcp-health.js +1 -1
- package/hooks/lib/notificacion-formato.js +92 -0
- package/hooks/lib/nudge-tracker.js +1 -1
- package/hooks/lib/otlp-exporter.js +1 -1
- package/hooks/lib/propose-step.js +1 -1
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/raiz-proyecto.js +158 -102
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/run-log.js +1 -1
- package/hooks/lib/security-net.js +201 -201
- package/hooks/lib/singleton-guard.js +20 -13
- 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/telegram-cliente.js +11 -3
- package/hooks/lib/text-similarity.js +241 -241
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/notificacion-telegram.js +17 -13
- package/hooks/preservar-estado-pre-compact.js +1 -1
- package/hooks/registro-turnos.js +1 -1
- package/hooks/resumen-sesion.js +1 -1
- package/hooks/risk-scoring.js +1 -1
- package/hooks/session-briefing.js +13 -5
- package/hooks/spec-gate.js +1 -1
- package/hooks/sugerir-regenerar-inventario.js +1 -1
- package/hooks/tdd-gate.js +1 -1
- package/hooks/telemetria-agentes.js +1 -1
- package/hooks/telemetria-skill-routing.js +1 -1
- package/hooks/tracking-costos.js +1 -1
- package/hooks/validar-formato-post-subagente.js +1 -1
- package/hooks/validar-intent-spec.js +1 -1
- package/hooks/validar-planning-paths.js +1 -1
- 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 +6250 -5257
- package/manifiestos/harness-ir.json +47536 -0
- package/manifiestos/modulos.json +1429 -1428
- package/manifiestos/policy-bundle.json +2065 -0
- package/manifiestos/policy-corpus-w2.json +3926 -0
- package/manifiestos/runtime-adapters-core3.json +208 -0
- package/manifiestos/runtime-conformance.json +139 -0
- package/manifiestos/skills-lock.json +1275 -1275
- package/package.json +94 -94
- package/plantillas/auditor-veto-template.md +105 -105
- 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 -369
- package/reglas/accesibilidad.md +10 -10
- 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/git-workflow.md +1 -0
- package/reglas/hooks.md +6 -6
- package/reglas/intent-engineering.md +218 -218
- package/reglas/markitdown.md +8 -8
- package/reglas/monitor-ci.md +12 -0
- package/reglas/patrones.md +6 -6
- package/reglas/testing.md +7 -7
- package/reglas/tests-cleanup.md +224 -224
- 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/gate-state.schema.json +76 -0
- package/schemas/harness-ir.schema.json +369 -0
- package/schemas/hook-profiles.schema.json +54 -54
- package/schemas/hooks-config.schema.json +89 -89
- package/schemas/legacy-gates.schema.json +45 -0
- package/schemas/modulos.schema.json +38 -38
- package/schemas/perfiles.schema.json +36 -36
- package/schemas/plugin.schema.json +77 -77
- package/schemas/policy-bundle.schema.json +140 -0
- package/schemas/policy-enforcement.schema.json +117 -0
- package/schemas/policy-operation.schema.json +261 -0
- package/schemas/runtime-adapter.schema.json +176 -0
- package/schemas/runtime-build-attestation.schema.json +100 -0
- package/schemas/runtime-conformance.schema.json +239 -0
- package/schemas/runtime-diagnostic.schema.json +395 -0
- package/schemas/skill-evals.schema.json +119 -119
- package/schemas/skill-frontmatter.schema.json +245 -245
- package/schemas/w4-certification-request.schema.json +72 -0
- package/schemas/w4-certification-verdict.schema.json +224 -0
- package/schemas/w4-corpus.schema.json +172 -0
- package/schemas/w4-mutation-report.schema.json +116 -0
- package/schemas/w4-replay-result.schema.json +164 -0
- package/schemas/w4-scoring-report.schema.json +89 -0
- 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/auditar-clases-conocidas.js +134 -134
- package/scripts/bootstrap-instintos.js +88 -14
- package/scripts/canario-hooks.js +166 -166
- package/scripts/cli/aprobar-plan.js +73 -73
- package/scripts/cli/autonomia.js +23 -23
- package/scripts/cli/benchmark-memoria.js +37 -37
- package/scripts/cli/briefing.js +23 -23
- package/scripts/cli/ciclo-autonomo.js +73 -73
- package/scripts/cli/ciclo-evolucion.js +26 -26
- package/scripts/cli/ciclo-fase-b.js +102 -102
- 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/guardrail-metrics.js +39 -39
- package/scripts/cli/liberar-fase.js +42 -42
- package/scripts/cli/mark-evolved.js +56 -56
- package/scripts/cli/memoria-search.js +69 -69
- 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/nudge-accionar.js +39 -39
- package/scripts/cli/propose-step.js +29 -29
- package/scripts/cli/run-eval.js +38 -38
- 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/comandos/install-asistido.js +8 -7
- package/scripts/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/doctor.js +61 -13
- package/scripts/evidencia-valor.js +101 -101
- package/scripts/field-report.js +16 -16
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-claims-runtime.js +1342 -0
- package/scripts/generar-harness-ir.js +257 -0
- package/scripts/generar-inventario.js +52 -54
- package/scripts/generar-policy-bundle.js +202 -0
- package/scripts/instalador.js +39 -7
- package/scripts/lib/activar-hooks-proyecto.js +116 -116
- package/scripts/lib/approval-receipts.js +190 -0
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/certificacion-loop-state.js +421 -0
- package/scripts/lib/ci-reader.js +193 -193
- package/scripts/lib/ciclo-autonomo/candidatos.js +174 -174
- package/scripts/lib/ciclo-autonomo/config.js +165 -165
- package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -174
- package/scripts/lib/ciclo-autonomo/fallback.js +77 -77
- package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -139
- package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -112
- package/scripts/lib/ciclo-autonomo/index.js +301 -301
- package/scripts/lib/ciclo-autonomo/lock.js +124 -124
- package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -122
- package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -240
- package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -248
- package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -190
- package/scripts/lib/ciclo-autonomo/yaml-instintos.js +591 -535
- package/scripts/lib/clasificar-directorio.js +92 -0
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-host-swl.js +175 -175
- package/scripts/lib/detectar-runtime.js +29 -20
- 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/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/evidence-verifier.js +192 -0
- package/scripts/lib/evidencia-release.js +322 -322
- package/scripts/lib/evidencia-valor.js +228 -228
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/frontmatter-canonico.js +509 -0
- package/scripts/lib/gate-engine.js +871 -0
- package/scripts/lib/gate-hooks-requires.js +249 -249
- package/scripts/lib/gate-licencias.js +212 -212
- package/scripts/lib/git-config-preflight.js +48 -0
- package/scripts/lib/git-metricas.js +257 -257
- package/scripts/lib/harness-ir.js +778 -0
- package/scripts/lib/harness-source-snapshot.js +309 -0
- package/scripts/lib/integrity-ledger.js +1147 -0
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/legacy-gate-migration.js +324 -0
- package/scripts/lib/limpiar-basura-global.js +204 -0
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/metricas-dora.js +204 -204
- package/scripts/lib/notificaciones-telegram.js +1 -0
- package/scripts/lib/npm-version.js +1 -0
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/plan-lock.js +61 -13
- package/scripts/lib/policy-broker.js +338 -0
- package/scripts/lib/policy-bundle.js +342 -0
- package/scripts/lib/policy-context-provider.js +310 -0
- package/scripts/lib/policy-contract.js +479 -0
- package/scripts/lib/policy-verifier-utils.js +65 -0
- package/scripts/lib/pr-analyzer.js +399 -399
- package/scripts/lib/principal-verifier.js +178 -0
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/resolver-plan-fase.js +37 -37
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/runtime-adapter-contract.js +267 -0
- package/scripts/lib/runtime-artifact-verifier.js +426 -0
- package/scripts/lib/runtime-build-attestation.js +127 -0
- package/scripts/lib/runtime-bundle-installer.js +586 -0
- package/scripts/lib/runtime-compiler.js +327 -0
- package/scripts/lib/runtime-conformance.js +202 -0
- package/scripts/lib/runtime-doctor-core3.js +567 -0
- package/scripts/lib/runtime-doctor-input.js +59 -0
- package/scripts/lib/runtime-operation-adapter.js +267 -0
- package/scripts/lib/schema-version.js +164 -164
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/lib/signed-envelope.js +545 -0
- package/scripts/lib/single-use-store.js +359 -0
- package/scripts/lib/skills-externas.js +31 -0
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/lib/transformadores/codex.js +15 -8
- package/scripts/lib/transformadores/gemini.js +79 -5
- package/scripts/lib/w4-attestation-adapter.js +158 -0
- package/scripts/lib/w4-canario.js +337 -0
- package/scripts/lib/w4-claims.js +182 -0
- package/scripts/lib/w4-corpus-generador.js +542 -0
- package/scripts/lib/w4-gate-c5.js +115 -0
- package/scripts/lib/w4-harness-bajo-prueba.js +155 -0
- package/scripts/lib/w4-matriz-combos.js +55 -0
- package/scripts/lib/w4-motor-mutacion.js +1348 -0
- package/scripts/lib/w4-motor-replay.js +735 -0
- package/scripts/lib/w4-pin-origen.js +54 -0
- package/scripts/lib/w4-publicar-request.js +132 -0
- package/scripts/lib/w4-revocacion.js +62 -0
- package/scripts/lib/w4-runtimes-core3.js +38 -0
- package/scripts/lib/w4-scorer-certificacion.js +692 -0
- package/scripts/lib/w4-superficie-candidato.js +49 -0
- package/scripts/lib/w4-veredicto.js +452 -0
- package/scripts/lib/w4-verificar-veredicto.js +302 -0
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +200 -200
- package/scripts/migrar-gates-legacy.js +108 -0
- package/scripts/publicar-certification-request.js +115 -0
- package/scripts/runtime-doctor.js +107 -0
- 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/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/install-wizard.js +408 -403
- 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/validar-userland-vacio.js +110 -110
- package/scripts/verificar-aislamiento-swl-eval.js +87 -0
- package/scripts/verificar-empaquetado-downstream.js +375 -0
- package/scripts/verificar-loop-constructor.js +215 -0
- package/scripts/verificar-trazabilidad.js +13 -6
- package/scripts/verificar-veredicto-real.js +84 -0
- package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +0 -53
- package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +0 -372
|
@@ -1,299 +1,299 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: swl:notificaciones
|
|
3
|
-
description: Gestiona el sistema de notificaciones Telegram de swl-ses (opt-in). Subcomandos: init (flujo interactivo de configuración), status (estado actual sin mostrar credenciales), disable (quitar hooks SWL de settings global), bot start|stop|status|restart|enable-autostart|disable-autostart (daemon bidireccional con autostart por OS — Windows Scheduled Task, Linux systemd --user, macOS LaunchAgent).
|
|
4
|
-
allowed_tools: ["Read", "Bash"]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# /swl:notificaciones — Gestión de notificaciones Telegram
|
|
8
|
-
|
|
9
|
-
Gestiona el hook saliente y el daemon bidireccional de Telegram que swl-ses
|
|
10
|
-
instala como feature opt-in. Toda la lógica de credenciales, settings y
|
|
11
|
-
baseline la delega a `scripts/lib/notificaciones-telegram.js` — este
|
|
12
|
-
comando solo orquesta.
|
|
13
|
-
|
|
14
|
-
**Seguridad**: el comando NUNCA muestra el token. Solo muestra metadata
|
|
15
|
-
(longitud, primeros 3 caracteres, últimos 4 dígitos del chat_id). Las
|
|
16
|
-
credenciales viven en `~/.claude/notifications/.env`, fuera del repositorio.
|
|
17
|
-
|
|
18
|
-
## Cuándo NO invocarme
|
|
19
|
-
|
|
20
|
-
- Para configurar el gateway bidireccional completo (`/swl:gateway`): ese
|
|
21
|
-
componente gestiona adaptadores Telegram, Discord, Slack y Webhook con
|
|
22
|
-
`node-telegram-bot-api`. Este comando es para el hook saliente zero-deps.
|
|
23
|
-
- Para enviar mensajes a Telegram desde código: usar `hooks/lib/telegram-cliente.js`
|
|
24
|
-
directamente.
|
|
25
|
-
- Para revisar el estado del gateway: `/swl:gateway status`.
|
|
26
|
-
- Para ejecutar el bot daemon: usar los subcomandos `bot start|stop|status|restart`
|
|
27
|
-
o `bot enable-autostart|disable-autostart`. El binario está en `bin/swl-telegram-bot.js`.
|
|
28
|
-
|
|
29
|
-
## Subcomandos
|
|
30
|
-
|
|
31
|
-
### `/swl:notificaciones init`
|
|
32
|
-
|
|
33
|
-
Lanza el flujo interactivo de configuración. Equivalente al paso 9 del
|
|
34
|
-
instalador — útil cuando el usuario saltó el opt-in durante la instalación
|
|
35
|
-
o quiere reconfigurar.
|
|
36
|
-
|
|
37
|
-
**Flujo**:
|
|
38
|
-
1. Verifica la feature flag `SWL_NOTIFICACIONES_TELEGRAM`. Si vale `0`, sale sin tocar nada.
|
|
39
|
-
2. Si ya existe `~/.claude/notifications/.env`, pregunta si reutilizar o sobreescribir.
|
|
40
|
-
3. Muestra instrucciones para obtener token (BotFather) y chat_id (`/quien`).
|
|
41
|
-
4. Solicita `TELEGRAM_BOT_TOKEN` y `TELEGRAM_CHAT_ID`.
|
|
42
|
-
5. Escribe `.env` con permisos 600 en POSIX.
|
|
43
|
-
6. Genera `baseline-hooks.json` para auto-restauración de settings.
|
|
44
|
-
7. Hace merge de los hooks SWL en `~/.claude/settings.json` global (backup previo).
|
|
45
|
-
|
|
46
|
-
**Ejemplo**:
|
|
47
|
-
```
|
|
48
|
-
/swl:notificaciones init
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**Modo headless** (sin TTY):
|
|
52
|
-
```bash
|
|
53
|
-
# Usar el instalador directamente con flag
|
|
54
|
-
npx -y @saulwade/swl-ses@latest install --with-notificaciones=<TOKEN>,<CHAT_ID>
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**Criterio de éxito**: al terminar, el hook `notificacion-telegram.js` está
|
|
58
|
-
registrado en `~/.claude/settings.json` y se envía una notificación de prueba.
|
|
59
|
-
|
|
60
|
-
### `/swl:notificaciones status`
|
|
61
|
-
|
|
62
|
-
Muestra el estado actual sin revelar credenciales.
|
|
63
|
-
|
|
64
|
-
**Salida esperada**:
|
|
65
|
-
```
|
|
66
|
-
Notificaciones Telegram — estado actual
|
|
67
|
-
.env: existe
|
|
68
|
-
token: configurado (abc*** — longitud: 46)
|
|
69
|
-
chat_id: configurado (...4521)
|
|
70
|
-
proyectos mudos: ninguno
|
|
71
|
-
bot daemon: detenido (usa `/swl:notificaciones bot start`)
|
|
72
|
-
autostart: no configurado (usa `bot enable-autostart`)
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
El token nunca aparece completo. El chat_id muestra solo los últimos 4 dígitos.
|
|
76
|
-
|
|
77
|
-
**Ejemplo**:
|
|
78
|
-
```
|
|
79
|
-
/swl:notificaciones status
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### `/swl:notificaciones disable`
|
|
83
|
-
|
|
84
|
-
Quita los hooks SWL de `~/.claude/settings.json`. Pide confirmación antes
|
|
85
|
-
de actuar. Por defecto conserva `.env` (no borra credenciales sin pedirlo).
|
|
86
|
-
|
|
87
|
-
**Opciones**:
|
|
88
|
-
- Sin flags: quita hooks de settings, conserva `.env` y `baseline-hooks.json`.
|
|
89
|
-
- Con `--purge`: quita hooks Y elimina `.env` y `baseline-hooks.json`. Pide
|
|
90
|
-
confirmación adicional antes de borrar credenciales.
|
|
91
|
-
|
|
92
|
-
**Flujo con confirmación**:
|
|
93
|
-
```
|
|
94
|
-
¿Confirmas deshabilitar las notificaciones Telegram? [s/N]
|
|
95
|
-
s
|
|
96
|
-
[notificaciones] 4 hook(s) SWL eliminados de settings.json (2 preservados).
|
|
97
|
-
[notificaciones] .env conservado. Para eliminarlo usa: /swl:notificaciones disable --purge
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
**Criterio de éxito**: `~/.claude/settings.json` ya no contiene referencias
|
|
101
|
-
a `notificacion-telegram.js` ni `auto-restaurar-settings.js`.
|
|
102
|
-
|
|
103
|
-
**Ejemplo**:
|
|
104
|
-
```
|
|
105
|
-
/swl:notificaciones disable
|
|
106
|
-
/swl:notificaciones disable --purge
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### `/swl:notificaciones bot start|stop|status|restart`
|
|
110
|
-
|
|
111
|
-
Gestiona el ciclo de vida del daemon bidireccional `bin/swl-telegram-bot.js`.
|
|
112
|
-
|
|
113
|
-
El daemon se inicia en background (desacoplado del proceso padre) con stdout/stderr
|
|
114
|
-
redirigidos a `~/.claude/notifications/bot.stdout.log` y `bot.stderr.log`.
|
|
115
|
-
El PID se almacena en `~/.claude/notifications/bot.pid` para gestión posterior.
|
|
116
|
-
|
|
117
|
-
**Ejemplos**:
|
|
118
|
-
```
|
|
119
|
-
/swl:notificaciones bot start
|
|
120
|
-
/swl:notificaciones bot stop
|
|
121
|
-
/swl:notificaciones bot status
|
|
122
|
-
/swl:notificaciones bot restart
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### `/swl:notificaciones repair`
|
|
126
|
-
|
|
127
|
-
Repara una instalación rota de notificaciones copiando los hook files al directorio
|
|
128
|
-
`~/.claude/hooks/` y migrando entradas con ruta relativa en `~/.claude/settings.json`
|
|
129
|
-
a ruta absoluta.
|
|
130
|
-
|
|
131
|
-
Úsalo cuando el hook de Stop genera el error:
|
|
132
|
-
```
|
|
133
|
-
Cannot find module 'D:\...\hooks\notificacion-telegram.js'
|
|
134
|
-
```
|
|
135
|
-
o cuando `settings.json` contiene `node hooks/notificacion-telegram.js` en lugar
|
|
136
|
-
de la ruta absoluta correcta.
|
|
137
|
-
|
|
138
|
-
**Ejemplo**:
|
|
139
|
-
```
|
|
140
|
-
/swl:notificaciones repair
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### `/swl:notificaciones bot enable-autostart|disable-autostart`
|
|
144
|
-
|
|
145
|
-
Configura el inicio automático del daemon al arrancar la sesión del usuario.
|
|
146
|
-
Delega al generador correspondiente según el OS:
|
|
147
|
-
|
|
148
|
-
- **Windows**: Scheduled Task (Programador de tareas) con RunLevel Limited (sin elevación)
|
|
149
|
-
- **Linux**: unit systemd `--user` con `WantedBy=default.target` (sin root)
|
|
150
|
-
- **macOS**: LaunchAgent en `~/Library/LaunchAgents/` (sin root, sin LaunchDaemons)
|
|
151
|
-
|
|
152
|
-
El autostart se configura por usuario — nunca requiere sudo ni privilegios de sistema.
|
|
153
|
-
|
|
154
|
-
**Rollback manual si algo sale mal**:
|
|
155
|
-
- Windows: `schtasks /delete /tn "SWL-Telegram-Bot" /f`
|
|
156
|
-
- Linux: `systemctl --user disable --now swl-telegram-bot && rm ~/.config/systemd/user/swl-telegram-bot.service`
|
|
157
|
-
- macOS: `launchctl unload -w ~/Library/LaunchAgents/com.swl.telegram-bot.plist && rm ~/Library/LaunchAgents/com.swl.telegram-bot.plist`
|
|
158
|
-
|
|
159
|
-
**Ejemplos**:
|
|
160
|
-
```
|
|
161
|
-
/swl:notificaciones bot enable-autostart
|
|
162
|
-
/swl:notificaciones bot disable-autostart
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
## Instrucciones de ejecución
|
|
166
|
-
|
|
167
|
-
Al recibir `/swl:notificaciones [subcomando]`:
|
|
168
|
-
|
|
169
|
-
### Paso 1 — Identificar subcomando
|
|
170
|
-
|
|
171
|
-
Parsear el primer argumento: `init`, `status`, `disable`, `repair`, `bot`.
|
|
172
|
-
|
|
173
|
-
Si no hay argumento o el argumento no es reconocido, mostrar la ayuda:
|
|
174
|
-
|
|
175
|
-
```
|
|
176
|
-
Uso: /swl:notificaciones <subcomando>
|
|
177
|
-
|
|
178
|
-
Subcomandos disponibles:
|
|
179
|
-
init Configurar notificaciones Telegram
|
|
180
|
-
status Ver estado actual (sin mostrar credenciales)
|
|
181
|
-
disable [--purge] Deshabilitar (conserva .env por defecto)
|
|
182
|
-
repair Reparar hooks rotos (ruta relativa → absoluta)
|
|
183
|
-
bot start Iniciar daemon bidireccional
|
|
184
|
-
bot stop Detener daemon
|
|
185
|
-
bot status Estado del daemon
|
|
186
|
-
bot restart Reiniciar daemon
|
|
187
|
-
bot enable-autostart Configurar inicio automático del bot
|
|
188
|
-
bot disable-autostart Quitar inicio automático del bot
|
|
189
|
-
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### Paso 2 — Ejecutar según subcomando
|
|
193
|
-
|
|
194
|
-
Todos los subcomandos usan el CLI cross-scope (resuelve repo madre / `swl-ses`
|
|
195
|
-
en PATH / `npx`; ver `docs/invocacion-cli-cross-scope.md`). El subcomando
|
|
196
|
-
encapsula el formato de salida y la detección de TTY.
|
|
197
|
-
|
|
198
|
-
**Para `init`** (requiere TTY; el subcomando detecta su ausencia y guía):
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
swl-ses notificaciones init
|
|
202
|
-
# fallback: npx -y @saulwade/swl-ses@latest notificaciones init
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
**Para `status`**:
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
swl-ses notificaciones status
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
**Para `disable`**:
|
|
212
|
-
|
|
213
|
-
Antes de invocar la lib, pedir confirmación al usuario:
|
|
214
|
-
|
|
215
|
-
```
|
|
216
|
-
¿Confirmas deshabilitar las notificaciones Telegram? [s/N]
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
Si responde `n` o vacío: cancelar sin tocar nada.
|
|
220
|
-
|
|
221
|
-
Si responde `s` (agregar `--purge` para eliminar también las credenciales, tras
|
|
222
|
-
confirmación adicional del usuario):
|
|
223
|
-
|
|
224
|
-
```bash
|
|
225
|
-
swl-ses notificaciones disable # conserva ~/.claude/notifications/.env
|
|
226
|
-
swl-ses notificaciones disable --purge # elimina también las credenciales
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
**Para `repair`**:
|
|
230
|
-
|
|
231
|
-
```bash
|
|
232
|
-
swl-ses notificaciones repair
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
**Para `bot start`**:
|
|
236
|
-
|
|
237
|
-
```bash
|
|
238
|
-
swl-ses notificaciones bot-start
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
**Para `bot stop`**:
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
swl-ses notificaciones bot-stop
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
**Para `bot status`**:
|
|
248
|
-
|
|
249
|
-
```bash
|
|
250
|
-
swl-ses notificaciones bot-status
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
**Para `bot restart`**:
|
|
254
|
-
|
|
255
|
-
```bash
|
|
256
|
-
swl-ses notificaciones bot-restart
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
**Para `bot enable-autostart`**:
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
swl-ses notificaciones bot-enable-autostart
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
**Para `bot disable-autostart`**:
|
|
266
|
-
|
|
267
|
-
```bash
|
|
268
|
-
swl-ses notificaciones bot-disable-autostart
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
### Paso 3 — Reportar resultado
|
|
272
|
-
|
|
273
|
-
Mostrar el resultado al usuario con el estado final. Si el subcomando fue
|
|
274
|
-
`init` exitoso, recordar que el hook estará activo en la próxima sesión de
|
|
275
|
-
Claude Code.
|
|
276
|
-
|
|
277
|
-
## Seguridad
|
|
278
|
-
|
|
279
|
-
- NUNCA mostrar el valor de `TELEGRAM_BOT_TOKEN` en ningún output.
|
|
280
|
-
- NUNCA sugerir comandos como `cat ~/.claude/notifications/.env`.
|
|
281
|
-
- Los ejemplos de este comando usan placeholders `<TOKEN>` y `<CHAT_ID>`,
|
|
282
|
-
nunca valores reales.
|
|
283
|
-
- Al mostrar el chat_id, siempre usar solo los últimos 4 dígitos.
|
|
284
|
-
- Si detectas que algún output podría exponer credenciales, truncar o
|
|
285
|
-
enmascarar antes de mostrar.
|
|
286
|
-
|
|
287
|
-
## Variables de entorno relevantes
|
|
288
|
-
|
|
289
|
-
| Variable | Efecto |
|
|
290
|
-
|----------|--------|
|
|
291
|
-
| `SWL_NOTIFICACIONES_TELEGRAM=0` | Desactiva los hooks sin tocar settings. El comando `init` respeta esta variable. |
|
|
292
|
-
|
|
293
|
-
## Referencias
|
|
294
|
-
|
|
295
|
-
- Credenciales: `~/.claude/notifications/.env` (fuera del repo, permisos 600)
|
|
296
|
-
- Lib de flujo: `scripts/lib/notificaciones-telegram.js`
|
|
297
|
-
- Hook saliente: `hooks/notificacion-telegram.js`
|
|
298
|
-
- Hook de restauración: `hooks/auto-restaurar-settings.js`
|
|
299
|
-
- ADR-0009: excepción a la regla "SWL solo registra hooks a nivel proyecto"
|
|
1
|
+
---
|
|
2
|
+
name: swl:notificaciones
|
|
3
|
+
description: Gestiona el sistema de notificaciones Telegram de swl-ses (opt-in). Subcomandos: init (flujo interactivo de configuración), status (estado actual sin mostrar credenciales), disable (quitar hooks SWL de settings global), bot start|stop|status|restart|enable-autostart|disable-autostart (daemon bidireccional con autostart por OS — Windows Scheduled Task, Linux systemd --user, macOS LaunchAgent).
|
|
4
|
+
allowed_tools: ["Read", "Bash"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /swl:notificaciones — Gestión de notificaciones Telegram
|
|
8
|
+
|
|
9
|
+
Gestiona el hook saliente y el daemon bidireccional de Telegram que swl-ses
|
|
10
|
+
instala como feature opt-in. Toda la lógica de credenciales, settings y
|
|
11
|
+
baseline la delega a `scripts/lib/notificaciones-telegram.js` — este
|
|
12
|
+
comando solo orquesta.
|
|
13
|
+
|
|
14
|
+
**Seguridad**: el comando NUNCA muestra el token. Solo muestra metadata
|
|
15
|
+
(longitud, primeros 3 caracteres, últimos 4 dígitos del chat_id). Las
|
|
16
|
+
credenciales viven en `~/.claude/notifications/.env`, fuera del repositorio.
|
|
17
|
+
|
|
18
|
+
## Cuándo NO invocarme
|
|
19
|
+
|
|
20
|
+
- Para configurar el gateway bidireccional completo (`/swl:gateway`): ese
|
|
21
|
+
componente gestiona adaptadores Telegram, Discord, Slack y Webhook con
|
|
22
|
+
`node-telegram-bot-api`. Este comando es para el hook saliente zero-deps.
|
|
23
|
+
- Para enviar mensajes a Telegram desde código: usar `hooks/lib/telegram-cliente.js`
|
|
24
|
+
directamente.
|
|
25
|
+
- Para revisar el estado del gateway: `/swl:gateway status`.
|
|
26
|
+
- Para ejecutar el bot daemon: usar los subcomandos `bot start|stop|status|restart`
|
|
27
|
+
o `bot enable-autostart|disable-autostart`. El binario está en `bin/swl-telegram-bot.js`.
|
|
28
|
+
|
|
29
|
+
## Subcomandos
|
|
30
|
+
|
|
31
|
+
### `/swl:notificaciones init`
|
|
32
|
+
|
|
33
|
+
Lanza el flujo interactivo de configuración. Equivalente al paso 9 del
|
|
34
|
+
instalador — útil cuando el usuario saltó el opt-in durante la instalación
|
|
35
|
+
o quiere reconfigurar.
|
|
36
|
+
|
|
37
|
+
**Flujo**:
|
|
38
|
+
1. Verifica la feature flag `SWL_NOTIFICACIONES_TELEGRAM`. Si vale `0`, sale sin tocar nada.
|
|
39
|
+
2. Si ya existe `~/.claude/notifications/.env`, pregunta si reutilizar o sobreescribir.
|
|
40
|
+
3. Muestra instrucciones para obtener token (BotFather) y chat_id (`/quien`).
|
|
41
|
+
4. Solicita `TELEGRAM_BOT_TOKEN` y `TELEGRAM_CHAT_ID`.
|
|
42
|
+
5. Escribe `.env` con permisos 600 en POSIX.
|
|
43
|
+
6. Genera `baseline-hooks.json` para auto-restauración de settings.
|
|
44
|
+
7. Hace merge de los hooks SWL en `~/.claude/settings.json` global (backup previo).
|
|
45
|
+
|
|
46
|
+
**Ejemplo**:
|
|
47
|
+
```
|
|
48
|
+
/swl:notificaciones init
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Modo headless** (sin TTY):
|
|
52
|
+
```bash
|
|
53
|
+
# Usar el instalador directamente con flag
|
|
54
|
+
npx -y @saulwade/swl-ses@latest install --with-notificaciones=<TOKEN>,<CHAT_ID>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Criterio de éxito**: al terminar, el hook `notificacion-telegram.js` está
|
|
58
|
+
registrado en `~/.claude/settings.json` y se envía una notificación de prueba.
|
|
59
|
+
|
|
60
|
+
### `/swl:notificaciones status`
|
|
61
|
+
|
|
62
|
+
Muestra el estado actual sin revelar credenciales.
|
|
63
|
+
|
|
64
|
+
**Salida esperada**:
|
|
65
|
+
```
|
|
66
|
+
Notificaciones Telegram — estado actual
|
|
67
|
+
.env: existe
|
|
68
|
+
token: configurado (abc*** — longitud: 46)
|
|
69
|
+
chat_id: configurado (...4521)
|
|
70
|
+
proyectos mudos: ninguno
|
|
71
|
+
bot daemon: detenido (usa `/swl:notificaciones bot start`)
|
|
72
|
+
autostart: no configurado (usa `bot enable-autostart`)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
El token nunca aparece completo. El chat_id muestra solo los últimos 4 dígitos.
|
|
76
|
+
|
|
77
|
+
**Ejemplo**:
|
|
78
|
+
```
|
|
79
|
+
/swl:notificaciones status
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### `/swl:notificaciones disable`
|
|
83
|
+
|
|
84
|
+
Quita los hooks SWL de `~/.claude/settings.json`. Pide confirmación antes
|
|
85
|
+
de actuar. Por defecto conserva `.env` (no borra credenciales sin pedirlo).
|
|
86
|
+
|
|
87
|
+
**Opciones**:
|
|
88
|
+
- Sin flags: quita hooks de settings, conserva `.env` y `baseline-hooks.json`.
|
|
89
|
+
- Con `--purge`: quita hooks Y elimina `.env` y `baseline-hooks.json`. Pide
|
|
90
|
+
confirmación adicional antes de borrar credenciales.
|
|
91
|
+
|
|
92
|
+
**Flujo con confirmación**:
|
|
93
|
+
```
|
|
94
|
+
¿Confirmas deshabilitar las notificaciones Telegram? [s/N]
|
|
95
|
+
s
|
|
96
|
+
[notificaciones] 4 hook(s) SWL eliminados de settings.json (2 preservados).
|
|
97
|
+
[notificaciones] .env conservado. Para eliminarlo usa: /swl:notificaciones disable --purge
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Criterio de éxito**: `~/.claude/settings.json` ya no contiene referencias
|
|
101
|
+
a `notificacion-telegram.js` ni `auto-restaurar-settings.js`.
|
|
102
|
+
|
|
103
|
+
**Ejemplo**:
|
|
104
|
+
```
|
|
105
|
+
/swl:notificaciones disable
|
|
106
|
+
/swl:notificaciones disable --purge
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### `/swl:notificaciones bot start|stop|status|restart`
|
|
110
|
+
|
|
111
|
+
Gestiona el ciclo de vida del daemon bidireccional `bin/swl-telegram-bot.js`.
|
|
112
|
+
|
|
113
|
+
El daemon se inicia en background (desacoplado del proceso padre) con stdout/stderr
|
|
114
|
+
redirigidos a `~/.claude/notifications/bot.stdout.log` y `bot.stderr.log`.
|
|
115
|
+
El PID se almacena en `~/.claude/notifications/bot.pid` para gestión posterior.
|
|
116
|
+
|
|
117
|
+
**Ejemplos**:
|
|
118
|
+
```
|
|
119
|
+
/swl:notificaciones bot start
|
|
120
|
+
/swl:notificaciones bot stop
|
|
121
|
+
/swl:notificaciones bot status
|
|
122
|
+
/swl:notificaciones bot restart
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### `/swl:notificaciones repair`
|
|
126
|
+
|
|
127
|
+
Repara una instalación rota de notificaciones copiando los hook files al directorio
|
|
128
|
+
`~/.claude/hooks/` y migrando entradas con ruta relativa en `~/.claude/settings.json`
|
|
129
|
+
a ruta absoluta.
|
|
130
|
+
|
|
131
|
+
Úsalo cuando el hook de Stop genera el error:
|
|
132
|
+
```
|
|
133
|
+
Cannot find module 'D:\...\hooks\notificacion-telegram.js'
|
|
134
|
+
```
|
|
135
|
+
o cuando `settings.json` contiene `node hooks/notificacion-telegram.js` en lugar
|
|
136
|
+
de la ruta absoluta correcta.
|
|
137
|
+
|
|
138
|
+
**Ejemplo**:
|
|
139
|
+
```
|
|
140
|
+
/swl:notificaciones repair
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### `/swl:notificaciones bot enable-autostart|disable-autostart`
|
|
144
|
+
|
|
145
|
+
Configura el inicio automático del daemon al arrancar la sesión del usuario.
|
|
146
|
+
Delega al generador correspondiente según el OS:
|
|
147
|
+
|
|
148
|
+
- **Windows**: Scheduled Task (Programador de tareas) con RunLevel Limited (sin elevación)
|
|
149
|
+
- **Linux**: unit systemd `--user` con `WantedBy=default.target` (sin root)
|
|
150
|
+
- **macOS**: LaunchAgent en `~/Library/LaunchAgents/` (sin root, sin LaunchDaemons)
|
|
151
|
+
|
|
152
|
+
El autostart se configura por usuario — nunca requiere sudo ni privilegios de sistema.
|
|
153
|
+
|
|
154
|
+
**Rollback manual si algo sale mal**:
|
|
155
|
+
- Windows: `schtasks /delete /tn "SWL-Telegram-Bot" /f`
|
|
156
|
+
- Linux: `systemctl --user disable --now swl-telegram-bot && rm ~/.config/systemd/user/swl-telegram-bot.service`
|
|
157
|
+
- macOS: `launchctl unload -w ~/Library/LaunchAgents/com.swl.telegram-bot.plist && rm ~/Library/LaunchAgents/com.swl.telegram-bot.plist`
|
|
158
|
+
|
|
159
|
+
**Ejemplos**:
|
|
160
|
+
```
|
|
161
|
+
/swl:notificaciones bot enable-autostart
|
|
162
|
+
/swl:notificaciones bot disable-autostart
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Instrucciones de ejecución
|
|
166
|
+
|
|
167
|
+
Al recibir `/swl:notificaciones [subcomando]`:
|
|
168
|
+
|
|
169
|
+
### Paso 1 — Identificar subcomando
|
|
170
|
+
|
|
171
|
+
Parsear el primer argumento: `init`, `status`, `disable`, `repair`, `bot`.
|
|
172
|
+
|
|
173
|
+
Si no hay argumento o el argumento no es reconocido, mostrar la ayuda:
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
Uso: /swl:notificaciones <subcomando>
|
|
177
|
+
|
|
178
|
+
Subcomandos disponibles:
|
|
179
|
+
init Configurar notificaciones Telegram
|
|
180
|
+
status Ver estado actual (sin mostrar credenciales)
|
|
181
|
+
disable [--purge] Deshabilitar (conserva .env por defecto)
|
|
182
|
+
repair Reparar hooks rotos (ruta relativa → absoluta)
|
|
183
|
+
bot start Iniciar daemon bidireccional
|
|
184
|
+
bot stop Detener daemon
|
|
185
|
+
bot status Estado del daemon
|
|
186
|
+
bot restart Reiniciar daemon
|
|
187
|
+
bot enable-autostart Configurar inicio automático del bot
|
|
188
|
+
bot disable-autostart Quitar inicio automático del bot
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Paso 2 — Ejecutar según subcomando
|
|
193
|
+
|
|
194
|
+
Todos los subcomandos usan el CLI cross-scope (resuelve repo madre / `swl-ses`
|
|
195
|
+
en PATH / `npx`; ver `docs/invocacion-cli-cross-scope.md`). El subcomando
|
|
196
|
+
encapsula el formato de salida y la detección de TTY.
|
|
197
|
+
|
|
198
|
+
**Para `init`** (requiere TTY; el subcomando detecta su ausencia y guía):
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
swl-ses notificaciones init
|
|
202
|
+
# fallback: npx -y @saulwade/swl-ses@latest notificaciones init
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Para `status`**:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
swl-ses notificaciones status
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Para `disable`**:
|
|
212
|
+
|
|
213
|
+
Antes de invocar la lib, pedir confirmación al usuario:
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
¿Confirmas deshabilitar las notificaciones Telegram? [s/N]
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Si responde `n` o vacío: cancelar sin tocar nada.
|
|
220
|
+
|
|
221
|
+
Si responde `s` (agregar `--purge` para eliminar también las credenciales, tras
|
|
222
|
+
confirmación adicional del usuario):
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
swl-ses notificaciones disable # conserva ~/.claude/notifications/.env
|
|
226
|
+
swl-ses notificaciones disable --purge # elimina también las credenciales
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**Para `repair`**:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
swl-ses notificaciones repair
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Para `bot start`**:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
swl-ses notificaciones bot-start
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Para `bot stop`**:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
swl-ses notificaciones bot-stop
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Para `bot status`**:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
swl-ses notificaciones bot-status
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**Para `bot restart`**:
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
swl-ses notificaciones bot-restart
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Para `bot enable-autostart`**:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
swl-ses notificaciones bot-enable-autostart
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
**Para `bot disable-autostart`**:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
swl-ses notificaciones bot-disable-autostart
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Paso 3 — Reportar resultado
|
|
272
|
+
|
|
273
|
+
Mostrar el resultado al usuario con el estado final. Si el subcomando fue
|
|
274
|
+
`init` exitoso, recordar que el hook estará activo en la próxima sesión de
|
|
275
|
+
Claude Code.
|
|
276
|
+
|
|
277
|
+
## Seguridad
|
|
278
|
+
|
|
279
|
+
- NUNCA mostrar el valor de `TELEGRAM_BOT_TOKEN` en ningún output.
|
|
280
|
+
- NUNCA sugerir comandos como `cat ~/.claude/notifications/.env`.
|
|
281
|
+
- Los ejemplos de este comando usan placeholders `<TOKEN>` y `<CHAT_ID>`,
|
|
282
|
+
nunca valores reales.
|
|
283
|
+
- Al mostrar el chat_id, siempre usar solo los últimos 4 dígitos.
|
|
284
|
+
- Si detectas que algún output podría exponer credenciales, truncar o
|
|
285
|
+
enmascarar antes de mostrar.
|
|
286
|
+
|
|
287
|
+
## Variables de entorno relevantes
|
|
288
|
+
|
|
289
|
+
| Variable | Efecto |
|
|
290
|
+
|----------|--------|
|
|
291
|
+
| `SWL_NOTIFICACIONES_TELEGRAM=0` | Desactiva los hooks sin tocar settings. El comando `init` respeta esta variable. |
|
|
292
|
+
|
|
293
|
+
## Referencias
|
|
294
|
+
|
|
295
|
+
- Credenciales: `~/.claude/notifications/.env` (fuera del repo, permisos 600)
|
|
296
|
+
- Lib de flujo: `scripts/lib/notificaciones-telegram.js`
|
|
297
|
+
- Hook saliente: `hooks/notificacion-telegram.js`
|
|
298
|
+
- Hook de restauración: `hooks/auto-restaurar-settings.js`
|
|
299
|
+
- ADR-0009: excepción a la regla "SWL solo registra hooks a nivel proyecto"
|