agentic-qe 3.14.3 → 3.14.5
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/agents/v3/qe-coverage-specialist.md +1 -1
- package/.claude/agents/v3/qe-fleet-commander.md +1 -1
- package/.claude/agents/v3/qe-pentest-validator.md +1 -1
- package/.claude/agents/v3/qe-queen-coordinator.md +1 -1
- package/.claude/agents/v3/qe-risk-assessor.md +1 -1
- package/.claude/agents/v3/qe-root-cause-analyzer.md +1 -1
- package/.claude/agents/v3/qe-security-auditor.md +1 -1
- package/.claude/agents/v3/qe-test-architect.md +1 -1
- package/.claude/commands/aqe-costs.md +10 -10
- package/.claude/helpers/advisor-call.cjs +3 -3
- package/.claude/helpers/v3/advisor-call.cjs +3 -3
- package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +1 -1
- package/.claude/skills/.validation/examples/performance-testing-output.example.json +1 -1
- package/.claude/skills/.validation/examples/security-testing-output.example.json +1 -1
- package/.claude/skills/.validation/examples/testability-scoring-output.example.json +1 -1
- package/.claude/skills/.validation/schemas/skill-eval.schema.json +4 -1
- package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +1 -1
- package/.claude/skills/.validation/schemas/skill-output.template.json +1 -1
- package/.claude/skills/.validation/templates/eval.template.yaml +1 -1
- package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +1 -1
- package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
- package/.claude/skills/.validation/test-data/sample-output.json +1 -1
- package/.claude/skills/a11y-ally/SKILL.md +1 -1
- package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +1 -1
- package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +1 -1
- package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +1 -1
- package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
- package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +1 -1
- package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +1 -1
- package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1 -1
- package/.claude/skills/contract-testing/evals/contract-testing.yaml +1 -1
- package/.claude/skills/database-testing/evals/database-testing.yaml +1 -1
- package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +1 -1
- package/.claude/skills/localization-testing/evals/localization-testing.yaml +1 -1
- package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +1 -1
- package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
- package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +1 -1
- package/.claude/skills/mutation-testing/test-data/sample-output.json +1 -1
- package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +1 -1
- package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +1 -1
- package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +1 -1
- package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +1 -1
- package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +1 -1
- package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +1 -1
- package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
- package/.claude/skills/performance-testing/evals/performance-testing.yaml +1 -1
- package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +1 -1
- package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +1 -1
- package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +1 -1
- package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +1 -1
- package/.claude/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +1 -1
- package/.claude/skills/qe-browser/evals/qe-browser.yaml +1 -1
- package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
- package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
- package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
- package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
- package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +2 -2
- package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
- package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
- package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
- package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +1 -1
- package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +1 -1
- package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
- package/.claude/skills/regression-testing/evals/regression-testing.yaml +1 -1
- package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +1 -1
- package/.claude/skills/security-testing/evals/security-testing.yaml +1 -1
- package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +1 -1
- package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +1 -1
- package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +1 -1
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +1 -1
- package/.claude/skills/test-data-management/evals/test-data-management.yaml +1 -1
- package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +1 -1
- package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +1 -1
- package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +1 -1
- package/.claude/skills/validation-pipeline/evals/validation-pipeline.yaml +1 -1
- package/.claude/skills/verification-quality/evals/verification-quality.yaml +1 -1
- package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +1 -1
- package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +1 -1
- package/.opencode/agents/collective-intelligence-coordinator.yaml +1 -1
- package/.opencode/agents/ddd-domain-expert.yaml +1 -1
- package/.opencode/agents/memory-specialist.yaml +1 -1
- package/.opencode/agents/performance-engineer.yaml +1 -1
- package/.opencode/agents/qe-accessibility-auditor.yaml +1 -1
- package/.opencode/agents/qe-api-contract-validator.yaml +1 -1
- package/.opencode/agents/qe-bdd-generator.yaml +1 -1
- package/.opencode/agents/qe-chaos-engineer.yaml +1 -1
- package/.opencode/agents/qe-code-complexity.yaml +1 -1
- package/.opencode/agents/qe-code-intelligence.yaml +1 -1
- package/.opencode/agents/qe-coverage-analyzer.yaml +1 -1
- package/.opencode/agents/qe-defect-predictor.yaml +1 -1
- package/.opencode/agents/qe-dependency-mapper.yaml +1 -1
- package/.opencode/agents/qe-deployment-advisor.yaml +1 -1
- package/.opencode/agents/qe-devils-advocate.yaml +1 -1
- package/.opencode/agents/qe-flaky-hunter.yaml +1 -1
- package/.opencode/agents/qe-fleet-commander.yaml +1 -1
- package/.opencode/agents/qe-gap-detector.yaml +1 -1
- package/.opencode/agents/qe-graphql-tester.yaml +1 -1
- package/.opencode/agents/qe-impact-analyzer.yaml +1 -1
- package/.opencode/agents/qe-integration-architect.yaml +1 -1
- package/.opencode/agents/qe-integration-tester.yaml +1 -1
- package/.opencode/agents/qe-kg-builder.yaml +1 -1
- package/.opencode/agents/qe-learning-coordinator.yaml +1 -1
- package/.opencode/agents/qe-load-tester.yaml +1 -1
- package/.opencode/agents/qe-message-broker-tester.yaml +1 -1
- package/.opencode/agents/qe-metrics-optimizer.yaml +1 -1
- package/.opencode/agents/qe-middleware-validator.yaml +1 -1
- package/.opencode/agents/qe-mutation-tester.yaml +1 -1
- package/.opencode/agents/qe-odata-contract-tester.yaml +1 -1
- package/.opencode/agents/qe-parallel-executor.yaml +1 -1
- package/.opencode/agents/qe-pattern-learner.yaml +1 -1
- package/.opencode/agents/qe-pentest-validator.yaml +1 -1
- package/.opencode/agents/qe-performance-tester.yaml +1 -1
- package/.opencode/agents/qe-product-factors-assessor.yaml +1 -1
- package/.opencode/agents/qe-property-tester.yaml +1 -1
- package/.opencode/agents/qe-quality-criteria-recommender.yaml +1 -1
- package/.opencode/agents/qe-quality-gate.yaml +1 -1
- package/.opencode/agents/qe-queen-coordinator.yaml +1 -1
- package/.opencode/agents/qe-qx-partner.yaml +1 -1
- package/.opencode/agents/qe-regression-analyzer.yaml +1 -1
- package/.opencode/agents/qe-requirements-validator.yaml +1 -1
- package/.opencode/agents/qe-responsive-tester.yaml +1 -1
- package/.opencode/agents/qe-retry-handler.yaml +1 -1
- package/.opencode/agents/qe-risk-assessor.yaml +1 -1
- package/.opencode/agents/qe-root-cause-analyzer.yaml +1 -1
- package/.opencode/agents/qe-sap-idoc-tester.yaml +1 -1
- package/.opencode/agents/qe-sap-rfc-tester.yaml +1 -1
- package/.opencode/agents/qe-security-auditor.yaml +1 -1
- package/.opencode/agents/qe-security-scanner.yaml +1 -1
- package/.opencode/agents/qe-soap-tester.yaml +1 -1
- package/.opencode/agents/qe-sod-analyzer.yaml +1 -1
- package/.opencode/agents/qe-tdd-specialist.yaml +1 -1
- package/.opencode/agents/qe-test-generator.yaml +1 -1
- package/.opencode/agents/qe-test-idea-rewriter.yaml +1 -1
- package/.opencode/agents/qe-transfer-specialist.yaml +1 -1
- package/.opencode/agents/qe-visual-tester.yaml +1 -1
- package/.opencode/agents/security-architect.yaml +1 -1
- package/.opencode/agents/security-auditor.yaml +1 -1
- package/CHANGELOG.md +204 -0
- package/README.md +7 -2
- package/assets/agents/v3/helpers/advisor-call.cjs +3 -3
- package/assets/agents/v3/qe-coverage-specialist.md +1 -1
- package/assets/agents/v3/qe-fleet-commander.md +1 -1
- package/assets/agents/v3/qe-pentest-validator.md +1 -1
- package/assets/agents/v3/qe-queen-coordinator.md +1 -1
- package/assets/agents/v3/qe-risk-assessor.md +1 -1
- package/assets/agents/v3/qe-root-cause-analyzer.md +1 -1
- package/assets/agents/v3/qe-security-auditor.md +1 -1
- package/assets/agents/v3/qe-test-architect.md +1 -1
- package/assets/skills/.validation/examples/chaos-engineering-output.example.json +1 -1
- package/assets/skills/.validation/examples/performance-testing-output.example.json +1 -1
- package/assets/skills/.validation/examples/security-testing-output.example.json +1 -1
- package/assets/skills/.validation/examples/testability-scoring-output.example.json +1 -1
- package/assets/skills/.validation/schemas/skill-eval.schema.json +4 -1
- package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +1 -1
- package/assets/skills/.validation/schemas/skill-output.template.json +1 -1
- package/assets/skills/.validation/templates/eval.template.yaml +1 -1
- package/assets/skills/.validation/templates/security-testing-eval.template.yaml +1 -1
- package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
- package/assets/skills/.validation/test-data/sample-output.json +1 -1
- package/assets/skills/a11y-ally/SKILL.md +1 -1
- package/assets/skills/a11y-ally/evals/a11y-ally.yaml +1 -1
- package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +1 -1
- package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +1 -1
- package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
- package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +1 -1
- package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +1 -1
- package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1 -1
- package/assets/skills/contract-testing/evals/contract-testing.yaml +1 -1
- package/assets/skills/database-testing/evals/database-testing.yaml +1 -1
- package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +1 -1
- package/assets/skills/localization-testing/evals/localization-testing.yaml +1 -1
- package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +1 -1
- package/assets/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
- package/assets/skills/mutation-testing/evals/mutation-testing.yaml +1 -1
- package/assets/skills/mutation-testing/test-data/sample-output.json +1 -1
- package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +1 -1
- package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +1 -1
- package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +1 -1
- package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +1 -1
- package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +1 -1
- package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +1 -1
- package/assets/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
- package/assets/skills/performance-testing/evals/performance-testing.yaml +1 -1
- package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +1 -1
- package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +1 -1
- package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +1 -1
- package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +1 -1
- package/assets/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +1 -1
- package/assets/skills/qe-browser/evals/qe-browser.yaml +1 -1
- package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
- package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
- package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
- package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
- package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +2 -2
- package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
- package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
- package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
- package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +1 -1
- package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +1 -1
- package/assets/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
- package/assets/skills/regression-testing/evals/regression-testing.yaml +1 -1
- package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +1 -1
- package/assets/skills/security-testing/evals/security-testing.yaml +1 -1
- package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +1 -1
- package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +1 -1
- package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +1 -1
- package/assets/skills/skills-manifest.json +1 -1
- package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +1 -1
- package/assets/skills/test-data-management/evals/test-data-management.yaml +1 -1
- package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +1 -1
- package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +1 -1
- package/assets/skills/testability-scoring/evals/testability-scoring.yaml +1 -1
- package/assets/skills/validation-pipeline/evals/validation-pipeline.yaml +1 -1
- package/assets/skills/verification-quality/evals/verification-quality.yaml +1 -1
- package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +1 -1
- package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +1 -1
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/audit/witness-chain.js +29 -22
- package/dist/cli/bundle.js +13 -10
- package/dist/cli/chunks/adapter-IYC62SXA.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-TQOMLWWX.js → agent-booster-wasm-EDNKP3SP.js} +2 -2
- package/dist/cli/chunks/{agent-handler-Q3SEMMI2.js → agent-handler-V6CZ7Q6S.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-SJXAQSZI.js → agent-memory-branch-ZMD6ULC3.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-LLOU2IXD.js +2 -0
- package/dist/cli/chunks/{arena-7RC7TBGW.js → arena-4UPAEHFT.js} +4 -4
- package/dist/cli/chunks/{arena-UPB7TKUY.js → arena-QLSBESC7.js} +2 -2
- package/dist/cli/chunks/{audit-IXN5R4WB.js → audit-CVZQMF55.js} +3 -3
- package/dist/cli/chunks/base-P3Z4IKCT.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-RP4DEGK3.js → better-sqlite3-4DSBPDRH.js} +2 -2
- package/dist/cli/chunks/brain-handler-GBY4EZ4P.js +94 -0
- package/dist/cli/chunks/{branch-enumerator-VPRWDGFJ.js → branch-enumerator-XYBVXCNO.js} +2 -2
- package/dist/cli/chunks/{browser-B6E7JPPJ.js → browser-32F6MREU.js} +2 -2
- package/dist/cli/chunks/browser-workflow-YYHQQ25X.js +2 -0
- package/dist/cli/chunks/{chunk-HOQQCY2K.js → chunk-2JGEZHWY.js} +2 -2
- package/dist/cli/chunks/{chunk-NN76NTOX.js → chunk-2KJQ2UQE.js} +1 -1
- package/dist/cli/chunks/{chunk-D4Z2N74A.js → chunk-2OMLTYQK.js} +1 -1
- package/dist/cli/chunks/chunk-37TUN44F.js +4 -0
- package/dist/cli/chunks/{chunk-LVLBIKJD.js → chunk-3DDXWYMO.js} +1 -1
- package/dist/cli/chunks/{chunk-UHQY3GK7.js → chunk-3EZ5DR2R.js} +3 -3
- package/dist/cli/chunks/{chunk-3P6NCFI2.js → chunk-3KDL6QDK.js} +2 -2
- package/dist/cli/chunks/{chunk-SG47AXJG.js → chunk-3VIXOHMS.js} +1 -1
- package/dist/cli/chunks/{chunk-7FYMDKQH.js → chunk-3YUB5HER.js} +165 -167
- package/dist/cli/chunks/chunk-4FWTLJEP.js +16 -0
- package/dist/cli/chunks/{chunk-PI74GOE4.js → chunk-52L77RMG.js} +2 -2
- package/dist/cli/chunks/{chunk-LS3EUMBP.js → chunk-5D36YHS3.js} +5 -5
- package/dist/cli/chunks/{chunk-EY4OQHU3.js → chunk-5WOSWNDN.js} +1 -1
- package/dist/cli/chunks/{chunk-F67AV5P2.js → chunk-67YV75XP.js} +2 -2
- package/dist/cli/chunks/{chunk-IP7NSFQQ.js → chunk-6A44AOGN.js} +2 -2
- package/dist/cli/chunks/{chunk-3ABRGG3C.js → chunk-6CR4VQBQ.js} +2 -2
- package/dist/cli/chunks/chunk-6ITZZIQX.js +2 -0
- package/dist/cli/chunks/{chunk-7BUERZYL.js → chunk-6LKDHEBY.js} +2 -2
- package/dist/cli/chunks/{chunk-FKG5OQFT.js → chunk-6TU7FEMD.js} +1 -1
- package/dist/cli/chunks/{chunk-KF63AYXD.js → chunk-6VAZAHQG.js} +2 -2
- package/dist/cli/chunks/{chunk-XXCYQXK3.js → chunk-73EI4C2E.js} +2 -2
- package/dist/cli/chunks/chunk-75QJ5HWE.js +14 -0
- package/dist/cli/chunks/{chunk-72UJXEKQ.js → chunk-7CD7PBHY.js} +2 -2
- package/dist/cli/chunks/chunk-7DETTOPZ.js +14 -0
- package/dist/cli/chunks/{chunk-7JQHPANT.js → chunk-7JZJJA7U.js} +3 -3
- package/dist/cli/chunks/{chunk-5Y5TC6BY.js → chunk-7VFY7TUR.js} +2 -2
- package/dist/cli/chunks/chunk-7X7JYWT4.js +27 -0
- package/dist/cli/chunks/chunk-AF4XKLXO.js +2 -0
- package/dist/cli/chunks/{chunk-7SLAZAVU.js → chunk-AFEDJ3RU.js} +2 -2
- package/dist/cli/chunks/{chunk-ZUG5MOUB.js → chunk-AMMQOV35.js} +2 -2
- package/dist/cli/chunks/{chunk-ZN3J6TZD.js → chunk-BHFR2EXL.js} +1 -1
- package/dist/cli/chunks/{chunk-HXE5NBJG.js → chunk-BJPL6THQ.js} +1 -1
- package/dist/cli/chunks/{chunk-37BASGWC.js → chunk-BXVAVFGU.js} +2 -2
- package/dist/cli/chunks/{chunk-VWNHKYK7.js → chunk-BYG36QC5.js} +2 -2
- package/dist/cli/chunks/chunk-C3HQL6S4.js +2 -0
- package/dist/cli/chunks/{chunk-OY7MLMEX.js → chunk-C3Z4VVHP.js} +5 -5
- package/dist/cli/chunks/{chunk-CB5JPRIZ.js → chunk-CPC7FN52.js} +2 -2
- package/dist/cli/chunks/{chunk-OVDKWCD7.js → chunk-CVMNJSCB.js} +2 -2
- package/dist/cli/chunks/{chunk-N4H2QOT5.js → chunk-CYE2TJFV.js} +2 -2
- package/dist/cli/chunks/{chunk-YCBDE2N7.js → chunk-CZO4BJG5.js} +2 -2
- package/dist/cli/chunks/{chunk-YEXPFHV6.js → chunk-D6OUCB2H.js} +2 -2
- package/dist/cli/chunks/{chunk-JRYZKBY2.js → chunk-DDCIYOGT.js} +2 -2
- package/dist/cli/chunks/{chunk-XX7HUSX2.js → chunk-DKUBQQFG.js} +2 -2
- package/dist/cli/chunks/{chunk-SGXSB7YO.js → chunk-DLF5BOJD.js} +1 -1
- package/dist/cli/chunks/{chunk-5BLFXQEB.js → chunk-DO6EI5KB.js} +1 -1
- package/dist/cli/chunks/{chunk-33VPWGCM.js → chunk-DPBRWP4J.js} +3 -3
- package/dist/cli/chunks/{chunk-H6XBM2LY.js → chunk-E3W6XQ57.js} +2 -2
- package/dist/cli/chunks/{chunk-KPMGTVB4.js → chunk-E4AZXCT5.js} +1 -1
- package/dist/cli/chunks/chunk-E4EYPYR3.js +2 -0
- package/dist/cli/chunks/{chunk-TFHQE6NK.js → chunk-EFV4ADMO.js} +4 -4
- package/dist/cli/chunks/{chunk-VIDBBB6F.js → chunk-ELBZON4V.js} +2 -2
- package/dist/cli/chunks/chunk-EOR2UT72.js +2 -0
- package/dist/cli/chunks/{chunk-H5ZRV5K5.js → chunk-F34OAHOM.js} +2 -2
- package/dist/cli/chunks/{chunk-UMENRGHK.js → chunk-FUNGTIF2.js} +2 -2
- package/dist/cli/chunks/{chunk-DBA3N742.js → chunk-G3L5L6YQ.js} +1 -1
- package/dist/cli/chunks/{chunk-ELU4IC3I.js → chunk-G3W6BMVJ.js} +1 -1
- package/dist/cli/chunks/{chunk-RTJ2M6V6.js → chunk-GTKCGPJZ.js} +3 -3
- package/dist/cli/chunks/chunk-HBCGYMQU.js +2 -0
- package/dist/cli/chunks/{chunk-YL7T3VV7.js → chunk-HSVKZ5KI.js} +4 -4
- package/dist/cli/chunks/{chunk-MXMFGSWR.js → chunk-HVU64GP5.js} +2 -2
- package/dist/cli/chunks/chunk-HVXJC3OC.js +2 -0
- package/dist/cli/chunks/chunk-HYEJJJY3.js +4 -0
- package/dist/cli/chunks/{chunk-CR3QGHVN.js → chunk-I2NENQ44.js} +2 -2
- package/dist/cli/chunks/{chunk-GNTVFN7D.js → chunk-I6X3EGJI.js} +1 -1
- package/dist/cli/chunks/{chunk-2GNRW3OD.js → chunk-IGBEJ4UJ.js} +2 -2
- package/dist/cli/chunks/{chunk-UYJHYMEQ.js → chunk-IIAR5S7Q.js} +2 -2
- package/dist/cli/chunks/{chunk-YAKS3CAB.js → chunk-IJHCIXJC.js} +2 -2
- package/dist/cli/chunks/{chunk-YDNSLLBS.js → chunk-IUDWEOLX.js} +2 -2
- package/dist/cli/chunks/chunk-IUHB5GVS.js +3 -0
- package/dist/cli/chunks/{chunk-4UDZLD42.js → chunk-IYTLXUBO.js} +2 -2
- package/dist/cli/chunks/chunk-J27F4NSB.js +2 -0
- package/dist/cli/chunks/{chunk-HRUU7E3D.js → chunk-J5UNP6W3.js} +2 -2
- package/dist/cli/chunks/{chunk-E3FBW6G2.js → chunk-JES6R5KP.js} +1 -1
- package/dist/cli/chunks/chunk-JROVR6YS.js +11 -0
- package/dist/cli/chunks/chunk-JSZ663MU.js +2 -0
- package/dist/cli/chunks/{chunk-FUE6LL72.js → chunk-JVQBWYHW.js} +2 -2
- package/dist/cli/chunks/{chunk-G6ZHTF42.js → chunk-K27SU3RE.js} +2 -2
- package/dist/cli/chunks/chunk-K7NJHFLZ.js +54 -0
- package/dist/cli/chunks/{chunk-MDZ6RRLX.js → chunk-KEY43ANX.js} +2 -2
- package/dist/cli/chunks/chunk-KIP6WZGV.js +13 -0
- package/dist/cli/chunks/{chunk-SQ3PPISY.js → chunk-KKHYJF5U.js} +1 -1
- package/dist/cli/chunks/{chunk-TJEIOE7F.js → chunk-KLTP5IDB.js} +1 -1
- package/dist/cli/chunks/{chunk-IKIITGU5.js → chunk-KO4FNAUR.js} +4 -4
- package/dist/cli/chunks/{chunk-DX3C5HPN.js → chunk-KYA5LARK.js} +1 -1
- package/dist/cli/chunks/{chunk-ZHXWGNYM.js → chunk-LSUILON7.js} +1 -1
- package/dist/cli/chunks/chunk-LULD4JV2.js +15 -0
- package/dist/cli/chunks/{chunk-MWWAMDHI.js → chunk-M23ZOZVY.js} +1 -1
- package/dist/cli/chunks/{chunk-RKJZWWB7.js → chunk-M5AEL7IS.js} +2 -2
- package/dist/cli/chunks/chunk-MI5Q55DG.js +65 -0
- package/dist/cli/chunks/chunk-N7H767TP.js +4 -0
- package/dist/cli/chunks/{chunk-5F6DWHQG.js → chunk-NQI7FWCS.js} +2 -2
- package/dist/cli/chunks/{chunk-LLVGTEHU.js → chunk-NRE4NAVA.js} +1 -1
- package/dist/cli/chunks/{chunk-XA7CG3LH.js → chunk-NU7UTXMP.js} +2 -2
- package/dist/cli/chunks/chunk-NVYBM3R4.js +2 -0
- package/dist/cli/chunks/chunk-O3JTQ7N4.js +2 -0
- package/dist/cli/chunks/{chunk-TISSZFHO.js → chunk-OEIQTWQP.js} +1 -1
- package/dist/cli/chunks/{chunk-2IGT5WNQ.js → chunk-PSPKSUF6.js} +1 -1
- package/dist/cli/chunks/{chunk-B7SWW5A6.js → chunk-QIRL6B3C.js} +2 -2
- package/dist/cli/chunks/{chunk-JBB7E26R.js → chunk-QRCIZFNK.js} +2 -2
- package/dist/cli/chunks/{chunk-4JBFJTHJ.js → chunk-QWUXCG2L.js} +1 -1
- package/dist/cli/chunks/{chunk-B5XFDFBT.js → chunk-QYOGD2VW.js} +1 -1
- package/dist/cli/chunks/chunk-QZMUXJHZ.js +2 -0
- package/dist/cli/chunks/chunk-R6IU3EWP.js +2 -0
- package/dist/cli/chunks/{chunk-G5C2XVZC.js → chunk-R74ZKREV.js} +1 -1
- package/dist/cli/chunks/chunk-RD2VGOUH.js +2 -0
- package/dist/cli/chunks/{chunk-OV5EZO3U.js → chunk-RD6TEZ64.js} +2 -2
- package/dist/cli/chunks/{chunk-4C6UJIHB.js → chunk-RGGK6VZ7.js} +1 -1
- package/dist/cli/chunks/{chunk-4XPPMADQ.js → chunk-RIZVC4XY.js} +6 -6
- package/dist/cli/chunks/{chunk-4RP5VUBI.js → chunk-RKOUXVZZ.js} +2 -2
- package/dist/cli/chunks/{chunk-IFFZR6GY.js → chunk-RP2ZKPYV.js} +1 -1
- package/dist/cli/chunks/{chunk-BN7DKW5D.js → chunk-SQF6HRXR.js} +1 -1
- package/dist/cli/chunks/chunk-SQKW3B6B.js +2 -0
- package/dist/cli/chunks/{chunk-LKN7JQTW.js → chunk-SX4JLSLV.js} +2 -2
- package/dist/cli/chunks/{chunk-YGB6R5DW.js → chunk-TUSSPKRM.js} +1 -1
- package/dist/cli/chunks/{chunk-LHGNNZ76.js → chunk-TY5WC3FT.js} +3 -3
- package/dist/cli/chunks/{chunk-B2ZONZPZ.js → chunk-UDHVCKGA.js} +2 -2
- package/dist/cli/chunks/{chunk-IU4EBTA2.js → chunk-UJWAWIRV.js} +4 -4
- package/dist/cli/chunks/{chunk-LTBCAFTZ.js → chunk-UKGXWW64.js} +3 -3
- package/dist/cli/chunks/{chunk-JV4FZUE7.js → chunk-UMGFMKDW.js} +2 -2
- package/dist/cli/chunks/{chunk-STRDSVH3.js → chunk-URVHZPWY.js} +2 -2
- package/dist/cli/chunks/{chunk-PZTVH2AS.js → chunk-UTBYJ4RF.js} +2 -2
- package/dist/cli/chunks/{chunk-ZK5JKHP4.js → chunk-VD5IO5EO.js} +1 -1
- package/dist/cli/chunks/chunk-VTOVWHEM.js +2 -0
- package/dist/cli/chunks/{chunk-OYMLHX2B.js → chunk-W2XCZU62.js} +1 -1
- package/dist/cli/chunks/{chunk-T35GZXTU.js → chunk-WJHWH5D2.js} +2 -2
- package/dist/cli/chunks/{chunk-NBWQBQO5.js → chunk-WJTSY5MC.js} +1 -1
- package/dist/cli/chunks/{chunk-NTSXHZTC.js → chunk-WK7B4B6Y.js} +4 -4
- package/dist/cli/chunks/{chunk-2WT7AKKK.js → chunk-WLXK2KNU.js} +2 -2
- package/dist/cli/chunks/chunk-WOIGKU2N.js +180 -0
- package/dist/cli/chunks/{chunk-WYMGK5DX.js → chunk-WX6RRIGW.js} +2 -2
- package/dist/cli/chunks/{chunk-C46DMCWF.js → chunk-XEZIIQYJ.js} +2 -2
- package/dist/cli/chunks/{chunk-TTMHIOQ3.js → chunk-XFPPERA2.js} +2 -2
- package/dist/cli/chunks/{chunk-OVPJQWHW.js → chunk-XLAUGSW7.js} +2 -2
- package/dist/cli/chunks/{chunk-V4AOVDCJ.js → chunk-XQSIRBKT.js} +8 -8
- package/dist/cli/chunks/{chunk-4Q35TI6Z.js → chunk-XUR2M2WB.js} +2 -2
- package/dist/cli/chunks/{chunk-5IAB5NRZ.js → chunk-XZSMZHM2.js} +2 -2
- package/dist/cli/chunks/{chunk-AB4U6ZNI.js → chunk-Y5L3ES4L.js} +2 -2
- package/dist/cli/chunks/chunk-YDFL445W.js +2 -0
- package/dist/cli/chunks/{chunk-7G6UX2QN.js → chunk-YQGPQBCX.js} +2 -2
- package/dist/cli/chunks/{chunk-5FOZO7KM.js → chunk-YXP6BKGS.js} +46 -46
- package/dist/cli/chunks/chunk-ZBABIZ2D.js +2 -0
- package/dist/cli/chunks/{chunk-IQEJGZV6.js → chunk-ZCWERUYB.js} +4 -4
- package/dist/cli/chunks/ci-RACDAJMR.js +81 -0
- package/dist/cli/chunks/{ci-output-LK3MBXLZ.js → ci-output-EHRSZBKG.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-7AIXACR7.js → circuit-breaker-GBV7M5XG.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-UA7EO6VN.js → claude-flow-setup-5LVJOFKP.js} +2 -2
- package/dist/cli/chunks/client-HUVFA5PF.js +2 -0
- package/dist/cli/chunks/{cline-installer-YDDCKKEV.js → cline-installer-W4NMXJSG.js} +2 -2
- package/dist/cli/chunks/{code-URB7UAKW.js → code-JWXJMYXB.js} +29 -29
- package/dist/cli/chunks/{code-index-extractor-BL6HWH4Q.js → code-index-extractor-RVI2IFTM.js} +2 -2
- package/dist/cli/chunks/codex-installer-3BORJINH.js +14 -0
- package/dist/cli/chunks/{completions-RCKBSSSS.js → completions-A55NCTAO.js} +2 -2
- package/dist/cli/chunks/complexity-analyzer-JCXHGGLY.js +2 -0
- package/dist/cli/chunks/{continuedev-installer-VOTCEBFH.js → continuedev-installer-PUVFMGYW.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-NVTGLZX3.js → copilot-installer-4DCMYWHB.js} +2 -2
- package/dist/cli/chunks/core-handlers-UEXO3VAA.js +2 -0
- package/dist/cli/chunks/cost-tracker-5TV2GGKY.js +2 -0
- package/dist/cli/chunks/{coverage-ZTPJWXWE.js → coverage-NNWM7TX3.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-ODU5IZD6.js +2 -0
- package/dist/cli/chunks/{cursor-installer-CMGJQMHX.js → cursor-installer-4NCHGJGK.js} +2 -2
- package/dist/cli/chunks/{daemon-Y2I3YVIU.js → daemon-QIKCXKWO.js} +4 -4
- package/dist/cli/chunks/{daemon-V456IWR3.js → daemon-T4JO4IXP.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-ZCBBOD3D.js → dag-attention-scheduler-RPAAIDAD.js} +2 -2
- package/dist/cli/chunks/{detect-2GHEA4A3.js → detect-SBEEVDSN.js} +2 -2
- package/dist/cli/chunks/{dist-node-44AGYJCH.js → dist-node-ZHI6NCSU.js} +2 -2
- package/dist/cli/chunks/{domain-handler-IDLIEP6X.js → domain-handler-LBC3GJ7Z.js} +2 -2
- package/dist/cli/chunks/domain-plugins-H6IZ5USZ.js +2 -0
- package/dist/cli/chunks/{domain-transfer-KLEXGIRF.js → domain-transfer-JZA5TMW3.js} +2 -2
- package/dist/cli/chunks/dream-HE3OX42F.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-AHTR7CRU.js +3 -0
- package/dist/cli/chunks/eval-DZU2KISM.js +17 -0
- package/dist/cli/chunks/{experience-capture-middleware-CJJJN7CF.js → experience-capture-middleware-5IQCWKSL.js} +4 -4
- package/dist/cli/chunks/{fast-paths-LGLLKX6P.js → fast-paths-2KLDUWCY.js} +2 -2
- package/dist/cli/chunks/{feature-flags-33D3I4DD.js → feature-flags-7AC3XDZA.js} +2 -2
- package/dist/cli/chunks/{feature-flags-QL4NCEGW.js → feature-flags-N6UAEZY4.js} +2 -2
- package/dist/cli/chunks/{file-discovery-GKCYJPFZ.js → file-discovery-5SDIW4V2.js} +2 -2
- package/dist/cli/chunks/fleet-ZIQCAZ2Y.js +43 -0
- package/dist/cli/chunks/{gnn-wrapper-ELSGT67Z.js → gnn-wrapper-DUMBZJEV.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ZUI3DOOP.js → heartbeat-handler-6HVM6ZMR.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-QUIFGGLX.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-42KB37KP.js +2 -0
- package/dist/cli/chunks/hnsw-index-T2PGO77J.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-EZMM5JWL.js → hnsw-legacy-bridge-5DRL5FLX.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-G4CE3EOS.js → hnswlib-node-GW67GTCL.js} +2 -2
- package/dist/cli/chunks/{hooks-LCVXXA55.js → hooks-QHH6FVO4.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-FRNWYRKH.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-6Z7RQ3HI.js → hypergraph-engine-7XDCCVG2.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-PLI2GYPK.js → hypergraph-handler-QHF7NOU5.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-A5QYOYBR.js +2 -0
- package/dist/cli/chunks/{init-handler-7VH3QJ5Y.js → init-handler-5UIVOM7K.js} +6 -6
- package/dist/cli/chunks/init-wizard-XBU674YH.js +2 -0
- package/dist/cli/chunks/kernel-DV5MTNZD.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-U3MW62DE.js → kilocode-installer-TGGV6K5Q.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-PPEAC44T.js → kiro-installer-4XYBHZWW.js} +12 -12
- package/dist/cli/chunks/knowledge-graph-4ACGVJQK.js +2 -0
- package/dist/cli/chunks/learning-STE5W6BS.js +122 -0
- package/dist/cli/chunks/llm-router-NKF7J3RI.js +37 -0
- package/dist/cli/chunks/llm-router-service-PSMASERT.js +2 -0
- package/dist/cli/chunks/{load-VO7ABNHV.js → load-B2T77UJQ.js} +2 -2
- package/dist/cli/chunks/load-test-MRUO2VPF.js +2 -0
- package/dist/cli/chunks/mcp-JGSFCEMH.js +2 -0
- package/dist/cli/chunks/{memory-FZTT7ADM.js → memory-WRFZKG56.js} +6 -6
- package/dist/cli/chunks/memory-backend-2MPGI6JW.js +2 -0
- package/dist/cli/chunks/memory-handlers-XT4HMITB.js +2 -0
- package/dist/cli/chunks/multi-model-executor-26Q5BSVG.js +14 -0
- package/dist/cli/chunks/{opencode-installer-GQ7J5SBG.js → opencode-installer-J36EMQU7.js} +2 -2
- package/dist/cli/chunks/{orchestrator-66JK2OS5.js → orchestrator-D5IFV65I.js} +20 -20
- package/dist/cli/chunks/pattern-null-store-TGWUL237.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-O6XHM2G5.js → pattern-usage-recorder-BVMTWI3E.js} +2 -2
- package/dist/cli/chunks/pipeline-OWAHDUAQ.js +19 -0
- package/dist/cli/chunks/platform-ANGBFWBV.js +2 -0
- package/dist/cli/chunks/{plugin-7OFLNGOS.js → plugin-OO7ON2YW.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-OSRDK2FW.js → prime-radiant-advanced-wasm-HFG3BXWU.js} +2 -2
- package/dist/cli/chunks/project-root-LNOYVTYY.js +2 -0
- package/dist/cli/chunks/protocol-executor-GEVH5KD6.js +2 -0
- package/dist/cli/chunks/{protocol-handler-WLYTX6FS.js → protocol-handler-CE3Q6LY4.js} +2 -2
- package/dist/cli/chunks/{prove-QVNE4V3J.js → prove-7XPN53PY.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-DJ2JL6QB.js +2 -0
- package/dist/cli/chunks/{quality-DNE2RKE5.js → quality-TT23JRFX.js} +2 -2
- package/dist/cli/chunks/{quality-gate-2K35GCSI.js → quality-gate-PPPRP255.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-F7E3AS26.js +2 -0
- package/dist/cli/chunks/real-embeddings-EYNZIFJE.js +2 -0
- package/dist/cli/chunks/ref-validation-QQR64ZXD.js +2 -0
- package/dist/cli/chunks/{roocode-installer-NCEZPF5L.js → roocode-installer-UIGS7ZJD.js} +2 -2
- package/dist/cli/chunks/router-OZH3QSAU.js +2 -0
- package/dist/cli/chunks/routing-feedback-J2E3ADZB.js +2 -0
- package/dist/cli/chunks/{routing-handler-4MXXZRYP.js → routing-handler-6AENUIRG.js} +4 -4
- package/dist/cli/chunks/{ruvector-commands-WDFMMCMK.js → ruvector-commands-5AWMEV34.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-HK525Y5Y.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-Q7FB3BKR.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-NWRJ7C22.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-5ZRCGUI6.js +2 -0
- package/dist/cli/chunks/rvf-store-integrity-ISKRP563.js +2 -0
- package/dist/cli/chunks/safe-db-3OYEPVEH.js +2 -0
- package/dist/cli/chunks/schedule-AG4C2EIQ.js +2 -0
- package/dist/cli/chunks/scheduler-SQS2CZFZ.js +2 -0
- package/dist/cli/chunks/{security-CJJ3WJSB.js → security-325A7FMB.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-6RGCTLHD.js → shared-rvf-adapter-NFL6QSZ6.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-KIA6Q6MT.js → shared-rvf-dual-writer-THFDYS2Z.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-MAKDFSHC.js +2 -0
- package/dist/cli/chunks/standalone-memory-UD4MJ6GZ.js +2 -0
- package/dist/cli/chunks/{status-handler-BADQV2KA.js → status-handler-CPFTN4XL.js} +2 -2
- package/dist/cli/chunks/{structural-health-VMYEYRZG.js → structural-health-2MG2IVBL.js} +2 -2
- package/dist/cli/chunks/{sync-PXLROLHB.js → sync-EE4VVKOW.js} +2 -2
- package/dist/cli/chunks/{sync-ULY7T5II.js → sync-MBTW5XBF.js} +2 -2
- package/dist/cli/chunks/task-handler-7H5OYJG4.js +54 -0
- package/dist/cli/chunks/task-handlers-NH4GJHCJ.js +9 -0
- package/dist/cli/chunks/{test-WCLURQUT.js → test-MPHGT4T6.js} +4 -4
- package/dist/cli/chunks/test-scheduling-CHQ4ZLLJ.js +15 -0
- package/dist/cli/chunks/token-bootstrap-SSDCYEKK.js +2 -0
- package/dist/cli/chunks/{token-usage-DRVG6PKO.js → token-usage-EBXUJNRB.js} +2 -2
- package/dist/cli/chunks/{transformers-IMDDAMYQ.js → transformers-ZEKS2OJZ.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-WBZIHVFA.js → tree-sitter-wasm-parser-J6ZMAK37.js} +2 -2
- package/dist/cli/chunks/types-KYAA5VLV.js +2 -0
- package/dist/cli/chunks/unified-memory-DDWMC435.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-4JA7SGBK.js +2 -0
- package/dist/cli/chunks/unified-persistence-F6OSNTXY.js +2 -0
- package/dist/cli/chunks/{upgrade-6ALSDWDD.js → upgrade-UJBJ5AYM.js} +2 -2
- package/dist/cli/chunks/{validate-XF4ZG3LC.js → validate-RUV6YMWS.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-P5TAFRDA.js → validate-swarm-IVEVMGVM.js} +2 -2
- package/dist/cli/chunks/{vibium-2XDXKNKZ.js → vibium-HOGMFJ2Z.js} +2 -2
- package/dist/cli/chunks/visual-security-25SMBIYT.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-4JVRQPX5.js → web-tree-sitter-AVWA6HKE.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-WYJXVDO5.js → windsurf-installer-DAH7HI2W.js} +2 -2
- package/dist/cli/chunks/{witness-chain-RPZ2SE2V.js → witness-chain-PJOQPFUX.js} +2 -2
- package/dist/cli/chunks/witness-chain-ZW6KKUZU.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-LXG2VBQQ.js → witness-key-manager-JSTBMG43.js} +2 -2
- package/dist/cli/chunks/workflow-TWOIA6LZ.js +51 -0
- package/dist/cli/chunks/workflow-orchestrator-UKSIDM7Q.js +2 -0
- package/dist/cli/chunks/{wrappers-DIJNNFU6.js → wrappers-UR7BLXKV.js} +2 -2
- package/dist/cli/commands/ci.js +54 -28
- package/dist/cli/commands/code.js +6 -0
- package/dist/cli/commands/eval.js +3 -2
- package/dist/cli/commands/fleet.js +35 -16
- package/dist/cli/commands/learning-snapshot.d.ts +38 -0
- package/dist/cli/commands/learning-snapshot.js +171 -0
- package/dist/cli/commands/learning.js +16 -64
- package/dist/cli/commands/llm-router.js +13 -12
- package/dist/cli/commands/mcp.js +6 -0
- package/dist/cli/commands/memory.d.ts +1 -1
- package/dist/cli/commands/memory.js +8 -8
- package/dist/cli/commands/pipeline.js +9 -0
- package/dist/cli/commands/platform.js +15 -2
- package/dist/cli/commands/upgrade.d.ts +3 -3
- package/dist/cli/commands/upgrade.js +3 -3
- package/dist/cli/commands/workflow.js +9 -1
- package/dist/cli/handlers/init-handler.d.ts +10 -0
- package/dist/cli/handlers/task-handler.js +43 -12
- package/dist/cli/helpers/domain-plugins.d.ts +5 -0
- package/dist/cli/helpers/domain-plugins.js +11 -0
- package/dist/cli/helpers/standalone-memory.d.ts +12 -0
- package/dist/cli/helpers/standalone-memory.js +46 -0
- package/dist/cli/index.js +54 -49
- package/dist/cli/log-gate.d.ts +66 -0
- package/dist/cli/log-gate.js +170 -0
- package/dist/cli/utils/ci-config.d.ts +3 -0
- package/dist/context/sources/git-source.d.ts +2 -0
- package/dist/context/sources/git-source.js +9 -2
- package/dist/coordination/cancelled-task-settlement.d.ts +11 -0
- package/dist/coordination/cancelled-task-settlement.js +15 -0
- package/dist/coordination/consensus/providers/claude-provider.d.ts +2 -2
- package/dist/coordination/consensus/providers/claude-provider.js +18 -25
- package/dist/coordination/consensus/providers/gemini-provider.d.ts +14 -4
- package/dist/coordination/consensus/providers/gemini-provider.js +39 -36
- package/dist/coordination/consensus/providers/ollama-provider.d.ts +8 -7
- package/dist/coordination/consensus/providers/ollama-provider.js +16 -18
- package/dist/coordination/consensus/providers/openai-provider.d.ts +14 -4
- package/dist/coordination/consensus/providers/openai-provider.js +36 -34
- package/dist/coordination/consensus/providers/openrouter-provider.d.ts +5 -5
- package/dist/coordination/consensus/providers/openrouter-provider.js +64 -37
- package/dist/coordination/handlers/test-execution-handlers.js +5 -3
- package/dist/coordination/interfaces.d.ts +2 -2
- package/dist/coordination/protocol-executor.js +68 -9
- package/dist/coordination/queen-coordinator.js +10 -4
- package/dist/coordination/queen-event-handlers.js +17 -0
- package/dist/coordination/queen-task-management.js +25 -0
- package/dist/coordination/queen-types.d.ts +2 -0
- package/dist/coordination/task-executor.js +4 -8
- package/dist/coordination/workflow-composition.d.ts +19 -0
- package/dist/coordination/workflow-composition.js +114 -0
- package/dist/coordination/workflow-orchestrator.d.ts +3 -2
- package/dist/coordination/workflow-orchestrator.js +219 -85
- package/dist/coordination/workflow-types.d.ts +30 -1
- package/dist/coordination/yaml-pipeline-loader.js +9 -5
- package/dist/domains/chaos-resilience/services/chaos-engineer.js +2 -7
- package/dist/domains/code-intelligence/services/knowledge-graph.js +2 -7
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +9 -40
- package/dist/domains/constants.d.ts +1 -6
- package/dist/domains/constants.js +2 -6
- package/dist/domains/contract-testing/services/contract-validator.js +2 -7
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +2 -12
- package/dist/domains/coverage-analysis/services/gap-detector.js +2 -7
- package/dist/domains/defect-intelligence/services/defect-predictor.js +2 -12
- package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +2 -7
- package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -7
- package/dist/domains/quality-assessment/services/deployment-advisor.js +2 -7
- package/dist/domains/quality-assessment/services/quality-analyzer.js +2 -7
- package/dist/domains/requirements-validation/services/requirements-validator.js +2 -7
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +3 -7
- package/dist/domains/test-execution/services/flaky-detector.js +33 -3
- package/dist/domains/test-execution/services/retry-handler.js +22 -14
- package/dist/domains/test-execution/services/test-executor.js +42 -21
- package/dist/domains/test-generation/services/test-generator.js +2 -7
- package/dist/domains/visual-accessibility/services/visual-tester.js +2 -7
- package/dist/init/codex-installer.js +18 -6
- package/dist/init/init-wizard-steps.js +1 -1
- package/dist/init/kiro-installer.js +9 -8
- package/dist/init/opencode-installer.js +1 -1
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/07-hooks.js +4 -2
- package/dist/init/phases/09-assets.d.ts +10 -0
- package/dist/init/phases/09-assets.js +3 -0
- package/dist/init/phases/12-verification.js +1 -1
- package/dist/init/settings-merge.d.ts +10 -3
- package/dist/init/settings-merge.js +40 -9
- package/dist/init/token-bootstrap.d.ts +1 -1
- package/dist/init/token-bootstrap.js +12 -2
- package/dist/init/types.d.ts +10 -0
- package/dist/integrations/agentic-flow/model-router/types.js +6 -8
- package/dist/integrations/ruvector/brain-exporter.js +26 -15
- package/dist/integrations/ruvector/brain-import-audit.d.ts +20 -0
- package/dist/integrations/ruvector/brain-import-audit.js +22 -0
- package/dist/integrations/ruvector/brain-rvf-exporter.js +33 -30
- package/dist/integrations/ruvector/brain-shared.d.ts +5 -1
- package/dist/integrations/ruvector/brain-shared.js +70 -4
- package/dist/integrations/ruvector/rvf-dual-writer.js +42 -16
- package/dist/integrations/ruvector/rvf-store-integrity.d.ts +14 -9
- package/dist/integrations/ruvector/rvf-store-integrity.js +39 -9
- package/dist/integrations/ruvector/shared-rvf-adapter.js +20 -23
- package/dist/kernel/hybrid-backend.d.ts +6 -0
- package/dist/kernel/hybrid-backend.js +18 -0
- package/dist/kernel/kernel.js +9 -14
- package/dist/kernel/memory-factory.js +14 -4
- package/dist/kernel/project-root.d.ts +1 -1
- package/dist/kernel/project-root.js +33 -10
- package/dist/kernel/unified-memory.js +1 -1
- package/dist/learning/embedder-identity-store.js +4 -3
- package/dist/learning/local-judge-client.d.ts +6 -5
- package/dist/learning/local-judge-client.js +7 -6
- package/dist/learning/pattern-store.js +34 -12
- package/dist/learning/real-embeddings.d.ts +8 -0
- package/dist/learning/real-embeddings.js +16 -0
- package/dist/learning/rvf-pattern-store.js +10 -3
- package/dist/mcp/bundle.js +480 -480
- package/dist/mcp/entry.js +2 -0
- package/dist/mcp/handlers/index.d.ts +1 -1
- package/dist/mcp/handlers/index.js +1 -1
- package/dist/mcp/handlers/memory-handlers.d.ts +6 -1
- package/dist/mcp/handlers/memory-handlers.js +44 -22
- package/dist/mcp/handlers/pipeline-handlers.d.ts +31 -1
- package/dist/mcp/handlers/pipeline-handlers.js +63 -0
- package/dist/mcp/handlers/task-handlers.d.ts +1 -0
- package/dist/mcp/handlers/task-handlers.js +26 -5
- package/dist/mcp/protocol-server.d.ts +2 -0
- package/dist/mcp/protocol-server.js +105 -49
- package/dist/mcp/security/sampling-server.js +2 -1
- package/dist/mcp/services/session-store.js +5 -1
- package/dist/mcp/tool-annotations.js +1 -1
- package/dist/mcp/tools/test-execution/schedule.js +7 -0
- package/dist/mcp/types.d.ts +5 -1
- package/dist/optimization/session-cache.d.ts +5 -0
- package/dist/optimization/session-cache.js +23 -0
- package/dist/plugins/cache.d.ts +2 -0
- package/dist/plugins/cache.js +15 -2
- package/dist/plugins/lifecycle.js +15 -2
- package/dist/plugins/manifest.js +7 -5
- package/dist/plugins/resolver.d.ts +13 -22
- package/dist/plugins/resolver.js +169 -61
- package/dist/plugins/version-policy.d.ts +13 -0
- package/dist/plugins/version-policy.js +18 -0
- package/dist/routing/advisor/multi-model-executor.d.ts +4 -1
- package/dist/routing/advisor/multi-model-executor.js +8 -1
- package/dist/routing/free-tier/ladder.d.ts +2 -1
- package/dist/routing/free-tier/ladder.js +3 -2
- package/dist/routing/security/cyber-pin.d.ts +35 -11
- package/dist/routing/security/cyber-pin.js +76 -14
- package/dist/routing/value-score.js +1 -1
- package/dist/shared/git/index.d.ts +1 -0
- package/dist/shared/git/index.js +1 -0
- package/dist/shared/git/ref-validation.d.ts +20 -0
- package/dist/shared/git/ref-validation.js +43 -0
- package/dist/shared/llm/anthropic-params.d.ts +40 -0
- package/dist/shared/llm/anthropic-params.js +51 -0
- package/dist/shared/llm/cost-tracker.d.ts +15 -2
- package/dist/shared/llm/cost-tracker.js +62 -10
- package/dist/shared/llm/index.d.ts +2 -2
- package/dist/shared/llm/index.js +2 -2
- package/dist/shared/llm/interfaces.d.ts +1 -1
- package/dist/shared/llm/metrics/cost-metrics.js +5 -4
- package/dist/shared/llm/model-mapping.js +131 -0
- package/dist/shared/llm/model-registry.d.ts +37 -11
- package/dist/shared/llm/model-registry.js +393 -18
- package/dist/shared/llm/openai-params.d.ts +35 -0
- package/dist/shared/llm/openai-params.js +54 -0
- package/dist/shared/llm/provider-manager.js +4 -3
- package/dist/shared/llm/providers/azure-openai.d.ts +11 -0
- package/dist/shared/llm/providers/azure-openai.js +26 -15
- package/dist/shared/llm/providers/bedrock.js +11 -19
- package/dist/shared/llm/providers/claude.js +6 -29
- package/dist/shared/llm/providers/codex.js +4 -3
- package/dist/shared/llm/providers/gemini.d.ts +3 -2
- package/dist/shared/llm/providers/gemini.js +19 -10
- package/dist/shared/llm/providers/ollama.d.ts +2 -0
- package/dist/shared/llm/providers/ollama.js +30 -20
- package/dist/shared/llm/providers/openai.js +10 -17
- package/dist/shared/llm/providers/openrouter.d.ts +1 -1
- package/dist/shared/llm/providers/openrouter.js +57 -21
- package/dist/shared/llm/router/agent-router-config.js +33 -32
- package/dist/shared/llm/router/hybrid-router.js +21 -9
- package/dist/shared/llm/router/routing-rules.js +9 -8
- package/dist/shared/llm/router/types.js +81 -13
- package/dist/shared/llm/translation/message-formatter.js +4 -23
- package/dist/shared/types/index.d.ts +6 -0
- package/dist/shared/types/index.js +8 -0
- package/dist/shared/vitest-json-report.d.ts +7 -7
- package/dist/shared/vitest-json-report.js +23 -14
- package/dist/test-scheduling/executors/vitest-executor.d.ts +7 -2
- package/dist/test-scheduling/executors/vitest-executor.js +157 -47
- package/dist/test-scheduling/git-aware/test-selector.js +3 -0
- package/dist/test-scheduling/phase-scheduler.d.ts +1 -0
- package/dist/test-scheduling/phase-scheduler.js +23 -1
- package/package.json +2 -1
- package/dist/cli/chunks/adapter-AKQYU6UH.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-MICRPL3N.js +0 -2
- package/dist/cli/chunks/base-DZK36ITB.js +0 -2
- package/dist/cli/chunks/brain-handler-H5OVZ22L.js +0 -90
- package/dist/cli/chunks/browser-workflow-ADK54DOE.js +0 -2
- package/dist/cli/chunks/chunk-26GM5CWD.js +0 -13
- package/dist/cli/chunks/chunk-42VSQ2MX.js +0 -4
- package/dist/cli/chunks/chunk-44WISFTU.js +0 -2
- package/dist/cli/chunks/chunk-4OUPCTBS.js +0 -16
- package/dist/cli/chunks/chunk-4TXAP3YH.js +0 -2
- package/dist/cli/chunks/chunk-4W7QVUNO.js +0 -2
- package/dist/cli/chunks/chunk-527HQAY7.js +0 -14
- package/dist/cli/chunks/chunk-5DFHE4H5.js +0 -180
- package/dist/cli/chunks/chunk-5P3G6ZW4.js +0 -2
- package/dist/cli/chunks/chunk-6F2RM6X2.js +0 -2
- package/dist/cli/chunks/chunk-74PK3NEW.js +0 -15
- package/dist/cli/chunks/chunk-7Y2CEXRS.js +0 -65
- package/dist/cli/chunks/chunk-AWNYEAGB.js +0 -2
- package/dist/cli/chunks/chunk-CBOPBYPU.js +0 -2
- package/dist/cli/chunks/chunk-FD2JFEQC.js +0 -2
- package/dist/cli/chunks/chunk-G6DCESPU.js +0 -2
- package/dist/cli/chunks/chunk-I4NDQGKP.js +0 -2
- package/dist/cli/chunks/chunk-L2GKMBDP.js +0 -2
- package/dist/cli/chunks/chunk-QLWNXBRU.js +0 -2
- package/dist/cli/chunks/chunk-R2AFVFRF.js +0 -2
- package/dist/cli/chunks/chunk-ROX7NLS4.js +0 -14
- package/dist/cli/chunks/chunk-SHGKY3QB.js +0 -2
- package/dist/cli/chunks/chunk-SJPZSCZP.js +0 -27
- package/dist/cli/chunks/chunk-T62DH4GG.js +0 -11
- package/dist/cli/chunks/chunk-TGLAWI62.js +0 -4
- package/dist/cli/chunks/chunk-UMNYF5EZ.js +0 -2
- package/dist/cli/chunks/chunk-UTVRQEZM.js +0 -54
- package/dist/cli/chunks/chunk-Y2DVFVGI.js +0 -2
- package/dist/cli/chunks/chunk-Y5SQBI2F.js +0 -2
- package/dist/cli/chunks/ci-YVKDQWIX.js +0 -81
- package/dist/cli/chunks/client-M72GXFVQ.js +0 -2
- package/dist/cli/chunks/codex-installer-2AVEO4EA.js +0 -14
- package/dist/cli/chunks/complexity-analyzer-LEDG62YK.js +0 -2
- package/dist/cli/chunks/core-handlers-C32RAMVI.js +0 -2
- package/dist/cli/chunks/cost-tracker-GJIFB2BM.js +0 -2
- package/dist/cli/chunks/cross-domain-router-UGFUCPKC.js +0 -2
- package/dist/cli/chunks/dream-UFBBXY5W.js +0 -2
- package/dist/cli/chunks/embed-and-insert-pattern-DUW6K35A.js +0 -3
- package/dist/cli/chunks/eval-PR6YWDFM.js +0 -17
- package/dist/cli/chunks/fleet-QNT6X2YI.js +0 -43
- package/dist/cli/chunks/heartbeat-scheduler-VQWHSGTY.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-BS3NXWGU.js +0 -2
- package/dist/cli/chunks/hnsw-index-JP26B4HW.js +0 -2
- package/dist/cli/chunks/impact-analyzer-WRE4CWPJ.js +0 -2
- package/dist/cli/chunks/init-wizard-OFOEYB75.js +0 -2
- package/dist/cli/chunks/kernel-MXNFWNUD.js +0 -2
- package/dist/cli/chunks/knowledge-graph-7JE2TVKJ.js +0 -2
- package/dist/cli/chunks/learning-7B5NITDV.js +0 -122
- package/dist/cli/chunks/llm-router-BNEPT5OB.js +0 -37
- package/dist/cli/chunks/llm-router-service-GTDVDKSU.js +0 -2
- package/dist/cli/chunks/load-test-JZ4CLSBF.js +0 -2
- package/dist/cli/chunks/mcp-THXEINCL.js +0 -2
- package/dist/cli/chunks/memory-backend-Q54CC5A5.js +0 -2
- package/dist/cli/chunks/memory-handlers-IIBJXKHZ.js +0 -2
- package/dist/cli/chunks/multi-model-executor-HEDVOZ6X.js +0 -14
- package/dist/cli/chunks/pattern-null-store-W33O7FYO.js +0 -2
- package/dist/cli/chunks/pipeline-UOG6UO6D.js +0 -19
- package/dist/cli/chunks/platform-Q7UH7FZQ.js +0 -2
- package/dist/cli/chunks/protocol-executor-VGN4M7XY.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-7VB5LJGS.js +0 -2
- package/dist/cli/chunks/queen-coordinator-HIDMJMMG.js +0 -2
- package/dist/cli/chunks/real-embeddings-SF42ML7G.js +0 -2
- package/dist/cli/chunks/router-CTIJS4D7.js +0 -2
- package/dist/cli/chunks/routing-feedback-LFYYZS5J.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-MNPMIWVM.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-DXOKSSNW.js +0 -2
- package/dist/cli/chunks/rvf-migration-coordinator-JT7ZCJY7.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-PZKUKA7R.js +0 -2
- package/dist/cli/chunks/rvf-store-integrity-Q3FGYKFT.js +0 -2
- package/dist/cli/chunks/safe-db-73BLFV2C.js +0 -2
- package/dist/cli/chunks/schedule-YVTGTTI4.js +0 -2
- package/dist/cli/chunks/scheduler-5DSAFIRQ.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-LRG4IPCU.js +0 -2
- package/dist/cli/chunks/task-handler-L7E2I267.js +0 -49
- package/dist/cli/chunks/task-handlers-6DPKE4AK.js +0 -9
- package/dist/cli/chunks/test-scheduling-4CNJA6TW.js +0 -15
- package/dist/cli/chunks/token-bootstrap-GTI24JAL.js +0 -2
- package/dist/cli/chunks/types-TXMY5M2K.js +0 -2
- package/dist/cli/chunks/unified-memory-VBQ572X4.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-J3L74ZRY.js +0 -2
- package/dist/cli/chunks/unified-persistence-EM2VYRTQ.js +0 -2
- package/dist/cli/chunks/visual-security-GX4S7K6O.js +0 -2
- package/dist/cli/chunks/witness-chain-QGKMHCNW.js +0 -2
- package/dist/cli/chunks/workflow-2OYNO7UU.js +0 -51
- package/dist/cli/chunks/workflow-orchestrator-KWHIJMFV.js +0 -2
|
@@ -29,7 +29,7 @@ handleTeamList, handleTeamHealth, handleTeamMessage, handleTeamBroadcast, handle
|
|
|
29
29
|
// BMAD-003: Validation pipeline handler
|
|
30
30
|
handleValidationPipeline,
|
|
31
31
|
// Imp-9: YAML pipeline handlers
|
|
32
|
-
handlePipelineLoad, handlePipelineRun, handlePipelineList, handlePipelineValidate,
|
|
32
|
+
handlePipelineLoad, handlePipelineRun, handlePipelineStatus, handlePipelineApprove, handlePipelineReject, handlePipelineList, handlePipelineValidate,
|
|
33
33
|
// Cross-phase handlers
|
|
34
34
|
handleCrossPhaseStore, handleCrossPhaseQuery, handleAgentComplete, handlePhaseStart, handlePhaseEnd, handleCrossPhaseStats, handleFormatSignals, handleCrossPhaseCleanup,
|
|
35
35
|
// ADR-072: RVF Migration handlers
|
|
@@ -44,6 +44,19 @@ import { ToolCallSignatureTracker } from '../kernel/anti-drift-middleware.js';
|
|
|
44
44
|
import { createRequire } from 'module';
|
|
45
45
|
const _require = createRequire(import.meta.url);
|
|
46
46
|
const _pkg = _require('../../package.json');
|
|
47
|
+
function toolExecutionError() {
|
|
48
|
+
return {
|
|
49
|
+
content: [{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: JSON.stringify({
|
|
52
|
+
success: false,
|
|
53
|
+
code: 'tool_execution_error',
|
|
54
|
+
error: 'Tool execution failed',
|
|
55
|
+
}),
|
|
56
|
+
}],
|
|
57
|
+
isError: true,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
47
60
|
// ============================================================================
|
|
48
61
|
// MCP Protocol Server
|
|
49
62
|
// ============================================================================
|
|
@@ -81,6 +94,15 @@ export class MCPProtocolServer {
|
|
|
81
94
|
return false;
|
|
82
95
|
return true;
|
|
83
96
|
}
|
|
97
|
+
/** A completed tool can legitimately report a negative domain verdict. */
|
|
98
|
+
isFailedToolResult(result) {
|
|
99
|
+
if (!result || typeof result !== 'object')
|
|
100
|
+
return false;
|
|
101
|
+
const value = result;
|
|
102
|
+
if (value.isError === true || value.success === false)
|
|
103
|
+
return true;
|
|
104
|
+
return value.success !== true && typeof value.error === 'string' && value.error.length > 0;
|
|
105
|
+
}
|
|
84
106
|
config;
|
|
85
107
|
transport;
|
|
86
108
|
registry;
|
|
@@ -167,14 +189,10 @@ export class MCPProtocolServer {
|
|
|
167
189
|
}
|
|
168
190
|
// Last-resort safety net: catch anything else that escapes handleToolsCall
|
|
169
191
|
// to prevent MCP connection from being killed (-32000)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
type: 'text',
|
|
175
|
-
text: JSON.stringify({ success: false, error: `Internal error: ${message}` }),
|
|
176
|
-
}],
|
|
177
|
-
};
|
|
192
|
+
console.error('[MCP] Unhandled error in request handler:', err);
|
|
193
|
+
if (request.method === 'tools/call')
|
|
194
|
+
return toolExecutionError();
|
|
195
|
+
throw new McpError(JSON_RPC_ERRORS.INTERNAL_ERROR, 'Internal server error');
|
|
178
196
|
}
|
|
179
197
|
});
|
|
180
198
|
// Set up notification handler
|
|
@@ -220,7 +238,7 @@ export class MCPProtocolServer {
|
|
|
220
238
|
const result = await this.handleRequest(request);
|
|
221
239
|
resolve(result);
|
|
222
240
|
}
|
|
223
|
-
catch
|
|
241
|
+
catch {
|
|
224
242
|
console.error(`[MCP] Failed to replay buffered request: ${request.method}`);
|
|
225
243
|
}
|
|
226
244
|
}
|
|
@@ -389,6 +407,7 @@ export class MCPProtocolServer {
|
|
|
389
407
|
// ADR-039: Track tool invocation with performance monitoring
|
|
390
408
|
const startTime = performance.now();
|
|
391
409
|
let success = false;
|
|
410
|
+
let cacheable;
|
|
392
411
|
// Emit AG-UI progress event for tool start
|
|
393
412
|
const stepId = `${name}-${Date.now()}`;
|
|
394
413
|
this.eventAdapter.adapt({
|
|
@@ -408,7 +427,10 @@ export class MCPProtocolServer {
|
|
|
408
427
|
};
|
|
409
428
|
// ADR-062: Loop detection — check for repeated identical tool calls
|
|
410
429
|
let loopSteeringPrefix = '';
|
|
411
|
-
|
|
430
|
+
// Polling a known execution is a normal status protocol, not a repeated
|
|
431
|
+
// action loop. The default three-strike detector would block the third
|
|
432
|
+
// pipeline_status call within 30 seconds while a workflow is running.
|
|
433
|
+
if (process.env.AQE_LOOP_DETECTION_ENABLED !== 'false' && name !== 'pipeline_status') {
|
|
412
434
|
try {
|
|
413
435
|
const loopResult = this.loopTracker.trackCall('mcp-client', name, args);
|
|
414
436
|
if (loopResult.action === 'steer') {
|
|
@@ -437,20 +459,25 @@ export class MCPProtocolServer {
|
|
|
437
459
|
// Explicit quality gates depend on current measured evidence and its age,
|
|
438
460
|
// not just arguments. A cached approval can outlive or contradict evidence.
|
|
439
461
|
const measuredQualityGate = name === 'quality_assess' && processedCtx.params?.runGate === true;
|
|
440
|
-
|
|
462
|
+
cacheable = tool.definition.isConcurrencySafe === true && !measuredQualityGate;
|
|
441
463
|
let cacheFingerprint = null;
|
|
464
|
+
let cacheGeneration = null;
|
|
442
465
|
if (cacheable && process.env.AQE_SESSION_CACHE !== 'off') {
|
|
443
466
|
try {
|
|
444
467
|
const { getSessionCache } = await import('../optimization/session-cache.js');
|
|
445
468
|
const cache = getSessionCache();
|
|
446
469
|
const { domain, action } = parseToolDomainAction(name);
|
|
470
|
+
cacheGeneration = cache.getGeneration();
|
|
447
471
|
cacheFingerprint = cache.computeFingerprint(domain, action, processedCtx.params || {});
|
|
448
472
|
const hit = cache.get(cacheFingerprint);
|
|
449
473
|
if (hit) {
|
|
450
474
|
// Cache hit — return the stored result without running the handler.
|
|
451
475
|
const cachedText = JSON.stringify(hit.result, null, 2);
|
|
476
|
+
if (typeof cachedText !== 'string')
|
|
477
|
+
throw new Error('Missing cached tool result');
|
|
478
|
+
const cachedSuccess = !this.isFailedToolResult(hit.result);
|
|
452
479
|
this.eventAdapter.adapt({
|
|
453
|
-
success:
|
|
480
|
+
success: cachedSuccess,
|
|
454
481
|
data: hit.result,
|
|
455
482
|
metadata: {
|
|
456
483
|
executionTime: performance.now() - startTime,
|
|
@@ -459,12 +486,13 @@ export class MCPProtocolServer {
|
|
|
459
486
|
toolName: name,
|
|
460
487
|
},
|
|
461
488
|
});
|
|
462
|
-
success =
|
|
489
|
+
success = cachedSuccess;
|
|
463
490
|
return {
|
|
464
491
|
content: [{
|
|
465
492
|
type: 'text',
|
|
466
493
|
text: loopSteeringPrefix ? loopSteeringPrefix + cachedText : cachedText,
|
|
467
494
|
}],
|
|
495
|
+
...(cachedSuccess ? {} : { isError: true }),
|
|
468
496
|
};
|
|
469
497
|
}
|
|
470
498
|
}
|
|
@@ -474,36 +502,26 @@ export class MCPProtocolServer {
|
|
|
474
502
|
}
|
|
475
503
|
}
|
|
476
504
|
const result = await tool.handler(processedCtx.params);
|
|
477
|
-
success = true;
|
|
478
505
|
// IMP-00: Execute post-tool-result middleware
|
|
479
506
|
const processedResult = await this.middlewareChain.executePostHooks(processedCtx, result);
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
/_(store|delete|set|share|update|remove|clear|promote|cleanup)$/.test(name) &&
|
|
487
|
-
this.isSuccessfulResult(processedResult)) {
|
|
488
|
-
try {
|
|
489
|
-
const { getSessionCache } = await import('../optimization/session-cache.js');
|
|
490
|
-
const { domain } = parseToolDomainAction(name);
|
|
491
|
-
getSessionCache().invalidateDomain(domain);
|
|
492
|
-
}
|
|
493
|
-
catch {
|
|
494
|
-
// never block tool execution on cache invalidation
|
|
495
|
-
}
|
|
496
|
-
}
|
|
507
|
+
if (processedResult === null)
|
|
508
|
+
throw new Error('Missing tool result');
|
|
509
|
+
const resultText = JSON.stringify(processedResult, null, 2);
|
|
510
|
+
if (typeof resultText !== 'string')
|
|
511
|
+
throw new Error('Missing tool result');
|
|
512
|
+
const resultSucceeded = !this.isFailedToolResult(processedResult);
|
|
497
513
|
// Issue #473: Store successful results for future cache hits.
|
|
498
514
|
// Only cache successful results — error objects shouldn't be served back.
|
|
499
515
|
if (cacheable && cacheFingerprint && this.isSuccessfulResult(processedResult)) {
|
|
500
516
|
try {
|
|
501
517
|
const { getSessionCache } = await import('../optimization/session-cache.js');
|
|
502
518
|
const cache = getSessionCache();
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
519
|
+
if (cache.getGeneration() === cacheGeneration) {
|
|
520
|
+
const { domain, action } = parseToolDomainAction(name);
|
|
521
|
+
// Estimate tokens conservatively by length-of-JSON / 4 chars-per-token.
|
|
522
|
+
const tokenEstimate = Math.max(50, Math.floor(JSON.stringify(processedResult).length / 4));
|
|
523
|
+
cache.set(cacheFingerprint, domain, action, processedResult, tokenEstimate);
|
|
524
|
+
}
|
|
507
525
|
}
|
|
508
526
|
catch {
|
|
509
527
|
// never block on cache write
|
|
@@ -511,14 +529,14 @@ export class MCPProtocolServer {
|
|
|
511
529
|
}
|
|
512
530
|
// Emit AG-UI result event for tool completion
|
|
513
531
|
this.eventAdapter.adapt({
|
|
514
|
-
success:
|
|
532
|
+
success: resultSucceeded,
|
|
515
533
|
data: processedResult,
|
|
516
534
|
metadata: {
|
|
517
535
|
executionTime: performance.now() - startTime,
|
|
518
536
|
requestId: stepId,
|
|
519
537
|
},
|
|
520
538
|
});
|
|
521
|
-
|
|
539
|
+
success = resultSucceeded;
|
|
522
540
|
return {
|
|
523
541
|
content: [
|
|
524
542
|
{
|
|
@@ -526,10 +544,14 @@ export class MCPProtocolServer {
|
|
|
526
544
|
text: loopSteeringPrefix ? loopSteeringPrefix + resultText : resultText,
|
|
527
545
|
},
|
|
528
546
|
],
|
|
547
|
+
...(resultSucceeded ? {} : { isError: true }),
|
|
529
548
|
};
|
|
530
549
|
}
|
|
531
550
|
catch (err) {
|
|
532
|
-
|
|
551
|
+
// Preserve the diagnostic for operators without exposing it in the MCP
|
|
552
|
+
// response or AG-UI event. Stderr keeps stdio protocol output valid.
|
|
553
|
+
console.error(`[MCP] Tool ${name} failed:`, err);
|
|
554
|
+
const error = err instanceof Error ? err : new Error('Tool execution failed');
|
|
533
555
|
// IMP-08: Detect context overflow (413) and trigger reactive compaction
|
|
534
556
|
const errorMsg = error.message || '';
|
|
535
557
|
const is413 = errorMsg.includes('413')
|
|
@@ -549,22 +571,27 @@ export class MCPProtocolServer {
|
|
|
549
571
|
// Emit AG-UI result event for tool failure
|
|
550
572
|
this.eventAdapter.adapt({
|
|
551
573
|
success: false,
|
|
552
|
-
error:
|
|
574
|
+
error: 'Tool execution failed',
|
|
553
575
|
metadata: {
|
|
554
576
|
executionTime: performance.now() - startTime,
|
|
555
577
|
requestId: stepId,
|
|
556
578
|
},
|
|
557
579
|
});
|
|
558
|
-
return
|
|
559
|
-
content: [
|
|
560
|
-
{
|
|
561
|
-
type: 'text',
|
|
562
|
-
text: JSON.stringify({ error: error.message || 'Tool execution failed' }),
|
|
563
|
-
},
|
|
564
|
-
],
|
|
565
|
-
};
|
|
580
|
+
return toolExecutionError();
|
|
566
581
|
}
|
|
567
582
|
finally {
|
|
583
|
+
// Tool names and success flags do not prove whether state changed.
|
|
584
|
+
// Unknown cross-domain effects require a global flush, including after
|
|
585
|
+
// a handler throws or reports failure following a partial effect.
|
|
586
|
+
if (cacheable === false && process.env.AQE_SESSION_CACHE !== 'off') {
|
|
587
|
+
try {
|
|
588
|
+
const { getSessionCache } = await import('../optimization/session-cache.js');
|
|
589
|
+
getSessionCache().invalidateAll();
|
|
590
|
+
}
|
|
591
|
+
catch {
|
|
592
|
+
// Cache failure must not hide the tool response.
|
|
593
|
+
}
|
|
594
|
+
}
|
|
568
595
|
// Record actual MCP tool execution latency
|
|
569
596
|
const latency = performance.now() - startTime;
|
|
570
597
|
this.monitor.recordLatency(name, latency, success);
|
|
@@ -622,6 +649,7 @@ export class MCPProtocolServer {
|
|
|
622
649
|
parameters: [
|
|
623
650
|
{ name: 'type', type: 'string', description: 'Task type', required: true },
|
|
624
651
|
{ name: 'priority', type: 'string', description: 'Task priority', enum: ['p0', 'p1', 'p2', 'p3'], default: 'p1' },
|
|
652
|
+
{ name: 'targetDomains', type: 'array', description: 'Target domains (e.g. ["coverage-analysis"]); unknown domains are rejected' },
|
|
625
653
|
{ name: 'payload', type: 'object', description: 'Task payload data' },
|
|
626
654
|
],
|
|
627
655
|
},
|
|
@@ -655,7 +683,7 @@ export class MCPProtocolServer {
|
|
|
655
683
|
this.registerTool({
|
|
656
684
|
definition: {
|
|
657
685
|
name: 'task_cancel',
|
|
658
|
-
description: '
|
|
686
|
+
description: 'Request task cancellation by ID. A running handler may continue; check cancellationResultPending in task_status.',
|
|
659
687
|
category: 'task',
|
|
660
688
|
parameters: [
|
|
661
689
|
{ name: 'taskId', type: 'string', description: 'Task ID to cancel', required: true },
|
|
@@ -1248,6 +1276,21 @@ export class MCPProtocolServer {
|
|
|
1248
1276
|
},
|
|
1249
1277
|
handler: (params) => handlePipelineRun(params),
|
|
1250
1278
|
});
|
|
1279
|
+
for (const decision of ['approve', 'reject']) {
|
|
1280
|
+
this.registerTool({
|
|
1281
|
+
definition: {
|
|
1282
|
+
name: `pipeline_${decision}`,
|
|
1283
|
+
description: `${decision === 'approve' ? 'Approve' : 'Reject'} a pending step in a pipeline started by this MCP server. Use the executionId from pipeline_run and stepId from the pipeline definition.`,
|
|
1284
|
+
category: 'coordination',
|
|
1285
|
+
parameters: [
|
|
1286
|
+
{ name: 'executionId', type: 'string', description: 'Running pipeline execution ID', required: true },
|
|
1287
|
+
{ name: 'stepId', type: 'string', description: 'Step awaiting approval', required: true },
|
|
1288
|
+
...(decision === 'reject' ? [{ name: 'reason', type: 'string', description: 'Reason for rejecting the step' }] : []),
|
|
1289
|
+
],
|
|
1290
|
+
},
|
|
1291
|
+
handler: (params) => (decision === 'approve' ? handlePipelineApprove : handlePipelineReject)(params),
|
|
1292
|
+
});
|
|
1293
|
+
}
|
|
1251
1294
|
this.registerTool({
|
|
1252
1295
|
definition: {
|
|
1253
1296
|
name: 'pipeline_list',
|
|
@@ -1258,6 +1301,19 @@ export class MCPProtocolServer {
|
|
|
1258
1301
|
},
|
|
1259
1302
|
handler: (params) => handlePipelineList(params),
|
|
1260
1303
|
});
|
|
1304
|
+
this.registerTool({
|
|
1305
|
+
definition: {
|
|
1306
|
+
name: 'pipeline_status',
|
|
1307
|
+
description: 'Read pipeline execution status and parallel composition receipts without raw step outputs.',
|
|
1308
|
+
category: 'coordination',
|
|
1309
|
+
// Status changes while a run is active; the session cache must not
|
|
1310
|
+
// replay an earlier "running" result for the same execution ID.
|
|
1311
|
+
parameters: [
|
|
1312
|
+
{ name: 'executionId', type: 'string', description: 'Execution ID returned by pipeline_run', required: true },
|
|
1313
|
+
],
|
|
1314
|
+
},
|
|
1315
|
+
handler: (params) => handlePipelineStatus(params),
|
|
1316
|
+
});
|
|
1261
1317
|
this.registerTool({
|
|
1262
1318
|
definition: {
|
|
1263
1319
|
name: 'pipeline_validate',
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - Caching for repeated sampling requests
|
|
11
11
|
*/
|
|
12
12
|
import { createHash, randomUUID } from 'crypto';
|
|
13
|
+
import { DEFAULT_SONNET_MODEL } from '../../shared/llm/model-registry.js';
|
|
13
14
|
// ============================================================================
|
|
14
15
|
// Pre-built QE Decision Prompts
|
|
15
16
|
// ============================================================================
|
|
@@ -129,7 +130,7 @@ export class SamplingServer {
|
|
|
129
130
|
cleanupTimer = null;
|
|
130
131
|
constructor(config = {}) {
|
|
131
132
|
this.config = {
|
|
132
|
-
defaultModel: config.defaultModel ||
|
|
133
|
+
defaultModel: config.defaultModel || DEFAULT_SONNET_MODEL,
|
|
133
134
|
defaultMaxTokens: config.defaultMaxTokens || 4096,
|
|
134
135
|
defaultTemperature: config.defaultTemperature || 0.7,
|
|
135
136
|
enableCaching: config.enableCaching ?? true,
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { randomUUID } from 'crypto';
|
|
12
12
|
import * as fs from 'fs';
|
|
13
13
|
import * as path from 'path';
|
|
14
|
+
import { findProjectRoot } from '../../kernel/project-root.js';
|
|
14
15
|
// ============================================================================
|
|
15
16
|
// Session Store
|
|
16
17
|
// ============================================================================
|
|
@@ -33,7 +34,10 @@ export class SessionStore {
|
|
|
33
34
|
// write .agentic-qe/sessions/*.jsonl to disk.
|
|
34
35
|
persistDisabled = process.env.AQE_MEMORY_BACKEND === 'memory';
|
|
35
36
|
constructor(sessionDir) {
|
|
36
|
-
|
|
37
|
+
// #735: a cwd-relative default created `<subdir>/.agentic-qe/sessions`
|
|
38
|
+
// on the first MCP tool call, which later runs then adopted as the
|
|
39
|
+
// nearest project store. Anchor the default at the project root.
|
|
40
|
+
this.sessionDir = sessionDir ?? path.join(findProjectRoot(), DEFAULT_SESSION_DIR);
|
|
37
41
|
}
|
|
38
42
|
/**
|
|
39
43
|
* Start a new session. Returns the sessionId (UUID).
|
|
@@ -25,7 +25,7 @@ const HARD_CODED_TOOL_NAMES = [
|
|
|
25
25
|
'memory_query', 'memory_retrieve', 'memory_share', 'memory_store',
|
|
26
26
|
'memory_usage', 'migration_check', 'migration_promote', 'migration_status',
|
|
27
27
|
'model_route', 'phase_end', 'phase_start', 'pipeline_list', 'pipeline_load',
|
|
28
|
-
'pipeline_run', 'pipeline_validate', 'quality_assess',
|
|
28
|
+
'pipeline_approve', 'pipeline_reject', 'pipeline_run', 'pipeline_status', 'pipeline_validate', 'quality_assess',
|
|
29
29
|
'requirements_validate', 'routing_economics', 'routing_metrics',
|
|
30
30
|
'security_scan_comprehensive', 'session_cache_stats', 'task_cancel',
|
|
31
31
|
'task_list', 'task_orchestrate', 'task_status', 'task_submit',
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MCPToolBase, getMemoryBackend, } from '../base.js';
|
|
8
8
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
9
|
+
import { getGitRefError } from '../../../shared/git/ref-validation.js';
|
|
9
10
|
// ============================================================================
|
|
10
11
|
// Tool Implementation
|
|
11
12
|
// ============================================================================
|
|
@@ -43,6 +44,12 @@ export class TestScheduleTool extends MCPToolBase {
|
|
|
43
44
|
};
|
|
44
45
|
}
|
|
45
46
|
async execute(params, context) {
|
|
47
|
+
if (params.gitRef !== undefined) {
|
|
48
|
+
const refError = getGitRefError(params.gitRef, 'gitRef');
|
|
49
|
+
if (refError) {
|
|
50
|
+
return { success: false, error: refError };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
46
53
|
try {
|
|
47
54
|
const { runTestPipeline } = await import('../../../test-scheduling/index.js');
|
|
48
55
|
const memory = await getMemoryBackend(context);
|
package/dist/mcp/types.d.ts
CHANGED
|
@@ -433,7 +433,9 @@ export interface TaskSubmitResult {
|
|
|
433
433
|
taskId: string;
|
|
434
434
|
type: TaskType;
|
|
435
435
|
priority: Priority;
|
|
436
|
-
status: '
|
|
436
|
+
status: TaskStatusResult['status'];
|
|
437
|
+
/** Execution failure, if the task already reached a failed state. */
|
|
438
|
+
error?: string;
|
|
437
439
|
assignedDomain?: DomainName;
|
|
438
440
|
}
|
|
439
441
|
/**
|
|
@@ -443,6 +445,8 @@ export interface TaskStatusResult {
|
|
|
443
445
|
taskId: string;
|
|
444
446
|
type: TaskType;
|
|
445
447
|
status: 'queued' | 'assigned' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
448
|
+
/** Reports an outstanding task result; false does not prove external effects stopped. */
|
|
449
|
+
cancellationResultPending?: boolean;
|
|
446
450
|
priority: Priority;
|
|
447
451
|
assignedDomain?: DomainName;
|
|
448
452
|
assignedAgents: string[];
|
|
@@ -45,6 +45,7 @@ export declare class SessionOperationCache {
|
|
|
45
45
|
private config;
|
|
46
46
|
private hits;
|
|
47
47
|
private misses;
|
|
48
|
+
private generation;
|
|
48
49
|
constructor(config?: Partial<SessionCacheConfig>);
|
|
49
50
|
/**
|
|
50
51
|
* Compute a deterministic fingerprint from build + domain + action + input.
|
|
@@ -81,6 +82,10 @@ export declare class SessionOperationCache {
|
|
|
81
82
|
getStats(): SessionCacheStats;
|
|
82
83
|
/** Clear all cache entries and reset counters */
|
|
83
84
|
clear(): void;
|
|
85
|
+
/** Revision used to keep in-flight reads from repopulating a stale cache. */
|
|
86
|
+
getGeneration(): number;
|
|
87
|
+
/** Evict all cached reads, including persisted rows, after a stateful call. */
|
|
88
|
+
invalidateAll(): number;
|
|
84
89
|
/**
|
|
85
90
|
* Invalidate every cached entry for a domain. Issue #535: a mutating tool
|
|
86
91
|
* (e.g. memory_delete / memory_store) must evict the sibling read entries in
|
|
@@ -60,6 +60,7 @@ export class SessionOperationCache {
|
|
|
60
60
|
config;
|
|
61
61
|
hits = 0;
|
|
62
62
|
misses = 0;
|
|
63
|
+
generation = 0;
|
|
63
64
|
constructor(config) {
|
|
64
65
|
this.config = { ...DEFAULT_SESSION_CACHE_CONFIG, ...config };
|
|
65
66
|
}
|
|
@@ -182,6 +183,27 @@ export class SessionOperationCache {
|
|
|
182
183
|
this.cache.clear();
|
|
183
184
|
this.hits = 0;
|
|
184
185
|
this.misses = 0;
|
|
186
|
+
this.generation++;
|
|
187
|
+
}
|
|
188
|
+
/** Revision used to keep in-flight reads from repopulating a stale cache. */
|
|
189
|
+
getGeneration() {
|
|
190
|
+
return this.generation;
|
|
191
|
+
}
|
|
192
|
+
/** Evict all cached reads, including persisted rows, after a stateful call. */
|
|
193
|
+
invalidateAll() {
|
|
194
|
+
const removed = this.cache.size;
|
|
195
|
+
this.cache.clear();
|
|
196
|
+
this.generation++;
|
|
197
|
+
if (this.config.persistToDb) {
|
|
198
|
+
try {
|
|
199
|
+
const db = tryGetDb();
|
|
200
|
+
db?.prepare("DELETE FROM kv_store WHERE namespace = 'session_cache'").run();
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Cache invalidation must not prevent the tool response.
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return removed;
|
|
185
207
|
}
|
|
186
208
|
/**
|
|
187
209
|
* Invalidate every cached entry for a domain. Issue #535: a mutating tool
|
|
@@ -192,6 +214,7 @@ export class SessionOperationCache {
|
|
|
192
214
|
* number of entries removed.
|
|
193
215
|
*/
|
|
194
216
|
invalidateDomain(domain) {
|
|
217
|
+
this.generation++;
|
|
195
218
|
let removed = 0;
|
|
196
219
|
for (const [key, entry] of this.cache) {
|
|
197
220
|
if (entry.domain === domain) {
|
package/dist/plugins/cache.d.ts
CHANGED
|
@@ -37,6 +37,8 @@ export declare class PluginCache {
|
|
|
37
37
|
listVersions(name: string): CachedPlugin[];
|
|
38
38
|
/** List all cached plugins (latest version of each). */
|
|
39
39
|
listAll(): CachedPlugin[];
|
|
40
|
+
/** Every cached candidate, for constraint-aware dependency resolution. */
|
|
41
|
+
listCandidates(): CachedPlugin[];
|
|
40
42
|
private versionDir;
|
|
41
43
|
private pruneOldVersions;
|
|
42
44
|
private copyDir;
|
package/dist/plugins/cache.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import * as fs from 'fs';
|
|
9
9
|
import * as path from 'path';
|
|
10
|
+
import { validVersion, newestVersionFirst } from './version-policy.js';
|
|
10
11
|
// ============================================================================
|
|
11
12
|
// PluginCache
|
|
12
13
|
// ============================================================================
|
|
@@ -79,6 +80,12 @@ export class PluginCache {
|
|
|
79
80
|
try {
|
|
80
81
|
const raw = fs.readFileSync(manifestPath, 'utf-8');
|
|
81
82
|
const manifest = JSON.parse(raw);
|
|
83
|
+
if (!validVersion(manifest.version)) {
|
|
84
|
+
// Older releases admitted versions SemVer now rejects (e.g. 01.0.0);
|
|
85
|
+
// say why the plugin disappeared instead of dropping it silently.
|
|
86
|
+
console.warn(`[PluginCache] Skipping cached plugin ${name}@${entry}: invalid version ${JSON.stringify(manifest.version)}`);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
82
89
|
const stat = fs.statSync(fullPath);
|
|
83
90
|
results.push({
|
|
84
91
|
manifest,
|
|
@@ -102,13 +109,19 @@ export class PluginCache {
|
|
|
102
109
|
for (const name of entries) {
|
|
103
110
|
const versions = this.listVersions(name);
|
|
104
111
|
if (versions.length > 0) {
|
|
105
|
-
// Return the latest version
|
|
106
|
-
versions.sort((a, b) =>
|
|
112
|
+
// Return the latest version by npm SemVer precedence.
|
|
113
|
+
versions.sort((a, b) => newestVersionFirst(a.manifest.version, b.manifest.version));
|
|
107
114
|
results.push(versions[0]);
|
|
108
115
|
}
|
|
109
116
|
}
|
|
110
117
|
return results;
|
|
111
118
|
}
|
|
119
|
+
/** Every cached candidate, for constraint-aware dependency resolution. */
|
|
120
|
+
listCandidates() {
|
|
121
|
+
if (!fs.existsSync(this.cacheDir))
|
|
122
|
+
return [];
|
|
123
|
+
return fs.readdirSync(this.cacheDir).flatMap(name => this.listVersions(name));
|
|
124
|
+
}
|
|
112
125
|
// --------------------------------------------------------------------------
|
|
113
126
|
// Internal
|
|
114
127
|
// --------------------------------------------------------------------------
|
|
@@ -94,6 +94,19 @@ export class PluginLifecycleManager {
|
|
|
94
94
|
securityViolations: security.violations,
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
|
+
// Admit only the requested dependency closure, using all cached candidates.
|
|
98
|
+
// Force this manifest's version so an older cached copy cannot mask failure.
|
|
99
|
+
try {
|
|
100
|
+
const candidates = this.cache.listCandidates().map(c => c.manifest)
|
|
101
|
+
.filter(c => c.name !== manifest.name);
|
|
102
|
+
const resolution = this.resolver.resolve([...candidates, manifest], [manifest.name]);
|
|
103
|
+
if (resolution.errors.length) {
|
|
104
|
+
return { success: false, manifest, errors: resolution.errors.map(e => `${e.code}: ${e.message}`), securityViolations: [] };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
return { success: false, manifest, errors: [error instanceof Error ? error.message : String(error)], securityViolations: [] };
|
|
109
|
+
}
|
|
97
110
|
// 5. Check if already cached
|
|
98
111
|
if (this.cache.has(manifest.name, manifest.version)) {
|
|
99
112
|
const cached = this.cache.get(manifest.name, manifest.version);
|
|
@@ -162,8 +175,8 @@ export class PluginLifecycleManager {
|
|
|
162
175
|
* Resolve load order for all cached plugins.
|
|
163
176
|
*/
|
|
164
177
|
resolveLoadOrder() {
|
|
165
|
-
const all = this.cache.
|
|
166
|
-
return this.resolver.
|
|
178
|
+
const all = this.cache.listCandidates();
|
|
179
|
+
return this.resolver.resolveAvailable(all.map(c => c.manifest));
|
|
167
180
|
}
|
|
168
181
|
/**
|
|
169
182
|
* Register a plugin source.
|
package/dist/plugins/manifest.js
CHANGED
|
@@ -5,13 +5,12 @@
|
|
|
5
5
|
* plugins must provide. Includes validation logic for name, version,
|
|
6
6
|
* entry point, and permissions.
|
|
7
7
|
*/
|
|
8
|
+
import { validVersion, validRange } from './version-policy.js';
|
|
8
9
|
// ============================================================================
|
|
9
10
|
// Constants
|
|
10
11
|
// ============================================================================
|
|
11
12
|
/** Regex for valid plugin names: lowercase, alphanumeric, hyphens */
|
|
12
13
|
const VALID_NAME_REGEX = /^[a-z][a-z0-9-]*$/;
|
|
13
|
-
/** Regex for semver: major.minor.patch with optional pre-release */
|
|
14
|
-
const SEMVER_REGEX = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.]+)?$/;
|
|
15
14
|
/** Reserved name prefixes that third-party plugins cannot use */
|
|
16
15
|
const RESERVED_PREFIXES = ['aqe-core-', 'agentic-qe-core-'];
|
|
17
16
|
/** Maximum name length */
|
|
@@ -41,7 +40,7 @@ export function validateManifest(manifest) {
|
|
|
41
40
|
if (!m.version || typeof m.version !== 'string') {
|
|
42
41
|
errors.push('version is required and must be a string');
|
|
43
42
|
}
|
|
44
|
-
else if (!
|
|
43
|
+
else if (!validVersion(m.version)) {
|
|
45
44
|
errors.push(`version "${m.version}" is not valid semver (expected: major.minor.patch)`);
|
|
46
45
|
}
|
|
47
46
|
if (!m.description || typeof m.description !== 'string') {
|
|
@@ -80,6 +79,9 @@ export function validateManifest(manifest) {
|
|
|
80
79
|
if (typeof depVersion !== 'string') {
|
|
81
80
|
errors.push(`Dependency "${depName}" must have a string version range`);
|
|
82
81
|
}
|
|
82
|
+
else if (!validRange(depVersion)) {
|
|
83
|
+
errors.push(`Dependency "${depName}" has an invalid semver range`);
|
|
84
|
+
}
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
}
|
|
@@ -100,8 +102,8 @@ export function validateManifest(manifest) {
|
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
104
|
if (m.minAqeVersion !== undefined) {
|
|
103
|
-
if (typeof m.minAqeVersion !== 'string' || !
|
|
104
|
-
|
|
105
|
+
if (typeof m.minAqeVersion !== 'string' || !validVersion(m.minAqeVersion)) {
|
|
106
|
+
errors.push('minAqeVersion must be valid semver');
|
|
105
107
|
}
|
|
106
108
|
}
|
|
107
109
|
if (m.permissions !== undefined) {
|
|
@@ -1,37 +1,28 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agentic QE v3 - Plugin Dependency Resolver (IMP-09)
|
|
3
|
-
*
|
|
4
|
-
* DFS dependency resolution with cycle detection.
|
|
5
|
-
* Given a set of plugin manifests, produces a topologically-sorted
|
|
6
|
-
* load order where dependencies are loaded before dependents.
|
|
7
|
-
*/
|
|
1
|
+
/** Constraint-aware plugin selection followed by dependency-safe ordering. */
|
|
8
2
|
import type { QEPluginManifest } from './manifest';
|
|
3
|
+
import { type PluginVersionFailure } from './version-policy';
|
|
9
4
|
export interface ResolvedPlugin {
|
|
10
5
|
manifest: QEPluginManifest;
|
|
11
|
-
/** Order index (0 = load first) */
|
|
12
6
|
order: number;
|
|
13
7
|
}
|
|
14
8
|
export interface ResolutionResult {
|
|
15
|
-
/** Plugins in dependency-safe load order */
|
|
16
9
|
ordered: ResolvedPlugin[];
|
|
17
|
-
/** Unresolvable dependencies (plugin -> missing deps) */
|
|
18
10
|
missing: Map<string, string[]>;
|
|
11
|
+
errors: PluginVersionFailure[];
|
|
12
|
+
selectedVersions: Record<string, string>;
|
|
13
|
+
aqeVersion: string;
|
|
19
14
|
}
|
|
20
15
|
export declare class PluginResolver {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
resolve(manifests: QEPluginManifest[]): ResolutionResult;
|
|
29
|
-
/**
|
|
30
|
-
* Check if a specific plugin can be loaded given the currently loaded set.
|
|
31
|
-
*/
|
|
32
|
-
canLoad(manifest: QEPluginManifest, loaded: Set<string>): {
|
|
16
|
+
private readonly aqeVersion;
|
|
17
|
+
constructor(aqeVersion?: string);
|
|
18
|
+
resolve(manifests: QEPluginManifest[], roots?: readonly string[]): ResolutionResult;
|
|
19
|
+
/** Startup is best-effort: retain admitted roots when another root fails. */
|
|
20
|
+
resolveAvailable(manifests: QEPluginManifest[]): ResolutionResult;
|
|
21
|
+
/** Version-constrained dependencies require versions, not a legacy name-only Set. */
|
|
22
|
+
canLoad(manifest: QEPluginManifest, loaded: ReadonlyMap<string, string> | Set<string>): {
|
|
33
23
|
canLoad: boolean;
|
|
34
24
|
missingDeps: string[];
|
|
35
25
|
};
|
|
26
|
+
private validateVersions;
|
|
36
27
|
}
|
|
37
28
|
//# sourceMappingURL=resolver.d.ts.map
|