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
|
@@ -56,6 +56,12 @@ Examples:
|
|
|
56
56
|
const targetPath = path.resolve(target || '.');
|
|
57
57
|
let paths;
|
|
58
58
|
if (gitSince) {
|
|
59
|
+
const { getGitRefError } = await import('../../shared/git/ref-validation.js');
|
|
60
|
+
const refError = getGitRefError(gitSince, '--git-since ref');
|
|
61
|
+
if (refError) {
|
|
62
|
+
console.log(chalk.red(refError));
|
|
63
|
+
return await cleanupAndExit(1);
|
|
64
|
+
}
|
|
59
65
|
// Use git diff to find changed files since the ref
|
|
60
66
|
// SEC: Use execFileSync with array args to prevent shell injection (CWE-78)
|
|
61
67
|
const { execFileSync } = await import('child_process');
|
|
@@ -17,6 +17,7 @@ import * as path from 'path';
|
|
|
17
17
|
import * as yaml from 'yaml';
|
|
18
18
|
import { createParallelEvalRunner, DEFAULT_PARALLEL_EVAL_CONFIG, MockLLMExecutor, } from '../../validation/parallel-eval-runner.js';
|
|
19
19
|
import { resolveEvalExecutor } from '../../validation/provider-llm-executor.js';
|
|
20
|
+
import { DEFAULT_SONNET_MODEL } from '../../shared/llm/model-registry.js';
|
|
20
21
|
import { createCommandEvalRunner, isCommandEvalSuite, } from '../../validation/command-eval-runner.js';
|
|
21
22
|
import { createSkillValidationLearner, } from '../../learning/skill-validation-learner.js';
|
|
22
23
|
import { createRealQEReasoningBank, } from '../../learning/real-qe-reasoning-bank.js';
|
|
@@ -585,7 +586,7 @@ export function createEvalCommand() {
|
|
|
585
586
|
.command('run')
|
|
586
587
|
.description('Run eval suite for a single skill')
|
|
587
588
|
.requiredOption('-s, --skill <skill>', 'Skill name to evaluate')
|
|
588
|
-
.requiredOption('-m, --model <model>',
|
|
589
|
+
.requiredOption('-m, --model <model>', `Model to use (e.g., ${DEFAULT_SONNET_MODEL})`)
|
|
589
590
|
.option('-p, --parallel', 'Enable parallel execution', false)
|
|
590
591
|
.option('-w, --workers <n>', 'Number of parallel workers', parseInt, 5)
|
|
591
592
|
.option('-b, --batch-size <n>', 'Test cases per batch', parseInt, 4)
|
|
@@ -615,7 +616,7 @@ export function createEvalCommand() {
|
|
|
615
616
|
.command('run-all')
|
|
616
617
|
.description('Run eval suites for multiple skills')
|
|
617
618
|
.option('--skills-tier <tier>', 'Skill tier (1=all, 2=P0+P1, 3=P0 only)', parseInt, 3)
|
|
618
|
-
.option('--models <models>', 'Comma-separated models to test',
|
|
619
|
+
.option('--models <models>', 'Comma-separated models to test', DEFAULT_SONNET_MODEL)
|
|
619
620
|
.option('-p, --parallel', 'Enable parallel execution', true)
|
|
620
621
|
.option('-w, --workers <n>', 'Number of parallel workers', parseInt, 5)
|
|
621
622
|
.option('-o, --output <path>', 'Output file path for report')
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Fleet operations with multi-agent progress tracking.
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
7
|
-
import { secureRandomFloat } from '../../shared/utils/crypto-random.js';
|
|
8
7
|
import chalk from 'chalk';
|
|
8
|
+
import { loadCLIDomainPlugins } from '../helpers/domain-plugins.js';
|
|
9
9
|
import { ALL_DOMAINS } from '../../shared/types/index.js';
|
|
10
10
|
import { QEKernelImpl } from '../../kernel/kernel.js';
|
|
11
11
|
import { CrossDomainEventRouter } from '../../coordination/cross-domain-router.js';
|
|
@@ -99,6 +99,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
99
99
|
enableExperienceBridge: false,
|
|
100
100
|
});
|
|
101
101
|
await context.kernel.initialize();
|
|
102
|
+
const domainPlugins = await loadCLIDomainPlugins(context.kernel.plugins);
|
|
102
103
|
console.log(chalk.green(' * Kernel initialized'));
|
|
103
104
|
context.router = new CrossDomainEventRouter(context.kernel.eventBus);
|
|
104
105
|
await context.router.initialize();
|
|
@@ -113,7 +114,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
113
114
|
return context.kernel.getDomainAPI(domain);
|
|
114
115
|
};
|
|
115
116
|
const protocolExecutor = new DefaultProtocolExecutor(context.kernel.eventBus, context.kernel.memory, getDomainAPI);
|
|
116
|
-
context.queen = createQueenCoordinator(context.kernel, context.router, protocolExecutor, undefined);
|
|
117
|
+
context.queen = createQueenCoordinator(context.kernel, context.router, protocolExecutor, undefined, domainPlugins);
|
|
117
118
|
await context.queen.initialize();
|
|
118
119
|
console.log(chalk.green(' * Queen coordinator initialized'));
|
|
119
120
|
context.initialized = true;
|
|
@@ -220,9 +221,15 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
220
221
|
.option('--parallel <count>', 'Number of parallel agents', '4')
|
|
221
222
|
.action(async (operation, options) => {
|
|
222
223
|
if (!await ensureInitialized())
|
|
223
|
-
return;
|
|
224
|
+
return cleanupAndExit(1);
|
|
224
225
|
try {
|
|
225
|
-
const parallelCount =
|
|
226
|
+
const parallelCount = Number(options.parallel);
|
|
227
|
+
if (!Number.isSafeInteger(parallelCount) || parallelCount < 1) {
|
|
228
|
+
throw new Error('--parallel must be a positive integer');
|
|
229
|
+
}
|
|
230
|
+
if (!['test', 'analyze', 'scan'].includes(operation)) {
|
|
231
|
+
throw new Error(`Unsupported operation: ${operation}`);
|
|
232
|
+
}
|
|
226
233
|
console.log(chalk.blue(`\n Fleet Operation: ${operation}\n`));
|
|
227
234
|
const progress = new FleetProgressManager({
|
|
228
235
|
title: `${operation.charAt(0).toUpperCase() + operation.slice(1)} Progress`,
|
|
@@ -234,7 +241,7 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
234
241
|
analyze: 'coverage-analysis',
|
|
235
242
|
scan: 'security-compliance',
|
|
236
243
|
};
|
|
237
|
-
const domain = domainMap[operation]
|
|
244
|
+
const domain = domainMap[operation];
|
|
238
245
|
const agentOperations = Array.from({ length: parallelCount }, (_, i) => {
|
|
239
246
|
const agentId = `${operation}-agent-${i + 1}`;
|
|
240
247
|
return {
|
|
@@ -251,16 +258,9 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
251
258
|
progress: 0,
|
|
252
259
|
});
|
|
253
260
|
}
|
|
254
|
-
const results = await Promise.all(agentOperations.map(async (op
|
|
255
|
-
await new Promise(resolve => setTimeout(resolve, index * 200));
|
|
261
|
+
const results = await Promise.all(agentOperations.map(async (op) => {
|
|
256
262
|
progress.updateAgent(op.id, 0, { status: 'running' });
|
|
257
263
|
try {
|
|
258
|
-
for (let p = 10; p <= 90; p += 20) {
|
|
259
|
-
await new Promise(resolve => setTimeout(resolve, secureRandomFloat(300, 500)));
|
|
260
|
-
progress.updateAgent(op.id, p, {
|
|
261
|
-
eta: Math.round((100 - p) * 50),
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
264
|
const taskResult = await context.queen.submitTask({
|
|
265
265
|
type: operation === 'test' ? 'generate-tests' :
|
|
266
266
|
operation === 'analyze' ? 'analyze-coverage' :
|
|
@@ -270,10 +270,29 @@ export function createFleetCommand(context, cleanupAndExit, ensureInitialized, r
|
|
|
270
270
|
payload: { target: options.target, workerId: op.id },
|
|
271
271
|
timeout: 60000,
|
|
272
272
|
});
|
|
273
|
-
|
|
274
|
-
|
|
273
|
+
if (!taskResult.success) {
|
|
274
|
+
throw taskResult.error;
|
|
275
|
+
}
|
|
276
|
+
// Submission is only an acknowledgement. Keep the process alive
|
|
277
|
+
// until the domain reports a terminal result or the task expires.
|
|
278
|
+
const deadline = Date.now() + 60000;
|
|
279
|
+
while (Date.now() < deadline) {
|
|
280
|
+
const task = context.queen.getTaskStatus(taskResult.value);
|
|
281
|
+
if (!task)
|
|
282
|
+
throw new Error(`Task status unavailable: ${taskResult.value}`);
|
|
283
|
+
if (task.status === 'completed') {
|
|
284
|
+
progress.completeAgent(op.id, true);
|
|
285
|
+
return { id: op.id, success: true };
|
|
286
|
+
}
|
|
287
|
+
if (task.status === 'failed' || task.status === 'cancelled') {
|
|
288
|
+
throw new Error(task.error || `Task ${task.status}`);
|
|
289
|
+
}
|
|
290
|
+
await new Promise(resolve => setTimeout(resolve, 250));
|
|
291
|
+
}
|
|
292
|
+
throw new Error(`Task timed out: ${taskResult.value}`);
|
|
275
293
|
}
|
|
276
|
-
catch {
|
|
294
|
+
catch (error) {
|
|
295
|
+
console.error(chalk.red(` ${op.name}: ${error instanceof Error ? error.message : String(error)}`));
|
|
277
296
|
progress.completeAgent(op.id, false);
|
|
278
297
|
return { id: op.id, success: false };
|
|
279
298
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
interface SnapshotInfo {
|
|
2
|
+
schemaVersion: number;
|
|
3
|
+
pages: number;
|
|
4
|
+
verification: {
|
|
5
|
+
valid: true;
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export interface LearningBackupResult {
|
|
10
|
+
backupPath: string;
|
|
11
|
+
sourceSizeKB: number;
|
|
12
|
+
backupSizeKB: number;
|
|
13
|
+
compressed: boolean;
|
|
14
|
+
schemaVersion: number;
|
|
15
|
+
verification: SnapshotInfo['verification'];
|
|
16
|
+
}
|
|
17
|
+
/** Publish only a complete standalone image; the existing artifact survives staging failures. */
|
|
18
|
+
export declare function backupLearningDatabase(source: string, output: string, options?: {
|
|
19
|
+
compress?: boolean;
|
|
20
|
+
verify?: boolean;
|
|
21
|
+
}): Promise<LearningBackupResult>;
|
|
22
|
+
export interface LearningRestoreResult {
|
|
23
|
+
sizeKB: number;
|
|
24
|
+
schemaVersion: number;
|
|
25
|
+
wasCompressed: boolean;
|
|
26
|
+
safetyBackupPath?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Validate before replacing anything and retain a verified pre-restore image.
|
|
30
|
+
* SQLite mediates the destination write: never unlink its DB/WAL/SHM files.
|
|
31
|
+
* Stop project writers before restore; this does not coordinate later writes
|
|
32
|
+
* from other processes or refresh their in-memory learning caches.
|
|
33
|
+
*/
|
|
34
|
+
export declare function restoreLearningDatabase(input: string, destination: string, options?: {
|
|
35
|
+
force?: boolean;
|
|
36
|
+
}): Promise<LearningRestoreResult>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=learning-snapshot.d.ts.map
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/** Consistent, verified SQLite images for the learning backup/restore commands. */
|
|
2
|
+
import { existsSync, realpathSync, statSync } from 'node:fs';
|
|
3
|
+
import { mkdir, mkdtemp, rename, rm, stat } from 'node:fs/promises';
|
|
4
|
+
import { basename, dirname, join, resolve } from 'node:path';
|
|
5
|
+
import { randomUUID } from 'node:crypto';
|
|
6
|
+
import { openDatabase } from '../../shared/safe-db.js';
|
|
7
|
+
import { compressFile, decompressFile } from './learning-helpers.js';
|
|
8
|
+
function inspectSnapshot(file) {
|
|
9
|
+
const db = openDatabase(file, { readonly: true, fileMustExist: true });
|
|
10
|
+
try {
|
|
11
|
+
const checks = db.pragma('integrity_check');
|
|
12
|
+
if (checks.length !== 1 || checks[0].integrity_check !== 'ok') {
|
|
13
|
+
throw new Error('Database integrity verification failed');
|
|
14
|
+
}
|
|
15
|
+
const hasVersion = db.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='schema_version'").get();
|
|
16
|
+
const version = hasVersion
|
|
17
|
+
? db.prepare('SELECT version FROM schema_version WHERE id = 1').get()
|
|
18
|
+
: undefined;
|
|
19
|
+
return {
|
|
20
|
+
schemaVersion: version?.version ?? 0,
|
|
21
|
+
pages: db.pragma('page_count', { simple: true }),
|
|
22
|
+
verification: { valid: true, message: 'Database integrity verified' },
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
db.close();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function canonicalPath(file) {
|
|
30
|
+
return existsSync(file) ? realpathSync(file) : join(realpathSync(dirname(file)), basename(file));
|
|
31
|
+
}
|
|
32
|
+
function sameFile(left, right) {
|
|
33
|
+
if (canonicalPath(left) === canonicalPath(right))
|
|
34
|
+
return true;
|
|
35
|
+
if (!existsSync(left) || !existsSync(right))
|
|
36
|
+
return false;
|
|
37
|
+
const a = statSync(left);
|
|
38
|
+
const b = statSync(right);
|
|
39
|
+
return a.dev === b.dev && a.ino === b.ino;
|
|
40
|
+
}
|
|
41
|
+
function assertDistinct(source, destination) {
|
|
42
|
+
const sourcePath = canonicalPath(source);
|
|
43
|
+
const destinationPath = canonicalPath(destination);
|
|
44
|
+
for (const suffix of ['', '-wal', '-shm', '-journal']) {
|
|
45
|
+
if (sameFile(`${sourcePath}${suffix}`, destination)
|
|
46
|
+
|| sameFile(source, `${destinationPath}${suffix}`)) {
|
|
47
|
+
throw new Error('Backup source and destination must not alias the same database or its sidecars');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function assertRegularFile(file) {
|
|
52
|
+
if (!statSync(file).isFile())
|
|
53
|
+
throw new Error('Backup input must be a regular file');
|
|
54
|
+
}
|
|
55
|
+
/** Awaiting backup alone is insufficient: a busy destination can report 0/0. */
|
|
56
|
+
async function copySqliteSnapshot(source, destination, options = {}) {
|
|
57
|
+
const db = openDatabase(source, { readonly: true, fileMustExist: true });
|
|
58
|
+
try {
|
|
59
|
+
const result = await db.backup(destination);
|
|
60
|
+
if (result.totalPages <= 0 || result.remainingPages !== 0
|
|
61
|
+
|| (options.expectedPages !== undefined && result.totalPages !== options.expectedPages)) {
|
|
62
|
+
throw new Error('SQLite snapshot did not complete; the source may be empty or the destination busy');
|
|
63
|
+
}
|
|
64
|
+
if (options.standalone) {
|
|
65
|
+
// Only private new images are normalized. A WAL header otherwise makes
|
|
66
|
+
// SQLite try to create sidecars when reading an archive on readonly media.
|
|
67
|
+
const image = openDatabase(destination, { fileMustExist: true, walMode: false });
|
|
68
|
+
try {
|
|
69
|
+
if (image.pragma('journal_mode = DELETE', { simple: true }) !== 'delete') {
|
|
70
|
+
throw new Error('Could not create a standalone SQLite image');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
image.close();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const inspected = inspectSnapshot(destination);
|
|
78
|
+
if (inspected.pages !== result.totalPages) {
|
|
79
|
+
throw new Error('SQLite snapshot page count does not match the completed backup');
|
|
80
|
+
}
|
|
81
|
+
return inspected;
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
db.close();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/** Publish only a complete standalone image; the existing artifact survives staging failures. */
|
|
88
|
+
export async function backupLearningDatabase(source, output, options = {}) {
|
|
89
|
+
assertRegularFile(source);
|
|
90
|
+
const finalPath = resolve(options.compress ? `${output}.gz` : output);
|
|
91
|
+
await mkdir(dirname(finalPath), { recursive: true });
|
|
92
|
+
assertDistinct(source, resolve(output));
|
|
93
|
+
assertDistinct(source, finalPath);
|
|
94
|
+
const staging = await mkdtemp(join(dirname(finalPath), '.aqe-backup-'));
|
|
95
|
+
try {
|
|
96
|
+
const image = join(staging, 'snapshot.db');
|
|
97
|
+
const info = await copySqliteSnapshot(source, image, { standalone: true });
|
|
98
|
+
const published = options.compress ? await compressFile(image) : image;
|
|
99
|
+
if (options.compress && options.verify) {
|
|
100
|
+
const checkedImage = join(staging, 'verified.db');
|
|
101
|
+
await decompressFile(published, checkedImage);
|
|
102
|
+
inspectSnapshot(checkedImage);
|
|
103
|
+
}
|
|
104
|
+
const sourceSizeKB = Number(((await stat(source)).size / 1024).toFixed(2));
|
|
105
|
+
const backupSizeKB = Number(((await stat(published)).size / 1024).toFixed(2));
|
|
106
|
+
// An existing DB+WAL pair may be live. Never replace its main file while
|
|
107
|
+
// leaving old sidecars that could be replayed against the new image.
|
|
108
|
+
if (['-wal', '-shm', '-journal'].some(suffix => existsSync(`${finalPath}${suffix}`))) {
|
|
109
|
+
throw new Error('Backup destination has SQLite sidecars; choose an unused output path');
|
|
110
|
+
}
|
|
111
|
+
await rename(published, finalPath);
|
|
112
|
+
return { backupPath: finalPath, sourceSizeKB, backupSizeKB, compressed: !!options.compress,
|
|
113
|
+
schemaVersion: info.schemaVersion, verification: info.verification };
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
await rm(staging, { recursive: true, force: true });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Validate before replacing anything and retain a verified pre-restore image.
|
|
121
|
+
* SQLite mediates the destination write: never unlink its DB/WAL/SHM files.
|
|
122
|
+
* Stop project writers before restore; this does not coordinate later writes
|
|
123
|
+
* from other processes or refresh their in-memory learning caches.
|
|
124
|
+
*/
|
|
125
|
+
export async function restoreLearningDatabase(input, destination, options = {}) {
|
|
126
|
+
assertRegularFile(input);
|
|
127
|
+
await mkdir(dirname(destination), { recursive: true });
|
|
128
|
+
assertDistinct(input, destination);
|
|
129
|
+
if (existsSync(destination) && !options.force) {
|
|
130
|
+
throw new Error(`Database already exists at: ${destination}. Use --force to overwrite`);
|
|
131
|
+
}
|
|
132
|
+
const staging = await mkdtemp(join(dirname(destination), '.aqe-restore-'));
|
|
133
|
+
let safetyBackupPath;
|
|
134
|
+
try {
|
|
135
|
+
const wasCompressed = input.endsWith('.gz');
|
|
136
|
+
const image = join(staging, 'snapshot.db');
|
|
137
|
+
let source = input;
|
|
138
|
+
if (wasCompressed) {
|
|
139
|
+
source = join(staging, 'decompressed.db');
|
|
140
|
+
await decompressFile(input, source);
|
|
141
|
+
}
|
|
142
|
+
// A legacy uncompressed backup may still need its companion WAL.
|
|
143
|
+
const info = await copySqliteSnapshot(source, image, { standalone: true });
|
|
144
|
+
const sizeKB = Number(((await stat(image)).size / 1024).toFixed(2));
|
|
145
|
+
if (existsSync(destination)) {
|
|
146
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
147
|
+
const candidate = `${destination}.pre-restore-${timestamp}-${randomUUID()}.db`;
|
|
148
|
+
try {
|
|
149
|
+
await copySqliteSnapshot(destination, candidate, { standalone: true });
|
|
150
|
+
safetyBackupPath = candidate;
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
await rm(candidate, { force: true });
|
|
154
|
+
throw new Error('Cannot create a verified safety backup of the existing database; restore refused. Stop project processes and preserve the database and its sidecars before restoring into an absent destination.', { cause: error });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
await copySqliteSnapshot(image, destination, { expectedPages: info.pages });
|
|
158
|
+
return { sizeKB, schemaVersion: info.schemaVersion, wasCompressed, safetyBackupPath };
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (safetyBackupPath) {
|
|
162
|
+
const detail = error instanceof Error ? error.message : 'SQLite snapshot failed';
|
|
163
|
+
throw new Error(`Restore failed: ${detail}; previous database snapshot preserved at ${safetyBackupPath}`, { cause: error });
|
|
164
|
+
}
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
await rm(staging, { recursive: true, force: true });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=learning-snapshot.js.map
|
|
@@ -13,13 +13,14 @@ import { Command } from 'commander';
|
|
|
13
13
|
import chalk from 'chalk';
|
|
14
14
|
import path from 'node:path';
|
|
15
15
|
import { findProjectRoot } from '../../kernel/unified-memory.js';
|
|
16
|
-
import { existsSync, writeFileSync, readFileSync,
|
|
16
|
+
import { existsSync, writeFileSync, readFileSync, copyFileSync, renameSync } from 'node:fs';
|
|
17
17
|
import { safeJsonParse } from '../../shared/safe-json.js';
|
|
18
18
|
import { stat, unlink } from 'node:fs/promises';
|
|
19
19
|
import { QE_DOMAIN_LIST } from '../../learning/qe-patterns.js';
|
|
20
20
|
import { createLearningMetricsTracker, } from '../../learning/metrics-tracker.js';
|
|
21
21
|
import { createRegretTracker, } from '../../learning/regret-tracker.js';
|
|
22
22
|
import { openDatabase } from '../../shared/safe-db.js';
|
|
23
|
+
import { backupLearningDatabase, restoreLearningDatabase } from './learning-snapshot.js';
|
|
23
24
|
import { createSQLitePatternStore } from '../../learning/sqlite-persistence.js';
|
|
24
25
|
import { getActiveEmbeddingSpaceIdentity } from '../../learning/real-embeddings.js';
|
|
25
26
|
import { inspectEmbeddingSpaceRows } from '../../learning/embedding-space.js';
|
|
@@ -692,7 +693,7 @@ function registerBackupCommand(learning) {
|
|
|
692
693
|
learning
|
|
693
694
|
.command('backup')
|
|
694
695
|
.description('Backup learning database to a file')
|
|
695
|
-
.option('-o, --output <path>', '
|
|
696
|
+
.option('-o, --output <path>', 'Dedicated backup artifact path; never another live database')
|
|
696
697
|
.option('--compress', 'Compress backup with gzip')
|
|
697
698
|
.option('--verify', 'Verify backup integrity after creation')
|
|
698
699
|
.option('--json', 'Output as JSON')
|
|
@@ -704,30 +705,11 @@ function registerBackupCommand(learning) {
|
|
|
704
705
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
705
706
|
const defaultOutput = path.join(process.cwd(), 'backups', `learning-${timestamp}.db`);
|
|
706
707
|
const outputPath = options.output ? path.resolve(options.output) : defaultOutput;
|
|
707
|
-
const
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
const sourceStats = await stat(dbPath);
|
|
711
|
-
const sourceSizeKB = (sourceStats.size / 1024).toFixed(2);
|
|
712
|
-
copyFileSync(dbPath, outputPath);
|
|
713
|
-
const walPath = `${dbPath}-wal`;
|
|
714
|
-
if (existsSync(walPath))
|
|
715
|
-
copyFileSync(walPath, `${outputPath}-wal`);
|
|
716
|
-
let finalPath = outputPath;
|
|
717
|
-
if (options.compress) {
|
|
718
|
-
finalPath = await compressFile(outputPath);
|
|
719
|
-
await unlink(outputPath);
|
|
720
|
-
if (existsSync(`${outputPath}-wal`))
|
|
721
|
-
await unlink(`${outputPath}-wal`);
|
|
722
|
-
}
|
|
723
|
-
const finalStats = await stat(finalPath);
|
|
724
|
-
const finalSizeKB = (finalStats.size / 1024).toFixed(2);
|
|
725
|
-
let verificationResult;
|
|
726
|
-
if (options.verify && !options.compress)
|
|
727
|
-
verificationResult = await verifyDatabaseIntegrity(outputPath);
|
|
728
|
-
const schemaVersion = await getSchemaVersion(dbPath);
|
|
708
|
+
const snapshot = await backupLearningDatabase(dbPath, outputPath, options);
|
|
709
|
+
const { backupPath: finalPath, sourceSizeKB, backupSizeKB: finalSizeKB, schemaVersion } = snapshot;
|
|
710
|
+
const verificationResult = options.verify ? snapshot.verification : undefined;
|
|
729
711
|
if (options.json) {
|
|
730
|
-
printJson({ success: true, sourcePath: dbPath, backupPath: finalPath, sourceSizeKB
|
|
712
|
+
printJson({ success: true, sourcePath: dbPath, backupPath: finalPath, sourceSizeKB, backupSizeKB: finalSizeKB, compressed: options.compress || false, schemaVersion, verification: verificationResult, timestamp: new Date().toISOString() });
|
|
731
713
|
}
|
|
732
714
|
else {
|
|
733
715
|
console.log(chalk.bold('\n💾 Learning Database Backup\n'));
|
|
@@ -737,7 +719,7 @@ function registerBackupCommand(learning) {
|
|
|
737
719
|
console.log(` Backup size: ${finalSizeKB} KB`);
|
|
738
720
|
console.log(` Schema version: ${schemaVersion}`);
|
|
739
721
|
if (options.compress) {
|
|
740
|
-
const compressionRatio = ((1 -
|
|
722
|
+
const compressionRatio = ((1 - finalSizeKB / sourceSizeKB) * 100).toFixed(1);
|
|
741
723
|
console.log(` Compression: ${compressionRatio}% reduction`);
|
|
742
724
|
}
|
|
743
725
|
if (verificationResult) {
|
|
@@ -759,9 +741,9 @@ function registerBackupCommand(learning) {
|
|
|
759
741
|
function registerRestoreCommand(learning) {
|
|
760
742
|
learning
|
|
761
743
|
.command('restore')
|
|
762
|
-
.description('Restore learning database
|
|
744
|
+
.description('Restore a verified learning database backup (stop project writers first)')
|
|
763
745
|
.requiredOption('-i, --input <path>', 'Backup file path to restore from')
|
|
764
|
-
.option('--verify', 'Verify backup integrity before restore')
|
|
746
|
+
.option('--verify', 'Verify backup integrity before restore (always enforced)')
|
|
765
747
|
.option('--force', 'Overwrite existing database without confirmation')
|
|
766
748
|
.option('--json', 'Output as JSON')
|
|
767
749
|
.action(async (options) => {
|
|
@@ -770,49 +752,19 @@ function registerRestoreCommand(learning) {
|
|
|
770
752
|
const dbPath = getDbPath();
|
|
771
753
|
if (!existsSync(inputPath))
|
|
772
754
|
throw new Error(`Backup file not found: ${inputPath}`);
|
|
773
|
-
const
|
|
774
|
-
|
|
775
|
-
if (isCompressed) {
|
|
776
|
-
const tempPath = inputPath.replace('.gz', '.tmp');
|
|
777
|
-
await decompressFile(inputPath, tempPath);
|
|
778
|
-
restorePath = tempPath;
|
|
779
|
-
}
|
|
780
|
-
if (options.verify) {
|
|
781
|
-
const verificationResult = await verifyDatabaseIntegrity(restorePath);
|
|
782
|
-
if (!verificationResult.valid) {
|
|
783
|
-
if (isCompressed && existsSync(restorePath))
|
|
784
|
-
await unlink(restorePath);
|
|
785
|
-
throw new Error(`Backup verification failed: ${verificationResult.message}`);
|
|
786
|
-
}
|
|
787
|
-
}
|
|
788
|
-
if (existsSync(dbPath) && !options.force) {
|
|
789
|
-
if (isCompressed && existsSync(restorePath))
|
|
790
|
-
await unlink(restorePath);
|
|
791
|
-
throw new Error(`Database already exists at: ${dbPath}. Use --force to overwrite`);
|
|
792
|
-
}
|
|
793
|
-
const targetDir = path.dirname(dbPath);
|
|
794
|
-
if (!existsSync(targetDir))
|
|
795
|
-
mkdirSync(targetDir, { recursive: true });
|
|
796
|
-
if (existsSync(dbPath))
|
|
797
|
-
await unlink(dbPath);
|
|
798
|
-
if (existsSync(`${dbPath}-wal`))
|
|
799
|
-
await unlink(`${dbPath}-wal`);
|
|
800
|
-
if (existsSync(`${dbPath}-shm`))
|
|
801
|
-
await unlink(`${dbPath}-shm`);
|
|
802
|
-
copyFileSync(restorePath, dbPath);
|
|
803
|
-
if (isCompressed && existsSync(restorePath))
|
|
804
|
-
await unlink(restorePath);
|
|
805
|
-
const restoredStats = await stat(dbPath);
|
|
806
|
-
const schemaVersion = await getSchemaVersion(dbPath);
|
|
755
|
+
const restored = await restoreLearningDatabase(inputPath, dbPath, { force: options.force });
|
|
756
|
+
const { sizeKB, schemaVersion, wasCompressed: isCompressed, safetyBackupPath } = restored;
|
|
807
757
|
if (options.json) {
|
|
808
|
-
printJson({ success: true, backupPath: inputPath, restoredPath: dbPath, sizeKB
|
|
758
|
+
printJson({ success: true, backupPath: inputPath, restoredPath: dbPath, sizeKB, schemaVersion, wasCompressed: isCompressed, safetyBackupPath, timestamp: new Date().toISOString() });
|
|
809
759
|
}
|
|
810
760
|
else {
|
|
811
761
|
console.log(chalk.bold('\n🔄 Learning Database Restore\n'));
|
|
812
762
|
console.log(` Backup: ${inputPath}`);
|
|
813
763
|
console.log(` Restored to: ${dbPath}`);
|
|
814
|
-
console.log(` Size: ${
|
|
764
|
+
console.log(` Size: ${sizeKB.toFixed(2)} KB`);
|
|
815
765
|
console.log(` Schema version: ${schemaVersion}`);
|
|
766
|
+
if (safetyBackupPath)
|
|
767
|
+
console.log(` Previous database: ${safetyBackupPath}`);
|
|
816
768
|
printSuccess('Database restored successfully\n');
|
|
817
769
|
}
|
|
818
770
|
return;
|
|
@@ -15,6 +15,7 @@ import { secureRandomInt } from '../../shared/utils/crypto-random.js';
|
|
|
15
15
|
import chalk from 'chalk';
|
|
16
16
|
import { ALL_PROVIDER_TYPES, DEFAULT_MODEL_MAPPINGS, isBuiltinExtendedProviderType, } from '../../shared/llm/router/types.js';
|
|
17
17
|
import { getRegisteredProvider, isRegisteredProvider, registeredProviderTypes, } from '../../shared/llm/provider-registry.js';
|
|
18
|
+
import { DEFAULT_OPUS_MODEL, DEFAULT_SONNET_MODEL } from '../../shared/llm/model-registry.js';
|
|
18
19
|
import { resolvesOnPath } from '../../shared/llm/providers/external-cli.js';
|
|
19
20
|
// ============================================================================
|
|
20
21
|
// CLI config state (lazy-loaded from .agentic-qe/llm-config.json)
|
|
@@ -74,7 +75,7 @@ Examples:
|
|
|
74
75
|
$ aqe llm route "security audit" Test routing for a task
|
|
75
76
|
$ aqe llm config --set mode=cost-optimized
|
|
76
77
|
$ aqe llm health Check provider health
|
|
77
|
-
$ aqe llm cost claude-sonnet-
|
|
78
|
+
$ aqe llm cost claude-sonnet-5 --tokens 10000
|
|
78
79
|
$ aqe llm advise --transcript t.json --json Consult advisor (ADR-092)
|
|
79
80
|
$ aqe llm verify --session <id> Check advisor quality gate
|
|
80
81
|
`);
|
|
@@ -411,15 +412,15 @@ function formatCost(cost) {
|
|
|
411
412
|
}
|
|
412
413
|
function getDefaultModelForProvider(provider) {
|
|
413
414
|
const defaults = {
|
|
414
|
-
claude:
|
|
415
|
+
claude: DEFAULT_SONNET_MODEL,
|
|
415
416
|
'claude-code': 'sonnet',
|
|
416
|
-
codex: '
|
|
417
|
-
openai: 'gpt-
|
|
418
|
-
ollama: '
|
|
419
|
-
openrouter: 'anthropic/claude-sonnet-
|
|
420
|
-
gemini: 'gemini-2.
|
|
417
|
+
codex: 'default',
|
|
418
|
+
openai: 'gpt-6-sol',
|
|
419
|
+
ollama: 'qwen3-coder:30b',
|
|
420
|
+
openrouter: 'anthropic/claude-sonnet-5',
|
|
421
|
+
gemini: 'gemini-2.5-flash',
|
|
421
422
|
'azure-openai': 'gpt-4o',
|
|
422
|
-
bedrock: 'anthropic.claude-sonnet-4-v1:0',
|
|
423
|
+
bedrock: 'anthropic.claude-sonnet-4-6-v1:0',
|
|
423
424
|
cognitum: 'cognitum-auto',
|
|
424
425
|
onnx: 'phi-4',
|
|
425
426
|
};
|
|
@@ -470,10 +471,10 @@ function simulateRoutingDecision(task, options) {
|
|
|
470
471
|
if (agentType?.includes('security') || task.toLowerCase().includes('security')) {
|
|
471
472
|
return {
|
|
472
473
|
provider: 'claude',
|
|
473
|
-
model:
|
|
474
|
+
model: DEFAULT_SONNET_MODEL,
|
|
474
475
|
reason: 'Security tasks require advanced reasoning (rule-match)',
|
|
475
476
|
confidence: 0.95,
|
|
476
|
-
estimatedCost: { inputTokens: 2000, outputTokens: 1000, totalCostUsd: 0.
|
|
477
|
+
estimatedCost: { inputTokens: 2000, outputTokens: 1000, totalCostUsd: 0.014 },
|
|
477
478
|
};
|
|
478
479
|
}
|
|
479
480
|
if (mode === 'cost-optimized' || complexity === 'trivial' || complexity === 'low') {
|
|
@@ -488,10 +489,10 @@ function simulateRoutingDecision(task, options) {
|
|
|
488
489
|
if (mode === 'performance-optimized' || complexity === 'expert') {
|
|
489
490
|
return {
|
|
490
491
|
provider: 'claude',
|
|
491
|
-
model:
|
|
492
|
+
model: DEFAULT_OPUS_MODEL,
|
|
492
493
|
reason: 'Complex task requires flagship model',
|
|
493
494
|
confidence: 0.92,
|
|
494
|
-
estimatedCost: { inputTokens: 2000, outputTokens: 1000, totalCostUsd: 0.
|
|
495
|
+
estimatedCost: { inputTokens: 2000, outputTokens: 1000, totalCostUsd: 0.028 },
|
|
495
496
|
};
|
|
496
497
|
}
|
|
497
498
|
// Default
|
package/dist/cli/commands/mcp.js
CHANGED
|
@@ -13,6 +13,8 @@ import { join, dirname } from 'path';
|
|
|
13
13
|
import { existsSync } from 'fs';
|
|
14
14
|
import { fileURLToPath, pathToFileURL } from 'url';
|
|
15
15
|
import { findPackageRoot } from '../../init/find-package-root.js';
|
|
16
|
+
import { resolveCliLogLevel, setCliLogLevel } from '../log-gate.js';
|
|
17
|
+
import { LogLevel } from '../../logging/index.js';
|
|
16
18
|
/**
|
|
17
19
|
* Create the MCP command
|
|
18
20
|
*/
|
|
@@ -28,6 +30,10 @@ export function createMcpCommand() {
|
|
|
28
30
|
if (options.verbose) {
|
|
29
31
|
process.env.AQE_VERBOSE = 'true';
|
|
30
32
|
}
|
|
33
|
+
// The server runs in this process under the CLI log gate. Keep its
|
|
34
|
+
// historical INFO default (diagnostics go to stderr, never the stdio
|
|
35
|
+
// protocol stream) unless AQE_LOG_LEVEL / LOG_LEVEL say otherwise.
|
|
36
|
+
setCliLogLevel(resolveCliLogLevel(process.env, LogLevel.INFO));
|
|
31
37
|
// Find the MCP entry point
|
|
32
38
|
const entryPath = findMcpEntry();
|
|
33
39
|
if (!entryPath) {
|
|
@@ -7,5 +7,5 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Command } from 'commander';
|
|
9
9
|
import type { CLIContext } from '../handlers/interfaces.js';
|
|
10
|
-
export declare function createMemoryCommand(context: CLIContext, cleanupAndExit: (code: number) => Promise<never>,
|
|
10
|
+
export declare function createMemoryCommand(context: CLIContext, cleanupAndExit: (code: number) => Promise<never>, ensureMemoryReady: () => Promise<boolean>): Command;
|
|
11
11
|
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { Command } from 'commander';
|
|
9
9
|
import chalk from 'chalk';
|
|
10
10
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
11
|
-
export function createMemoryCommand(context, cleanupAndExit,
|
|
11
|
+
export function createMemoryCommand(context, cleanupAndExit, ensureMemoryReady) {
|
|
12
12
|
const memory = new Command('memory')
|
|
13
13
|
.description('Memory store, retrieve, search, and delete operations')
|
|
14
14
|
.addHelpText('after', `
|
|
@@ -47,7 +47,7 @@ Examples:
|
|
|
47
47
|
.option('--ttl <seconds>', 'Time-to-live in seconds')
|
|
48
48
|
.option('--json', 'Output as JSON')
|
|
49
49
|
.action(async (options) => {
|
|
50
|
-
if (!await
|
|
50
|
+
if (!await ensureMemoryReady())
|
|
51
51
|
return;
|
|
52
52
|
try {
|
|
53
53
|
const { handleMemoryStore } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -91,7 +91,7 @@ Examples:
|
|
|
91
91
|
.option('--include-metadata', 'Include metadata in response')
|
|
92
92
|
.option('--json', 'Output as JSON')
|
|
93
93
|
.action(async (options) => {
|
|
94
|
-
if (!await
|
|
94
|
+
if (!await ensureMemoryReady())
|
|
95
95
|
return;
|
|
96
96
|
try {
|
|
97
97
|
const { handleMemoryRetrieve } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -141,7 +141,7 @@ Examples:
|
|
|
141
141
|
console.error(chalk.red(' Either --pattern or --query is required'));
|
|
142
142
|
await cleanupAndExit(1);
|
|
143
143
|
}
|
|
144
|
-
if (!await
|
|
144
|
+
if (!await ensureMemoryReady())
|
|
145
145
|
return;
|
|
146
146
|
try {
|
|
147
147
|
const { handleMemoryQuery } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -186,7 +186,7 @@ Examples:
|
|
|
186
186
|
.option('--limit <n>', 'Maximum results', '50')
|
|
187
187
|
.option('--json', 'Output as JSON')
|
|
188
188
|
.action(async (options) => {
|
|
189
|
-
if (!await
|
|
189
|
+
if (!await ensureMemoryReady())
|
|
190
190
|
return;
|
|
191
191
|
try {
|
|
192
192
|
const { handleMemoryQuery } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -225,7 +225,7 @@ Examples:
|
|
|
225
225
|
.option('--namespace <ns>', 'Namespace', 'default')
|
|
226
226
|
.option('--json', 'Output as JSON')
|
|
227
227
|
.action(async (options) => {
|
|
228
|
-
if (!await
|
|
228
|
+
if (!await ensureMemoryReady())
|
|
229
229
|
return;
|
|
230
230
|
try {
|
|
231
231
|
const { handleMemoryDelete } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -264,7 +264,7 @@ Examples:
|
|
|
264
264
|
.requiredOption('--content <json>', 'JSON content to share')
|
|
265
265
|
.option('--json', 'Output as JSON')
|
|
266
266
|
.action(async (options) => {
|
|
267
|
-
if (!await
|
|
267
|
+
if (!await ensureMemoryReady())
|
|
268
268
|
return;
|
|
269
269
|
try {
|
|
270
270
|
const { handleMemoryShare } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -307,7 +307,7 @@ Examples:
|
|
|
307
307
|
.description('Show memory usage statistics')
|
|
308
308
|
.option('--json', 'Output as JSON')
|
|
309
309
|
.action(async (options) => {
|
|
310
|
-
if (!await
|
|
310
|
+
if (!await ensureMemoryReady())
|
|
311
311
|
return;
|
|
312
312
|
try {
|
|
313
313
|
const { handleMemoryUsage } = await import('../../mcp/handlers/memory-handlers.js');
|