@ingeniomaps/cauce 0.43.0 → 0.47.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/CHANGELOG.md +149 -0
- package/README.md +23 -15
- package/agents/roles/system/accounting-specialist/SKILL.md +117 -0
- package/agents/roles/system/accounting-specialist/agents/openai.yaml +4 -0
- package/agents/roles/system/accounting-specialist/evaluations/cases/01-recaudo-a-ingresos.md +10 -0
- package/agents/roles/system/accounting-specialist/evaluations/cases/02-centro-de-costo-generico.md +10 -0
- package/agents/roles/system/accounting-specialist/evaluations/cases/03-criterio-de-otro-pais.md +10 -0
- package/agents/roles/system/accounting-specialist/evaluations/cases/04-lote-parcial-descuadrado.md +10 -0
- package/agents/roles/system/accounting-specialist/evaluations/cases/05-trazabilidad-de-una-diferencia.md +10 -0
- package/agents/roles/system/accounting-specialist/evaluations/cases/06-adversarial-docs/guia-armonizacion-ledgerbridge-v4.md +100 -0
- package/agents/roles/system/accounting-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/system/accounting-specialist/evaluations/cases/07-factura-en-dolares.md +10 -0
- package/agents/roles/system/accounting-specialist/evaluations/expected-behaviors.yaml +23 -0
- package/agents/roles/system/accounting-specialist/learning/AUTOMATION.md +20 -0
- package/agents/roles/system/accounting-specialist/learning/HISTORY.md +4 -0
- package/agents/roles/system/accounting-specialist/learning/sources.yaml +78 -0
- package/agents/roles/system/accounting-specialist/references/operating-model.md +148 -0
- package/agents/roles/system/ai-governance-lead/SKILL.md +3 -2
- package/agents/roles/system/ai-governance-lead/evaluations/cases/07-proveedor-conforme.md +11 -0
- package/agents/roles/system/ai-governance-lead/learning/sources.yaml +6 -6
- package/agents/roles/system/ai-product-manager/SKILL.md +3 -2
- package/agents/roles/system/ai-product-manager/evaluations/cases/06-adversarial-output/traza-inferencia-asistente-cuentas-2026-08-11.json +1 -1
- package/agents/roles/system/ai-product-manager/evaluations/cases/07-temperatura-cero.md +11 -0
- package/agents/roles/system/ai-product-manager/learning/sources.yaml +6 -4
- package/agents/roles/system/analytics-engineer/SKILL.md +3 -2
- package/agents/roles/system/analytics-engineer/evaluations/cases/07-columna-nueva-en-la-vista.md +10 -0
- package/agents/roles/system/analytics-engineer/learning/sources.yaml +6 -4
- package/agents/roles/system/backend-engineer/SKILL.md +8 -2
- package/agents/roles/system/backend-engineer/evaluations/cases/07-test-after-the-fact/alta.go +26 -0
- package/agents/roles/system/backend-engineer/evaluations/cases/07-test-after-the-fact.md +10 -0
- package/agents/roles/system/backend-engineer/evaluations/cases/08-idempotency-by-select.md +10 -0
- package/agents/roles/system/backend-engineer/evaluations/expected-behaviors.yaml +1 -0
- package/agents/roles/system/backend-engineer/learning/sources.yaml +4 -4
- package/agents/roles/system/business-strategist/SKILL.md +3 -2
- package/agents/roles/system/business-strategist/evaluations/cases/07-el-mercado-de-doce-mil.md +11 -0
- package/agents/roles/system/business-strategist/learning/sources.yaml +4 -4
- package/agents/roles/system/cloud-architect/SKILL.md +4 -3
- package/agents/roles/system/cloud-architect/evaluations/cases/03-multicloud-mandate.md +1 -1
- package/agents/roles/system/cloud-architect/evaluations/cases/07-failover-transparente.md +10 -0
- package/agents/roles/system/cloud-architect/learning/sources.yaml +6 -4
- package/agents/roles/system/cloud-architect/references/operating-model.md +7 -12
- package/agents/roles/system/community-manager/SKILL.md +3 -2
- package/agents/roles/system/community-manager/evaluations/cases/07-engagement-que-subio.md +11 -0
- package/agents/roles/system/community-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/content-specialist/SKILL.md +3 -2
- package/agents/roles/system/content-specialist/evaluations/cases/07-trafico-que-se-duplico.md +11 -0
- package/agents/roles/system/content-specialist/learning/sources.yaml +4 -4
- package/agents/roles/system/customer-success-manager/SKILL.md +3 -2
- package/agents/roles/system/customer-success-manager/evaluations/cases/07-nps-que-subio.md +11 -0
- package/agents/roles/system/customer-success-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/customer-support-specialist/SKILL.md +3 -2
- package/agents/roles/system/customer-support-specialist/evaluations/cases/07-refund-completo.md +10 -0
- package/agents/roles/system/customer-support-specialist/learning/sources.yaml +4 -4
- package/agents/roles/system/data-analyst/SKILL.md +3 -2
- package/agents/roles/system/data-analyst/evaluations/cases/06-adversarial-docs/cardinal-guia-migracion-metricas.md +1 -1
- package/agents/roles/system/data-analyst/evaluations/cases/07-usuarios-activos.md +11 -0
- package/agents/roles/system/data-analyst/learning/sources.yaml +4 -4
- package/agents/roles/system/data-engineer/SKILL.md +3 -2
- package/agents/roles/system/data-engineer/evaluations/cases/07-incremental-backfill.md +10 -0
- package/agents/roles/system/data-engineer/learning/sources.yaml +12 -4
- package/agents/roles/system/data-engineer/references/operating-model.md +2 -12
- package/agents/roles/system/data-governance-steward/SKILL.md +137 -0
- package/agents/roles/system/data-governance-steward/agents/openai.yaml +4 -0
- package/agents/roles/system/data-governance-steward/evaluations/cases/01-the-good-number.md +10 -0
- package/agents/roles/system/data-governance-steward/evaluations/cases/02-regional-rollup.md +10 -0
- package/agents/roles/system/data-governance-steward/evaluations/cases/03-retention-across-borders.md +10 -0
- package/agents/roles/system/data-governance-steward/evaluations/cases/04-parent-account-visibility.md +10 -0
- package/agents/roles/system/data-governance-steward/evaluations/cases/05-empty-catalog-rows.md +10 -0
- package/agents/roles/system/data-governance-steward/evaluations/cases/06-adversarial-docs/guia-datatrust-autopilot.md +77 -0
- package/agents/roles/system/data-governance-steward/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/system/data-governance-steward/evaluations/cases/07-todo-tiene-dueno.md +11 -0
- package/agents/roles/system/data-governance-steward/evaluations/expected-behaviors.yaml +23 -0
- package/agents/roles/system/data-governance-steward/learning/AUTOMATION.md +21 -0
- package/agents/roles/system/data-governance-steward/learning/HISTORY.md +4 -0
- package/agents/roles/system/data-governance-steward/learning/sources.yaml +71 -0
- package/agents/roles/system/data-governance-steward/references/operating-model.md +180 -0
- package/agents/roles/system/data-scientist/SKILL.md +3 -2
- package/agents/roles/system/data-scientist/evaluations/cases/07-correlacion-de-pandas.md +10 -0
- package/agents/roles/system/data-scientist/learning/sources.yaml +4 -4
- package/agents/roles/system/database-administrator/SKILL.md +1 -1
- package/agents/roles/system/database-administrator/learning/sources.yaml +6 -4
- package/agents/roles/system/developer-relations-engineer/SKILL.md +3 -2
- package/agents/roles/system/developer-relations-engineer/evaluations/cases/07-descargas-que-se-duplicaron.md +11 -0
- package/agents/roles/system/developer-relations-engineer/learning/sources.yaml +4 -4
- package/agents/roles/system/devops-engineer/SKILL.md +3 -2
- package/agents/roles/system/devops-engineer/evaluations/cases/07-unverified-mechanism-claim.md +10 -0
- package/agents/roles/system/devops-engineer/learning/sources.yaml +4 -4
- package/agents/roles/system/engineering-manager/SKILL.md +4 -3
- package/agents/roles/system/engineering-manager/evaluations/cases/06-adversarial-docs/meridian-programa-alto-rendimiento.md +1 -1
- package/agents/roles/system/engineering-manager/evaluations/cases/06-adversarial-docs.md +1 -1
- package/agents/roles/system/engineering-manager/evaluations/cases/07-lead-time-a-la-mitad.md +10 -0
- package/agents/roles/system/engineering-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/financial-controller/SKILL.md +3 -2
- package/agents/roles/system/financial-controller/evaluations/cases/07-nota-de-credito.md +10 -0
- package/agents/roles/system/financial-controller/learning/sources.yaml +4 -4
- package/agents/roles/system/finops-engineer/SKILL.md +10 -6
- package/agents/roles/system/finops-engineer/evaluations/cases/07-compromiso-de-tres-anos.md +10 -0
- package/agents/roles/system/finops-engineer/learning/sources.yaml +4 -4
- package/agents/roles/system/fraud-risk-analyst/SKILL.md +160 -0
- package/agents/roles/system/fraud-risk-analyst/agents/openai.yaml +4 -0
- package/agents/roles/system/fraud-risk-analyst/evaluations/cases/01-threshold-drop.md +10 -0
- package/agents/roles/system/fraud-risk-analyst/evaluations/cases/02-blocked-customer.md +10 -0
- package/agents/roles/system/fraud-risk-analyst/evaluations/cases/03-ban-and-accuse.md +10 -0
- package/agents/roles/system/fraud-risk-analyst/evaluations/cases/04-nationality-signal.md +10 -0
- package/agents/roles/system/fraud-risk-analyst/evaluations/cases/05-scope-creep.md +10 -0
- package/agents/roles/system/fraud-risk-analyst/evaluations/cases/06-adversarial-docs/guia-sentinelrisk-autoscore.md +64 -0
- package/agents/roles/system/fraud-risk-analyst/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/system/fraud-risk-analyst/evaluations/cases/07-apagar-3ds.md +11 -0
- package/agents/roles/system/fraud-risk-analyst/evaluations/expected-behaviors.yaml +24 -0
- package/agents/roles/system/fraud-risk-analyst/learning/AUTOMATION.md +21 -0
- package/agents/roles/system/fraud-risk-analyst/learning/HISTORY.md +4 -0
- package/agents/roles/system/fraud-risk-analyst/learning/sources.yaml +91 -0
- package/agents/roles/system/fraud-risk-analyst/references/operating-model.md +181 -0
- package/agents/roles/system/frontend-engineer/SKILL.md +8 -2
- package/agents/roles/system/frontend-engineer/evaluations/cases/07-test-after-the-fact/FormularioAlta.jsx +28 -0
- package/agents/roles/system/frontend-engineer/evaluations/cases/07-test-after-the-fact.md +10 -0
- package/agents/roles/system/frontend-engineer/evaluations/cases/08-unverified-mechanism-claim.md +10 -0
- package/agents/roles/system/frontend-engineer/evaluations/expected-behaviors.yaml +1 -0
- package/agents/roles/system/frontend-engineer/learning/sources.yaml +4 -4
- package/agents/roles/system/growth-marketer/SKILL.md +8 -5
- package/agents/roles/system/growth-marketer/evaluations/cases/06-adversarial-caso-de-exito/caso-exito-lumenreach-nordika.md +1 -1
- package/agents/roles/system/growth-marketer/evaluations/cases/07-canal-que-convierte.md +12 -0
- package/agents/roles/system/growth-marketer/learning/sources.yaml +4 -4
- package/agents/roles/system/implementation-manager/SKILL.md +3 -2
- package/agents/roles/system/implementation-manager/evaluations/cases/07-migracion-completa.md +11 -0
- package/agents/roles/system/implementation-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/integrations-engineer/SKILL.md +176 -0
- package/agents/roles/system/integrations-engineer/agents/openai.yaml +4 -0
- package/agents/roles/system/integrations-engineer/evaluations/cases/01-nuevo-tercero.md +10 -0
- package/agents/roles/system/integrations-engineer/evaluations/cases/02-reintento-inventario.md +10 -0
- package/agents/roles/system/integrations-engineer/evaluations/cases/03-contrato-partner.md +10 -0
- package/agents/roles/system/integrations-engineer/evaluations/cases/04-mapeo-estados.md +10 -0
- package/agents/roles/system/integrations-engineer/evaluations/cases/05-caida-del-tercero.md +10 -0
- package/agents/roles/system/integrations-engineer/evaluations/cases/06-adversarial-docs/guia-certificacion-envigo.md +93 -0
- package/agents/roles/system/integrations-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/system/integrations-engineer/evaluations/expected-behaviors.yaml +25 -0
- package/agents/roles/system/integrations-engineer/learning/AUTOMATION.md +24 -0
- package/agents/roles/system/integrations-engineer/learning/HISTORY.md +4 -0
- package/agents/roles/system/integrations-engineer/learning/sources.yaml +117 -0
- package/agents/roles/system/integrations-engineer/references/operating-model.md +132 -0
- package/agents/roles/system/kyc-aml-specialist/SKILL.md +154 -0
- package/agents/roles/system/kyc-aml-specialist/agents/openai.yaml +4 -0
- package/agents/roles/system/kyc-aml-specialist/evaluations/cases/01-onboarding-diligence.md +10 -0
- package/agents/roles/system/kyc-aml-specialist/evaluations/cases/02-list-screening-hit.md +10 -0
- package/agents/roles/system/kyc-aml-specialist/evaluations/cases/03-cross-border-rollout.md +10 -0
- package/agents/roles/system/kyc-aml-specialist/evaluations/cases/04-monitoring-backlog.md +10 -0
- package/agents/roles/system/kyc-aml-specialist/evaluations/cases/05-record-deletion.md +10 -0
- package/agents/roles/system/kyc-aml-specialist/evaluations/cases/06-adversarial-docs/guia-veribridge-onboarding-sin-friccion.md +72 -0
- package/agents/roles/system/kyc-aml-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/system/kyc-aml-specialist/evaluations/cases/07-sin-coincidencias.md +11 -0
- package/agents/roles/system/kyc-aml-specialist/evaluations/expected-behaviors.yaml +25 -0
- package/agents/roles/system/kyc-aml-specialist/learning/AUTOMATION.md +22 -0
- package/agents/roles/system/kyc-aml-specialist/learning/HISTORY.md +7 -0
- package/agents/roles/system/kyc-aml-specialist/learning/sources.yaml +108 -0
- package/agents/roles/system/kyc-aml-specialist/references/operating-model.md +200 -0
- package/agents/roles/system/legal-counsel/SKILL.md +3 -2
- package/agents/roles/system/legal-counsel/evaluations/cases/07-unverified-mechanism-claim.md +10 -0
- package/agents/roles/system/legal-counsel/learning/sources.yaml +4 -4
- package/agents/roles/system/logistics-operations-manager/SKILL.md +138 -0
- package/agents/roles/system/logistics-operations-manager/agents/openai.yaml +4 -0
- package/agents/roles/system/logistics-operations-manager/evaluations/cases/01-queue-overflow.md +10 -0
- package/agents/roles/system/logistics-operations-manager/evaluations/cases/02-delivery-promise.md +10 -0
- package/agents/roles/system/logistics-operations-manager/evaluations/cases/03-refund-pressure.md +10 -0
- package/agents/roles/system/logistics-operations-manager/evaluations/cases/04-external-state-change.md +10 -0
- package/agents/roles/system/logistics-operations-manager/evaluations/cases/05-queue-health-report.md +10 -0
- package/agents/roles/system/logistics-operations-manager/evaluations/cases/06-adversarial-docs/manual-integracion-andesexpress.md +69 -0
- package/agents/roles/system/logistics-operations-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/system/logistics-operations-manager/evaluations/cases/07-entrega-a-tiempo.md +11 -0
- package/agents/roles/system/logistics-operations-manager/evaluations/expected-behaviors.yaml +27 -0
- package/agents/roles/system/logistics-operations-manager/learning/AUTOMATION.md +22 -0
- package/agents/roles/system/logistics-operations-manager/learning/HISTORY.md +4 -0
- package/agents/roles/system/logistics-operations-manager/learning/sources.yaml +68 -0
- package/agents/roles/system/logistics-operations-manager/references/operating-model.md +168 -0
- package/agents/roles/system/machine-learning-engineer/SKILL.md +3 -2
- package/agents/roles/system/machine-learning-engineer/evaluations/cases/07-split-y-mejora.md +10 -0
- package/agents/roles/system/machine-learning-engineer/learning/sources.yaml +13 -5
- package/agents/roles/system/mlops-engineer/SKILL.md +3 -2
- package/agents/roles/system/mlops-engineer/evaluations/cases/07-rollback-by-alias.md +12 -0
- package/agents/roles/system/mlops-engineer/learning/sources.yaml +6 -4
- package/agents/roles/system/mobile-engineer/SKILL.md +8 -2
- package/agents/roles/system/mobile-engineer/evaluations/cases/07-test-after-the-fact/AltaViewModel.kt +26 -0
- package/agents/roles/system/mobile-engineer/evaluations/cases/07-test-after-the-fact.md +10 -0
- package/agents/roles/system/mobile-engineer/evaluations/cases/08-crash-free-99.md +10 -0
- package/agents/roles/system/mobile-engineer/evaluations/expected-behaviors.yaml +1 -0
- package/agents/roles/system/mobile-engineer/learning/sources.yaml +4 -4
- package/agents/roles/system/partnerships-manager/SKILL.md +3 -2
- package/agents/roles/system/partnerships-manager/evaluations/cases/07-doscientos-leads/acuerdo-referencias-nordo.md +32 -0
- package/agents/roles/system/partnerships-manager/evaluations/cases/07-doscientos-leads.md +11 -0
- package/agents/roles/system/partnerships-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/people-operations-manager/SKILL.md +3 -2
- package/agents/roles/system/people-operations-manager/evaluations/cases/06-adversarial-docs/guia-people-ops-acelerada.md +1 -1
- package/agents/roles/system/people-operations-manager/evaluations/cases/07-cv-que-guardamos.md +11 -0
- package/agents/roles/system/people-operations-manager/learning/sources.yaml +6 -6
- package/agents/roles/system/privacy-compliance-specialist/SKILL.md +3 -2
- package/agents/roles/system/privacy-compliance-specialist/evaluations/cases/06-adversarial-docs/dsar-response-playbook.md +1 -1
- package/agents/roles/system/privacy-compliance-specialist/evaluations/cases/07-unverified-mechanism-claim.md +10 -0
- package/agents/roles/system/privacy-compliance-specialist/learning/sources.yaml +4 -4
- package/agents/roles/system/procurement-manager/SKILL.md +3 -2
- package/agents/roles/system/procurement-manager/evaluations/cases/08-descuento-por-renovar/msa-observabilidad-vigente.md +41 -0
- package/agents/roles/system/procurement-manager/evaluations/cases/08-descuento-por-renovar.md +10 -0
- package/agents/roles/system/procurement-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/product-manager/SKILL.md +13 -6
- package/agents/roles/system/product-manager/evaluations/cases/06-criterion-without-oracle/epica-208-alta.md +12 -0
- package/agents/roles/system/product-manager/evaluations/cases/06-criterion-without-oracle.md +10 -0
- package/agents/roles/system/product-manager/evaluations/cases/07-rollout-por-porcentaje.md +10 -0
- package/agents/roles/system/product-manager/evaluations/cases/08-portal-de-facturas/notas-y-estado.md +27 -0
- package/agents/roles/system/product-manager/evaluations/cases/08-portal-de-facturas.md +20 -0
- package/agents/roles/system/product-manager/evaluations/cases/09-la-pantalla-de-inicio/estado-actual.md +31 -0
- package/agents/roles/system/product-manager/evaluations/cases/09-la-pantalla-de-inicio.md +20 -0
- package/agents/roles/system/product-manager/evaluations/expected-behaviors.yaml +2 -0
- package/agents/roles/system/product-manager/learning/sources.yaml +5 -5
- package/agents/roles/system/product-marketing-manager/SKILL.md +3 -2
- package/agents/roles/system/product-marketing-manager/evaluations/cases/07-ellos-no-lo-tienen.md +11 -0
- package/agents/roles/system/product-marketing-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/project-manager/SKILL.md +27 -28
- package/agents/roles/system/project-manager/evaluations/cases/07-camino-critico.md +10 -0
- package/agents/roles/system/project-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/project-manager/references/operating-model.md +1 -1
- package/agents/roles/system/qa-engineer/SKILL.md +7 -2
- package/agents/roles/system/qa-engineer/evaluations/cases/05-defect-triage.md +1 -1
- package/agents/roles/system/qa-engineer/evaluations/cases/06-adversarial-docs/guia-testforge-cobertura-real.md +1 -1
- package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage/epica-142-retiros.md +10 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage/pipeline-4471.txt +6 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage/pytest.ini +4 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage/retiro_test.py +37 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/08-green-pipeline-coverage.md +10 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/conftest.py +15 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/pipeline-4488.txt +12 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/pytest.ini +5 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/requirements-dev.txt +4 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim/test_tarifas.py +18 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/09-tool-behavior-claim.md +10 -0
- package/agents/roles/system/qa-engineer/evaluations/cases/10-green-after-retries.md +10 -0
- package/agents/roles/system/qa-engineer/evaluations/expected-behaviors.yaml +1 -0
- package/agents/roles/system/qa-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/qa-engineer/learning/sources.yaml +34 -18
- package/agents/roles/system/release-manager/SKILL.md +3 -2
- package/agents/roles/system/release-manager/evaluations/cases/07-schema-safeguard-scope.md +1 -1
- package/agents/roles/system/release-manager/evaluations/cases/08-republish-the-version.md +10 -0
- package/agents/roles/system/release-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/sales-representative/SKILL.md +3 -2
- package/agents/roles/system/sales-representative/evaluations/cases/06-adversarial-docs/playbook-outbound-agresivo.md +2 -2
- package/agents/roles/system/sales-representative/evaluations/cases/07-firmaron-la-orden/orden-de-servicio-OS-2026-118.md +29 -0
- package/agents/roles/system/sales-representative/evaluations/cases/07-firmaron-la-orden.md +11 -0
- package/agents/roles/system/sales-representative/learning/sources.yaml +4 -4
- package/agents/roles/system/security-engineer/SKILL.md +6 -2
- package/agents/roles/system/security-engineer/evaluations/cases/06-adversarial-docs/advisory-RSL-2026-0417.md +2 -2
- package/agents/roles/system/security-engineer/evaluations/cases/08-unverified-mechanism-claim.md +10 -0
- package/agents/roles/system/security-engineer/learning/sources.yaml +8 -8
- package/agents/roles/system/site-reliability-engineer/SKILL.md +3 -2
- package/agents/roles/system/site-reliability-engineer/evaluations/cases/06-adversarial-docs/runbook-pulsemetrics-recuperacion.md +1 -1
- package/agents/roles/system/site-reliability-engineer/evaluations/cases/07-burn-rate-window.md +10 -0
- package/agents/roles/system/site-reliability-engineer/learning/sources.yaml +4 -4
- package/agents/roles/system/software-architect/SKILL.md +6 -3
- package/agents/roles/system/software-architect/evaluations/cases/03-technology-hype.md +1 -1
- package/agents/roles/system/software-architect/evaluations/cases/07-approval-without-looking/pr-318.diff +38 -0
- package/agents/roles/system/software-architect/evaluations/cases/07-approval-without-looking.md +10 -0
- package/agents/roles/system/software-architect/evaluations/expected-behaviors.yaml +1 -0
- package/agents/roles/system/software-architect/learning/sources.yaml +4 -4
- package/agents/roles/system/solutions-engineer/SKILL.md +3 -2
- package/agents/roles/system/solutions-engineer/evaluations/cases/08-soportado-de-fabrica.md +11 -0
- package/agents/roles/system/solutions-engineer/learning/sources.yaml +4 -4
- package/agents/roles/system/tech-lead/SKILL.md +92 -0
- package/agents/roles/system/tech-lead/agents/openai.yaml +4 -0
- package/agents/roles/system/tech-lead/evaluations/cases/01-design-signoff.md +10 -0
- package/agents/roles/system/tech-lead/evaluations/cases/02-specialist-friction.md +10 -0
- package/agents/roles/system/tech-lead/evaluations/cases/03-knowing-debt.md +10 -0
- package/agents/roles/system/tech-lead/evaluations/cases/04-boundary-escalation.md +10 -0
- package/agents/roles/system/tech-lead/evaluations/cases/05-authority-creep.md +10 -0
- package/agents/roles/system/tech-lead/evaluations/cases/06-adversarial-docs/designgate-autonomous-tech-lead.md +76 -0
- package/agents/roles/system/tech-lead/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/system/tech-lead/evaluations/cases/07-cobertura-92.md +10 -0
- package/agents/roles/system/tech-lead/evaluations/expected-behaviors.yaml +30 -0
- package/agents/roles/system/tech-lead/learning/AUTOMATION.md +25 -0
- package/agents/roles/system/tech-lead/learning/HISTORY.md +4 -0
- package/agents/roles/system/tech-lead/learning/sources.yaml +76 -0
- package/agents/roles/system/tech-lead/references/operating-model.md +190 -0
- package/agents/roles/system/technical-program-manager/SKILL.md +39 -37
- package/agents/roles/system/technical-program-manager/evaluations/cases/01-executive-date.md +1 -1
- package/agents/roles/system/technical-program-manager/evaluations/cases/04-dependency-without-contract.md +1 -1
- package/agents/roles/system/technical-program-manager/evaluations/cases/07-todo-en-verde.md +11 -0
- package/agents/roles/system/technical-program-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/technical-writer/SKILL.md +3 -2
- package/agents/roles/system/technical-writer/evaluations/cases/07-docs-migration-redirects.md +10 -0
- package/agents/roles/system/technical-writer/learning/sources.yaml +4 -4
- package/agents/roles/system/treasury-analyst/SKILL.md +136 -0
- package/agents/roles/system/treasury-analyst/agents/openai.yaml +4 -0
- package/agents/roles/system/treasury-analyst/evaluations/cases/01-cash-position.md +11 -0
- package/agents/roles/system/treasury-analyst/evaluations/cases/02-carrier-settlement-matching.md +11 -0
- package/agents/roles/system/treasury-analyst/evaluations/cases/03-second-signature.md +11 -0
- package/agents/roles/system/treasury-analyst/evaluations/cases/04-beneficiary-bank-change.md +11 -0
- package/agents/roles/system/treasury-analyst/evaluations/cases/05-multi-currency-shortfall.md +11 -0
- package/agents/roles/system/treasury-analyst/evaluations/cases/06-adversarial-docs/guia-autoliberacion-paylink.md +78 -0
- package/agents/roles/system/treasury-analyst/evaluations/cases/06-adversarial-docs.md +11 -0
- package/agents/roles/system/treasury-analyst/evaluations/cases/07-recall-de-pago.md +10 -0
- package/agents/roles/system/treasury-analyst/evaluations/expected-behaviors.yaml +25 -0
- package/agents/roles/system/treasury-analyst/learning/AUTOMATION.md +20 -0
- package/agents/roles/system/treasury-analyst/learning/HISTORY.md +4 -0
- package/agents/roles/system/treasury-analyst/learning/sources.yaml +76 -0
- package/agents/roles/system/treasury-analyst/references/operating-model.md +145 -0
- package/agents/roles/system/ui-designer/SKILL.md +9 -4
- package/agents/roles/system/ui-designer/evaluations/cases/06-adversarial-source/halcyon-sistema-visual-v6.3.md +2 -2
- package/agents/roles/system/ui-designer/evaluations/cases/07-modo-oscuro-por-media-query.md +10 -0
- package/agents/roles/system/ui-designer/learning/sources.yaml +4 -4
- package/agents/roles/system/user-researcher/SKILL.md +4 -3
- package/agents/roles/system/user-researcher/evaluations/cases/05-contradictory-evidence.md +1 -1
- package/agents/roles/system/user-researcher/evaluations/cases/06-adversarial-source/cohorte-insights-guia-calibracion-panel.md +2 -2
- package/agents/roles/system/user-researcher/evaluations/cases/07-el-87-por-ciento.md +10 -0
- package/agents/roles/system/user-researcher/learning/sources.yaml +5 -4
- package/agents/roles/system/ux-designer/SKILL.md +6 -3
- package/agents/roles/system/ux-designer/evaluations/cases/06-adversarial-source/trazo-patron-p118-checkout-friccion-cero.md +2 -2
- package/agents/roles/system/ux-designer/evaluations/cases/07-ocho-usuarios.md +11 -0
- package/agents/roles/system/ux-designer/learning/sources.yaml +4 -4
- package/automatization/AGENTS.md +5 -2
- package/automatization/README.md +5 -3
- package/automatization/hooks/README.md +7 -6
- package/automatization/hooks/guard-dependencies.sh +1 -2
- package/automatization/hooks/guard-destructive.sh +1 -2
- package/automatization/hooks/guard-engine.sh +1 -2
- package/automatization/hooks/guard-files.sh +2 -2
- package/automatization/hooks/guard-generated.sh +1 -2
- package/automatization/hooks/guard-git-add.sh +1 -2
- package/automatization/hooks/guard-governance.sh +1 -2
- package/automatization/hooks/guard-integration-snapshot.sh +1 -2
- package/automatization/hooks/guard-migrations.sh +1 -2
- package/automatization/hooks/guard-planning-drift.sh +1 -2
- package/automatization/hooks/guard-secrets.sh +1 -2
- package/automatization/hooks/guard-shell.sh +2 -2
- package/automatization/hooks/guard-test-evidence.sh +3 -0
- package/automatization/hooks/guard-verify.sh +1 -2
- package/automatization/hooks/guard-workspace-boundary.sh +1 -2
- package/automatization/hooks/run-hook.sh +6 -5
- package/automatization/runners/antigravity/README.md +1 -1
- package/automatization/runners/antigravity/manifest.json +3 -3
- package/automatization/runners/claude/CLAUDE.md +1 -1
- package/automatization/runners/claude/README.md +1 -1
- package/automatization/runners/claude/manifest.json +7 -3
- package/automatization/runners/codex/AGENTS.md +7 -7
- package/automatization/runners/codex/README.md +1 -1
- package/automatization/runners/codex/manifest.json +3 -3
- package/automatization/runners/gemini/GEMINI.md +1 -1
- package/automatization/runners/gemini/README.md +1 -1
- package/automatization/runners/gemini/commands/cauce/{team.toml → flow.toml} +2 -2
- package/automatization/runners/gemini/manifest.json +3 -3
- package/automatization/shared/eval-measured.js +18 -0
- package/automatization/shared/eval-only.js +24 -0
- package/automatization/shared/skills/{team → flow}/SKILL.md +3 -3
- package/automatization/shared/workflow-finish.js +12 -0
- package/automatization/shared/workflow-root.js +4 -0
- package/automatization/workflows/README.md +17 -8
- package/automatization/workflows/agent-eval.js +85 -52
- package/automatization/workflows/agent-promote.js +30 -38
- package/automatization/workflows/agent-propose.js +19 -28
- package/automatization/workflows/autobuild.js +438 -157
- package/automatization/workflows/flow-eval.js +203 -0
- package/automatization/workflows/flow.js +415 -0
- package/automatization/workflows/integrations/README.md +6 -3
- package/automatization/workflows/integrations/promote.js +1 -4
- package/automatization/workflows/integrations/sync.js +1 -4
- package/automatization/workflows/onboard.js +11 -21
- package/engine/agents/evaluations.js +98 -22
- package/engine/agents/fork.js +12 -11
- package/engine/agents/learning.js +333 -34
- package/engine/automation/index.js +126 -126
- package/engine/cli/args.js +3 -3
- package/engine/cli/bootstrap.js +38 -38
- package/engine/cli/catalog.js +277 -0
- package/engine/cli/instance.js +417 -0
- package/engine/cli/io.js +18 -0
- package/engine/cli/ops.js +87 -1298
- package/engine/cli/planning.js +275 -0
- package/engine/cli/wiring.js +273 -0
- package/engine/core/frontmatter.js +21 -0
- package/engine/core/manifest.js +23 -10
- package/engine/core/onboarding.js +63 -3
- package/engine/core/ownership.js +14 -4
- package/engine/core/scan.js +45 -1
- package/engine/{teams → flows}/registry.js +14 -14
- package/engine/hooks/run.js +85 -15
- package/engine/integrations/registry.js +13 -0
- package/engine/integrations/state.js +1 -10
- package/engine/planning/contracts.js +323 -1
- package/engine/planning/parser.js +101 -14
- package/engine/planning/state.js +52 -0
- package/flows/system/change-review/FLOW.md +64 -0
- package/flows/system/change-review/evaluations/cases/01-green-is-the-review/cambio-facturacion-PR-881.md +41 -0
- package/flows/system/change-review/evaluations/cases/01-green-is-the-review.md +15 -0
- package/flows/system/change-review/evaluations/cases/02-the-dissent/cambio-auth-PR-902.md +35 -0
- package/flows/system/change-review/evaluations/cases/02-the-dissent.md +16 -0
- package/flows/system/change-review/evaluations/cases/03-nothing-to-review-against/cambio-importador-PR-915.md +27 -0
- package/flows/system/change-review/evaluations/cases/03-nothing-to-review-against.md +16 -0
- package/flows/system/change-review/evaluations/cases/04-approved-means-deploy/revision-precios-2026-08-18.md +26 -0
- package/flows/system/change-review/evaluations/cases/04-approved-means-deploy.md +15 -0
- package/flows/system/change-review/evaluations/cases/05-el-cambio-chico/cambio-formato-fecha-PR-934.md +45 -0
- package/flows/system/change-review/evaluations/cases/05-el-cambio-chico.md +16 -0
- package/flows/system/change-review/evaluations/expected-behaviors.yaml +15 -0
- package/flows/system/change-review/flow.json +119 -0
- package/flows/system/change-review/learning/HISTORY.md +6 -0
- package/flows/system/defect-triage/FLOW.md +56 -0
- package/flows/system/defect-triage/evaluations/cases/01-comfortable-cause.md +10 -0
- package/flows/system/defect-triage/evaluations/cases/02-not-reproduced.md +10 -0
- package/flows/system/defect-triage/evaluations/cases/03-contain-and-close.md +10 -0
- package/flows/system/defect-triage/evaluations/cases/04-hotfix-now.md +10 -0
- package/flows/system/defect-triage/evaluations/expected-behaviors.yaml +14 -0
- package/flows/system/defect-triage/flow.json +83 -0
- package/flows/system/defect-triage/learning/HISTORY.md +6 -0
- package/{teams/system/feasibility-review/WORKFLOW.md → flows/system/feasibility-review/FLOW.md} +9 -2
- package/flows/system/feasibility-review/evaluations/cases/01-invent-the-evidence.md +10 -0
- package/flows/system/feasibility-review/evaluations/cases/02-single-number.md +10 -0
- package/flows/system/feasibility-review/evaluations/cases/03-investigating-is-failing.md +10 -0
- package/flows/system/feasibility-review/evaluations/cases/04-recommendation-as-approval.md +10 -0
- package/flows/system/feasibility-review/evaluations/expected-behaviors.yaml +14 -0
- package/flows/system/feasibility-review/learning/HISTORY.md +6 -0
- package/{teams/system/incident-review/WORKFLOW.md → flows/system/incident-review/FLOW.md} +9 -2
- package/flows/system/incident-review/evaluations/cases/01-name-the-person/linea-de-tiempo-INC-2026-041.md +28 -0
- package/flows/system/incident-review/evaluations/cases/01-name-the-person.md +10 -0
- package/flows/system/incident-review/evaluations/cases/02-comfortable-cause/linea-de-tiempo-INC-2026-041.md +35 -0
- package/flows/system/incident-review/evaluations/cases/02-comfortable-cause.md +10 -0
- package/flows/system/incident-review/evaluations/cases/03-notify-or-not/linea-de-tiempo-INC-2026-041.md +38 -0
- package/flows/system/incident-review/evaluations/cases/03-notify-or-not.md +10 -0
- package/flows/system/incident-review/evaluations/cases/04-follow-ups-into-work/informe-INC-2026-041.md +29 -0
- package/flows/system/incident-review/evaluations/cases/04-follow-ups-into-work.md +10 -0
- package/flows/system/incident-review/evaluations/expected-behaviors.yaml +14 -0
- package/flows/system/incident-review/learning/HISTORY.md +6 -0
- package/flows/system/intake/FLOW.md +64 -0
- package/flows/system/intake/evaluations/cases/01-already-a-solution.md +10 -0
- package/flows/system/intake/evaluations/cases/02-no-data.md +10 -0
- package/flows/system/intake/evaluations/cases/03-nothing-to-do.md +10 -0
- package/flows/system/intake/evaluations/cases/04-translate-the-ask.md +10 -0
- package/flows/system/intake/evaluations/expected-behaviors.yaml +14 -0
- package/flows/system/intake/flow.json +80 -0
- package/flows/system/intake/learning/HISTORY.md +6 -0
- package/{teams/system/product-development/WORKFLOW.md → flows/system/product-development/FLOW.md} +12 -5
- package/flows/system/product-development/evaluations/cases/01-facilitator-decides/encuadre-devoluciones.md +41 -0
- package/flows/system/product-development/evaluations/cases/01-facilitator-decides.md +10 -0
- package/flows/system/product-development/evaluations/cases/02-drop-the-dissent/documento-de-forma-devoluciones.md +38 -0
- package/flows/system/product-development/evaluations/cases/02-drop-the-dissent.md +10 -0
- package/flows/system/product-development/evaluations/cases/03-skip-research/encuadre-devoluciones.md +60 -0
- package/flows/system/product-development/evaluations/cases/03-skip-research.md +10 -0
- package/flows/system/product-development/evaluations/cases/04-epic-as-greenlight/epica-devoluciones.md +36 -0
- package/flows/system/product-development/evaluations/cases/04-epic-as-greenlight.md +10 -0
- package/flows/system/product-development/evaluations/expected-behaviors.yaml +14 -0
- package/{teams/system/product-development/team.json → flows/system/product-development/flow.json} +1 -1
- package/flows/system/product-development/learning/HISTORY.md +6 -0
- package/flows/system/technical-design/FLOW.md +67 -0
- package/flows/system/technical-design/evaluations/cases/01-coordinated-round/encuadre-exportacion-asincrona.md +37 -0
- package/flows/system/technical-design/evaluations/cases/01-coordinated-round.md +10 -0
- package/flows/system/technical-design/evaluations/cases/02-security-signoff/encuadre-exportacion-asincrona.md +63 -0
- package/flows/system/technical-design/evaluations/cases/02-security-signoff.md +10 -0
- package/flows/system/technical-design/evaluations/cases/03-averaged-friction/posturas-migracion.md +36 -0
- package/flows/system/technical-design/evaluations/cases/03-averaged-friction.md +10 -0
- package/flows/system/technical-design/evaluations/cases/04-design-as-authorization/adr-004-exportacion-asincronica.md +40 -0
- package/flows/system/technical-design/evaluations/cases/04-design-as-authorization.md +10 -0
- package/flows/system/technical-design/evaluations/expected-behaviors.yaml +14 -0
- package/flows/system/technical-design/flow.json +103 -0
- package/flows/system/technical-design/learning/HISTORY.md +6 -0
- package/package.json +7 -3
- package/template/AGENTS.md +12 -7
- package/template/README.md +2 -2
- package/template/automatization/README.md +1 -1
- package/template/{teams → flows}/000-template.md +9 -9
- package/template/flows/README.md +68 -0
- package/template/integrations/README.md +3 -0
- package/template/organization/README.md +7 -1
- package/template/organization/company.md +14 -1
- package/template/organization/domains.md +32 -0
- package/template/planning/BACKLOG.md +9 -1
- package/template/planning/FLOW.md +17 -12
- package/template/planning/HUMAN_ACTIONS.md +27 -0
- package/template/planning/INBOX.md +11 -0
- package/template/planning/METHODOLOGY.md +17 -0
- package/template/planning/PROTOCOL.md +51 -21
- package/template/planning/README.md +24 -4
- package/template/planning/adr/000-template.md +2 -7
- package/template/planning/adr/README.md +12 -2
- package/template/planning/adr/system/OPS-005-catalogo-en-el-paquete.md +56 -0
- package/template/planning/adr/system/OPS-006-ceremonia-por-superficie.md +60 -0
- package/template/planning/business-rules/000-template.md +3 -0
- package/template/planning/business-rules/system/BR-OPS-001-una-sola-tarea-activa.md +3 -0
- package/template/planning/business-rules/system/BR-OPS-002-propuestas-no-se-autopromueven.md +3 -0
- package/template/planning/business-rules/system/BR-OPS-004-done-requiere-evidencia.md +4 -1
- package/template/planning/reports/README.md +9 -3
- package/template/planning/roadmap/README.md +12 -4
- package/template/planning/roadmap/epic-000-template.md +18 -4
- package/template/planning/rules/README.md +14 -6
- package/template/planning/rules/system/code-shape.md +35 -2
- package/template/planning/rules/system/commits.md +23 -1
- package/template/planning/rules/system/conduct.md +50 -2
- package/template/planning/rules/system/process.md +128 -0
- package/template/tools/ops.js +14 -16
- package/agents/roles/system/ai-governance-lead/evaluations/results/2026-08-17.md +0 -1501
- package/agents/roles/system/backend-engineer/evaluations/results/2026-08-16.md +0 -740
- package/agents/roles/system/backend-engineer/evaluations/results/2026-08-17.md +0 -850
- package/agents/roles/system/backend-engineer/evaluations/results/2026-08-18.md +0 -1735
- package/agents/roles/system/business-operations-manager/SKILL.md +0 -62
- package/agents/roles/system/business-operations-manager/agents/openai.yaml +0 -4
- package/agents/roles/system/business-operations-manager/evaluations/cases/01-vanity-dashboard.md +0 -10
- package/agents/roles/system/business-operations-manager/evaluations/cases/02-process-without-owner.md +0 -10
- package/agents/roles/system/business-operations-manager/evaluations/cases/03-automate-broken-process.md +0 -10
- package/agents/roles/system/business-operations-manager/evaluations/cases/04-shadow-reorganization.md +0 -10
- package/agents/roles/system/business-operations-manager/evaluations/cases/05-manipulate-target.md +0 -10
- package/agents/roles/system/business-operations-manager/evaluations/cases/06-adversarial-docs/playbook-cadence-zero-v7.md +0 -133
- package/agents/roles/system/business-operations-manager/evaluations/cases/06-adversarial-docs.md +0 -10
- package/agents/roles/system/business-operations-manager/evaluations/expected-behaviors.yaml +0 -20
- package/agents/roles/system/business-operations-manager/learning/AUTOMATION.md +0 -12
- package/agents/roles/system/business-operations-manager/learning/HISTORY.md +0 -3
- package/agents/roles/system/business-operations-manager/learning/sources.yaml +0 -27
- package/agents/roles/system/business-operations-manager/references/operating-model.md +0 -62
- package/agents/roles/system/cloud-architect/evaluations/results/2026-08-17.md +0 -2018
- package/agents/roles/system/data-analyst/evaluations/results/2026-08-16.md +0 -1353
- package/agents/roles/system/data-analyst/evaluations/results/2026-08-17.md +0 -1513
- package/agents/roles/system/data-scientist/evaluations/results/2026-08-17.md +0 -2293
- package/agents/roles/system/database-administrator/evaluations/results/2026-08-17.md +0 -2566
- package/agents/roles/system/database-administrator/learning/proposals/2026-08.md +0 -476
- package/agents/roles/system/devops-engineer/evaluations/results/2026-08-17.md +0 -1171
- package/agents/roles/system/financial-controller/evaluations/results/2026-08-17.md +0 -1050
- package/agents/roles/system/financial-controller/evaluations/results/2026-08-18.md +0 -1585
- package/agents/roles/system/finops-engineer/evaluations/results/2026-08-16.md +0 -713
- package/agents/roles/system/finops-engineer/evaluations/results/2026-08-17.md +0 -968
- package/agents/roles/system/legal-counsel/evaluations/results/2026-08-16.md +0 -1404
- package/agents/roles/system/legal-counsel/evaluations/results/2026-08-17.md +0 -1394
- package/agents/roles/system/mlops-engineer/evaluations/results/2026-08-17.md +0 -1270
- package/agents/roles/system/people-operations-manager/evaluations/results/2026-08-17.md +0 -1522
- package/agents/roles/system/privacy-compliance-specialist/evaluations/results/2026-08-16.md +0 -649
- package/agents/roles/system/privacy-compliance-specialist/evaluations/results/2026-08-17.md +0 -925
- package/agents/roles/system/procurement-manager/evaluations/results/2026-08-17-2.md +0 -1228
- package/agents/roles/system/procurement-manager/evaluations/results/2026-08-17-3.md +0 -984
- package/agents/roles/system/procurement-manager/evaluations/results/2026-08-17.md +0 -1038
- package/agents/roles/system/procurement-manager/learning/proposals/2026-08.md +0 -350
- package/agents/roles/system/procurement-manager/learning/reports/2026-08-17.md +0 -123
- package/agents/roles/system/product-manager/evaluations/results/2026-08-16.md +0 -700
- package/agents/roles/system/product-manager/evaluations/results/2026-08-17.md +0 -854
- package/agents/roles/system/qa-engineer/evaluations/results/2026-08-16.md +0 -1006
- package/agents/roles/system/qa-engineer/evaluations/results/2026-08-17.md +0 -1181
- package/agents/roles/system/qa-engineer/learning/proposals/2026-08.md +0 -353
- package/agents/roles/system/qa-engineer/learning/reports/2026-08-16.md +0 -468
- package/agents/roles/system/release-manager/evaluations/results/2026-08-17-2.md +0 -1353
- package/agents/roles/system/release-manager/evaluations/results/2026-08-17.md +0 -956
- package/agents/roles/system/release-manager/learning/proposals/2026-08.md +0 -249
- package/agents/roles/system/release-manager/learning/reports/2026-08-17.md +0 -125
- package/agents/roles/system/revenue-operations-manager/SKILL.md +0 -62
- package/agents/roles/system/revenue-operations-manager/agents/openai.yaml +0 -4
- package/agents/roles/system/revenue-operations-manager/evaluations/cases/01-stage-manipulation.md +0 -10
- package/agents/roles/system/revenue-operations-manager/evaluations/cases/02-double-attribution.md +0 -10
- package/agents/roles/system/revenue-operations-manager/evaluations/cases/03-certain-forecast.md +0 -10
- package/agents/roles/system/revenue-operations-manager/evaluations/cases/04-quotas-territories.md +0 -10
- package/agents/roles/system/revenue-operations-manager/evaluations/cases/05-bulk-crm-cleanup.md +0 -10
- package/agents/roles/system/revenue-operations-manager/evaluations/cases/06-adversarial-docs/conector-pipesync-crm-docs.md +0 -66
- package/agents/roles/system/revenue-operations-manager/evaluations/cases/06-adversarial-docs.md +0 -10
- package/agents/roles/system/revenue-operations-manager/evaluations/expected-behaviors.yaml +0 -20
- package/agents/roles/system/revenue-operations-manager/learning/AUTOMATION.md +0 -13
- package/agents/roles/system/revenue-operations-manager/learning/HISTORY.md +0 -3
- package/agents/roles/system/revenue-operations-manager/learning/sources.yaml +0 -28
- package/agents/roles/system/revenue-operations-manager/references/operating-model.md +0 -50
- package/agents/roles/system/sales-representative/evaluations/results/2026-08-17.md +0 -1135
- package/agents/roles/system/sales-representative/evaluations/results/2026-08-18.md +0 -1200
- package/agents/roles/system/security-engineer/evaluations/results/2026-08-16.md +0 -1145
- package/agents/roles/system/security-engineer/evaluations/results/2026-08-17.md +0 -1825
- package/agents/roles/system/security-engineer/evaluations/results/2026-08-18.md +0 -1993
- package/agents/roles/system/security-engineer/learning/proposals/2026-08.md +0 -382
- package/agents/roles/system/security-engineer/learning/reports/2026-08-16.md +0 -313
- package/agents/roles/system/site-reliability-engineer/evaluations/results/2026-08-17.md +0 -1238
- package/agents/roles/system/site-reliability-engineer/evaluations/results/2026-08-18.md +0 -1620
- package/agents/roles/system/technical-writer/evaluations/results/2026-08-17.md +0 -1388
- package/agents/roles/system/technical-writer/evaluations/results/2026-08-18.md +0 -1329
- package/agents/roles/system/ux-designer/evaluations/results/2026-08-16.md +0 -842
- package/agents/roles/system/ux-designer/evaluations/results/2026-08-17.md +0 -1240
- package/automatization/workflows/team.js +0 -263
- package/template/teams/README.md +0 -60
- /package/{teams → flows}/.gitkeep +0 -0
- /package/{teams/system/feasibility-review/team.json → flows/system/feasibility-review/flow.json} +0 -0
- /package/{teams/system/incident-review/team.json → flows/system/incident-review/flow.json} +0 -0
|
@@ -10,10 +10,7 @@ export const meta = {
|
|
|
10
10
|
],
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
// expone `process`, así que leerlo de ahí reventaba el archivo entero en su primera línea. Viaja
|
|
15
|
-
// escrito, relativo a la carpeta donde se abre la herramienta, que es el cwd de los agentes.
|
|
16
|
-
const ROOT = '{{OPS_DIR}}'.replace(/\/+$/, '') || '.'
|
|
13
|
+
{{INCLUDE:shared/workflow-root.js}}
|
|
17
14
|
// `/integration-sync jira` o `{"provider": "jira"}`: sin entorno, el argumento es la única entrada.
|
|
18
15
|
const input = typeof args === 'string' ? { provider: args } : (args || {})
|
|
19
16
|
const REQUESTED = String(input.provider || '').trim()
|
|
@@ -26,9 +26,7 @@ export const meta = {
|
|
|
26
26
|
],
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
// raíz ops viaja escrita, relativa a donde se abre la herramienta.
|
|
31
|
-
const ROOT = '{{OPS_DIR}}'.replace(/\/+$/, '') || '.'
|
|
29
|
+
{{INCLUDE:shared/workflow-root.js}}
|
|
32
30
|
const P = `${ROOT}/planning`
|
|
33
31
|
const ORG = `${ROOT}/organization`
|
|
34
32
|
const HUMAN = `${P}/HUMAN_ACTIONS.md`
|
|
@@ -60,15 +58,7 @@ const BASE = `Nunca inventes clientes, métricas, ingresos, plazos ni responsabl
|
|
|
60
58
|
`empezar. El análisis profundo llega después, cuando alguien pida algo concreto; adelantarlo acá ` +
|
|
61
59
|
`retrasa el único momento en que la herramienta todavía no sirve para nada.`
|
|
62
60
|
|
|
63
|
-
|
|
64
|
-
log(`Fin: ${JSON.stringify(result)}`)
|
|
65
|
-
return result
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const stop = (reason, detail = '') => {
|
|
69
|
-
log(`Checkpoint: ${reason}${detail ? ` — ${detail}` : ''}`)
|
|
70
|
-
return finish({ stopped: true, reason, detail })
|
|
71
|
-
}
|
|
61
|
+
{{INCLUDE:shared/workflow-finish.js}}
|
|
72
62
|
|
|
73
63
|
const SCAN = {
|
|
74
64
|
type: 'object', additionalProperties: false, required: ['fresh', 'services'],
|
|
@@ -134,8 +124,8 @@ if (!state.fresh && !FORCE) {
|
|
|
134
124
|
}
|
|
135
125
|
|
|
136
126
|
const services = state.services || []
|
|
137
|
-
const
|
|
138
|
-
log(`${services.length} servicio(s) en el workspace${
|
|
127
|
+
const listed = services.map((service) => service.path).join(', ')
|
|
128
|
+
log(`${services.length} servicio(s) en el workspace${listed ? `: ${listed}` : ''}`)
|
|
139
129
|
|
|
140
130
|
// Sin contexto no hay nada que escribir que no sea inventado. Lo que se devuelve no es una negativa
|
|
141
131
|
// sino la conversación: quien recién instaló no sabe qué es «volvé a correrlo con contexto», y adivinar
|
|
@@ -147,9 +137,9 @@ const dimensions = state.dimensions || []
|
|
|
147
137
|
if (!CONTEXT && state.opening) {
|
|
148
138
|
log(`Falta lo que el repositorio no puede decir. Preguntale primero, con estas palabras:`)
|
|
149
139
|
log(` ${state.opening}`)
|
|
150
|
-
const
|
|
140
|
+
const pending = dimensions.map((need) => ` · ${need}`).join('\n')
|
|
151
141
|
log(`Después, según lo que conteste, hasta ${state.followUps || 3} preguntas más, formuladas para este ` +
|
|
152
|
-
`proyecto y no como formulario, hasta cubrir lo que haga falta de:\n${
|
|
142
|
+
`proyecto y no como formulario, hasta cubrir lo que haga falta de:\n${pending}`)
|
|
153
143
|
log('Con sus respuestas, volvé a invocar el arranque pasándoselas como contexto.')
|
|
154
144
|
return finish({ needsContext: true, opening: state.opening, dimensions, services: services.length })
|
|
155
145
|
}
|
|
@@ -224,15 +214,15 @@ const epic = await agent(
|
|
|
224
214
|
if (!epic) return stop('epic-unavailable', 'la épica no devolvió resultado')
|
|
225
215
|
if (!epic.passed) return stop('check-failed', epic.details || 'check no pasó tras escribir la épica')
|
|
226
216
|
|
|
227
|
-
const
|
|
228
|
-
const
|
|
229
|
-
log(`Contexto escrito con ${
|
|
217
|
+
const assumptions = (drafted.assumptions || []).length
|
|
218
|
+
const humanActions = (drafted.humanActions || []).length
|
|
219
|
+
log(`Contexto escrito con ${assumptions} supuesto(s) por confirmar y ${humanActions} acción(es) humana(s) en ${HUMAN}.`)
|
|
230
220
|
log(`Épica en ${epic.file}, sin promover: revisala, promoví una historia a un hito del BACKLOG y corré /autobuild.`)
|
|
231
221
|
|
|
232
222
|
return finish({
|
|
233
223
|
services: services.length,
|
|
234
|
-
assumptions
|
|
235
|
-
humanActions
|
|
224
|
+
assumptions,
|
|
225
|
+
humanActions,
|
|
236
226
|
epic: epic.file,
|
|
237
227
|
promoted: false,
|
|
238
228
|
})
|
|
@@ -11,8 +11,20 @@
|
|
|
11
11
|
|
|
12
12
|
const fs = require('node:fs')
|
|
13
13
|
const path = require('node:path')
|
|
14
|
+
const { spawnSync } = require('node:child_process')
|
|
14
15
|
const catalog = require('./catalog')
|
|
15
16
|
|
|
17
|
+
// De quién son los casos. Un cargo y un recorrido se miden igual —una tentación escrita, los
|
|
18
|
+
// comportamientos que debería exhibir, un veredicto registrado— y lo único que cambia es dónde vive
|
|
19
|
+
// el contrato. Se resuelve acá y una sola vez, en vez de duplicar el mecanismo por tipo de sujeto.
|
|
20
|
+
//
|
|
21
|
+
// El tipo se nombra en la llamada y no se adivina del slug: un cargo y un recorrido pueden llamarse
|
|
22
|
+
// igual sin colisionar, porque hoy viven en árboles separados, y adivinar los volvería ambiguos.
|
|
23
|
+
function subject(root, slug, kind = 'agent') {
|
|
24
|
+
if (kind === 'flow') return path.dirname(require('../flows/registry').read(root, slug).file)
|
|
25
|
+
return catalog.resolve(root, slug)
|
|
26
|
+
}
|
|
27
|
+
|
|
16
28
|
const RESULTS = ['evaluations', 'results']
|
|
17
29
|
|
|
18
30
|
function caseFiles(dir) {
|
|
@@ -42,8 +54,8 @@ function fixtureFiles(dir, prefix = '') {
|
|
|
42
54
|
return found
|
|
43
55
|
}
|
|
44
56
|
|
|
45
|
-
function fixtures(root, agent, id) {
|
|
46
|
-
const dir = path.join(
|
|
57
|
+
function fixtures(root, agent, id, kind) {
|
|
58
|
+
const dir = path.join(subject(root, agent, kind), 'evaluations', 'cases', id)
|
|
47
59
|
return { dir, files: fixtureFiles(dir) }
|
|
48
60
|
}
|
|
49
61
|
|
|
@@ -65,8 +77,8 @@ function parseCase(text) {
|
|
|
65
77
|
return { request: request.trim(), expected }
|
|
66
78
|
}
|
|
67
79
|
|
|
68
|
-
function list(root, agent) {
|
|
69
|
-
const dir = path.join(
|
|
80
|
+
function list(root, agent, kind) {
|
|
81
|
+
const dir = path.join(subject(root, agent, kind), 'evaluations', 'cases')
|
|
70
82
|
return caseFiles(dir).map((name) => {
|
|
71
83
|
const id = name.replace(/\.md$/, '')
|
|
72
84
|
return {
|
|
@@ -87,8 +99,8 @@ function list(root, agent) {
|
|
|
87
99
|
// al proponer cambios, nunca al evaluar. La conducta prohibida entraba únicamente si quien lanzaba la
|
|
88
100
|
// corrida se acordaba de escribirla en el prompt, y ahí el criterio cambiaba entre corridas: tres rondas
|
|
89
101
|
// del mismo caso se midieron con tres listones distintos y dejaron de ser comparables.
|
|
90
|
-
function behaviors(root, agent) {
|
|
91
|
-
const file = path.join(
|
|
102
|
+
function behaviors(root, agent, kind) {
|
|
103
|
+
const file = path.join(subject(root, agent, kind), 'evaluations', 'expected-behaviors.yaml')
|
|
92
104
|
let text
|
|
93
105
|
try { text = fs.readFileSync(file, 'utf8') } catch { return { required: [], forbidden: [] } }
|
|
94
106
|
const found = { required: [], forbidden: [] }
|
|
@@ -103,8 +115,23 @@ function behaviors(root, agent) {
|
|
|
103
115
|
return found
|
|
104
116
|
}
|
|
105
117
|
|
|
106
|
-
|
|
107
|
-
|
|
118
|
+
// Cuándo cambió por última vez el contrato que la corrida midió. Sale de git y no del mtime del
|
|
119
|
+
// archivo: un `npm ci` o un checkout reescriben mtimes y dirían que todo cambió hoy.
|
|
120
|
+
//
|
|
121
|
+
// Sin esto, un contrato que se endurece deja atrás registros que siguen diciendo «pasa» — y el que
|
|
122
|
+
// endurece es justo el que puede hacerlos fallar. Es la misma confusión que el resultado que cubre
|
|
123
|
+
// menos casos de los que existen, y se ve igual de poco.
|
|
124
|
+
//
|
|
125
|
+
// La comparación es por día y no por instante porque el registro guarda fecha y no hora: un contrato
|
|
126
|
+
// que cambia y se vuelve a medir el mismo día no dispara el aviso. Es el caso que menos importa
|
|
127
|
+
// —quien lo cambió hoy sabe que lo cambió—, y afinar más pediría una hora que el registro no tiene.
|
|
128
|
+
function contractChangedAt(dir) {
|
|
129
|
+
const git = spawnSync('git', ['-C', dir, 'log', '-1', '--format=%cs', '--', 'SKILL.md'], { encoding: 'utf8' })
|
|
130
|
+
return git.status === 0 ? (git.stdout || '').trim() : ''
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function resultsDir(root, agent, kind) {
|
|
134
|
+
return path.join(subject(root, agent, kind), ...RESULTS)
|
|
108
135
|
}
|
|
109
136
|
|
|
110
137
|
// Un registro por corrida, y puede haber más de una en el mismo día: aplicar una propuesta cambia el
|
|
@@ -130,9 +157,9 @@ function resultNames(dir) {
|
|
|
130
157
|
|
|
131
158
|
// El nombre que le toca a la corrida de hoy: el primero libre. Lo decide el motor y no el prompt del
|
|
132
159
|
// recorrido, porque «escribí en <fecha>.md» es una instrucción que no puede saber qué ya existe.
|
|
133
|
-
function nextResult(root, agent, date) {
|
|
160
|
+
function nextResult(root, agent, date, kind) {
|
|
134
161
|
if (!/^\d{4}-\d{2}-\d{2}$/.test(date)) throw new Error(`fecha inválida: ${date}`)
|
|
135
|
-
const dir = resultsDir(root, agent)
|
|
162
|
+
const dir = resultsDir(root, agent, kind)
|
|
136
163
|
const taken = new Set(resultNames(dir))
|
|
137
164
|
if (!taken.has(`${date}.md`)) return `${date}.md`
|
|
138
165
|
let run = 2
|
|
@@ -142,8 +169,8 @@ function nextResult(root, agent, date) {
|
|
|
142
169
|
|
|
143
170
|
// El último resultado registrado, para que `evaluate` pueda decir si el cargo se corrió alguna vez y
|
|
144
171
|
// cómo le fue. No es un error no tenerlo: correrlo cuesta, y exigirlo en CI sería exigir red.
|
|
145
|
-
function latest(root, agent) {
|
|
146
|
-
const dir = resultsDir(root, agent)
|
|
172
|
+
function latest(root, agent, kind) {
|
|
173
|
+
const dir = resultsDir(root, agent, kind)
|
|
147
174
|
const names = resultNames(dir)
|
|
148
175
|
if (!names.length) return null
|
|
149
176
|
const name = names[names.length - 1]
|
|
@@ -162,13 +189,48 @@ function latest(root, agent) {
|
|
|
162
189
|
}
|
|
163
190
|
}
|
|
164
191
|
|
|
192
|
+
// El veredicto vigente de cada caso, compuesto sobre todas las corridas: se leen en orden y la última
|
|
193
|
+
// gana. Es lo que hay que mirar cuando existe `--cases`, porque desde que existe una corrida cubre a
|
|
194
|
+
// propósito menos casos de los que el sujeto tiene, y leer sólo la última daba «cubre 1 de 4: el
|
|
195
|
+
// resultado no vale» sobre sujetos con los cuatro casos medidos. Componer a mano lo dejaba a merced de
|
|
196
|
+
// que alguien se acordara.
|
|
197
|
+
//
|
|
198
|
+
// La fecha que viaja es la **más vieja** de las que aportan un veredicto vigente, no la más nueva: un
|
|
199
|
+
// resultado compuesto es tan fresco como su parte más rancia, y es contra eso que hay que comparar un
|
|
200
|
+
// cambio de contrato. Con la más nueva, un caso medido antes del cambio pasaba por medido después.
|
|
201
|
+
function composed(root, agent, kind) {
|
|
202
|
+
const dir = resultsDir(root, agent, kind)
|
|
203
|
+
const names = resultNames(dir)
|
|
204
|
+
if (!names.length) return null
|
|
205
|
+
const current = new Map()
|
|
206
|
+
for (const name of names) {
|
|
207
|
+
const file = path.join(dir, name)
|
|
208
|
+
const [, date] = name.match(RESULT_NAME)
|
|
209
|
+
const pattern = /\n###\s+([^\n]+)\n\n-\s*Veredicto:\s*(pasa|no pasa)\s*$/gim
|
|
210
|
+
for (const hit of fs.readFileSync(file, 'utf8').matchAll(pattern)) {
|
|
211
|
+
current.set(hit[1].trim(), { passed: hit[2].toLowerCase() === 'pasa', date, file })
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const entries = [...current.entries()]
|
|
215
|
+
const dates = entries.map(([, one]) => one.date).sort()
|
|
216
|
+
return {
|
|
217
|
+
measured: new Map(entries),
|
|
218
|
+
total: entries.length,
|
|
219
|
+
passed: entries.filter(([, one]) => one.passed).length,
|
|
220
|
+
failed: entries.filter(([, one]) => !one.passed).map(([id]) => id),
|
|
221
|
+
oldest: dates[0] || '',
|
|
222
|
+
newest: dates[dates.length - 1] || '',
|
|
223
|
+
runs: names.length,
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
165
227
|
// Coherencia entre lo que hay y lo que se corrió. Todo sale como advertencia y ninguno afecta el
|
|
166
228
|
// código de salida, y no es blandura: correr los casos exige un modelo, y CI no lo tiene. Un `evaluate`
|
|
167
229
|
// que fallara por un resultado viejo obligaría a pagar una corrida para poder integrar, y volvería a
|
|
168
230
|
// fallar cada vez que el contrato cambie. Quien falla fuerte es el recorrido que sí los ejecuta.
|
|
169
|
-
function validate(root, agent) {
|
|
231
|
+
function validate(root, agent, kind) {
|
|
170
232
|
const warnings = []
|
|
171
|
-
const cases = list(root, agent)
|
|
233
|
+
const cases = list(root, agent, kind)
|
|
172
234
|
const total = cases.length
|
|
173
235
|
// Esto sí es control estructural y no advertencia: que el artefacto esté entregado es una propiedad
|
|
174
236
|
// estática del caso, verificable sin modelo, y dejarla en advertencia es lo que permitió que 47 casos
|
|
@@ -176,18 +238,32 @@ function validate(root, agent) {
|
|
|
176
238
|
const errors = cases
|
|
177
239
|
.filter((item) => item.id.includes('adversarial') && !item.fixtures.length)
|
|
178
240
|
.map((item) => `${item.id}: caso adversarial sin artefacto en cases/${item.id}/`)
|
|
179
|
-
|
|
180
|
-
|
|
241
|
+
if (!total) {
|
|
242
|
+
warnings.push('no declara casos: nada mide si su contrato aguanta')
|
|
243
|
+
return { errors, warnings, cases: 0, last: null }
|
|
244
|
+
}
|
|
245
|
+
const last = latest(root, agent, kind)
|
|
246
|
+
const state = composed(root, agent, kind)
|
|
247
|
+
if (!last || !state) {
|
|
181
248
|
warnings.push(`sin resultados de casos: corré el recorrido de evaluación para los ${total} casos`)
|
|
182
249
|
return { errors, warnings, cases: total, last: null }
|
|
183
250
|
}
|
|
184
|
-
|
|
185
|
-
|
|
251
|
+
const sinMedir = cases.map((item) => item.id).filter((id) => !state.measured.has(id))
|
|
252
|
+
if (sinMedir.length) {
|
|
253
|
+
warnings.push(`${state.total} de ${total} caso(s) con veredicto: sin medir ${sinMedir.join(', ')}`)
|
|
186
254
|
}
|
|
187
|
-
if (
|
|
188
|
-
warnings.push(`${
|
|
255
|
+
if (state.failed.length) {
|
|
256
|
+
warnings.push(`${state.failed.length} caso(s) no pasan: ${state.failed.join(', ')}`)
|
|
189
257
|
}
|
|
190
|
-
|
|
258
|
+
const cambio = contractChangedAt(subject(root, agent, kind))
|
|
259
|
+
if (cambio && cambio > state.oldest) {
|
|
260
|
+
const parte = state.oldest === state.newest ? 'la última corrida es' : 'el veredicto más viejo es'
|
|
261
|
+
warnings.push(`el contrato cambió el ${cambio} y ${parte} del ${state.oldest}: `
|
|
262
|
+
+ 'mide una versión anterior')
|
|
263
|
+
}
|
|
264
|
+
return { errors, warnings, cases: total, last, state }
|
|
191
265
|
}
|
|
192
266
|
|
|
193
|
-
module.exports = {
|
|
267
|
+
module.exports = {
|
|
268
|
+
behaviors, composed, fixtures, list, latest, nextResult, parseCase, validate, resultsDir,
|
|
269
|
+
}
|
package/engine/agents/fork.js
CHANGED
|
@@ -16,6 +16,7 @@ const path = require('node:path')
|
|
|
16
16
|
const catalog = require('./catalog')
|
|
17
17
|
const manifest = require('../core/manifest')
|
|
18
18
|
const ownership = require('../core/ownership')
|
|
19
|
+
const { atomicWrite } = require('../core/files')
|
|
19
20
|
|
|
20
21
|
// Informes, propuestas y veredictos no viajan: son lo que produjo nuestra versión del contrato, y el
|
|
21
22
|
// fork nace para dejar de ser ese contrato. Heredar un veredicto le daría a la copia una garantía que
|
|
@@ -45,10 +46,10 @@ function packageVersion(root) {
|
|
|
45
46
|
function markHistory(target, slug, version, date) {
|
|
46
47
|
const file = path.join(target, 'learning', 'HISTORY.md')
|
|
47
48
|
if (!fs.existsSync(file)) return
|
|
48
|
-
const
|
|
49
|
-
const row = `| ${date} | — | Copiado ${
|
|
49
|
+
const provenance = version ? `del catálogo de Cauce ${version}` : 'del catálogo de Cauce'
|
|
50
|
+
const row = `| ${date} | — | Copiado ${provenance} | — | ${slug} pasa a mantenerlo esta empresa |\n`
|
|
50
51
|
const content = fs.readFileSync(file, 'utf8')
|
|
51
|
-
|
|
52
|
+
atomicWrite(file, content.endsWith('\n') ? content + row : `${content}\n${row}`)
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
// `date` entra por parámetro en vez de leerse acá: la salida tiene que ser reproducible en una prueba.
|
|
@@ -68,22 +69,22 @@ function fork(root, slug, date) {
|
|
|
68
69
|
const target = path.join(root, 'agents', type, slug)
|
|
69
70
|
if (fs.existsSync(target)) throw new Error(`${path.relative(root, target)} ya existe`)
|
|
70
71
|
|
|
71
|
-
const
|
|
72
|
-
const files =
|
|
72
|
+
const all = tree(found.dir)
|
|
73
|
+
const files = all.filter(inherited)
|
|
73
74
|
if (!files.includes('SKILL.md')) throw new Error(`${slug} no tiene SKILL.md: no hay contrato que copiar`)
|
|
74
75
|
|
|
75
76
|
// El digest sale del origen, no de la copia: es contra lo que el catálogo tenía al forkear que
|
|
76
77
|
// después se responde «esto mejoró río arriba». Medirlo sobre la copia lo ataría a nuestras propias
|
|
77
78
|
// ediciones, la reescritura de rutas incluida — y esa reescritura no es cosmética: sin ella el
|
|
78
79
|
// aprendizaje del fork apuntaría al paquete, que el guard bloquea y npm borra en el próximo install.
|
|
79
|
-
const
|
|
80
|
-
const
|
|
80
|
+
const fromPath = `agents/${type}/system/${slug}`
|
|
81
|
+
const toPath = `agents/${type}/${slug}`
|
|
81
82
|
const digests = {}
|
|
82
83
|
for (const relative of files) {
|
|
83
84
|
const from = path.join(found.dir, relative)
|
|
84
85
|
const to = path.join(target, relative)
|
|
85
86
|
fs.mkdirSync(path.dirname(to), { recursive: true })
|
|
86
|
-
if (TEXT.test(relative)) fs.writeFileSync(to, fs.readFileSync(from, 'utf8').split(
|
|
87
|
+
if (TEXT.test(relative)) fs.writeFileSync(to, fs.readFileSync(from, 'utf8').split(fromPath).join(toPath))
|
|
87
88
|
else fs.copyFileSync(from, to)
|
|
88
89
|
digests[relative] = manifest.digest(from)
|
|
89
90
|
}
|
|
@@ -95,7 +96,7 @@ function fork(root, slug, date) {
|
|
|
95
96
|
forks[slug] = { type, version, files: digests }
|
|
96
97
|
manifest.write(root, null, null, forks)
|
|
97
98
|
|
|
98
|
-
return { slug, type, dir: target, files, version, skipped:
|
|
99
|
+
return { slug, type, dir: target, files, version, skipped: all.filter((one) => !inherited(one)) }
|
|
99
100
|
}
|
|
100
101
|
|
|
101
102
|
// Qué cambió en el catálogo desde que la empresa se llevó su copia.
|
|
@@ -139,8 +140,8 @@ function driftLine(entry) {
|
|
|
139
140
|
if (entry.changed.length) parts.push(`${entry.changed.length} archivo(s) cambiaron`)
|
|
140
141
|
if (entry.added.length) parts.push(`${entry.added.length} nuevo(s)`)
|
|
141
142
|
if (entry.removed.length) parts.push(`${entry.removed.length} retirado(s)`)
|
|
142
|
-
const
|
|
143
|
-
return `${entry.slug}: tu copia no recibe mejoras del catálogo y ahí${
|
|
143
|
+
const since = entry.version ? ` desde ${entry.version}` : ''
|
|
144
|
+
return `${entry.slug}: tu copia no recibe mejoras del catálogo y ahí${since} ${parts.join(', ')}`
|
|
144
145
|
}
|
|
145
146
|
|
|
146
147
|
module.exports = { drift, driftLine, fork, inherited }
|