@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,18 +1,18 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI `swl-ses execution-state` — imprime el resumen estructurado del
|
|
5
|
-
* estado de ejecución (.planning/execution-state.json). Reemplaza el inline
|
|
6
|
-
* `require('./hooks/lib/execution-state')` relativo al proyecto (roto downstream;
|
|
7
|
-
* ver docs/invocacion-cli-cross-scope.md).
|
|
8
|
-
*
|
|
9
|
-
* Uso: swl-ses execution-state
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
const es = require('../../hooks/lib/execution-state');
|
|
13
|
-
|
|
14
|
-
function executionState() {
|
|
15
|
-
console.log(es.formatearResumen(process.cwd()));
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
module.exports = executionState;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI `swl-ses execution-state` — imprime el resumen estructurado del
|
|
5
|
+
* estado de ejecución (.planning/execution-state.json). Reemplaza el inline
|
|
6
|
+
* `require('./hooks/lib/execution-state')` relativo al proyecto (roto downstream;
|
|
7
|
+
* ver docs/invocacion-cli-cross-scope.md).
|
|
8
|
+
*
|
|
9
|
+
* Uso: swl-ses execution-state
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const es = require('../../hooks/lib/execution-state');
|
|
13
|
+
|
|
14
|
+
function executionState() {
|
|
15
|
+
console.log(es.formatearResumen(process.cwd()));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
module.exports = executionState;
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI `swl-ses gateway-notify` — encola una notificación de vuelta al
|
|
5
|
-
* canal origen del gateway (Telegram, Discord). Reemplaza el inline
|
|
6
|
-
* `require('./hooks/lib/gateway-notify')` relativo al proyecto (roto downstream;
|
|
7
|
-
* ver docs/invocacion-cli-cross-scope.md).
|
|
8
|
-
*
|
|
9
|
-
* Uso: swl-ses gateway-notify --texto="✅ ..." [--tipo=custom] [--to=telegram]
|
|
10
|
-
* [--reply-to=<chatId>]
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
const { notificarGateway } = require('../../hooks/lib/gateway-notify');
|
|
14
|
-
|
|
15
|
-
function gatewayNotify(opciones = {}) {
|
|
16
|
-
if (!opciones.texto) {
|
|
17
|
-
console.error('Error: falta --texto="mensaje"');
|
|
18
|
-
process.exitCode = 1;
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
// --reply-to debe ser un chatId numérico: evita redirigir la notificación a
|
|
22
|
-
// un chat arbitrario cuando el flag se sintetiza desde input no confiable.
|
|
23
|
-
if (opciones['reply-to'] !== undefined && !/^-?\d+$/.test(String(opciones['reply-to']))) {
|
|
24
|
-
console.error('Error: --reply-to debe ser un chatId numérico');
|
|
25
|
-
process.exitCode = 1;
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const params = { tipo: opciones.tipo || 'custom', texto: opciones.texto };
|
|
29
|
-
if (opciones.to) params.to = opciones.to;
|
|
30
|
-
if (opciones['reply-to'] !== undefined) params.payload = { replyTo: opciones['reply-to'] };
|
|
31
|
-
|
|
32
|
-
const r = notificarGateway(params);
|
|
33
|
-
if (r === false) {
|
|
34
|
-
console.log(JSON.stringify({ ok: false, motivo: 'gateway deshabilitado o tipo no habilitado' }, null, 2));
|
|
35
|
-
process.exitCode = 1;
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
console.log(JSON.stringify(r ?? { ok: true }, null, 2));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
module.exports = gatewayNotify;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI `swl-ses gateway-notify` — encola una notificación de vuelta al
|
|
5
|
+
* canal origen del gateway (Telegram, Discord). Reemplaza el inline
|
|
6
|
+
* `require('./hooks/lib/gateway-notify')` relativo al proyecto (roto downstream;
|
|
7
|
+
* ver docs/invocacion-cli-cross-scope.md).
|
|
8
|
+
*
|
|
9
|
+
* Uso: swl-ses gateway-notify --texto="✅ ..." [--tipo=custom] [--to=telegram]
|
|
10
|
+
* [--reply-to=<chatId>]
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const { notificarGateway } = require('../../hooks/lib/gateway-notify');
|
|
14
|
+
|
|
15
|
+
function gatewayNotify(opciones = {}) {
|
|
16
|
+
if (!opciones.texto) {
|
|
17
|
+
console.error('Error: falta --texto="mensaje"');
|
|
18
|
+
process.exitCode = 1;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// --reply-to debe ser un chatId numérico: evita redirigir la notificación a
|
|
22
|
+
// un chat arbitrario cuando el flag se sintetiza desde input no confiable.
|
|
23
|
+
if (opciones['reply-to'] !== undefined && !/^-?\d+$/.test(String(opciones['reply-to']))) {
|
|
24
|
+
console.error('Error: --reply-to debe ser un chatId numérico');
|
|
25
|
+
process.exitCode = 1;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const params = { tipo: opciones.tipo || 'custom', texto: opciones.texto };
|
|
29
|
+
if (opciones.to) params.to = opciones.to;
|
|
30
|
+
if (opciones['reply-to'] !== undefined) params.payload = { replyTo: opciones['reply-to'] };
|
|
31
|
+
|
|
32
|
+
const r = notificarGateway(params);
|
|
33
|
+
if (r === false) {
|
|
34
|
+
console.log(JSON.stringify({ ok: false, motivo: 'gateway deshabilitado o tipo no habilitado' }, null, 2));
|
|
35
|
+
process.exitCode = 1;
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
console.log(JSON.stringify(r ?? { ok: true }, null, 2));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
module.exports = gatewayNotify;
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI `swl-ses guardrail-metrics` — métricas y diagnóstico de los
|
|
5
|
-
* guardrails de la sesión (bridge en tmpdir por sessionId). Reemplaza el
|
|
6
|
-
* `node -e "require('./hooks/lib/guardrail-metrics')..."` relativo al
|
|
7
|
-
* proyecto que swl-dashboard instruía — roto downstream (ver
|
|
8
|
-
* docs/invocacion-cli-cross-scope.md).
|
|
9
|
-
*
|
|
10
|
-
* Uso: swl-ses guardrail-metrics [--session=ID] [--json]
|
|
11
|
-
* --session default: env CLAUDE_SESSION_ID o "default"
|
|
12
|
-
* --json imprime {metricas, advertencias} crudo
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
const { getMetrics, formatearResumen, diagnosticar } = require('../../hooks/lib/guardrail-metrics');
|
|
16
|
-
|
|
17
|
-
function guardrailMetrics(opciones = {}) {
|
|
18
|
-
const sessionId = (opciones.session != null && opciones.session !== true)
|
|
19
|
-
? String(opciones.session)
|
|
20
|
-
: (process.env.CLAUDE_SESSION_ID || 'default');
|
|
21
|
-
|
|
22
|
-
const metricas = getMetrics(sessionId);
|
|
23
|
-
const advertencias = diagnosticar(metricas);
|
|
24
|
-
|
|
25
|
-
if (opciones.json) {
|
|
26
|
-
console.log(JSON.stringify({ metricas, advertencias }, null, 2));
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
console.log(formatearResumen(metricas));
|
|
31
|
-
if (advertencias.length > 0) {
|
|
32
|
-
console.log('\n⚠ Diagnóstico:');
|
|
33
|
-
for (const a of advertencias) console.log(' - ' + a);
|
|
34
|
-
} else {
|
|
35
|
-
console.log('\n✓ Guardrails sin anomalías detectadas.');
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
module.exports = guardrailMetrics;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI `swl-ses guardrail-metrics` — métricas y diagnóstico de los
|
|
5
|
+
* guardrails de la sesión (bridge en tmpdir por sessionId). Reemplaza el
|
|
6
|
+
* `node -e "require('./hooks/lib/guardrail-metrics')..."` relativo al
|
|
7
|
+
* proyecto que swl-dashboard instruía — roto downstream (ver
|
|
8
|
+
* docs/invocacion-cli-cross-scope.md).
|
|
9
|
+
*
|
|
10
|
+
* Uso: swl-ses guardrail-metrics [--session=ID] [--json]
|
|
11
|
+
* --session default: env CLAUDE_SESSION_ID o "default"
|
|
12
|
+
* --json imprime {metricas, advertencias} crudo
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const { getMetrics, formatearResumen, diagnosticar } = require('../../hooks/lib/guardrail-metrics');
|
|
16
|
+
|
|
17
|
+
function guardrailMetrics(opciones = {}) {
|
|
18
|
+
const sessionId = (opciones.session != null && opciones.session !== true)
|
|
19
|
+
? String(opciones.session)
|
|
20
|
+
: (process.env.CLAUDE_SESSION_ID || 'default');
|
|
21
|
+
|
|
22
|
+
const metricas = getMetrics(sessionId);
|
|
23
|
+
const advertencias = diagnosticar(metricas);
|
|
24
|
+
|
|
25
|
+
if (opciones.json) {
|
|
26
|
+
console.log(JSON.stringify({ metricas, advertencias }, null, 2));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
console.log(formatearResumen(metricas));
|
|
31
|
+
if (advertencias.length > 0) {
|
|
32
|
+
console.log('\n⚠ Diagnóstico:');
|
|
33
|
+
for (const a of advertencias) console.log(' - ' + a);
|
|
34
|
+
} else {
|
|
35
|
+
console.log('\n✓ Guardrails sin anomalías detectadas.');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
module.exports = guardrailMetrics;
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Subcomando `swl-ses liberar-fase` — cierra el gate G0 borrando
|
|
5
|
-
* .planning/locks/fase-activa.json. Lo usa /swl:ejecutar-fase al terminar una
|
|
6
|
-
* fase para que spec-gate.js vuelva a advertir si se reanuda trabajo.
|
|
7
|
-
*
|
|
8
|
-
* Reemplaza el `node -e "...unlinkSync('.planning/locks/fase-activa.json')"`
|
|
9
|
-
* inline (relativo al proyecto). Busca el archivo ascendiendo desde el CWD para
|
|
10
|
-
* funcionar aunque el comando se ejecute desde un subdirectorio.
|
|
11
|
-
*
|
|
12
|
-
* Uso: swl-ses liberar-fase
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
const fs = require('node:fs');
|
|
16
|
-
const path = require('node:path');
|
|
17
|
-
|
|
18
|
-
function liberarFase(opciones = {}) {
|
|
19
|
-
let dir = (opciones && opciones.cwd) || process.cwd();
|
|
20
|
-
let target = null;
|
|
21
|
-
while (dir !== path.dirname(dir)) {
|
|
22
|
-
const cand = path.join(dir, '.planning', 'locks', 'fase-activa.json');
|
|
23
|
-
if (fs.existsSync(cand)) {
|
|
24
|
-
target = cand;
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
dir = path.dirname(dir);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (target) {
|
|
31
|
-
fs.unlinkSync(target);
|
|
32
|
-
console.log(JSON.stringify({ ok: true, liberado: target }));
|
|
33
|
-
} else {
|
|
34
|
-
console.log(
|
|
35
|
-
JSON.stringify({ ok: true, liberado: null, motivo: 'sin fase activa que liberar' })
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
module.exports = liberarFase;
|
|
41
|
-
|
|
42
|
-
if (require.main === module) liberarFase();
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Subcomando `swl-ses liberar-fase` — cierra el gate G0 borrando
|
|
5
|
+
* .planning/locks/fase-activa.json. Lo usa /swl:ejecutar-fase al terminar una
|
|
6
|
+
* fase para que spec-gate.js vuelva a advertir si se reanuda trabajo.
|
|
7
|
+
*
|
|
8
|
+
* Reemplaza el `node -e "...unlinkSync('.planning/locks/fase-activa.json')"`
|
|
9
|
+
* inline (relativo al proyecto). Busca el archivo ascendiendo desde el CWD para
|
|
10
|
+
* funcionar aunque el comando se ejecute desde un subdirectorio.
|
|
11
|
+
*
|
|
12
|
+
* Uso: swl-ses liberar-fase
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const fs = require('node:fs');
|
|
16
|
+
const path = require('node:path');
|
|
17
|
+
|
|
18
|
+
function liberarFase(opciones = {}) {
|
|
19
|
+
let dir = (opciones && opciones.cwd) || process.cwd();
|
|
20
|
+
let target = null;
|
|
21
|
+
while (dir !== path.dirname(dir)) {
|
|
22
|
+
const cand = path.join(dir, '.planning', 'locks', 'fase-activa.json');
|
|
23
|
+
if (fs.existsSync(cand)) {
|
|
24
|
+
target = cand;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
dir = path.dirname(dir);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (target) {
|
|
31
|
+
fs.unlinkSync(target);
|
|
32
|
+
console.log(JSON.stringify({ ok: true, liberado: target }));
|
|
33
|
+
} else {
|
|
34
|
+
console.log(
|
|
35
|
+
JSON.stringify({ ok: true, liberado: null, motivo: 'sin fase activa que liberar' })
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = liberarFase;
|
|
41
|
+
|
|
42
|
+
if (require.main === module) liberarFase();
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI `swl-ses mark-evolved` — marca un componente SWL como evolucionado
|
|
5
|
-
* (frontmatter evolved: true + metadatos). Reemplaza el inline
|
|
6
|
-
* `require('./hooks/lib/evolution-tracker')` relativo al proyecto (roto
|
|
7
|
-
* downstream; ver docs/invocacion-cli-cross-scope.md).
|
|
8
|
-
*
|
|
9
|
-
* Uso: swl-ses mark-evolved <ruta> [--from=VER] [--by=aprender]
|
|
10
|
-
* [--note="..."] [--rounds=N] [--score="A% → B%"]
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
const path = require('node:path');
|
|
14
|
-
const { markAsEvolved } = require('../../hooks/lib/evolution-tracker');
|
|
15
|
-
|
|
16
|
-
function markEvolved(opciones = {}) {
|
|
17
|
-
const ruta = (opciones._args && opciones._args[0]) || opciones.ruta;
|
|
18
|
-
if (!ruta) {
|
|
19
|
-
console.error('Error: falta <ruta> del archivo a marcar');
|
|
20
|
-
process.exitCode = 1;
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
// Guard anti path-traversal: la ruta debe resolver dentro del proyecto actual
|
|
24
|
-
// y ser un componente del sistema (.md/.json). Evita sobrescribir archivos
|
|
25
|
-
// arbitrarios con frontmatter si el flag se sintetiza desde input no confiable.
|
|
26
|
-
const cwd = process.cwd();
|
|
27
|
-
const resuelta = path.resolve(cwd, ruta);
|
|
28
|
-
if (resuelta !== cwd && !resuelta.startsWith(cwd + path.sep)) {
|
|
29
|
-
console.error('Error: la ruta debe estar dentro del proyecto actual');
|
|
30
|
-
process.exitCode = 1;
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if (!/\.(md|json)$/i.test(resuelta)) {
|
|
34
|
-
console.error('Error: solo se pueden marcar componentes .md o .json');
|
|
35
|
-
process.exitCode = 1;
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
let from = opciones.from;
|
|
39
|
-
if (!from) {
|
|
40
|
-
try {
|
|
41
|
-
from = require(path.resolve(process.cwd(), 'package.json')).version;
|
|
42
|
-
} catch {
|
|
43
|
-
from = undefined;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
const meta = { from, by: opciones.by || 'aprender' };
|
|
47
|
-
if (opciones.note) meta.note = opciones.note;
|
|
48
|
-
if (opciones.rounds) meta.rounds = Number(opciones.rounds);
|
|
49
|
-
if (opciones.score) meta.score = opciones.score;
|
|
50
|
-
|
|
51
|
-
const r = markAsEvolved(ruta, meta);
|
|
52
|
-
console.log(r.marked ? 'Marcado como evolucionado' : 'Error: ' + r.error);
|
|
53
|
-
if (!r.marked) process.exitCode = 1;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
module.exports = markEvolved;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI `swl-ses mark-evolved` — marca un componente SWL como evolucionado
|
|
5
|
+
* (frontmatter evolved: true + metadatos). Reemplaza el inline
|
|
6
|
+
* `require('./hooks/lib/evolution-tracker')` relativo al proyecto (roto
|
|
7
|
+
* downstream; ver docs/invocacion-cli-cross-scope.md).
|
|
8
|
+
*
|
|
9
|
+
* Uso: swl-ses mark-evolved <ruta> [--from=VER] [--by=aprender]
|
|
10
|
+
* [--note="..."] [--rounds=N] [--score="A% → B%"]
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const path = require('node:path');
|
|
14
|
+
const { markAsEvolved } = require('../../hooks/lib/evolution-tracker');
|
|
15
|
+
|
|
16
|
+
function markEvolved(opciones = {}) {
|
|
17
|
+
const ruta = (opciones._args && opciones._args[0]) || opciones.ruta;
|
|
18
|
+
if (!ruta) {
|
|
19
|
+
console.error('Error: falta <ruta> del archivo a marcar');
|
|
20
|
+
process.exitCode = 1;
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// Guard anti path-traversal: la ruta debe resolver dentro del proyecto actual
|
|
24
|
+
// y ser un componente del sistema (.md/.json). Evita sobrescribir archivos
|
|
25
|
+
// arbitrarios con frontmatter si el flag se sintetiza desde input no confiable.
|
|
26
|
+
const cwd = process.cwd();
|
|
27
|
+
const resuelta = path.resolve(cwd, ruta);
|
|
28
|
+
if (resuelta !== cwd && !resuelta.startsWith(cwd + path.sep)) {
|
|
29
|
+
console.error('Error: la ruta debe estar dentro del proyecto actual');
|
|
30
|
+
process.exitCode = 1;
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (!/\.(md|json)$/i.test(resuelta)) {
|
|
34
|
+
console.error('Error: solo se pueden marcar componentes .md o .json');
|
|
35
|
+
process.exitCode = 1;
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
let from = opciones.from;
|
|
39
|
+
if (!from) {
|
|
40
|
+
try {
|
|
41
|
+
from = require(path.resolve(process.cwd(), 'package.json')).version;
|
|
42
|
+
} catch {
|
|
43
|
+
from = undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const meta = { from, by: opciones.by || 'aprender' };
|
|
47
|
+
if (opciones.note) meta.note = opciones.note;
|
|
48
|
+
if (opciones.rounds) meta.rounds = Number(opciones.rounds);
|
|
49
|
+
if (opciones.score) meta.score = opciones.score;
|
|
50
|
+
|
|
51
|
+
const r = markAsEvolved(ruta, meta);
|
|
52
|
+
console.log(r.marked ? 'Marcado como evolucionado' : 'Error: ' + r.error);
|
|
53
|
+
if (!r.marked) process.exitCode = 1;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
module.exports = markEvolved;
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI `swl-ses memoria-search <op>` — búsqueda en la memoria del
|
|
5
|
-
* proyecto (.planning/sessions/, APRENDIZAJES.md, diary). Reemplaza los
|
|
6
|
-
* `require('./hooks/lib/memory-search')` relativos al proyecto que
|
|
7
|
-
* memoria-busqueda y benchmark-memoria instruían — rotos downstream (ver
|
|
8
|
-
* docs/invocacion-cli-cross-scope.md).
|
|
9
|
-
*
|
|
10
|
-
* Ops:
|
|
11
|
-
* search --query="..." [--limit=N] [--tipo=aprendizaje|sesion|instinto]
|
|
12
|
-
* [--desde=YYYY-MM-DD] [--hasta=YYYY-MM-DD] (default)
|
|
13
|
-
* timeline --ids=id1,id2,...
|
|
14
|
-
* fetch --id=<id>
|
|
15
|
-
*
|
|
16
|
-
* Salida: JSON a stdout. La base es la RAÍZ del proyecto (raizProyecto),
|
|
17
|
-
* no el cwd crudo — misma semántica que los hooks (DT-HOOKS-RAIZ-GIT).
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
const ms = require('../../hooks/lib/memory-search');
|
|
21
|
-
const { raizProyecto } = require('../../hooks/lib/raiz-proyecto');
|
|
22
|
-
|
|
23
|
-
function memoriaSearch(opciones = {}) {
|
|
24
|
-
const op = (opciones._args && opciones._args[0]) || 'search';
|
|
25
|
-
const base = raizProyecto(process.cwd());
|
|
26
|
-
|
|
27
|
-
if (op === 'search') {
|
|
28
|
-
const query = opciones.query != null && opciones.query !== true ? String(opciones.query) : '';
|
|
29
|
-
if (!query) {
|
|
30
|
-
console.error('Error: falta --query="<términos>"');
|
|
31
|
-
process.exitCode = 1;
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const filtros = {};
|
|
35
|
-
const limit = parseInt(opciones.limit, 10);
|
|
36
|
-
if (!isNaN(limit) && limit > 0) filtros.limit = limit;
|
|
37
|
-
if (opciones.tipo != null && opciones.tipo !== true) filtros.tipo = String(opciones.tipo);
|
|
38
|
-
if (opciones.desde != null && opciones.desde !== true) filtros.fecha_desde = String(opciones.desde);
|
|
39
|
-
if (opciones.hasta != null && opciones.hasta !== true) filtros.fecha_hasta = String(opciones.hasta);
|
|
40
|
-
console.log(JSON.stringify(ms.search(base, query, filtros), null, 2));
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (op === 'timeline') {
|
|
45
|
-
const ids = String(opciones.ids || '').split(',').map(s => s.trim()).filter(Boolean);
|
|
46
|
-
if (ids.length === 0) {
|
|
47
|
-
console.error('Error: falta --ids=id1,id2,...');
|
|
48
|
-
process.exitCode = 1;
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
console.log(JSON.stringify(ms.timeline(base, ids), null, 2));
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (op === 'fetch') {
|
|
56
|
-
if (opciones.id == null || opciones.id === true) {
|
|
57
|
-
console.error('Error: falta --id=<id>');
|
|
58
|
-
process.exitCode = 1;
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
console.log(JSON.stringify(ms.fetch(base, String(opciones.id)), null, 2));
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
console.error(`Error: op desconocida "${op}" (usa search|timeline|fetch)`);
|
|
66
|
-
process.exitCode = 1;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
module.exports = memoriaSearch;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI `swl-ses memoria-search <op>` — búsqueda en la memoria del
|
|
5
|
+
* proyecto (.planning/sessions/, APRENDIZAJES.md, diary). Reemplaza los
|
|
6
|
+
* `require('./hooks/lib/memory-search')` relativos al proyecto que
|
|
7
|
+
* memoria-busqueda y benchmark-memoria instruían — rotos downstream (ver
|
|
8
|
+
* docs/invocacion-cli-cross-scope.md).
|
|
9
|
+
*
|
|
10
|
+
* Ops:
|
|
11
|
+
* search --query="..." [--limit=N] [--tipo=aprendizaje|sesion|instinto]
|
|
12
|
+
* [--desde=YYYY-MM-DD] [--hasta=YYYY-MM-DD] (default)
|
|
13
|
+
* timeline --ids=id1,id2,...
|
|
14
|
+
* fetch --id=<id>
|
|
15
|
+
*
|
|
16
|
+
* Salida: JSON a stdout. La base es la RAÍZ del proyecto (raizProyecto),
|
|
17
|
+
* no el cwd crudo — misma semántica que los hooks (DT-HOOKS-RAIZ-GIT).
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
const ms = require('../../hooks/lib/memory-search');
|
|
21
|
+
const { raizProyecto } = require('../../hooks/lib/raiz-proyecto');
|
|
22
|
+
|
|
23
|
+
function memoriaSearch(opciones = {}) {
|
|
24
|
+
const op = (opciones._args && opciones._args[0]) || 'search';
|
|
25
|
+
const base = raizProyecto(process.cwd());
|
|
26
|
+
|
|
27
|
+
if (op === 'search') {
|
|
28
|
+
const query = opciones.query != null && opciones.query !== true ? String(opciones.query) : '';
|
|
29
|
+
if (!query) {
|
|
30
|
+
console.error('Error: falta --query="<términos>"');
|
|
31
|
+
process.exitCode = 1;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const filtros = {};
|
|
35
|
+
const limit = parseInt(opciones.limit, 10);
|
|
36
|
+
if (!isNaN(limit) && limit > 0) filtros.limit = limit;
|
|
37
|
+
if (opciones.tipo != null && opciones.tipo !== true) filtros.tipo = String(opciones.tipo);
|
|
38
|
+
if (opciones.desde != null && opciones.desde !== true) filtros.fecha_desde = String(opciones.desde);
|
|
39
|
+
if (opciones.hasta != null && opciones.hasta !== true) filtros.fecha_hasta = String(opciones.hasta);
|
|
40
|
+
console.log(JSON.stringify(ms.search(base, query, filtros), null, 2));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (op === 'timeline') {
|
|
45
|
+
const ids = String(opciones.ids || '').split(',').map(s => s.trim()).filter(Boolean);
|
|
46
|
+
if (ids.length === 0) {
|
|
47
|
+
console.error('Error: falta --ids=id1,id2,...');
|
|
48
|
+
process.exitCode = 1;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
console.log(JSON.stringify(ms.timeline(base, ids), null, 2));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (op === 'fetch') {
|
|
56
|
+
if (opciones.id == null || opciones.id === true) {
|
|
57
|
+
console.error('Error: falta --id=<id>');
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
console.log(JSON.stringify(ms.fetch(base, String(opciones.id)), null, 2));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
console.error(`Error: op desconocida "${op}" (usa search|timeline|fetch)`);
|
|
66
|
+
process.exitCode = 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
module.exports = memoriaSearch;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper CLI `swl-ses metricas-dora` — calcula métricas DORA del repo actual.
|
|
5
|
-
* Reemplaza `node scripts/lib/metricas-dora.js` relativo al proyecto (roto
|
|
6
|
-
* downstream; ver docs/invocacion-cli-cross-scope.md).
|
|
7
|
-
*
|
|
8
|
-
* Uso: swl-ses metricas-dora [--json] [--dias=N]
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
const { calcularDora, persistir } = require('../lib/metricas-dora');
|
|
12
|
-
|
|
13
|
-
function metricasDora(opciones = {}) {
|
|
14
|
-
const dias = Number(opciones.dias);
|
|
15
|
-
const ventanaDias = Math.max(1, Math.min(365, Number.isFinite(dias) && dias > 0 ? dias : 30));
|
|
16
|
-
const baseDir = process.cwd();
|
|
17
|
-
const dora = calcularDora(baseDir, { ventanaDias });
|
|
18
|
-
try {
|
|
19
|
-
persistir(baseDir, dora);
|
|
20
|
-
} catch {
|
|
21
|
-
/* persistencia best-effort: no romper el informe si el disco falla */
|
|
22
|
-
}
|
|
23
|
-
console.log(JSON.stringify(dora, null, 2));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
module.exports = metricasDora;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper CLI `swl-ses metricas-dora` — calcula métricas DORA del repo actual.
|
|
5
|
+
* Reemplaza `node scripts/lib/metricas-dora.js` relativo al proyecto (roto
|
|
6
|
+
* downstream; ver docs/invocacion-cli-cross-scope.md).
|
|
7
|
+
*
|
|
8
|
+
* Uso: swl-ses metricas-dora [--json] [--dias=N]
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const { calcularDora, persistir } = require('../lib/metricas-dora');
|
|
12
|
+
|
|
13
|
+
function metricasDora(opciones = {}) {
|
|
14
|
+
const dias = Number(opciones.dias);
|
|
15
|
+
const ventanaDias = Math.max(1, Math.min(365, Number.isFinite(dias) && dias > 0 ? dias : 30));
|
|
16
|
+
const baseDir = process.cwd();
|
|
17
|
+
const dora = calcularDora(baseDir, { ventanaDias });
|
|
18
|
+
try {
|
|
19
|
+
persistir(baseDir, dora);
|
|
20
|
+
} catch {
|
|
21
|
+
/* persistencia best-effort: no romper el informe si el disco falla */
|
|
22
|
+
}
|
|
23
|
+
console.log(JSON.stringify(dora, null, 2));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = metricasDora;
|