agentic-qe 3.14.2 → 3.14.4
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 +183 -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/cli/bundle.js +7 -7
- package/dist/cli/chunks/adapter-TNNNJRDG.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-SD5N32MX.js → agent-booster-wasm-5PC7D2FW.js} +2 -2
- package/dist/cli/chunks/{agent-handler-OZRSJM7F.js → agent-handler-RDNTK4CA.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-NYTRANRN.js → agent-memory-branch-NAAMBWIR.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-5ZRMYJLB.js +2 -0
- package/dist/cli/chunks/{arena-EX3SC2DP.js → arena-HXTWJ5YY.js} +4 -4
- package/dist/cli/chunks/{arena-FOTVSRK4.js → arena-KXFHRWX4.js} +2 -2
- package/dist/cli/chunks/{audit-Q5GHSUQY.js → audit-YSGA7UWT.js} +3 -3
- package/dist/cli/chunks/base-KWZHOPSH.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-S7M5R2HS.js → better-sqlite3-UICJZIDG.js} +2 -2
- package/dist/cli/chunks/brain-handler-ET6YAP4B.js +90 -0
- package/dist/cli/chunks/{branch-enumerator-RWAXTGEU.js → branch-enumerator-SS7UNVIA.js} +2 -2
- package/dist/cli/chunks/{browser-IGDESJGF.js → browser-77GI6KBE.js} +2 -2
- package/dist/cli/chunks/browser-workflow-2FZTKDUL.js +2 -0
- package/dist/cli/chunks/{chunk-U54OOA24.js → chunk-2JW3BCGG.js} +1 -1
- package/dist/cli/chunks/{chunk-LML5VTFK.js → chunk-33YYYWBQ.js} +1 -1
- package/dist/cli/chunks/{chunk-P64DMQ2C.js → chunk-34WO57CW.js} +1 -1
- package/dist/cli/chunks/{chunk-57TNBR2P.js → chunk-3QHGWY7T.js} +2 -2
- package/dist/cli/chunks/chunk-3TW5W5LX.js +2 -0
- package/dist/cli/chunks/{chunk-S4MR6RTE.js → chunk-3UPAMMCB.js} +1 -1
- package/dist/cli/chunks/{chunk-5WJUNRTY.js → chunk-3VOQRIQM.js} +2 -2
- package/dist/cli/chunks/{chunk-4RT7I7PI.js → chunk-3X3DJZJJ.js} +1 -1
- package/dist/cli/chunks/{chunk-RFNEHNJV.js → chunk-4MHXCAG2.js} +1 -1
- package/dist/cli/chunks/{chunk-PMUBG2RU.js → chunk-4OYFXLBK.js} +2 -2
- package/dist/cli/chunks/{chunk-W2FLULF4.js → chunk-55RWDRJD.js} +3 -3
- package/dist/cli/chunks/chunk-5R3QL7WN.js +14 -0
- package/dist/cli/chunks/{chunk-RHJVDCLV.js → chunk-5SJHQ2CO.js} +2 -2
- package/dist/cli/chunks/{chunk-HBTC4L53.js → chunk-5YPYDPBJ.js} +2 -2
- package/dist/cli/chunks/chunk-5Z6XZV7K.js +65 -0
- package/dist/cli/chunks/{chunk-6EHN7Q2Q.js → chunk-64PFWE2F.js} +2 -2
- package/dist/cli/chunks/{chunk-KFXZDQ5J.js → chunk-6CQN24ZK.js} +1 -1
- package/dist/cli/chunks/{chunk-WVY22NHZ.js → chunk-6J62K3SW.js} +2 -2
- package/dist/cli/chunks/{chunk-TLPL3EQY.js → chunk-6KJABXAR.js} +2 -2
- package/dist/cli/chunks/{chunk-PZKZY6PB.js → chunk-6QYNWR7U.js} +2 -2
- package/dist/cli/chunks/{chunk-A7N3YUDJ.js → chunk-6TPKK7LD.js} +2 -2
- package/dist/cli/chunks/{chunk-RYJHREYS.js → chunk-6UWGMOND.js} +2 -2
- package/dist/cli/chunks/{chunk-XPLSLHRB.js → chunk-6VRA2QGL.js} +1 -1
- package/dist/cli/chunks/{chunk-Q3JHS3UD.js → chunk-7D777LTF.js} +2 -2
- package/dist/cli/chunks/chunk-7ZIOFPL3.js +2 -0
- package/dist/cli/chunks/chunk-A4FYONNU.js +2 -0
- package/dist/cli/chunks/{chunk-7AFBNU6K.js → chunk-AIHDEEJO.js} +2 -2
- package/dist/cli/chunks/{chunk-L2F7FVIU.js → chunk-AUXFKCQL.js} +2 -2
- package/dist/cli/chunks/{chunk-67A6PEZM.js → chunk-AWWNB2T7.js} +2 -2
- package/dist/cli/chunks/{chunk-DVHWLAEO.js → chunk-BDESSCVR.js} +3 -3
- package/dist/cli/chunks/{chunk-JQ2ZD3WO.js → chunk-BFP7KO7P.js} +2 -2
- package/dist/cli/chunks/{chunk-N5ZRUOMR.js → chunk-BGE6FOLM.js} +2 -2
- package/dist/cli/chunks/{chunk-BWRHOIYC.js → chunk-BOARZKU3.js} +2 -2
- package/dist/cli/chunks/{chunk-CTCQOYBS.js → chunk-BOZZYWCR.js} +1 -1
- package/dist/cli/chunks/{chunk-NHHWLJQF.js → chunk-C2WU3533.js} +1 -1
- package/dist/cli/chunks/{chunk-5EHLGOWW.js → chunk-CDHQFHRP.js} +2 -2
- package/dist/cli/chunks/chunk-CDKG6EI7.js +16 -0
- package/dist/cli/chunks/{chunk-RGH3WGWD.js → chunk-CIKSHTEQ.js} +3 -3
- package/dist/cli/chunks/{chunk-K574FLVB.js → chunk-CIZ5JPDC.js} +2 -2
- package/dist/cli/chunks/{chunk-LWUJQGCS.js → chunk-CLTMDCSE.js} +2 -2
- package/dist/cli/chunks/{chunk-GHQ5PUOV.js → chunk-CNG6GQEZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3C2K4YMS.js → chunk-CSU5NYOX.js} +3 -3
- package/dist/cli/chunks/chunk-CU46J64M.js +4 -0
- package/dist/cli/chunks/{chunk-EH5OCHAJ.js → chunk-CXQPR5MY.js} +1 -1
- package/dist/cli/chunks/chunk-DA5K5754.js +96 -0
- package/dist/cli/chunks/{chunk-FVGTINVR.js → chunk-DAEFDCJ4.js} +81 -65
- package/dist/cli/chunks/{chunk-MH73D5TN.js → chunk-DEYLEDJN.js} +2 -2
- package/dist/cli/chunks/{chunk-7FWP7CZY.js → chunk-DFZCKIGY.js} +3 -3
- package/dist/cli/chunks/{chunk-QXTW7XCS.js → chunk-DHJPWQBR.js} +2 -2
- package/dist/cli/chunks/{chunk-NAZVPZJS.js → chunk-DOTK76IJ.js} +2 -2
- package/dist/cli/chunks/{chunk-RCI64RIJ.js → chunk-DPFRKBOG.js} +2 -2
- package/dist/cli/chunks/{chunk-WMW47QMR.js → chunk-EDJ3O7RH.js} +2 -2
- package/dist/cli/chunks/{chunk-4K27ESCA.js → chunk-EKQ673SA.js} +1 -1
- package/dist/cli/chunks/chunk-F3SBRQC6.js +2 -0
- package/dist/cli/chunks/{chunk-4N44UJGI.js → chunk-FGYMFUE2.js} +2 -2
- package/dist/cli/chunks/chunk-FLYOJOKN.js +2 -0
- package/dist/cli/chunks/{chunk-W4OQYLYO.js → chunk-FRH6VAUS.js} +1 -1
- package/dist/cli/chunks/{chunk-VOYJJ3KA.js → chunk-FWGOHAAB.js} +2 -2
- package/dist/cli/chunks/{chunk-D4RCV4LY.js → chunk-G6T45OIC.js} +2 -2
- package/dist/cli/chunks/{chunk-2EHFEMRU.js → chunk-GPLQ6DOK.js} +2 -2
- package/dist/cli/chunks/{chunk-RVCWSAXI.js → chunk-HDSAM2RE.js} +2 -2
- package/dist/cli/chunks/chunk-HIVA55CJ.js +2 -0
- package/dist/cli/chunks/{chunk-6F4WHN7D.js → chunk-HIYXCDEP.js} +1 -1
- package/dist/cli/chunks/{chunk-NRR23SJV.js → chunk-HUWNIPZ5.js} +1 -1
- package/dist/cli/chunks/{chunk-4M6A3PVJ.js → chunk-HV2J7KKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-CJHVOBJY.js → chunk-IFCLB7FJ.js} +1 -1
- package/dist/cli/chunks/{chunk-Q335R4MR.js → chunk-IPR4QP3H.js} +2 -2
- package/dist/cli/chunks/{chunk-HZMLNM2T.js → chunk-ISDMD6EU.js} +178 -175
- package/dist/cli/chunks/chunk-J6GNQS62.js +5 -0
- package/dist/cli/chunks/{chunk-3DFFFXXO.js → chunk-JBNEE5UH.js} +2 -2
- package/dist/cli/chunks/chunk-JZ3ORVZ3.js +54 -0
- package/dist/cli/chunks/{chunk-T4C56HBW.js → chunk-KCZR45PA.js} +2 -2
- package/dist/cli/chunks/chunk-KGT36Z42.js +14 -0
- package/dist/cli/chunks/{chunk-JIUF6NV6.js → chunk-KHFNNVJA.js} +2 -2
- package/dist/cli/chunks/{chunk-7SK6IMGZ.js → chunk-KPA7MZ6C.js} +2 -2
- package/dist/cli/chunks/{chunk-G2CLZVYI.js → chunk-KSKEF7LZ.js} +3 -3
- package/dist/cli/chunks/{chunk-6LMLN5R2.js → chunk-M2JBBZQB.js} +2 -2
- package/dist/cli/chunks/{chunk-UHTAI4ZB.js → chunk-M4WJKGVK.js} +1 -1
- package/dist/cli/chunks/{chunk-KZOBLLXW.js → chunk-M5QUBZY6.js} +2 -2
- package/dist/cli/chunks/{chunk-42WUDDUU.js → chunk-MCUJEZT6.js} +2 -2
- package/dist/cli/chunks/{chunk-ZFGND4QK.js → chunk-MDWCE7YW.js} +1 -1
- package/dist/cli/chunks/{chunk-TYVQNYXX.js → chunk-MEGDYJPV.js} +7 -7
- package/dist/cli/chunks/chunk-MIQTXNBG.js +4 -0
- package/dist/cli/chunks/{chunk-PFXX5Q32.js → chunk-MNW6QGNJ.js} +2 -2
- package/dist/cli/chunks/{chunk-IVGVOGIZ.js → chunk-MOBNBMFW.js} +1 -1
- package/dist/cli/chunks/{chunk-NWFIJNEB.js → chunk-MTZH7AHC.js} +1 -1
- package/dist/cli/chunks/chunk-MVNP7GIR.js +2 -0
- package/dist/cli/chunks/chunk-MVPCNSPY.js +2 -0
- package/dist/cli/chunks/chunk-NA7B2QYB.js +2 -0
- package/dist/cli/chunks/{chunk-E3Q7WNJD.js → chunk-NDPFGIMJ.js} +3 -3
- package/dist/cli/chunks/{chunk-GHUPID5E.js → chunk-NJBGXDQ7.js} +1 -1
- package/dist/cli/chunks/chunk-OBAP2TXZ.js +2 -0
- package/dist/cli/chunks/{chunk-OBCKP3G4.js → chunk-OCWWP5PL.js} +4 -4
- package/dist/cli/chunks/{chunk-CJCT452S.js → chunk-ODKLFVYC.js} +2 -2
- package/dist/cli/chunks/{chunk-YN6W2XIT.js → chunk-ONII3572.js} +4 -4
- package/dist/cli/chunks/{chunk-QW4LN5NK.js → chunk-OSLYSG3B.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ6NEJMO.js → chunk-OULHKEVH.js} +2 -2
- package/dist/cli/chunks/{chunk-CG2MUD7U.js → chunk-PAWXJ73E.js} +1 -1
- package/dist/cli/chunks/chunk-PEPFCPES.js +2 -0
- package/dist/cli/chunks/{chunk-UIGEUEBT.js → chunk-PFR4G3DJ.js} +2 -2
- package/dist/cli/chunks/chunk-PO3IXGMQ.js +2 -0
- package/dist/cli/chunks/{chunk-6SZKLWZT.js → chunk-PZJOPURC.js} +5 -5
- package/dist/cli/chunks/{chunk-ARMZYHYL.js → chunk-Q5DO24IJ.js} +2 -2
- package/dist/cli/chunks/chunk-QGIU2WRL.js +2 -0
- package/dist/cli/chunks/{chunk-N3RN4QTC.js → chunk-R4VL6E65.js} +2 -2
- package/dist/cli/chunks/{chunk-MWQTACNA.js → chunk-R5NE6B2M.js} +2 -2
- package/dist/cli/chunks/{chunk-T46LOLW3.js → chunk-RJCYCLZV.js} +2 -2
- package/dist/cli/chunks/{chunk-CH2TQCV5.js → chunk-SGYJ4NFZ.js} +1 -1
- package/dist/cli/chunks/{chunk-NG2UVPTW.js → chunk-SRKETSFF.js} +1 -1
- package/dist/cli/chunks/{chunk-QFUX7ELG.js → chunk-STJCATGN.js} +2 -2
- package/dist/cli/chunks/{chunk-CIESXO73.js → chunk-STM3UDNO.js} +1 -1
- package/dist/cli/chunks/{chunk-C7AXRI7E.js → chunk-T6BVLVI5.js} +1 -1
- package/dist/cli/chunks/{chunk-HSJ5FQCF.js → chunk-TDZ53WO2.js} +2 -2
- package/dist/cli/chunks/{chunk-YF5OP6CR.js → chunk-TPGED2IF.js} +2 -2
- package/dist/cli/chunks/{chunk-2TG24LYQ.js → chunk-TSRSV3LD.js} +1 -1
- package/dist/cli/chunks/{chunk-6VKJAMZY.js → chunk-TT23RRB7.js} +1 -1
- package/dist/cli/chunks/{chunk-WXMSRBQF.js → chunk-TWAWHOP7.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCDXJ27H.js → chunk-U5K45TFH.js} +1 -1
- package/dist/cli/chunks/{chunk-3WV4H33V.js → chunk-UDHKLT4C.js} +1 -1
- package/dist/cli/chunks/{chunk-VNAKBHJI.js → chunk-UEM7ZF5K.js} +2 -2
- package/dist/cli/chunks/{chunk-4ZUZDFAA.js → chunk-UGVHCMUN.js} +6 -6
- package/dist/cli/chunks/{chunk-NNOMDM4N.js → chunk-V3QLFNA2.js} +2 -2
- package/dist/cli/chunks/{chunk-S7N4BKI3.js → chunk-VD6QRULW.js} +2 -2
- package/dist/cli/chunks/{chunk-WBH4C4BG.js → chunk-VIHTL3U2.js} +2 -2
- package/dist/cli/chunks/chunk-W7BWUTVV.js +2 -0
- package/dist/cli/chunks/{chunk-IWFL6EFI.js → chunk-WLG5AJ4N.js} +2 -2
- package/dist/cli/chunks/{chunk-KEEBUVGV.js → chunk-XC7DYDSY.js} +8 -8
- package/dist/cli/chunks/{chunk-F2KRT2II.js → chunk-XJ7QNVI5.js} +3 -3
- package/dist/cli/chunks/chunk-XRT2WRMS.js +2 -0
- package/dist/cli/chunks/{chunk-ADK7DF3G.js → chunk-XRYF6JV7.js} +2 -2
- package/dist/cli/chunks/{chunk-PWEIDHT7.js → chunk-XWMZ6D6N.js} +2 -2
- package/dist/cli/chunks/{chunk-ICKLBATY.js → chunk-Y3MW3YBC.js} +2 -2
- package/dist/cli/chunks/chunk-YNXS6CGV.js +2 -0
- package/dist/cli/chunks/{chunk-PVHO6KLB.js → chunk-Z3RHREWF.js} +1 -1
- package/dist/cli/chunks/{chunk-EAJK25IS.js → chunk-ZBAKA4YB.js} +1 -1
- package/dist/cli/chunks/chunk-ZBJ4XOOV.js +180 -0
- package/dist/cli/chunks/chunk-ZBQY5GLF.js +11 -0
- package/dist/cli/chunks/{chunk-R5RNOLHI.js → chunk-ZJ26AQA5.js} +1 -1
- package/dist/cli/chunks/{chunk-KPFG4OIM.js → chunk-ZNEMGX5O.js} +1 -1
- package/dist/cli/chunks/{chunk-2H5YJ5ZK.js → chunk-ZNPKDCZR.js} +2 -2
- package/dist/cli/chunks/{chunk-DW6ZMNMR.js → chunk-ZZDIMOOV.js} +2 -2
- package/dist/cli/chunks/ci-464KPQNP.js +81 -0
- package/dist/cli/chunks/ci-output-I7FX2RSO.js +2 -0
- package/dist/cli/chunks/{circuit-breaker-4WST3QSA.js → circuit-breaker-3FW237WW.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-KB4TKMYI.js → claude-flow-setup-6JKMBPGU.js} +2 -2
- package/dist/cli/chunks/client-7E4LM2WW.js +2 -0
- package/dist/cli/chunks/{cline-installer-W2ZHQ6WM.js → cline-installer-UWFHT6VY.js} +2 -2
- package/dist/cli/chunks/{code-TF2AVR5D.js → code-KQSUT3FS.js} +29 -29
- package/dist/cli/chunks/{code-index-extractor-RMDRUVQJ.js → code-index-extractor-PABBNUSC.js} +2 -2
- package/dist/cli/chunks/{codex-installer-VSTRHJHV.js → codex-installer-CQ24DTP5.js} +2 -2
- package/dist/cli/chunks/{completions-3Q37QVFR.js → completions-7RWHAUAR.js} +2 -2
- package/dist/cli/chunks/complexity-analyzer-XPOAF33E.js +2 -0
- package/dist/cli/chunks/{continuedev-installer-VTEXM455.js → continuedev-installer-V4F2FIZP.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-AGY7DQUS.js → copilot-installer-JMICURQB.js} +2 -2
- package/dist/cli/chunks/core-handlers-IFG3757P.js +2 -0
- package/dist/cli/chunks/cost-tracker-5OFHEYFJ.js +2 -0
- package/dist/cli/chunks/{coverage-TT64IOS4.js → coverage-QKN57JDS.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-EK7W4PGP.js +2 -0
- package/dist/cli/chunks/{cursor-installer-OVOJIOHN.js → cursor-installer-GBJ7YXSM.js} +2 -2
- package/dist/cli/chunks/{daemon-DMFZMXKA.js → daemon-GKP7CMEK.js} +3 -3
- package/dist/cli/chunks/{daemon-XCULEHWY.js → daemon-IAVSO6HK.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-WW2RX4B5.js → dag-attention-scheduler-S225TCI7.js} +2 -2
- package/dist/cli/chunks/{detect-QNWIM232.js → detect-IUYH422U.js} +2 -2
- package/dist/cli/chunks/{dist-node-6GQIY3CG.js → dist-node-2YRE6A7C.js} +2 -2
- package/dist/cli/chunks/{domain-handler-6RJPDELX.js → domain-handler-PL2TZC6H.js} +2 -2
- package/dist/cli/chunks/domain-plugins-HCGLXKIT.js +2 -0
- package/dist/cli/chunks/{domain-transfer-WK524LBS.js → domain-transfer-KQJRUPXA.js} +2 -2
- package/dist/cli/chunks/dream-NFSCSLY7.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-SO6GWJW7.js → embed-and-insert-pattern-ZPAG7235.js} +2 -2
- package/dist/cli/chunks/eval-WCK7KNFN.js +17 -0
- package/dist/cli/chunks/{experience-capture-middleware-BCCJ35OX.js → experience-capture-middleware-2MSQWSAR.js} +3 -3
- package/dist/cli/chunks/{fast-paths-CATDDBEU.js → fast-paths-VYOSIBKF.js} +2 -2
- package/dist/cli/chunks/{feature-flags-BUXNAORY.js → feature-flags-UJRHFBRX.js} +2 -2
- package/dist/cli/chunks/{feature-flags-KNNWWP5G.js → feature-flags-WCFUKHNQ.js} +2 -2
- package/dist/cli/chunks/{file-discovery-S4HF3O7D.js → file-discovery-JDGL4ZWS.js} +2 -2
- package/dist/cli/chunks/fleet-ROXVMZ2F.js +43 -0
- package/dist/cli/chunks/{gnn-wrapper-G7ABZUG7.js → gnn-wrapper-NIO4ZCO3.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-UFMELIWT.js → heartbeat-handler-PI42WD3C.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-ZATCDJDK.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-WXQABRCA.js +2 -0
- package/dist/cli/chunks/hnsw-index-TPSWLEA5.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-YIILSRXI.js → hnsw-legacy-bridge-YLC7SPK2.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-TSVRMXDH.js → hnswlib-node-LG6OS3B7.js} +2 -2
- package/dist/cli/chunks/{hooks-OHQPNK74.js → hooks-WVALP5GX.js} +10 -10
- package/dist/cli/chunks/{hypergraph-engine-LY7PJDSL.js → hypergraph-engine-GJEMW3EG.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-YGDYZO6H.js → hypergraph-handler-BLF6LXEV.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-HNIU45P5.js +2 -0
- package/dist/cli/chunks/{init-handler-MTK65LI3.js → init-handler-K25RWRYY.js} +6 -6
- package/dist/cli/chunks/init-wizard-JUIPBMHG.js +2 -0
- package/dist/cli/chunks/kernel-5BOZQ754.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-3IICU4RS.js → kilocode-installer-BXN6WZ7G.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-MXOVQYQA.js → kiro-installer-PM362DLN.js} +12 -12
- package/dist/cli/chunks/knowledge-graph-EWDAENWM.js +2 -0
- package/dist/cli/chunks/learning-CPERDDRG.js +122 -0
- package/dist/cli/chunks/llm-router-GOAV5FPI.js +37 -0
- package/dist/cli/chunks/llm-router-service-3YT7JGBS.js +2 -0
- package/dist/cli/chunks/{load-F4PVAMXQ.js → load-2BG6SHAK.js} +2 -2
- package/dist/cli/chunks/load-test-BP2CPLIV.js +2 -0
- package/dist/cli/chunks/{mcp-DUYJUEME.js → mcp-5TTB37DC.js} +2 -2
- package/dist/cli/chunks/{memory-XTTYORAS.js → memory-4NHBYT6S.js} +5 -5
- package/dist/cli/chunks/memory-backend-4PYQBPRM.js +2 -0
- package/dist/cli/chunks/memory-handlers-2B27NITS.js +2 -0
- package/dist/cli/chunks/multi-model-executor-KCWSGCDT.js +14 -0
- package/dist/cli/chunks/{opencode-installer-33ULBU2F.js → opencode-installer-ATZLLK74.js} +2 -2
- package/dist/cli/chunks/{orchestrator-34ZJEKTJ.js → orchestrator-RKB7XJRG.js} +19 -19
- package/dist/cli/chunks/pattern-null-store-OYOQOV2O.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-GZ2M3F2E.js → pattern-usage-recorder-7VE4XDAI.js} +2 -2
- package/dist/cli/chunks/pipeline-LQZSNDD2.js +19 -0
- package/dist/cli/chunks/{platform-VKJFJIAW.js → platform-OD5H5U6G.js} +2 -2
- package/dist/cli/chunks/{plugin-5C5UBQUQ.js → plugin-EJ6K2MGU.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-KO2PQI3D.js → prime-radiant-advanced-wasm-OIHTKJMN.js} +2 -2
- package/dist/cli/chunks/protocol-executor-3ATJTXWG.js +2 -0
- package/dist/cli/chunks/{protocol-handler-ZF74NIKA.js → protocol-handler-NRBROAU7.js} +2 -2
- package/dist/cli/chunks/{prove-MO5TQQU4.js → prove-EJOGEGD3.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-LLMYZT4X.js +2 -0
- package/dist/cli/chunks/{quality-EYIN6AER.js → quality-E55UC73D.js} +2 -2
- package/dist/cli/chunks/{quality-gate-V6OQM57O.js → quality-gate-OIQATNT3.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-RN7L6KG5.js +2 -0
- package/dist/cli/chunks/{real-embeddings-AR7TZX7U.js → real-embeddings-FPFFNOSZ.js} +2 -2
- package/dist/cli/chunks/ref-validation-OPO6J7OL.js +2 -0
- package/dist/cli/chunks/{roocode-installer-46E626VZ.js → roocode-installer-ODY5KRWU.js} +2 -2
- package/dist/cli/chunks/router-MDHITQ2V.js +2 -0
- package/dist/cli/chunks/routing-feedback-5XLNJ3Y3.js +2 -0
- package/dist/cli/chunks/{routing-handler-ZNRVW6QW.js → routing-handler-KQM6VWLC.js} +4 -4
- package/dist/cli/chunks/{ruvector-commands-4L2CQMWS.js → ruvector-commands-U2GVV6PF.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-JBW4O3II.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-BPPQL4XJ.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-H4RVGBIA.js → rvf-migration-coordinator-V2GHCJKN.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-S4562CG5.js +2 -0
- package/dist/cli/chunks/rvf-store-integrity-KMIHD3LP.js +2 -0
- package/dist/cli/chunks/safe-db-FIRHSXVF.js +2 -0
- package/dist/cli/chunks/schedule-RVXFB4HK.js +2 -0
- package/dist/cli/chunks/scheduler-IKKAMAOO.js +2 -0
- package/dist/cli/chunks/security-P5NM353C.js +13 -0
- package/dist/cli/chunks/{shared-rvf-adapter-M6NNIZ5W.js → shared-rvf-adapter-LVIUOO4S.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-LHMFCYVE.js → shared-rvf-dual-writer-2CSG7C4W.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-SQ3HCUQ7.js +2 -0
- package/dist/cli/chunks/{status-handler-GMIOXQIE.js → status-handler-6TU6O37R.js} +2 -2
- package/dist/cli/chunks/{structural-health-YZXHVHM6.js → structural-health-KBIJSTXJ.js} +2 -2
- package/dist/cli/chunks/{sync-GMPCPV5L.js → sync-LNHI5SB7.js} +2 -2
- package/dist/cli/chunks/{sync-N56UQGCS.js → sync-UHOX6RJW.js} +2 -2
- package/dist/cli/chunks/task-handler-AVDHMLGI.js +49 -0
- package/dist/cli/chunks/task-handlers-KYK4VTRA.js +9 -0
- package/dist/cli/chunks/{test-GQNCKRSP.js → test-DHAAI3DU.js} +11 -11
- package/dist/cli/chunks/test-scheduling-XDBZ3QC2.js +15 -0
- package/dist/cli/chunks/{token-bootstrap-76SRNXGG.js → token-bootstrap-GUTTLPZX.js} +2 -2
- package/dist/cli/chunks/{token-usage-O7CZDP5Q.js → token-usage-Q2YG5YQN.js} +2 -2
- package/dist/cli/chunks/{transformers-LTU4LSSC.js → transformers-F5UQTQCY.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-NQSQCMBM.js → tree-sitter-wasm-parser-DEGOHS6F.js} +2 -2
- package/dist/cli/chunks/types-JQ7EQO5Q.js +2 -0
- package/dist/cli/chunks/unified-memory-CXHLHB5I.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-I7WAE54M.js +2 -0
- package/dist/cli/chunks/unified-persistence-6CPF65WI.js +2 -0
- package/dist/cli/chunks/{upgrade-OQWRBZ3R.js → upgrade-TJRVGHGD.js} +2 -2
- package/dist/cli/chunks/{validate-TH5SRP3E.js → validate-BWPCVHBN.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-UITL2JUS.js → validate-swarm-QVVKCQLP.js} +2 -2
- package/dist/cli/chunks/{vibium-O6PRAG4J.js → vibium-ZFATIWHO.js} +2 -2
- package/dist/cli/chunks/visual-security-GNPHME5H.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-XBFBY4OF.js → web-tree-sitter-KPLY7ONR.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-DVT5NRNY.js → windsurf-installer-H7XM7ISA.js} +2 -2
- package/dist/cli/chunks/{witness-chain-VRSH2F36.js → witness-chain-RRN6NDCH.js} +2 -2
- package/dist/cli/chunks/witness-chain-VT4UHHBR.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-GFHRDKQ4.js → witness-key-manager-DFRL42GE.js} +2 -2
- package/dist/cli/chunks/workflow-2ZQO6WYI.js +51 -0
- package/dist/cli/chunks/workflow-orchestrator-DB3HIECD.js +2 -0
- package/dist/cli/chunks/{wrappers-5LLLT7GM.js → wrappers-SUS6XEJD.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/pipeline.js +9 -0
- package/dist/cli/commands/security.js +167 -100
- package/dist/cli/commands/test.js +1 -0
- package/dist/cli/commands/workflow.js +9 -1
- package/dist/cli/handlers/task-handler.js +19 -9
- package/dist/cli/helpers/domain-plugins.d.ts +5 -0
- package/dist/cli/helpers/domain-plugins.js +11 -0
- package/dist/cli/index.js +17 -8
- package/dist/cli/utils/ci-config.d.ts +3 -0
- package/dist/cli/utils/ci-output.d.ts +17 -0
- package/dist/cli/utils/ci-output.js +34 -2
- 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/handler-types.d.ts +3 -0
- package/dist/coordination/handlers/quality-handlers.js +10 -0
- package/dist/coordination/handlers/security-handlers.js +168 -72
- package/dist/coordination/handlers/test-execution-handlers.js +39 -43
- package/dist/coordination/interfaces.d.ts +2 -2
- package/dist/coordination/protocol-executor.js +68 -9
- package/dist/coordination/protocols/security-audit.d.ts +3 -0
- package/dist/coordination/protocols/security-audit.js +61 -39
- 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/result-saver.js +36 -5
- package/dist/coordination/task-executor.d.ts +3 -1
- package/dist/coordination/task-executor.js +8 -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/interfaces.d.ts +5 -0
- package/dist/domains/security-compliance/interfaces.js +0 -6
- package/dist/domains/security-compliance/scan-discovery.d.ts +12 -0
- package/dist/domains/security-compliance/scan-discovery.js +105 -0
- package/dist/domains/security-compliance/scan-evidence.d.ts +57 -0
- package/dist/domains/security-compliance/scan-evidence.js +2 -0
- package/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts +3 -2
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +112 -72
- package/dist/domains/security-compliance/services/semgrep-integration.d.ts +9 -2
- package/dist/domains/security-compliance/services/semgrep-integration.js +68 -20
- package/dist/domains/test-execution/services/flaky-detector.js +46 -5
- package/dist/domains/test-execution/services/retry-handler.js +38 -20
- package/dist/domains/test-execution/services/test-executor.js +84 -29
- 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/init-wizard-hooks.js +2 -2
- 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/phases/07-hooks.js +4 -2
- 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/integrations/agentic-flow/model-router/types.js +6 -8
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +3 -20
- package/dist/integrations/coherence/engines/cohomology-adapter.js +100 -30
- package/dist/integrations/ruvector/brain-exporter.js +9 -15
- package/dist/integrations/ruvector/brain-rvf-exporter.js +17 -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 +36 -15
- 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/memory-factory.js +14 -4
- package/dist/kernel/project-root.js +10 -8
- package/dist/kernel/unified-memory.js +1 -1
- 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 +29 -11
- package/dist/mcp/bundle.js +548 -527
- package/dist/mcp/handlers/domain-handler-configs.d.ts +22 -1
- package/dist/mcp/handlers/domain-handler-configs.js +50 -19
- package/dist/mcp/handlers/domain-handlers.d.ts +7 -5
- package/dist/mcp/handlers/domain-handlers.js +7 -5
- package/dist/mcp/handlers/index.d.ts +1 -1
- package/dist/mcp/handlers/index.js +1 -1
- 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 +12 -4
- package/dist/mcp/protocol-server.d.ts +2 -0
- package/dist/mcp/protocol-server.js +112 -53
- package/dist/mcp/security/sampling-server.js +2 -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 +10 -1
- package/dist/optimization/session-cache.d.ts +5 -0
- package/dist/optimization/session-cache.js +23 -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.d.ts +4 -0
- package/dist/shared/llm/router/hybrid-router.js +95 -35
- package/dist/shared/llm/router/routing-rules.js +9 -8
- package/dist/shared/llm/router/types.d.ts +9 -2
- package/dist/shared/llm/router/types.js +81 -13
- package/dist/shared/llm/translation/message-formatter.js +4 -23
- package/dist/shared/test-runner-verdict.d.ts +29 -0
- package/dist/shared/test-runner-verdict.js +43 -0
- package/dist/shared/vitest-json-report.d.ts +45 -0
- package/dist/shared/vitest-json-report.js +80 -0
- package/dist/test-scheduling/executors/vitest-executor.d.ts +7 -2
- package/dist/test-scheduling/executors/vitest-executor.js +174 -52
- 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/dist/validation/frontier-judge.d.ts +7 -4
- package/dist/validation/frontier-judge.js +11 -6
- package/package.json +6 -6
- package/dist/cli/chunks/adapter-OJF6LAJV.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-FGT474XB.js +0 -2
- package/dist/cli/chunks/base-HH765JFV.js +0 -2
- package/dist/cli/chunks/brain-handler-5FSA46R5.js +0 -90
- package/dist/cli/chunks/browser-workflow-NPM4FUPI.js +0 -2
- package/dist/cli/chunks/chunk-2LKAMMMI.js +0 -2
- package/dist/cli/chunks/chunk-4AKGBUYD.js +0 -4
- package/dist/cli/chunks/chunk-4MH22236.js +0 -2
- package/dist/cli/chunks/chunk-4PH7O5ZH.js +0 -2
- package/dist/cli/chunks/chunk-4UCMTYFQ.js +0 -65
- package/dist/cli/chunks/chunk-DRO5NJZA.js +0 -11
- package/dist/cli/chunks/chunk-FPHPP5TQ.js +0 -2
- package/dist/cli/chunks/chunk-FREF6Y4L.js +0 -14
- package/dist/cli/chunks/chunk-G6AV2HGY.js +0 -54
- package/dist/cli/chunks/chunk-GJAWEUIN.js +0 -16
- package/dist/cli/chunks/chunk-IUNMW454.js +0 -2
- package/dist/cli/chunks/chunk-JDXLCNKV.js +0 -2
- package/dist/cli/chunks/chunk-OC2CKU7I.js +0 -2
- package/dist/cli/chunks/chunk-OX6T26CD.js +0 -180
- package/dist/cli/chunks/chunk-PHHXHG2W.js +0 -2
- package/dist/cli/chunks/chunk-SEHCX4NH.js +0 -2
- package/dist/cli/chunks/chunk-TENYL5TI.js +0 -14
- package/dist/cli/chunks/chunk-U2AY57XZ.js +0 -5
- package/dist/cli/chunks/chunk-UYTWDS2R.js +0 -2
- package/dist/cli/chunks/chunk-VSYBMNIR.js +0 -2
- package/dist/cli/chunks/chunk-WBMRADQP.js +0 -81
- package/dist/cli/chunks/chunk-ZWRQ5VAU.js +0 -2
- package/dist/cli/chunks/chunk-ZYLSOBOR.js +0 -2
- package/dist/cli/chunks/ci-NTRH7PAW.js +0 -81
- package/dist/cli/chunks/ci-output-F57RSD35.js +0 -2
- package/dist/cli/chunks/client-GPZEC54E.js +0 -2
- package/dist/cli/chunks/complexity-analyzer-3FNFLACD.js +0 -2
- package/dist/cli/chunks/core-handlers-YMGHYIBR.js +0 -2
- package/dist/cli/chunks/cost-tracker-LTZAQBX7.js +0 -2
- package/dist/cli/chunks/cross-domain-router-ECBNTGYJ.js +0 -2
- package/dist/cli/chunks/dream-EHGKCFWH.js +0 -2
- package/dist/cli/chunks/eval-GL544IPO.js +0 -17
- package/dist/cli/chunks/fleet-DQVQQONW.js +0 -43
- package/dist/cli/chunks/heartbeat-scheduler-UFEL2CBW.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-BLSD45CX.js +0 -2
- package/dist/cli/chunks/hnsw-index-A3RZODEN.js +0 -2
- package/dist/cli/chunks/impact-analyzer-OXHD3FOH.js +0 -2
- package/dist/cli/chunks/init-wizard-PKZL7QBU.js +0 -2
- package/dist/cli/chunks/kernel-XWPM72UJ.js +0 -2
- package/dist/cli/chunks/knowledge-graph-FRKR5XWI.js +0 -2
- package/dist/cli/chunks/learning-EV5LSOOM.js +0 -122
- package/dist/cli/chunks/llm-router-7LYDJUOT.js +0 -37
- package/dist/cli/chunks/llm-router-service-R7A5HHDM.js +0 -2
- package/dist/cli/chunks/load-test-5IKDWSYL.js +0 -2
- package/dist/cli/chunks/memory-backend-7VW5QCMO.js +0 -2
- package/dist/cli/chunks/memory-handlers-VZH3R2TQ.js +0 -2
- package/dist/cli/chunks/multi-model-executor-R6XCTMCF.js +0 -14
- package/dist/cli/chunks/pattern-null-store-BU6LCB2W.js +0 -2
- package/dist/cli/chunks/pipeline-SR5OTY45.js +0 -19
- package/dist/cli/chunks/protocol-executor-BSP5LWJN.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-J2RC7P25.js +0 -2
- package/dist/cli/chunks/queen-coordinator-XI5AJV2V.js +0 -2
- package/dist/cli/chunks/router-VXQYYA3D.js +0 -2
- package/dist/cli/chunks/routing-feedback-HZQTASFF.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-BDTLLJER.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-IB343MDN.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-Y7SN7LHU.js +0 -2
- package/dist/cli/chunks/rvf-store-integrity-OJGWWPLL.js +0 -2
- package/dist/cli/chunks/safe-db-2VTKKBJU.js +0 -2
- package/dist/cli/chunks/schedule-QJ4CFGJY.js +0 -2
- package/dist/cli/chunks/scheduler-2NHDQPC3.js +0 -2
- package/dist/cli/chunks/security-JF3BVNRO.js +0 -14
- package/dist/cli/chunks/sqlite-persistence-NVVAPZN3.js +0 -2
- package/dist/cli/chunks/task-handler-VTNRGAXP.js +0 -49
- package/dist/cli/chunks/task-handlers-FYSDH55N.js +0 -9
- package/dist/cli/chunks/test-scheduling-GPRXSIRP.js +0 -15
- package/dist/cli/chunks/types-OP6IWE6N.js +0 -2
- package/dist/cli/chunks/unified-memory-DSTIEDSH.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-KBV3P4OS.js +0 -2
- package/dist/cli/chunks/unified-persistence-XKCOUBKY.js +0 -2
- package/dist/cli/chunks/visual-security-TTWSPZTZ.js +0 -2
- package/dist/cli/chunks/witness-chain-2KY73HPN.js +0 -2
- package/dist/cli/chunks/workflow-HAZ6YKOG.js +0 -51
- package/dist/cli/chunks/workflow-orchestrator-UK56AVOT.js +0 -2
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { LoggerFactory } from '../../../logging/index.js';
|
|
6
6
|
import { spawn } from 'node:child_process';
|
|
7
|
+
import { createVitestJsonReport } from '../../../shared/vitest-json-report.js';
|
|
7
8
|
import { existsSync, readFileSync } from 'node:fs';
|
|
8
9
|
import { ok, err } from '../../../shared/types/index.js';
|
|
9
10
|
import { TEST_EXECUTION_CONSTANTS, RETRY_CONSTANTS } from '../../constants.js';
|
|
@@ -262,9 +263,9 @@ export class RetryHandlerService {
|
|
|
262
263
|
`or configure testRunner in RetryHandlerConfig. Cannot execute retry for: ${testFile}`);
|
|
263
264
|
}
|
|
264
265
|
// Build command based on runner
|
|
265
|
-
const { command, args } = this.buildTestCommand(runner, testFile, testName);
|
|
266
|
+
const { command, args, report } = this.buildTestCommand(runner, testFile, testName);
|
|
266
267
|
// Execute the test
|
|
267
|
-
return this.spawnTestProcess(command, args, cwd);
|
|
268
|
+
return this.spawnTestProcess(command, args, cwd, report);
|
|
268
269
|
}
|
|
269
270
|
/**
|
|
270
271
|
* Detect which test runner is available in the project
|
|
@@ -323,7 +324,7 @@ export class RetryHandlerService {
|
|
|
323
324
|
return 'mocha';
|
|
324
325
|
}
|
|
325
326
|
}
|
|
326
|
-
catch
|
|
327
|
+
catch {
|
|
327
328
|
// Non-critical: package.json read errors during test runner detection
|
|
328
329
|
logger.debug('package.json read failed:');
|
|
329
330
|
}
|
|
@@ -337,12 +338,15 @@ export class RetryHandlerService {
|
|
|
337
338
|
switch (runner) {
|
|
338
339
|
case 'vitest':
|
|
339
340
|
// vitest run --reporter=json testFile -t "testName"
|
|
341
|
+
// --outputFile: Vitest 5 no longer prints the JSON report to stdout.
|
|
340
342
|
{
|
|
343
|
+
const report = createVitestJsonReport();
|
|
341
344
|
const vitestArgs = ['vitest', 'run', '--reporter=json', testFile];
|
|
342
345
|
if (testName && testName !== testFile) {
|
|
343
346
|
vitestArgs.push('-t', testName);
|
|
344
347
|
}
|
|
345
|
-
|
|
348
|
+
vitestArgs.push(...report.args);
|
|
349
|
+
return { command: npx, args: vitestArgs, report };
|
|
346
350
|
}
|
|
347
351
|
case 'jest':
|
|
348
352
|
// jest --json testFile -t "testName"
|
|
@@ -369,12 +373,16 @@ export class RetryHandlerService {
|
|
|
369
373
|
/**
|
|
370
374
|
* Spawn a test process and parse the result
|
|
371
375
|
*/
|
|
372
|
-
spawnTestProcess(command, args, cwd) {
|
|
376
|
+
spawnTestProcess(command, args, cwd, report) {
|
|
373
377
|
return new Promise((resolve, reject) => {
|
|
374
378
|
const timeout = this.config.testTimeout;
|
|
375
379
|
let stdout = '';
|
|
376
380
|
let stderr = '';
|
|
377
381
|
let timedOut = false;
|
|
382
|
+
const settle = (fn, value) => {
|
|
383
|
+
report?.cleanup();
|
|
384
|
+
fn(value);
|
|
385
|
+
};
|
|
378
386
|
// Note: shell: false (default) to prevent command injection (CWE-78)
|
|
379
387
|
// Arguments are passed as array to avoid shell interpretation
|
|
380
388
|
const proc = spawn(command, args, {
|
|
@@ -396,15 +404,25 @@ export class RetryHandlerService {
|
|
|
396
404
|
proc.on('close', (code) => {
|
|
397
405
|
clearTimeout(timeoutHandle);
|
|
398
406
|
if (timedOut) {
|
|
399
|
-
reject
|
|
407
|
+
settle(reject, new Error(`Test execution timed out after ${timeout}ms for command: ${command} ${args.join(' ')}`));
|
|
400
408
|
return;
|
|
401
409
|
}
|
|
402
|
-
// Parse result based on exit code and output
|
|
403
|
-
|
|
404
|
-
|
|
410
|
+
// Parse result based on exit code and output (Vitest writes the JSON
|
|
411
|
+
// report to the --outputFile; read it back rather than trusting stdout).
|
|
412
|
+
try {
|
|
413
|
+
const reportText = report ? report.read(stdout) : stdout;
|
|
414
|
+
if (reportText === undefined) {
|
|
415
|
+
throw new Error('The current Vitest JSON report is missing for the retry run.');
|
|
416
|
+
}
|
|
417
|
+
settle(resolve, this.parseTestResult(code, reportText, stderr));
|
|
418
|
+
}
|
|
419
|
+
catch (error) {
|
|
420
|
+
settle(reject, toError(error));
|
|
421
|
+
}
|
|
405
422
|
});
|
|
406
423
|
proc.on('error', (err) => {
|
|
407
424
|
clearTimeout(timeoutHandle);
|
|
425
|
+
report?.cleanup();
|
|
408
426
|
reject(new Error(`Failed to spawn test process: ${err.message}. ` +
|
|
409
427
|
`Command: ${command} ${args.join(' ')}. ` +
|
|
410
428
|
`Ensure the test runner is installed and accessible.`));
|
|
@@ -415,55 +433,55 @@ export class RetryHandlerService {
|
|
|
415
433
|
* Parse test runner output to determine pass/fail status
|
|
416
434
|
*/
|
|
417
435
|
parseTestResult(exitCode, stdout, stderr) {
|
|
418
|
-
//
|
|
419
|
-
if (exitCode === 0) {
|
|
420
|
-
return { passed: true };
|
|
421
|
-
}
|
|
422
|
-
// Try to parse JSON output for more detailed error info
|
|
436
|
+
// A passing process and a passing report must agree when JSON is available.
|
|
423
437
|
try {
|
|
424
438
|
// Vitest JSON output
|
|
425
439
|
const vitestMatch = stdout.match(/\{[\s\S]*"testResults"[\s\S]*\}/);
|
|
426
440
|
if (vitestMatch) {
|
|
427
441
|
const result = safeJsonParse(vitestMatch[0]);
|
|
428
|
-
if (
|
|
442
|
+
if (exitCode === 0 && result.success !== false
|
|
443
|
+
&& result.numFailedTests === 0 && result.numFailedTestSuites === 0) {
|
|
429
444
|
return { passed: true };
|
|
430
445
|
}
|
|
431
446
|
const failedTest = result.testResults?.[0]?.assertionResults?.find((r) => r.status === 'failed');
|
|
432
447
|
return {
|
|
433
448
|
passed: false,
|
|
434
|
-
error: failedTest?.failureMessages?.join('\n')
|
|
449
|
+
error: failedTest?.failureMessages?.join('\n') || stderr || `Test failed with exit code ${exitCode}`,
|
|
435
450
|
};
|
|
436
451
|
}
|
|
437
452
|
// Jest JSON output
|
|
438
453
|
const jestMatch = stdout.match(/\{[\s\S]*"numFailedTests"[\s\S]*\}/);
|
|
439
454
|
if (jestMatch) {
|
|
440
455
|
const result = safeJsonParse(jestMatch[0]);
|
|
441
|
-
if (
|
|
456
|
+
if (exitCode === 0 && result.success !== false
|
|
457
|
+
&& result.numFailedTests === 0 && result.numFailedTestSuites === 0) {
|
|
442
458
|
return { passed: true };
|
|
443
459
|
}
|
|
444
460
|
const failedTest = result.testResults?.[0]?.assertionResults?.find((r) => r.status === 'failed');
|
|
445
461
|
return {
|
|
446
462
|
passed: false,
|
|
447
|
-
error: failedTest?.failureMessages?.join('\n')
|
|
463
|
+
error: failedTest?.failureMessages?.join('\n') || stderr || `Test failed with exit code ${exitCode}`,
|
|
448
464
|
};
|
|
449
465
|
}
|
|
450
466
|
// Mocha JSON output
|
|
451
467
|
const mochaMatch = stdout.match(/\{[\s\S]*"stats"[\s\S]*"failures"[\s\S]*\}/);
|
|
452
468
|
if (mochaMatch) {
|
|
453
469
|
const result = safeJsonParse(mochaMatch[0]);
|
|
454
|
-
if (result.stats?.failures === 0) {
|
|
470
|
+
if (exitCode === 0 && result.stats?.failures === 0) {
|
|
455
471
|
return { passed: true };
|
|
456
472
|
}
|
|
457
473
|
const failure = result.failures?.[0];
|
|
458
474
|
return {
|
|
459
475
|
passed: false,
|
|
460
|
-
error: failure?.err?.message
|
|
476
|
+
error: failure?.err?.message || stderr || `Test failed with exit code ${exitCode}`,
|
|
461
477
|
};
|
|
462
478
|
}
|
|
463
479
|
}
|
|
464
480
|
catch {
|
|
465
481
|
// JSON parsing failed, fall back to simple exit code check
|
|
466
482
|
}
|
|
483
|
+
if (exitCode === 0)
|
|
484
|
+
return { passed: true };
|
|
467
485
|
// Non-zero exit code means failure
|
|
468
486
|
const errorOutput = stderr || stdout || `Test failed with exit code ${exitCode}`;
|
|
469
487
|
return {
|
|
@@ -13,6 +13,9 @@ import { toErrorMessage, toError } from '../../../shared/error-utils.js';
|
|
|
13
13
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
14
14
|
import { secureRandom, secureRandomInt } from '../../../shared/utils/crypto-random.js';
|
|
15
15
|
import { writeQualityEvidence } from '../../quality-assessment/quality-evidence.js';
|
|
16
|
+
import { getTestRunnerExecutionError, TestRunnerExecutionError } from '../../../shared/test-runner-verdict.js';
|
|
17
|
+
import { createVitestJsonReport } from '../../../shared/vitest-json-report.js';
|
|
18
|
+
import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
|
|
16
19
|
const DEFAULT_CONFIG = {
|
|
17
20
|
simulateForTesting: false,
|
|
18
21
|
simulatedTestsPerFile: 5,
|
|
@@ -239,13 +242,7 @@ export class TestExecutorService {
|
|
|
239
242
|
* ADR-051: Get model name for tier
|
|
240
243
|
*/
|
|
241
244
|
getModelForTier(tier) {
|
|
242
|
-
|
|
243
|
-
1: 'claude-haiku-4-5',
|
|
244
|
-
2: 'claude-sonnet-4-6',
|
|
245
|
-
3: 'claude-sonnet-4-6',
|
|
246
|
-
4: 'claude-opus-4-7',
|
|
247
|
-
};
|
|
248
|
-
return models[tier] || models[2];
|
|
245
|
+
return getClaudeModelForTier(tier);
|
|
249
246
|
}
|
|
250
247
|
/**
|
|
251
248
|
* ADR-051: LLM-powered test failure analysis
|
|
@@ -271,7 +268,7 @@ Provide:
|
|
|
271
268
|
});
|
|
272
269
|
return response.content;
|
|
273
270
|
}
|
|
274
|
-
catch
|
|
271
|
+
catch {
|
|
275
272
|
logger.warn('LLM analysis failed:');
|
|
276
273
|
return null;
|
|
277
274
|
}
|
|
@@ -340,6 +337,9 @@ Provide:
|
|
|
340
337
|
// Production mode: spawn actual test runner process
|
|
341
338
|
const result = await this.spawnTestRunner(files, framework, timeout);
|
|
342
339
|
if (result.success === false) {
|
|
340
|
+
// Runner/suite errors have no trustworthy assertion receipt to aggregate.
|
|
341
|
+
if (result.error instanceof TestRunnerExecutionError)
|
|
342
|
+
throw result.error;
|
|
343
343
|
// Return as a failed test rather than throwing — allows other files to still run
|
|
344
344
|
return {
|
|
345
345
|
total: files.length,
|
|
@@ -368,28 +368,44 @@ Provide:
|
|
|
368
368
|
return err(new Error(`Test file not found: ${missingFile}`));
|
|
369
369
|
}
|
|
370
370
|
// Build command based on framework
|
|
371
|
-
const { command, args } = this.buildTestCommand(files, framework);
|
|
371
|
+
const { command, args, report } = this.buildTestCommand(files, framework);
|
|
372
372
|
const fileLabel = files.join(', ');
|
|
373
373
|
return new Promise((resolve) => {
|
|
374
374
|
let stdout = '';
|
|
375
375
|
let stderr = '';
|
|
376
376
|
let killed = false;
|
|
377
|
+
let settled = false;
|
|
378
|
+
const finish = (result, cleanup = true) => {
|
|
379
|
+
if (settled)
|
|
380
|
+
return;
|
|
381
|
+
settled = true;
|
|
382
|
+
if (cleanup)
|
|
383
|
+
report?.cleanup();
|
|
384
|
+
resolve(result);
|
|
385
|
+
};
|
|
377
386
|
// Spawn the test runner process
|
|
378
387
|
// Note: shell: false (default) to prevent command injection (CWE-78)
|
|
379
388
|
// Arguments are passed as array to avoid shell interpretation
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
389
|
+
let proc;
|
|
390
|
+
try {
|
|
391
|
+
proc = spawn(command, args, {
|
|
392
|
+
cwd: process.cwd(),
|
|
393
|
+
env: {
|
|
394
|
+
...process.env,
|
|
395
|
+
FORCE_COLOR: '0', // Disable color codes for easier parsing
|
|
396
|
+
CI: 'true', // Enable CI mode for consistent output
|
|
397
|
+
},
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
catch (error) {
|
|
401
|
+
finish(err(new Error(`Failed to spawn test runner: ${toErrorMessage(error)}. Is '${command}' installed?`)));
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
388
404
|
// Set timeout
|
|
389
405
|
const timeoutId = setTimeout(() => {
|
|
390
406
|
killed = true;
|
|
391
407
|
proc.kill('SIGTERM');
|
|
392
|
-
|
|
408
|
+
finish(err(new Error(`Test execution timed out after ${timeout}ms for files: ${fileLabel}`)), false);
|
|
393
409
|
}, timeout);
|
|
394
410
|
proc.stdout?.on('data', (data) => {
|
|
395
411
|
stdout += data.toString();
|
|
@@ -400,10 +416,24 @@ Provide:
|
|
|
400
416
|
proc.on('close', (code) => {
|
|
401
417
|
clearTimeout(timeoutId);
|
|
402
418
|
if (killed) {
|
|
403
|
-
|
|
419
|
+
report?.cleanup();
|
|
420
|
+
return; // Timeout result was already returned; child has now closed.
|
|
421
|
+
}
|
|
422
|
+
// Parse results based on framework. Vitest 5 writes the JSON report to
|
|
423
|
+
// a file instead of stdout, so read it back through the report handle.
|
|
424
|
+
let reportText;
|
|
425
|
+
try {
|
|
426
|
+
reportText = report ? report.read(stdout) : stdout;
|
|
427
|
+
}
|
|
428
|
+
catch (error) {
|
|
429
|
+
finish(err(toError(error)));
|
|
430
|
+
return;
|
|
404
431
|
}
|
|
405
|
-
|
|
406
|
-
|
|
432
|
+
if (reportText === undefined) {
|
|
433
|
+
finish(err(new Error(`The current Vitest JSON report is missing for ${fileLabel}.`)));
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
const parseResult = this.parseTestOutput(reportText, stderr, fileLabel, framework, code);
|
|
407
437
|
// If no coverage in stdout JSON, try reading from disk
|
|
408
438
|
// (vitest/jest write coverage to coverage/coverage-summary.json)
|
|
409
439
|
if (parseResult.success && !parseResult.value.coverage && ['vitest', 'jest'].includes(framework.toLowerCase())) {
|
|
@@ -415,11 +445,13 @@ Provide:
|
|
|
415
445
|
}
|
|
416
446
|
}
|
|
417
447
|
}
|
|
418
|
-
|
|
448
|
+
finish(parseResult);
|
|
419
449
|
});
|
|
420
450
|
proc.on('error', (error) => {
|
|
421
451
|
clearTimeout(timeoutId);
|
|
422
|
-
|
|
452
|
+
if (killed)
|
|
453
|
+
return;
|
|
454
|
+
finish(err(new Error(`Failed to spawn test runner: ${error.message}. Is '${command}' installed?`)));
|
|
423
455
|
});
|
|
424
456
|
});
|
|
425
457
|
}
|
|
@@ -429,11 +461,16 @@ Provide:
|
|
|
429
461
|
buildTestCommand(fileOrFiles, framework) {
|
|
430
462
|
const files = Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles];
|
|
431
463
|
switch (framework.toLowerCase()) {
|
|
432
|
-
case 'vitest':
|
|
464
|
+
case 'vitest': {
|
|
465
|
+
// --outputFile makes Vitest 4 and 5 both write the JSON report to a
|
|
466
|
+
// file we own; Vitest 5 no longer prints it to stdout.
|
|
467
|
+
const report = createVitestJsonReport();
|
|
433
468
|
return {
|
|
434
469
|
command: 'npx',
|
|
435
|
-
args: ['vitest', 'run', ...files, '--reporter=json', '--no-color'],
|
|
470
|
+
args: ['vitest', 'run', ...files, '--reporter=json', '--no-color', ...report.args],
|
|
471
|
+
report,
|
|
436
472
|
};
|
|
473
|
+
}
|
|
437
474
|
case 'jest':
|
|
438
475
|
return {
|
|
439
476
|
command: 'npx',
|
|
@@ -452,12 +489,15 @@ Provide:
|
|
|
452
489
|
command: process.execPath,
|
|
453
490
|
args: ['--test', ...files],
|
|
454
491
|
};
|
|
455
|
-
default:
|
|
492
|
+
default: {
|
|
456
493
|
// Default to vitest
|
|
494
|
+
const report = createVitestJsonReport();
|
|
457
495
|
return {
|
|
458
496
|
command: 'npx',
|
|
459
|
-
args: ['vitest', 'run', ...files, '--reporter=json', '--no-color'],
|
|
497
|
+
args: ['vitest', 'run', ...files, '--reporter=json', '--no-color', ...report.args],
|
|
498
|
+
report,
|
|
460
499
|
};
|
|
500
|
+
}
|
|
461
501
|
}
|
|
462
502
|
}
|
|
463
503
|
/**
|
|
@@ -555,11 +595,14 @@ Provide:
|
|
|
555
595
|
duration: assertion.duration || 0,
|
|
556
596
|
});
|
|
557
597
|
}
|
|
558
|
-
else if (assertion.status === 'skipped' || assertion.status === 'pending') {
|
|
598
|
+
else if (assertion.status === 'skipped' || assertion.status === 'pending' || assertion.status === 'todo') {
|
|
559
599
|
skipped++;
|
|
560
600
|
}
|
|
561
601
|
}
|
|
562
602
|
}
|
|
603
|
+
const executionError = getTestRunnerExecutionError('vitest', file, exitCode, { passed, failed, skipped }, stderr + '\n' + stdout, json);
|
|
604
|
+
if (executionError)
|
|
605
|
+
return err(executionError);
|
|
563
606
|
const covData = this.extractCoverageFromJson(json);
|
|
564
607
|
return ok({
|
|
565
608
|
total: passed + failed + skipped,
|
|
@@ -606,11 +649,14 @@ Provide:
|
|
|
606
649
|
duration: assertion.duration || 0,
|
|
607
650
|
});
|
|
608
651
|
}
|
|
609
|
-
else if (assertion.status === 'skipped' || assertion.status === 'pending') {
|
|
652
|
+
else if (assertion.status === 'skipped' || assertion.status === 'pending' || assertion.status === 'todo') {
|
|
610
653
|
skipped++;
|
|
611
654
|
}
|
|
612
655
|
}
|
|
613
656
|
}
|
|
657
|
+
const executionError = getTestRunnerExecutionError('jest', file, exitCode, { passed, failed, skipped }, stderr + '\n' + stdout, json);
|
|
658
|
+
if (executionError)
|
|
659
|
+
return err(executionError);
|
|
614
660
|
const covData = this.extractCoverageFromJson(json);
|
|
615
661
|
return ok({
|
|
616
662
|
total: passed + failed + skipped,
|
|
@@ -646,6 +692,9 @@ Provide:
|
|
|
646
692
|
duration: failure.duration || 0,
|
|
647
693
|
});
|
|
648
694
|
}
|
|
695
|
+
const executionError = getTestRunnerExecutionError('mocha', file, exitCode, { passed, failed, skipped }, stderr + '\n' + stdout);
|
|
696
|
+
if (executionError)
|
|
697
|
+
return err(executionError);
|
|
649
698
|
return ok({
|
|
650
699
|
total: passed + failed + skipped,
|
|
651
700
|
passed,
|
|
@@ -673,6 +722,9 @@ Provide:
|
|
|
673
722
|
const passed = parseInt(vitestMatch[1], 10) || 0;
|
|
674
723
|
const failed = parseInt(vitestMatch[2], 10) || 0;
|
|
675
724
|
const skipped = parseInt(vitestMatch[3], 10) || 0;
|
|
725
|
+
const executionError = getTestRunnerExecutionError('Test runner', file, exitCode, { passed, failed, skipped }, combinedOutput);
|
|
726
|
+
if (executionError)
|
|
727
|
+
return err(executionError);
|
|
676
728
|
return ok({
|
|
677
729
|
total: passed + failed + skipped,
|
|
678
730
|
passed,
|
|
@@ -688,6 +740,9 @@ Provide:
|
|
|
688
740
|
const failed = parseInt(jestMatch[1], 10) || 0;
|
|
689
741
|
const skipped = parseInt(jestMatch[2], 10) || 0;
|
|
690
742
|
const passed = parseInt(jestMatch[3], 10) || 0;
|
|
743
|
+
const executionError = getTestRunnerExecutionError('Test runner', file, exitCode, { passed, failed, skipped }, combinedOutput);
|
|
744
|
+
if (executionError)
|
|
745
|
+
return err(executionError);
|
|
691
746
|
return ok({
|
|
692
747
|
total: passed + failed + skipped,
|
|
693
748
|
passed,
|
|
@@ -29,6 +29,7 @@ import { resolveRequest } from '../../../shared/language-detector.js';
|
|
|
29
29
|
import { compilationValidator } from './compilation-validator.js';
|
|
30
30
|
import { resolveTestFilePath } from './test-file-resolver.js';
|
|
31
31
|
import { getPromptConfig } from '../prompts/language-prompts.js';
|
|
32
|
+
import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
|
|
32
33
|
// ============================================================================
|
|
33
34
|
// ADR-062 Tier 2: Holdout Test Selection
|
|
34
35
|
// ============================================================================
|
|
@@ -116,13 +117,7 @@ export class TestGeneratorService {
|
|
|
116
117
|
* Get model ID for the configured tier
|
|
117
118
|
*/
|
|
118
119
|
getModelForTier(tier) {
|
|
119
|
-
|
|
120
|
-
case 1: return 'claude-haiku-4-5-20251001';
|
|
121
|
-
case 2: return 'claude-sonnet-4-6';
|
|
122
|
-
case 3: return 'claude-sonnet-4-6';
|
|
123
|
-
case 4: return 'claude-opus-4-7';
|
|
124
|
-
default: return 'claude-sonnet-4-6';
|
|
125
|
-
}
|
|
120
|
+
return getClaudeModelForTier(tier);
|
|
126
121
|
}
|
|
127
122
|
/**
|
|
128
123
|
* Enhance generated test code using LLM
|
|
@@ -7,6 +7,7 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
7
7
|
import { ok, err } from '../../../shared/types/index.js';
|
|
8
8
|
import { FilePath } from '../../../shared/value-objects/index.js';
|
|
9
9
|
import { toError } from '../../../shared/error-utils.js';
|
|
10
|
+
import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
|
|
10
11
|
const DEFAULT_CONFIG = {
|
|
11
12
|
baselineDirectory: '.visual-tests/baselines',
|
|
12
13
|
diffDirectory: '.visual-tests/diffs',
|
|
@@ -88,13 +89,7 @@ export class VisualTesterService {
|
|
|
88
89
|
* ADR-051: Get model name for specified tier
|
|
89
90
|
*/
|
|
90
91
|
getModelForTier(tier) {
|
|
91
|
-
|
|
92
|
-
1: 'claude-haiku-4-5',
|
|
93
|
-
2: 'claude-sonnet-4-6',
|
|
94
|
-
3: 'claude-sonnet-4-6',
|
|
95
|
-
4: 'claude-opus-4-7',
|
|
96
|
-
};
|
|
97
|
-
return models[tier] || models[2];
|
|
92
|
+
return getClaudeModelForTier(tier);
|
|
98
93
|
}
|
|
99
94
|
/**
|
|
100
95
|
* Capture screenshot of URL
|
|
@@ -406,9 +406,9 @@ mcp__agentic-qe__test_generate_enhanced({
|
|
|
406
406
|
detectAntiPatterns: true
|
|
407
407
|
})
|
|
408
408
|
|
|
409
|
-
// Parallel test execution with retry
|
|
409
|
+
// Parallel test execution with retry (concrete paths; expand globs before calling)
|
|
410
410
|
mcp__agentic-qe__test_execute_parallel({
|
|
411
|
-
testFiles: ["tests
|
|
411
|
+
testFiles: ["tests/auth.test.ts", "tests/session.test.ts"],
|
|
412
412
|
parallelism: 4,
|
|
413
413
|
retryFailures: true,
|
|
414
414
|
maxRetries: 3,
|
|
@@ -497,7 +497,7 @@ export function configToYAML(config) {
|
|
|
497
497
|
lines.push('# Set provider/model to override auto-detection from environment API keys');
|
|
498
498
|
lines.push('advisor:');
|
|
499
499
|
lines.push(' # provider: "openrouter" # openrouter | claude | ollama (auto-detected if not set)');
|
|
500
|
-
lines.push(' # model: "anthropic/claude-opus-
|
|
500
|
+
lines.push(' # model: "anthropic/claude-opus-5.5" # provider-specific model ID');
|
|
501
501
|
lines.push(' # maxUses: "3" # per-task advisor call cap');
|
|
502
502
|
lines.push(' redact: "strict" # strict | balanced | off');
|
|
503
503
|
lines.push('');
|
|
@@ -10,6 +10,7 @@ import { join, dirname } from 'path';
|
|
|
10
10
|
import { fileURLToPath } from 'url';
|
|
11
11
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
12
12
|
import { findPackageRoot } from './find-package-root.js';
|
|
13
|
+
import { DEFAULT_HAIKU_MODEL, DEFAULT_OPUS_MODEL, DEFAULT_SONNET_MODEL, } from '../shared/llm/model-registry.js';
|
|
13
14
|
// ESM compatibility
|
|
14
15
|
const __filename = fileURLToPath(import.meta.url);
|
|
15
16
|
const __dirname = dirname(__filename);
|
|
@@ -239,15 +240,15 @@ export class KiroInstaller {
|
|
|
239
240
|
// Map model from frontmatter, falling back to category/priority heuristics
|
|
240
241
|
const rawModel = getField('model');
|
|
241
242
|
const priority = getField('priority');
|
|
242
|
-
let model =
|
|
243
|
+
let model = DEFAULT_SONNET_MODEL;
|
|
243
244
|
if (rawModel) {
|
|
244
245
|
if (rawModel.includes('opus'))
|
|
245
|
-
model =
|
|
246
|
+
model = DEFAULT_OPUS_MODEL;
|
|
246
247
|
else if (rawModel.includes('haiku'))
|
|
247
|
-
model =
|
|
248
|
+
model = DEFAULT_HAIKU_MODEL;
|
|
248
249
|
}
|
|
249
250
|
else if (priority === 'critical') {
|
|
250
|
-
model =
|
|
251
|
+
model = DEFAULT_SONNET_MODEL;
|
|
251
252
|
}
|
|
252
253
|
return {
|
|
253
254
|
name: agentName,
|
|
@@ -339,12 +340,12 @@ export class KiroInstaller {
|
|
|
339
340
|
}
|
|
340
341
|
const allowedTools = [...allowedToolsSet];
|
|
341
342
|
// Map model names
|
|
342
|
-
let model =
|
|
343
|
+
let model = DEFAULT_SONNET_MODEL;
|
|
343
344
|
if (agent.model) {
|
|
344
345
|
if (agent.model.includes('opus'))
|
|
345
|
-
model =
|
|
346
|
+
model = DEFAULT_OPUS_MODEL;
|
|
346
347
|
else if (agent.model.includes('haiku'))
|
|
347
|
-
model =
|
|
348
|
+
model = DEFAULT_HAIKU_MODEL;
|
|
348
349
|
}
|
|
349
350
|
// Convert mcp:agentic-qe: references in prompt text to Kiro @agentic-qe/ format
|
|
350
351
|
const rawPrompt = agent.systemPrompt ?? `You are ${agent.name}, a specialized QE agent in the Agentic QE v3 platform.`;
|
|
@@ -372,7 +373,7 @@ export class KiroInstaller {
|
|
|
372
373
|
const agent = {
|
|
373
374
|
name: 'qe-specialist',
|
|
374
375
|
description: 'Quality Engineering specialist powered by Agentic QE',
|
|
375
|
-
model:
|
|
376
|
+
model: DEFAULT_SONNET_MODEL,
|
|
376
377
|
prompt: 'You are a QE specialist. Use AQE tools for test generation, coverage analysis, and quality assessment. Always call fleet_init before other AQE tools.',
|
|
377
378
|
mcpServers: {
|
|
378
379
|
'agentic-qe': {
|
|
@@ -205,7 +205,7 @@ export class OpenCodeInstaller {
|
|
|
205
205
|
mode: 'subagent',
|
|
206
206
|
};
|
|
207
207
|
// NOTE: `model` is intentionally omitted so agents inherit the user's
|
|
208
|
-
// default OpenCode model. AQE ships model "claude-sonnet-
|
|
208
|
+
// default OpenCode model. AQE ships Claude model IDs (e.g. "claude-sonnet-5") which may
|
|
209
209
|
// not resolve in OpenCode's provider registry; inheriting avoids
|
|
210
210
|
// hard-failing the agent at invocation time.
|
|
211
211
|
const permission = this.buildPermission(name, data.permissions, permissionsYaml);
|
|
@@ -79,14 +79,16 @@ export class HooksPhase extends BasePhase {
|
|
|
79
79
|
// Add AQE environment variables without clobbering any value the user
|
|
80
80
|
// already set — including AQE_-prefixed overrides (only missing keys added).
|
|
81
81
|
const existingEnv = settings.env;
|
|
82
|
-
|
|
82
|
+
const backendOptions = { memoryBackend: context.options.memoryBackend };
|
|
83
|
+
settings.env = mergeAqeEnv(existingEnv, generateAqeEnvVars(config, backendOptions), backendOptions);
|
|
83
84
|
// Apply v3 settings sections non-destructively:
|
|
84
85
|
// - permissions union-merged (preserve user entries, #362)
|
|
85
86
|
// - statusLine / includeCoAuthoredBy preserved when user-set (#362 follow-up)
|
|
86
87
|
// - AQE-owned sections deep-merged so user additions survive
|
|
87
|
-
const v3Sections = generateV3SettingsSections(config, projectRoot);
|
|
88
|
+
const v3Sections = generateV3SettingsSections(config, projectRoot, backendOptions);
|
|
88
89
|
applyV3Sections(settings, v3Sections, {
|
|
89
90
|
statusLine: !context.options.noStatusLine,
|
|
91
|
+
...backendOptions,
|
|
90
92
|
});
|
|
91
93
|
// Enable MCP servers (deduplicate, replace old 'aqe' with 'agentic-qe')
|
|
92
94
|
let existingMcp = settings.enabledMcpjsonServers || [];
|
|
@@ -364,7 +364,7 @@ export class VerificationPhase extends BasePhase {
|
|
|
364
364
|
'# Set provider/model to override auto-detection from environment API keys',
|
|
365
365
|
'advisor:',
|
|
366
366
|
' # provider: "openrouter" # openrouter | claude | ollama (auto-detected if not set)',
|
|
367
|
-
' # model: "anthropic/claude-opus-
|
|
367
|
+
' # model: "anthropic/claude-opus-5.5" # provider-specific model ID',
|
|
368
368
|
' # maxUses: "3" # per-task advisor call cap',
|
|
369
369
|
' redact: "strict" # strict | balanced | off',
|
|
370
370
|
'',
|
|
@@ -44,11 +44,15 @@ export declare function mergeHooksSmart(existingHooks: Record<string, unknown[]>
|
|
|
44
44
|
* `AQE_LEARNING_ENABLED=false` keeps their choice. Non-AQE env vars are always
|
|
45
45
|
* preserved. Returns a new object; inputs are not mutated.
|
|
46
46
|
*/
|
|
47
|
-
export declare function mergeAqeEnv(existingEnv: Record<string, string> | undefined, aqeEnv: Record<string, string
|
|
47
|
+
export declare function mergeAqeEnv(existingEnv: Record<string, string> | undefined, aqeEnv: Record<string, string>, options?: {
|
|
48
|
+
memoryBackend?: string;
|
|
49
|
+
}): Record<string, string>;
|
|
48
50
|
/**
|
|
49
51
|
* Generate the full set of AQE environment variables for settings.json.
|
|
50
52
|
*/
|
|
51
|
-
export declare function generateAqeEnvVars(config: AQEInitConfig
|
|
53
|
+
export declare function generateAqeEnvVars(config: AQEInitConfig, options?: {
|
|
54
|
+
memoryBackend?: string;
|
|
55
|
+
}): Record<string, string>;
|
|
52
56
|
/**
|
|
53
57
|
* Detect whether a `statusLine` block is one AQE generated (vs. a user's own).
|
|
54
58
|
* AQE's status line invokes the statusline-v3.cjs helper (or falls back to the
|
|
@@ -72,10 +76,13 @@ export declare function isAqeStatusLine(statusLine: unknown): boolean;
|
|
|
72
76
|
*/
|
|
73
77
|
export declare function applyV3Sections(settings: Record<string, unknown>, sections: Record<string, unknown>, options?: {
|
|
74
78
|
statusLine?: boolean;
|
|
79
|
+
memoryBackend?: string;
|
|
75
80
|
}): Record<string, unknown>;
|
|
76
81
|
/**
|
|
77
82
|
* Generate v3-specific settings sections for settings.json.
|
|
78
83
|
* These sections enable the self-learning system, status line, and permissions.
|
|
79
84
|
*/
|
|
80
|
-
export declare function generateV3SettingsSections(config: AQEInitConfig, projectRoot?: string
|
|
85
|
+
export declare function generateV3SettingsSections(config: AQEInitConfig, projectRoot?: string, options?: {
|
|
86
|
+
memoryBackend?: string;
|
|
87
|
+
}): Record<string, unknown>;
|
|
81
88
|
//# sourceMappingURL=settings-merge.d.ts.map
|