agentic-qe 3.14.3 → 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 +111 -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-TQOMLWWX.js → agent-booster-wasm-5PC7D2FW.js} +2 -2
- package/dist/cli/chunks/{agent-handler-Q3SEMMI2.js → agent-handler-RDNTK4CA.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-SJXAQSZI.js → agent-memory-branch-NAAMBWIR.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-5ZRMYJLB.js +2 -0
- package/dist/cli/chunks/{arena-7RC7TBGW.js → arena-HXTWJ5YY.js} +4 -4
- package/dist/cli/chunks/{arena-UPB7TKUY.js → arena-KXFHRWX4.js} +2 -2
- package/dist/cli/chunks/{audit-IXN5R4WB.js → audit-YSGA7UWT.js} +3 -3
- package/dist/cli/chunks/base-KWZHOPSH.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-RP4DEGK3.js → better-sqlite3-UICJZIDG.js} +2 -2
- package/dist/cli/chunks/brain-handler-ET6YAP4B.js +90 -0
- package/dist/cli/chunks/{branch-enumerator-VPRWDGFJ.js → branch-enumerator-SS7UNVIA.js} +2 -2
- package/dist/cli/chunks/{browser-B6E7JPPJ.js → browser-77GI6KBE.js} +2 -2
- package/dist/cli/chunks/browser-workflow-2FZTKDUL.js +2 -0
- package/dist/cli/chunks/{chunk-ZHXWGNYM.js → chunk-2JW3BCGG.js} +1 -1
- package/dist/cli/chunks/{chunk-TGLAWI62.js → chunk-33YYYWBQ.js} +1 -1
- package/dist/cli/chunks/{chunk-BN7DKW5D.js → chunk-34WO57CW.js} +1 -1
- package/dist/cli/chunks/{chunk-TTMHIOQ3.js → chunk-3QHGWY7T.js} +2 -2
- package/dist/cli/chunks/chunk-3TW5W5LX.js +2 -0
- package/dist/cli/chunks/{chunk-E3FBW6G2.js → chunk-3UPAMMCB.js} +1 -1
- package/dist/cli/chunks/{chunk-MDZ6RRLX.js → chunk-3VOQRIQM.js} +2 -2
- package/dist/cli/chunks/{chunk-G5C2XVZC.js → chunk-3X3DJZJJ.js} +1 -1
- package/dist/cli/chunks/{chunk-4C6UJIHB.js → chunk-4MHXCAG2.js} +1 -1
- package/dist/cli/chunks/{chunk-7BUERZYL.js → chunk-4OYFXLBK.js} +2 -2
- package/dist/cli/chunks/{chunk-TFHQE6NK.js → chunk-55RWDRJD.js} +3 -3
- package/dist/cli/chunks/chunk-5R3QL7WN.js +14 -0
- package/dist/cli/chunks/{chunk-ZUG5MOUB.js → chunk-5SJHQ2CO.js} +2 -2
- package/dist/cli/chunks/{chunk-VIDBBB6F.js → chunk-5YPYDPBJ.js} +2 -2
- package/dist/cli/chunks/chunk-5Z6XZV7K.js +65 -0
- package/dist/cli/chunks/{chunk-JV4FZUE7.js → chunk-64PFWE2F.js} +2 -2
- package/dist/cli/chunks/{chunk-TISSZFHO.js → chunk-6CQN24ZK.js} +1 -1
- package/dist/cli/chunks/{chunk-G6DCESPU.js → chunk-6J62K3SW.js} +2 -2
- package/dist/cli/chunks/{chunk-7SLAZAVU.js → chunk-6KJABXAR.js} +2 -2
- package/dist/cli/chunks/{chunk-KF63AYXD.js → chunk-6QYNWR7U.js} +2 -2
- package/dist/cli/chunks/{chunk-74PK3NEW.js → chunk-6TPKK7LD.js} +2 -2
- package/dist/cli/chunks/{chunk-JRYZKBY2.js → chunk-6UWGMOND.js} +2 -2
- package/dist/cli/chunks/{chunk-ZN3J6TZD.js → chunk-6VRA2QGL.js} +1 -1
- package/dist/cli/chunks/{chunk-YCBDE2N7.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-5Y5TC6BY.js → chunk-AIHDEEJO.js} +2 -2
- package/dist/cli/chunks/{chunk-N4H2QOT5.js → chunk-AUXFKCQL.js} +2 -2
- package/dist/cli/chunks/{chunk-7G6UX2QN.js → chunk-AWWNB2T7.js} +2 -2
- package/dist/cli/chunks/{chunk-33VPWGCM.js → chunk-BDESSCVR.js} +3 -3
- package/dist/cli/chunks/{chunk-OVDKWCD7.js → chunk-BFP7KO7P.js} +2 -2
- package/dist/cli/chunks/{chunk-MXMFGSWR.js → chunk-BGE6FOLM.js} +2 -2
- package/dist/cli/chunks/{chunk-2GNRW3OD.js → chunk-BOARZKU3.js} +2 -2
- package/dist/cli/chunks/{chunk-4JBFJTHJ.js → chunk-BOZZYWCR.js} +1 -1
- package/dist/cli/chunks/{chunk-D4Z2N74A.js → chunk-C2WU3533.js} +1 -1
- package/dist/cli/chunks/{chunk-B7SWW5A6.js → chunk-CDHQFHRP.js} +2 -2
- package/dist/cli/chunks/chunk-CDKG6EI7.js +16 -0
- package/dist/cli/chunks/{chunk-IU4EBTA2.js → chunk-CIKSHTEQ.js} +3 -3
- package/dist/cli/chunks/{chunk-RTJ2M6V6.js → chunk-CIZ5JPDC.js} +2 -2
- package/dist/cli/chunks/{chunk-CR3QGHVN.js → chunk-CLTMDCSE.js} +2 -2
- package/dist/cli/chunks/{chunk-T35GZXTU.js → chunk-CNG6GQEZ.js} +2 -2
- package/dist/cli/chunks/{chunk-IQEJGZV6.js → chunk-CSU5NYOX.js} +3 -3
- package/dist/cli/chunks/chunk-CU46J64M.js +4 -0
- package/dist/cli/chunks/{chunk-LLVGTEHU.js → chunk-CXQPR5MY.js} +1 -1
- package/dist/cli/chunks/{chunk-5BLFXQEB.js → chunk-DA5K5754.js} +1 -1
- package/dist/cli/chunks/{chunk-5FOZO7KM.js → chunk-DAEFDCJ4.js} +45 -45
- package/dist/cli/chunks/{chunk-SJPZSCZP.js → chunk-DEYLEDJN.js} +2 -2
- package/dist/cli/chunks/{chunk-LHGNNZ76.js → chunk-DFZCKIGY.js} +3 -3
- package/dist/cli/chunks/{chunk-YAKS3CAB.js → chunk-DHJPWQBR.js} +2 -2
- package/dist/cli/chunks/{chunk-37BASGWC.js → chunk-DOTK76IJ.js} +2 -2
- package/dist/cli/chunks/{chunk-STRDSVH3.js → chunk-DPFRKBOG.js} +2 -2
- package/dist/cli/chunks/{chunk-H5ZRV5K5.js → chunk-EDJ3O7RH.js} +2 -2
- package/dist/cli/chunks/{chunk-DBA3N742.js → chunk-EKQ673SA.js} +1 -1
- package/dist/cli/chunks/chunk-F3SBRQC6.js +2 -0
- package/dist/cli/chunks/{chunk-HOQQCY2K.js → chunk-FGYMFUE2.js} +2 -2
- package/dist/cli/chunks/{chunk-FKG5OQFT.js → chunk-FLYOJOKN.js} +1 -1
- package/dist/cli/chunks/{chunk-MWWAMDHI.js → chunk-FRH6VAUS.js} +1 -1
- package/dist/cli/chunks/{chunk-UYJHYMEQ.js → chunk-FWGOHAAB.js} +2 -2
- package/dist/cli/chunks/{chunk-HRUU7E3D.js → chunk-G6T45OIC.js} +2 -2
- package/dist/cli/chunks/{chunk-4Q35TI6Z.js → chunk-GPLQ6DOK.js} +2 -2
- package/dist/cli/chunks/{chunk-PI74GOE4.js → chunk-HDSAM2RE.js} +2 -2
- package/dist/cli/chunks/chunk-HIVA55CJ.js +2 -0
- package/dist/cli/chunks/{chunk-B5XFDFBT.js → chunk-HIYXCDEP.js} +1 -1
- package/dist/cli/chunks/{chunk-ZK5JKHP4.js → chunk-HUWNIPZ5.js} +1 -1
- package/dist/cli/chunks/{chunk-H6XBM2LY.js → chunk-HV2J7KKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-IFFZR6GY.js → chunk-IFCLB7FJ.js} +1 -1
- package/dist/cli/chunks/{chunk-3ABRGG3C.js → chunk-IPR4QP3H.js} +2 -2
- package/dist/cli/chunks/{chunk-7FYMDKQH.js → chunk-ISDMD6EU.js} +165 -167
- package/dist/cli/chunks/{chunk-B2ZONZPZ.js → chunk-J6GNQS62.js} +2 -2
- package/dist/cli/chunks/{chunk-G6ZHTF42.js → chunk-JBNEE5UH.js} +2 -2
- package/dist/cli/chunks/chunk-JZ3ORVZ3.js +54 -0
- package/dist/cli/chunks/{chunk-5IAB5NRZ.js → chunk-KCZR45PA.js} +2 -2
- package/dist/cli/chunks/chunk-KGT36Z42.js +14 -0
- package/dist/cli/chunks/{chunk-IP7NSFQQ.js → chunk-KHFNNVJA.js} +2 -2
- package/dist/cli/chunks/{chunk-2WT7AKKK.js → chunk-KPA7MZ6C.js} +2 -2
- package/dist/cli/chunks/{chunk-7JQHPANT.js → chunk-KSKEF7LZ.js} +3 -3
- package/dist/cli/chunks/{chunk-F67AV5P2.js → chunk-M2JBBZQB.js} +2 -2
- package/dist/cli/chunks/{chunk-SGXSB7YO.js → chunk-M4WJKGVK.js} +1 -1
- package/dist/cli/chunks/{chunk-4UDZLD42.js → chunk-M5QUBZY6.js} +2 -2
- package/dist/cli/chunks/{chunk-PZTVH2AS.js → chunk-MCUJEZT6.js} +2 -2
- package/dist/cli/chunks/{chunk-KPMGTVB4.js → chunk-MDWCE7YW.js} +1 -1
- package/dist/cli/chunks/{chunk-LS3EUMBP.js → chunk-MEGDYJPV.js} +5 -5
- package/dist/cli/chunks/chunk-MIQTXNBG.js +4 -0
- package/dist/cli/chunks/{chunk-VWNHKYK7.js → chunk-MNW6QGNJ.js} +2 -2
- package/dist/cli/chunks/{chunk-NN76NTOX.js → chunk-MOBNBMFW.js} +1 -1
- package/dist/cli/chunks/{chunk-SG47AXJG.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-26GM5CWD.js → chunk-NDPFGIMJ.js} +3 -3
- package/dist/cli/chunks/{chunk-ELU4IC3I.js → chunk-NJBGXDQ7.js} +1 -1
- package/dist/cli/chunks/chunk-OBAP2TXZ.js +2 -0
- package/dist/cli/chunks/{chunk-NTSXHZTC.js → chunk-OCWWP5PL.js} +4 -4
- package/dist/cli/chunks/{chunk-XA7CG3LH.js → chunk-ODKLFVYC.js} +2 -2
- package/dist/cli/chunks/{chunk-IKIITGU5.js → chunk-ONII3572.js} +4 -4
- package/dist/cli/chunks/{chunk-JBB7E26R.js → chunk-OSLYSG3B.js} +2 -2
- package/dist/cli/chunks/{chunk-CB5JPRIZ.js → chunk-OULHKEVH.js} +2 -2
- package/dist/cli/chunks/{chunk-YGB6R5DW.js → chunk-PAWXJ73E.js} +1 -1
- package/dist/cli/chunks/chunk-PEPFCPES.js +2 -0
- package/dist/cli/chunks/{chunk-FUE6LL72.js → chunk-PFR4G3DJ.js} +2 -2
- package/dist/cli/chunks/chunk-PO3IXGMQ.js +2 -0
- package/dist/cli/chunks/{chunk-OY7MLMEX.js → chunk-PZJOPURC.js} +5 -5
- package/dist/cli/chunks/{chunk-UHQY3GK7.js → chunk-Q5DO24IJ.js} +2 -2
- package/dist/cli/chunks/chunk-QGIU2WRL.js +2 -0
- package/dist/cli/chunks/{chunk-4RP5VUBI.js → chunk-R4VL6E65.js} +2 -2
- package/dist/cli/chunks/{chunk-RKJZWWB7.js → chunk-R5NE6B2M.js} +2 -2
- package/dist/cli/chunks/{chunk-5F6DWHQG.js → chunk-RJCYCLZV.js} +2 -2
- package/dist/cli/chunks/{chunk-GNTVFN7D.js → chunk-SGYJ4NFZ.js} +1 -1
- package/dist/cli/chunks/{chunk-OYMLHX2B.js → chunk-SRKETSFF.js} +1 -1
- package/dist/cli/chunks/{chunk-XX7HUSX2.js → chunk-STJCATGN.js} +2 -2
- package/dist/cli/chunks/{chunk-C46DMCWF.js → chunk-STM3UDNO.js} +1 -1
- package/dist/cli/chunks/{chunk-EY4OQHU3.js → chunk-T6BVLVI5.js} +1 -1
- package/dist/cli/chunks/{chunk-LKN7JQTW.js → chunk-TDZ53WO2.js} +2 -2
- package/dist/cli/chunks/{chunk-OV5EZO3U.js → chunk-TPGED2IF.js} +2 -2
- package/dist/cli/chunks/{chunk-DX3C5HPN.js → chunk-TSRSV3LD.js} +1 -1
- package/dist/cli/chunks/{chunk-Y2DVFVGI.js → chunk-TT23RRB7.js} +1 -1
- package/dist/cli/chunks/{chunk-XXCYQXK3.js → chunk-TWAWHOP7.js} +2 -2
- package/dist/cli/chunks/{chunk-2IGT5WNQ.js → chunk-U5K45TFH.js} +1 -1
- package/dist/cli/chunks/{chunk-SQ3PPISY.js → chunk-UDHKLT4C.js} +1 -1
- package/dist/cli/chunks/{chunk-YDNSLLBS.js → chunk-UEM7ZF5K.js} +2 -2
- package/dist/cli/chunks/{chunk-4XPPMADQ.js → chunk-UGVHCMUN.js} +6 -6
- package/dist/cli/chunks/{chunk-YL7T3VV7.js → chunk-V3QLFNA2.js} +2 -2
- package/dist/cli/chunks/{chunk-YEXPFHV6.js → chunk-VD6QRULW.js} +2 -2
- package/dist/cli/chunks/{chunk-OVPJQWHW.js → chunk-VIHTL3U2.js} +2 -2
- package/dist/cli/chunks/chunk-W7BWUTVV.js +2 -0
- package/dist/cli/chunks/{chunk-3P6NCFI2.js → chunk-WLG5AJ4N.js} +2 -2
- package/dist/cli/chunks/{chunk-V4AOVDCJ.js → chunk-XC7DYDSY.js} +8 -8
- package/dist/cli/chunks/{chunk-LTBCAFTZ.js → chunk-XJ7QNVI5.js} +3 -3
- package/dist/cli/chunks/chunk-XRT2WRMS.js +2 -0
- package/dist/cli/chunks/{chunk-UMENRGHK.js → chunk-XRYF6JV7.js} +2 -2
- package/dist/cli/chunks/{chunk-SHGKY3QB.js → chunk-XWMZ6D6N.js} +2 -2
- package/dist/cli/chunks/{chunk-72UJXEKQ.js → chunk-Y3MW3YBC.js} +2 -2
- package/dist/cli/chunks/chunk-YNXS6CGV.js +2 -0
- package/dist/cli/chunks/{chunk-LVLBIKJD.js → chunk-Z3RHREWF.js} +1 -1
- package/dist/cli/chunks/{chunk-HXE5NBJG.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-NBWQBQO5.js → chunk-ZJ26AQA5.js} +1 -1
- package/dist/cli/chunks/{chunk-TJEIOE7F.js → chunk-ZNEMGX5O.js} +1 -1
- package/dist/cli/chunks/{chunk-AB4U6ZNI.js → chunk-ZNPKDCZR.js} +2 -2
- package/dist/cli/chunks/{chunk-WYMGK5DX.js → chunk-ZZDIMOOV.js} +2 -2
- package/dist/cli/chunks/ci-464KPQNP.js +81 -0
- package/dist/cli/chunks/{ci-output-LK3MBXLZ.js → ci-output-I7FX2RSO.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-7AIXACR7.js → circuit-breaker-3FW237WW.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-UA7EO6VN.js → claude-flow-setup-6JKMBPGU.js} +2 -2
- package/dist/cli/chunks/client-7E4LM2WW.js +2 -0
- package/dist/cli/chunks/{cline-installer-YDDCKKEV.js → cline-installer-UWFHT6VY.js} +2 -2
- package/dist/cli/chunks/{code-URB7UAKW.js → code-KQSUT3FS.js} +29 -29
- package/dist/cli/chunks/{code-index-extractor-BL6HWH4Q.js → code-index-extractor-PABBNUSC.js} +2 -2
- package/dist/cli/chunks/{codex-installer-2AVEO4EA.js → codex-installer-CQ24DTP5.js} +2 -2
- package/dist/cli/chunks/{completions-RCKBSSSS.js → completions-7RWHAUAR.js} +2 -2
- package/dist/cli/chunks/complexity-analyzer-XPOAF33E.js +2 -0
- package/dist/cli/chunks/{continuedev-installer-VOTCEBFH.js → continuedev-installer-V4F2FIZP.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-NVTGLZX3.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-ZTPJWXWE.js → coverage-QKN57JDS.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-EK7W4PGP.js +2 -0
- package/dist/cli/chunks/{cursor-installer-CMGJQMHX.js → cursor-installer-GBJ7YXSM.js} +2 -2
- package/dist/cli/chunks/{daemon-V456IWR3.js → daemon-GKP7CMEK.js} +3 -3
- package/dist/cli/chunks/{daemon-Y2I3YVIU.js → daemon-IAVSO6HK.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-ZCBBOD3D.js → dag-attention-scheduler-S225TCI7.js} +2 -2
- package/dist/cli/chunks/{detect-2GHEA4A3.js → detect-IUYH422U.js} +2 -2
- package/dist/cli/chunks/{dist-node-44AGYJCH.js → dist-node-2YRE6A7C.js} +2 -2
- package/dist/cli/chunks/{domain-handler-IDLIEP6X.js → domain-handler-PL2TZC6H.js} +2 -2
- package/dist/cli/chunks/domain-plugins-HCGLXKIT.js +2 -0
- package/dist/cli/chunks/{domain-transfer-KLEXGIRF.js → domain-transfer-KQJRUPXA.js} +2 -2
- package/dist/cli/chunks/dream-NFSCSLY7.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-DUW6K35A.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-CJJJN7CF.js → experience-capture-middleware-2MSQWSAR.js} +3 -3
- package/dist/cli/chunks/{fast-paths-LGLLKX6P.js → fast-paths-VYOSIBKF.js} +2 -2
- package/dist/cli/chunks/{feature-flags-33D3I4DD.js → feature-flags-UJRHFBRX.js} +2 -2
- package/dist/cli/chunks/{feature-flags-QL4NCEGW.js → feature-flags-WCFUKHNQ.js} +2 -2
- package/dist/cli/chunks/{file-discovery-GKCYJPFZ.js → file-discovery-JDGL4ZWS.js} +2 -2
- package/dist/cli/chunks/fleet-ROXVMZ2F.js +43 -0
- package/dist/cli/chunks/{gnn-wrapper-ELSGT67Z.js → gnn-wrapper-NIO4ZCO3.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ZUI3DOOP.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-EZMM5JWL.js → hnsw-legacy-bridge-YLC7SPK2.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-G4CE3EOS.js → hnswlib-node-LG6OS3B7.js} +2 -2
- package/dist/cli/chunks/{hooks-LCVXXA55.js → hooks-WVALP5GX.js} +10 -10
- package/dist/cli/chunks/{hypergraph-engine-6Z7RQ3HI.js → hypergraph-engine-GJEMW3EG.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-PLI2GYPK.js → hypergraph-handler-BLF6LXEV.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-HNIU45P5.js +2 -0
- package/dist/cli/chunks/{init-handler-7VH3QJ5Y.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-U3MW62DE.js → kilocode-installer-BXN6WZ7G.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-PPEAC44T.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-VO7ABNHV.js → load-2BG6SHAK.js} +2 -2
- package/dist/cli/chunks/load-test-BP2CPLIV.js +2 -0
- package/dist/cli/chunks/{mcp-THXEINCL.js → mcp-5TTB37DC.js} +2 -2
- package/dist/cli/chunks/{memory-FZTT7ADM.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-GQ7J5SBG.js → opencode-installer-ATZLLK74.js} +2 -2
- package/dist/cli/chunks/{orchestrator-66JK2OS5.js → orchestrator-RKB7XJRG.js} +19 -19
- package/dist/cli/chunks/pattern-null-store-OYOQOV2O.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-O6XHM2G5.js → pattern-usage-recorder-7VE4XDAI.js} +2 -2
- package/dist/cli/chunks/pipeline-LQZSNDD2.js +19 -0
- package/dist/cli/chunks/{platform-Q7UH7FZQ.js → platform-OD5H5U6G.js} +2 -2
- package/dist/cli/chunks/{plugin-7OFLNGOS.js → plugin-EJ6K2MGU.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-OSRDK2FW.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-WLYTX6FS.js → protocol-handler-NRBROAU7.js} +2 -2
- package/dist/cli/chunks/{prove-QVNE4V3J.js → prove-EJOGEGD3.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-LLMYZT4X.js +2 -0
- package/dist/cli/chunks/{quality-DNE2RKE5.js → quality-E55UC73D.js} +2 -2
- package/dist/cli/chunks/{quality-gate-2K35GCSI.js → quality-gate-OIQATNT3.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-RN7L6KG5.js +2 -0
- package/dist/cli/chunks/{real-embeddings-SF42ML7G.js → real-embeddings-FPFFNOSZ.js} +2 -2
- package/dist/cli/chunks/ref-validation-OPO6J7OL.js +2 -0
- package/dist/cli/chunks/{roocode-installer-NCEZPF5L.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-4MXXZRYP.js → routing-handler-KQM6VWLC.js} +4 -4
- package/dist/cli/chunks/{ruvector-commands-WDFMMCMK.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-JT7ZCJY7.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-CJJ3WJSB.js → security-P5NM353C.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-6RGCTLHD.js → shared-rvf-adapter-LVIUOO4S.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-KIA6Q6MT.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-BADQV2KA.js → status-handler-6TU6O37R.js} +2 -2
- package/dist/cli/chunks/{structural-health-VMYEYRZG.js → structural-health-KBIJSTXJ.js} +2 -2
- package/dist/cli/chunks/{sync-PXLROLHB.js → sync-LNHI5SB7.js} +2 -2
- package/dist/cli/chunks/{sync-ULY7T5II.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-WCLURQUT.js → test-DHAAI3DU.js} +4 -4
- package/dist/cli/chunks/test-scheduling-XDBZ3QC2.js +15 -0
- package/dist/cli/chunks/{token-bootstrap-GTI24JAL.js → token-bootstrap-GUTTLPZX.js} +2 -2
- package/dist/cli/chunks/{token-usage-DRVG6PKO.js → token-usage-Q2YG5YQN.js} +2 -2
- package/dist/cli/chunks/{transformers-IMDDAMYQ.js → transformers-F5UQTQCY.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-WBZIHVFA.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-6ALSDWDD.js → upgrade-TJRVGHGD.js} +2 -2
- package/dist/cli/chunks/{validate-XF4ZG3LC.js → validate-BWPCVHBN.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-P5TAFRDA.js → validate-swarm-QVVKCQLP.js} +2 -2
- package/dist/cli/chunks/{vibium-2XDXKNKZ.js → vibium-ZFATIWHO.js} +2 -2
- package/dist/cli/chunks/visual-security-GNPHME5H.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-4JVRQPX5.js → web-tree-sitter-KPLY7ONR.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-WYJXVDO5.js → windsurf-installer-H7XM7ISA.js} +2 -2
- package/dist/cli/chunks/{witness-chain-RPZ2SE2V.js → witness-chain-RRN6NDCH.js} +2 -2
- package/dist/cli/chunks/witness-chain-VT4UHHBR.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-LXG2VBQQ.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-DIJNNFU6.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/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/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/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/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 +488 -488
- 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 +104 -49
- 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 +5 -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.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/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 +1 -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-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-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-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-T62DH4GG.js +0 -11
- package/dist/cli/chunks/chunk-UMNYF5EZ.js +0 -2
- package/dist/cli/chunks/chunk-UTVRQEZM.js +0 -54
- 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/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/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/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/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/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-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/types-TXMY5M2K.js +0 -2
- package/dist/cli/chunks/unified-memory-VBQ572X4.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-J3L74ZRY.js +0 -2
- package/dist/cli/chunks/unified-persistence-EM2VYRTQ.js +0 -2
- package/dist/cli/chunks/visual-security-GX4S7K6O.js +0 -2
- package/dist/cli/chunks/witness-chain-QGKMHCNW.js +0 -2
- package/dist/cli/chunks/workflow-2OYNO7UU.js +0 -51
- package/dist/cli/chunks/workflow-orchestrator-KWHIJMFV.js +0 -2
|
@@ -29,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
|
|
@@ -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
|
|
@@ -104,19 +104,44 @@ export function mergeHooksSmart(existingHooks, newAqeHooks) {
|
|
|
104
104
|
* `AQE_LEARNING_ENABLED=false` keeps their choice. Non-AQE env vars are always
|
|
105
105
|
* preserved. Returns a new object; inputs are not mutated.
|
|
106
106
|
*/
|
|
107
|
-
export function mergeAqeEnv(existingEnv, aqeEnv) {
|
|
107
|
+
export function mergeAqeEnv(existingEnv, aqeEnv, options = {}) {
|
|
108
108
|
// AQE defaults first, then existing values win on any key collision.
|
|
109
|
-
|
|
109
|
+
const merged = { ...aqeEnv, ...(existingEnv || {}) };
|
|
110
|
+
if (options.memoryBackend === 'memory') {
|
|
111
|
+
// An explicit --no-database re-init must replace stale AQE persistence
|
|
112
|
+
// settings, even if the previous init wrote them into this env block.
|
|
113
|
+
// Custom paths remain inert under the memory backend and are needed when
|
|
114
|
+
// switching back. Only discard AQE's generated database locations.
|
|
115
|
+
for (const key of ['AQE_MEMORY_PATH', 'AQE_V3_REASONING_BANK']) {
|
|
116
|
+
if (merged[key] === '.agentic-qe/memory.db')
|
|
117
|
+
delete merged[key];
|
|
118
|
+
}
|
|
119
|
+
merged.AQE_MEMORY_BACKEND = 'memory';
|
|
120
|
+
merged.AQE_LEARNING_ENABLED = 'false';
|
|
121
|
+
merged.AQE_WORKERS_ENABLED = 'false';
|
|
122
|
+
}
|
|
123
|
+
else if (existingEnv?.AQE_MEMORY_BACKEND === 'memory') {
|
|
124
|
+
// Undo the overrides written by memory-mode init. Ordinary user overrides
|
|
125
|
+
// still win when there is no memory-mode marker.
|
|
126
|
+
for (const key of ['AQE_MEMORY_BACKEND', 'AQE_LEARNING_ENABLED', 'AQE_WORKERS_ENABLED']) {
|
|
127
|
+
if (Object.prototype.hasOwnProperty.call(aqeEnv, key))
|
|
128
|
+
merged[key] = aqeEnv[key];
|
|
129
|
+
else
|
|
130
|
+
delete merged[key];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return merged;
|
|
110
134
|
}
|
|
111
135
|
/**
|
|
112
136
|
* Generate the full set of AQE environment variables for settings.json.
|
|
113
137
|
*/
|
|
114
|
-
export function generateAqeEnvVars(config) {
|
|
138
|
+
export function generateAqeEnvVars(config, options = {}) {
|
|
115
139
|
const domains = config.domains?.enabled || [];
|
|
140
|
+
const dbFree = options.memoryBackend === 'memory';
|
|
116
141
|
return {
|
|
117
|
-
AQE_MEMORY_PATH: '.agentic-qe/memory.db',
|
|
142
|
+
...(dbFree ? { AQE_MEMORY_BACKEND: 'memory', AQE_WORKERS_ENABLED: 'false' } : { AQE_MEMORY_PATH: '.agentic-qe/memory.db' }),
|
|
118
143
|
AQE_MEMORY_ENABLED: 'true',
|
|
119
|
-
AQE_LEARNING_ENABLED: config.learning?.enabled ? 'true' : 'false',
|
|
144
|
+
AQE_LEARNING_ENABLED: dbFree ? 'false' : config.learning?.enabled ? 'true' : 'false',
|
|
120
145
|
AQE_V3_MODE: 'true',
|
|
121
146
|
AQE_V3_DDD_ENABLED: 'true',
|
|
122
147
|
AQE_V3_DOMAINS: domains.join(','),
|
|
@@ -126,7 +151,7 @@ export function generateAqeEnvVars(config) {
|
|
|
126
151
|
AQE_V3_HNSW_ENABLED: config.learning?.hnswConfig ? 'true' : 'false',
|
|
127
152
|
AQE_V3_HOOKS_ENABLED: 'true',
|
|
128
153
|
AQE_V3_AISP_ENABLED: 'true',
|
|
129
|
-
AQE_V3_REASONING_BANK: '.agentic-qe/memory.db',
|
|
154
|
+
...(!dbFree ? { AQE_V3_REASONING_BANK: '.agentic-qe/memory.db' } : {}),
|
|
130
155
|
AQE_V3_PATTERN_PROMOTION_THRESHOLD: String(config.learning?.promotionThreshold ?? 3),
|
|
131
156
|
AQE_V3_SUCCESS_RATE_THRESHOLD: String(config.learning?.qualityThreshold ?? 0.7),
|
|
132
157
|
};
|
|
@@ -206,14 +231,20 @@ export function applyV3Sections(settings, sections, options = {}) {
|
|
|
206
231
|
settings[key] = deepMergeOwned(settings[key], value);
|
|
207
232
|
}
|
|
208
233
|
}
|
|
234
|
+
if (options.memoryBackend === 'memory') {
|
|
235
|
+
const learning = settings.v3Learning;
|
|
236
|
+
if (learning?.reasoningBank)
|
|
237
|
+
delete learning.reasoningBank.dbPath;
|
|
238
|
+
}
|
|
209
239
|
return settings;
|
|
210
240
|
}
|
|
211
241
|
/**
|
|
212
242
|
* Generate v3-specific settings sections for settings.json.
|
|
213
243
|
* These sections enable the self-learning system, status line, and permissions.
|
|
214
244
|
*/
|
|
215
|
-
export function generateV3SettingsSections(config, projectRoot) {
|
|
245
|
+
export function generateV3SettingsSections(config, projectRoot, options = {}) {
|
|
216
246
|
const domains = config.domains?.enabled || [];
|
|
247
|
+
const dbFree = options.memoryBackend === 'memory';
|
|
217
248
|
return {
|
|
218
249
|
aqe: {
|
|
219
250
|
version: config.version ?? '3.0.0',
|
|
@@ -243,9 +274,9 @@ export function generateV3SettingsSections(config, projectRoot) {
|
|
|
243
274
|
},
|
|
244
275
|
},
|
|
245
276
|
v3Learning: {
|
|
246
|
-
enabled: config.learning?.enabled ?? true,
|
|
277
|
+
enabled: dbFree ? false : config.learning?.enabled ?? true,
|
|
247
278
|
reasoningBank: {
|
|
248
|
-
dbPath: '.agentic-qe/memory.db',
|
|
279
|
+
...(!dbFree ? { dbPath: '.agentic-qe/memory.db' } : {}),
|
|
249
280
|
enableHNSW: !!config.learning?.hnswConfig,
|
|
250
281
|
},
|
|
251
282
|
patternPromotion: {
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @module integrations/agentic-flow/model-router/types
|
|
13
13
|
*/
|
|
14
|
+
import { CLAUDE_TIER_MODELS, DEFAULT_OPUS_MODEL, DEFAULT_SONNET_MODEL, } from '../../../shared/llm/model-registry.js';
|
|
14
15
|
/**
|
|
15
16
|
* Metadata for all model tiers
|
|
16
17
|
*/
|
|
@@ -46,7 +47,7 @@ export const TIER_METADATA = {
|
|
|
46
47
|
],
|
|
47
48
|
typicalLatencyMs: 500,
|
|
48
49
|
relativeCost: 1,
|
|
49
|
-
exampleModels: [
|
|
50
|
+
exampleModels: [CLAUDE_TIER_MODELS[1], 'gpt-4o-mini', 'gemini-flash'],
|
|
50
51
|
requiresNetwork: true,
|
|
51
52
|
complexityRange: [10, 35],
|
|
52
53
|
},
|
|
@@ -63,7 +64,7 @@ export const TIER_METADATA = {
|
|
|
63
64
|
],
|
|
64
65
|
typicalLatencyMs: 3000,
|
|
65
66
|
relativeCost: 2,
|
|
66
|
-
exampleModels: [
|
|
67
|
+
exampleModels: [DEFAULT_SONNET_MODEL, 'gpt-4o', 'gemini-pro'],
|
|
67
68
|
requiresNetwork: true,
|
|
68
69
|
complexityRange: [35, 70],
|
|
69
70
|
},
|
|
@@ -79,7 +80,7 @@ export const TIER_METADATA = {
|
|
|
79
80
|
],
|
|
80
81
|
typicalLatencyMs: 7000,
|
|
81
82
|
relativeCost: 3,
|
|
82
|
-
exampleModels: [
|
|
83
|
+
exampleModels: [DEFAULT_SONNET_MODEL],
|
|
83
84
|
requiresNetwork: true,
|
|
84
85
|
complexityRange: [60, 85],
|
|
85
86
|
},
|
|
@@ -96,7 +97,7 @@ export const TIER_METADATA = {
|
|
|
96
97
|
],
|
|
97
98
|
typicalLatencyMs: 5000,
|
|
98
99
|
relativeCost: 4,
|
|
99
|
-
exampleModels: [
|
|
100
|
+
exampleModels: [DEFAULT_OPUS_MODEL, 'gpt-4-turbo'],
|
|
100
101
|
requiresNetwork: true,
|
|
101
102
|
complexityRange: [75, 100],
|
|
102
103
|
},
|
|
@@ -177,10 +178,7 @@ export const DEFAULT_ROUTER_CONFIG = {
|
|
|
177
178
|
fallbackTier: 2, // Sonnet as fallback
|
|
178
179
|
tierModels: {
|
|
179
180
|
0: 'agent-booster',
|
|
180
|
-
|
|
181
|
-
2: 'claude-sonnet-4-6',
|
|
182
|
-
3: 'claude-sonnet-4-6',
|
|
183
|
-
4: 'claude-opus-4-7',
|
|
181
|
+
...CLAUDE_TIER_MODELS,
|
|
184
182
|
},
|
|
185
183
|
};
|
|
186
184
|
// ============================================================================
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
|
|
21
21
|
import { join, resolve } from 'path';
|
|
22
22
|
import { safeJsonParse } from '../../shared/safe-json.js';
|
|
23
|
-
import { sha256, queryAll, queryIterator, countRows, domainFilterForColumn, writeJsonl, writeJsonlStreaming, readJsonl,
|
|
23
|
+
import { sha256, queryAll, queryIterator, countRows, domainFilterForColumn, writeJsonl, writeJsonlStreaming, readJsonl, runImportTransaction, serializeRowBlobs, deserializeRowBlobs, mergeGenericRow, remapPatternReferences, mergeAppendOnlyRow, TABLE_CONFIGS, PK_COLUMNS, CONFIDENCE_COLUMNS, TIMESTAMP_COLUMNS, } from './brain-shared.js';
|
|
24
24
|
// ============================================================================
|
|
25
25
|
// Internal helpers
|
|
26
26
|
// ============================================================================
|
|
@@ -219,20 +219,13 @@ export function importBrain(db, containerPath, options) {
|
|
|
219
219
|
'The export may have been tampered with or corrupted.');
|
|
220
220
|
}
|
|
221
221
|
const configs = tablesToImport(manifest.version);
|
|
222
|
-
if (options.dryRun) {
|
|
223
|
-
let total = 0;
|
|
224
|
-
for (const config of configs) {
|
|
225
|
-
const rows = readJsonl(join(dir, config.fileName), safeJsonParse);
|
|
226
|
-
total += rows.length;
|
|
227
|
-
}
|
|
228
|
-
return { imported: total, skipped: 0, conflicts: 0 };
|
|
229
|
-
}
|
|
230
|
-
ensureTargetTables(db);
|
|
231
222
|
let imported = 0;
|
|
232
223
|
let skipped = 0;
|
|
233
224
|
let conflicts = 0;
|
|
234
225
|
// Wrap entire import in a transaction for atomicity (Risk #3 from plan)
|
|
235
|
-
const importAll =
|
|
226
|
+
const importAll = () => {
|
|
227
|
+
const patternIds = new Map();
|
|
228
|
+
const patternWinners = new Map();
|
|
236
229
|
for (const config of configs) {
|
|
237
230
|
const filePath = join(dir, config.fileName);
|
|
238
231
|
let rows = readJsonl(filePath, safeJsonParse);
|
|
@@ -240,7 +233,8 @@ export function importBrain(db, containerPath, options) {
|
|
|
240
233
|
if (config.blobColumns && config.blobColumns.length > 0) {
|
|
241
234
|
rows = rows.map(r => deserializeRowBlobs(r, config.blobColumns));
|
|
242
235
|
}
|
|
243
|
-
for (const
|
|
236
|
+
for (const originalRow of rows) {
|
|
237
|
+
const row = remapPatternReferences(originalRow, patternIds);
|
|
244
238
|
let result;
|
|
245
239
|
if (config.dedupColumns && config.dedupColumns.length > 0) {
|
|
246
240
|
// Append-only tables (witness_chain, qe_pattern_usage)
|
|
@@ -251,15 +245,15 @@ export function importBrain(db, containerPath, options) {
|
|
|
251
245
|
const idCol = PK_COLUMNS[config.tableName] || 'id';
|
|
252
246
|
const tsCol = TIMESTAMP_COLUMNS[config.tableName];
|
|
253
247
|
const confCol = CONFIDENCE_COLUMNS[config.tableName];
|
|
254
|
-
result = mergeGenericRow(db, config.tableName, row, idCol, options.mergeStrategy, tsCol, confCol);
|
|
248
|
+
result = mergeGenericRow(db, config.tableName, row, idCol, options.mergeStrategy, tsCol, confCol, patternIds, patternWinners, originalRow.pattern_id);
|
|
255
249
|
}
|
|
256
250
|
imported += result.imported;
|
|
257
251
|
skipped += result.skipped;
|
|
258
252
|
conflicts += result.conflicts;
|
|
259
253
|
}
|
|
260
254
|
}
|
|
261
|
-
}
|
|
262
|
-
importAll
|
|
255
|
+
};
|
|
256
|
+
runImportTransaction(db, options.dryRun ?? false, importAll);
|
|
263
257
|
return { imported, skipped, conflicts };
|
|
264
258
|
}
|
|
265
259
|
// ============================================================================
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { existsSync, readdirSync, renameSync, statSync, unlinkSync, writeFileSync } from 'fs';
|
|
7
7
|
import { basename, dirname, join, resolve } from 'path';
|
|
8
8
|
import { createRvfStore, openRvfStore, openRvfStoreReadonly, isRvfNativeAvailable, } from './rvf-native-adapter.js';
|
|
9
|
-
import { sha256, tableExists, queryAll, domainFilterForColumn,
|
|
9
|
+
import { sha256, tableExists, queryAll, domainFilterForColumn, runImportTransaction, mergeGenericRow, remapPatternReferences, mergeAppendOnlyRow, TABLE_CONFIGS, TABLE_BLOB_COLUMNS, PK_COLUMNS, CONFIDENCE_COLUMNS, TIMESTAMP_COLUMNS, serializeRowBlobs, deserializeRowBlobs, } from './brain-shared.js';
|
|
10
10
|
// --- Export ---
|
|
11
11
|
/**
|
|
12
12
|
* Sidecar suffixes that make up a complete store on disk. `''` is the store
|
|
@@ -355,7 +355,7 @@ export function importBrainFromRvf(db, rvfPath, options) {
|
|
|
355
355
|
throw new Error(`RVF file not found: ${filePath}`);
|
|
356
356
|
}
|
|
357
357
|
// Open read-write so compact() can reclaim space after conflict resolution (4.5)
|
|
358
|
-
const rvf = openRvfStore(filePath);
|
|
358
|
+
const rvf = options.dryRun ? openRvfStoreReadonly(filePath) : openRvfStore(filePath);
|
|
359
359
|
try {
|
|
360
360
|
// --- Verify HNSW index integrity before importing (4.1) ---
|
|
361
361
|
// Fresh RVF files report valid=false with totalEntries=0 and no errors —
|
|
@@ -379,22 +379,6 @@ export function importBrainFromRvf(db, rvfPath, options) {
|
|
|
379
379
|
catch (parseErr) {
|
|
380
380
|
throw new Error(`Failed to parse brain kernel data as JSON: ${parseErr instanceof Error ? parseErr.message : parseErr}`);
|
|
381
381
|
}
|
|
382
|
-
if (options.dryRun) {
|
|
383
|
-
let total = 0;
|
|
384
|
-
if (brainData.tables) {
|
|
385
|
-
for (const rows of Object.values(brainData.tables)) {
|
|
386
|
-
total += (rows?.length ?? 0);
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
total = (brainData.patterns?.length ?? 0) +
|
|
391
|
-
(brainData.qValues?.length ?? 0) +
|
|
392
|
-
(brainData.dreamInsights?.length ?? 0) +
|
|
393
|
-
(brainData.witnessChain?.length ?? 0);
|
|
394
|
-
}
|
|
395
|
-
return { imported: total, skipped: 0, conflicts: 0, embeddingsRestored: 0 };
|
|
396
|
-
}
|
|
397
|
-
ensureTargetTables(db);
|
|
398
382
|
let imported = 0;
|
|
399
383
|
let skipped = 0;
|
|
400
384
|
let conflicts = 0;
|
|
@@ -414,7 +398,9 @@ export function importBrainFromRvf(db, rvfPath, options) {
|
|
|
414
398
|
}
|
|
415
399
|
}
|
|
416
400
|
// Wrap entire import in a transaction for atomicity (Risk #3 from plan)
|
|
417
|
-
const importAll =
|
|
401
|
+
const importAll = () => {
|
|
402
|
+
const patternIds = new Map();
|
|
403
|
+
const patternWinners = new Map();
|
|
418
404
|
// Import in TABLE_CONFIGS order (FK-aware)
|
|
419
405
|
for (const config of TABLE_CONFIGS) {
|
|
420
406
|
let rows = tablesMap[config.tableName];
|
|
@@ -424,14 +410,9 @@ export function importBrainFromRvf(db, rvfPath, options) {
|
|
|
424
410
|
const blobCols = TABLE_BLOB_COLUMNS[config.tableName];
|
|
425
411
|
if (blobCols && blobCols.length > 0) {
|
|
426
412
|
rows = rows.map(r => deserializeRowBlobs(r, blobCols));
|
|
427
|
-
for (const row of rows) {
|
|
428
|
-
for (const col of blobCols) {
|
|
429
|
-
if (row[col] instanceof Buffer)
|
|
430
|
-
embeddingsRestored++;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
413
|
}
|
|
434
|
-
for (const
|
|
414
|
+
for (const originalRow of rows) {
|
|
415
|
+
const row = remapPatternReferences(originalRow, patternIds);
|
|
435
416
|
let result;
|
|
436
417
|
if (config.dedupColumns && config.dedupColumns.length > 0) {
|
|
437
418
|
result = mergeAppendOnlyRow(db, config.tableName, row, config.dedupColumns, config.preserveId);
|
|
@@ -440,17 +421,23 @@ export function importBrainFromRvf(db, rvfPath, options) {
|
|
|
440
421
|
const idCol = PK_COLUMNS[config.tableName] || 'id';
|
|
441
422
|
const tsCol = TIMESTAMP_COLUMNS[config.tableName];
|
|
442
423
|
const confCol = CONFIDENCE_COLUMNS[config.tableName];
|
|
443
|
-
result = mergeGenericRow(db, config.tableName, row, idCol, options.mergeStrategy, tsCol, confCol);
|
|
424
|
+
result = mergeGenericRow(db, config.tableName, row, idCol, options.mergeStrategy, tsCol, confCol, patternIds, patternWinners, originalRow.pattern_id);
|
|
425
|
+
}
|
|
426
|
+
if (result.imported) {
|
|
427
|
+
for (const col of blobCols ?? []) {
|
|
428
|
+
if (row[col] instanceof Buffer)
|
|
429
|
+
embeddingsRestored++;
|
|
430
|
+
}
|
|
444
431
|
}
|
|
445
432
|
imported += result.imported;
|
|
446
433
|
skipped += result.skipped;
|
|
447
434
|
conflicts += result.conflicts;
|
|
448
435
|
}
|
|
449
436
|
}
|
|
450
|
-
}
|
|
451
|
-
importAll
|
|
437
|
+
};
|
|
438
|
+
runImportTransaction(db, options.dryRun ?? false, importAll);
|
|
452
439
|
// Compact after conflict resolution (best-effort)
|
|
453
|
-
if (conflicts > 0) {
|
|
440
|
+
if (!options.dryRun && conflicts > 0) {
|
|
454
441
|
try {
|
|
455
442
|
rvf.compact();
|
|
456
443
|
}
|
|
@@ -131,11 +131,13 @@ export declare function writeJsonl(filePath: string, rows: unknown[]): void;
|
|
|
131
131
|
*/
|
|
132
132
|
export declare function writeJsonlStreaming(filePath: string, rows: Iterable<unknown>, transform?: (row: unknown) => unknown): number;
|
|
133
133
|
export declare function readJsonl<T = unknown>(filePath: string, parser?: (line: string) => T): T[];
|
|
134
|
+
/** Remap relational pattern references without rewriting signed witness payloads. */
|
|
135
|
+
export declare function remapPatternReferences(row: Record<string, unknown>, patternIds: ReadonlyMap<string, string>): Record<string, unknown>;
|
|
134
136
|
/**
|
|
135
137
|
* Generic merge for tables with a TEXT PRIMARY KEY.
|
|
136
138
|
* Uses strategy-based conflict resolution identical to the pattern-specific merges.
|
|
137
139
|
*/
|
|
138
|
-
export declare function mergeGenericRow(db: Database.Database, tableName: string, row: Record<string, unknown>, idColumn: string, strategy: MergeStrategy, timestampColumn?: string, confidenceColumn?: string): MergeResult;
|
|
140
|
+
export declare function mergeGenericRow(db: Database.Database, tableName: string, row: Record<string, unknown>, idColumn: string, strategy: MergeStrategy, timestampColumn?: string, confidenceColumn?: string, patternIds?: Map<string, string>, patternWinners?: Map<string, string | null>, originalPatternId?: unknown): MergeResult;
|
|
139
141
|
/**
|
|
140
142
|
* Merge for append-only tables (AUTOINCREMENT PK).
|
|
141
143
|
* Deduplicates by checking composite columns; inserts if no match found.
|
|
@@ -154,4 +156,6 @@ export declare function updateDreamInsight(db: Database.Database, ins: DreamInsi
|
|
|
154
156
|
export declare function insertWitnessEntry(db: Database.Database, entry: WitnessRow): void;
|
|
155
157
|
/** Ensure all brain-related tables exist in the target database. */
|
|
156
158
|
export declare function ensureTargetTables(db: Database.Database): void;
|
|
159
|
+
/** Execute the real importer; dry runs roll back rows and schema, including nested calls. */
|
|
160
|
+
export declare function runImportTransaction(db: Database.Database, dryRun: boolean, importer: () => void): void;
|
|
157
161
|
//# sourceMappingURL=brain-shared.d.ts.map
|
|
@@ -190,6 +190,16 @@ export function readJsonl(filePath, parser = (line) => JSON.parse(line)) {
|
|
|
190
190
|
return [];
|
|
191
191
|
return content.split('\n').map(parser);
|
|
192
192
|
}
|
|
193
|
+
/** Remap relational pattern references without rewriting signed witness payloads. */
|
|
194
|
+
export function remapPatternReferences(row, patternIds) {
|
|
195
|
+
const mapped = { ...row };
|
|
196
|
+
for (const column of ['pattern_id', 'source_pattern_id', 'target_pattern_id']) {
|
|
197
|
+
const id = mapped[column];
|
|
198
|
+
if (typeof id === 'string' && patternIds.has(id))
|
|
199
|
+
mapped[column] = patternIds.get(id);
|
|
200
|
+
}
|
|
201
|
+
return mapped;
|
|
202
|
+
}
|
|
193
203
|
// --- Generic merge for TEXT PK tables ---
|
|
194
204
|
/** Dynamically insert a row into any table using its column keys. */
|
|
195
205
|
function dynamicInsert(db, tableName, row) {
|
|
@@ -212,18 +222,57 @@ function dynamicUpdate(db, tableName, row, idColumn) {
|
|
|
212
222
|
* Generic merge for tables with a TEXT PRIMARY KEY.
|
|
213
223
|
* Uses strategy-based conflict resolution identical to the pattern-specific merges.
|
|
214
224
|
*/
|
|
215
|
-
export function mergeGenericRow(db, tableName, row, idColumn, strategy, timestampColumn, confidenceColumn) {
|
|
225
|
+
export function mergeGenericRow(db, tableName, row, idColumn, strategy, timestampColumn, confidenceColumn, patternIds, patternWinners, originalPatternId) {
|
|
216
226
|
const validated = validateTableName(tableName);
|
|
227
|
+
const incomingId = String(row.id);
|
|
217
228
|
if (!tableExists(db, validated)) {
|
|
218
229
|
dynamicInsert(db, validated, row);
|
|
219
230
|
return { imported: 1, skipped: 0, conflicts: 0 };
|
|
220
231
|
}
|
|
221
|
-
|
|
232
|
+
let existing = db.prepare(`SELECT * FROM ${validated} WHERE ${idColumn} = ?`)
|
|
222
233
|
.get(row[idColumn]);
|
|
234
|
+
if (!existing && tableName === 'qe_patterns') {
|
|
235
|
+
existing = db.prepare('SELECT * FROM qe_patterns WHERE name = ? AND qe_domain = ? AND pattern_type = ?').get(row.name, row.qe_domain, row.pattern_type);
|
|
236
|
+
}
|
|
237
|
+
if (existing && tableName === 'qe_patterns') {
|
|
238
|
+
// Keep the destination identity: existing children must remain attached,
|
|
239
|
+
// and incoming children are remapped after all patterns have merged.
|
|
240
|
+
if (typeof row.id === 'string' && typeof existing.id === 'string') {
|
|
241
|
+
patternIds?.set(row.id, existing.id);
|
|
242
|
+
}
|
|
243
|
+
row = { ...row, id: existing.id };
|
|
244
|
+
if (!patternWinners?.has(String(existing.id)))
|
|
245
|
+
patternWinners?.set(String(existing.id), null);
|
|
246
|
+
}
|
|
247
|
+
if (tableName === 'qe_pattern_embeddings' && patternWinners?.has(String(row.pattern_id))) {
|
|
248
|
+
if (patternWinners.get(String(row.pattern_id)) !== originalPatternId) {
|
|
249
|
+
return { imported: 0, skipped: 1, conflicts: existing ? 1 : 0 };
|
|
250
|
+
}
|
|
251
|
+
if (existing)
|
|
252
|
+
dynamicUpdate(db, validated, row, idColumn);
|
|
253
|
+
else
|
|
254
|
+
dynamicInsert(db, validated, row);
|
|
255
|
+
return { imported: 1, skipped: 0, conflicts: existing ? 1 : 0 };
|
|
256
|
+
}
|
|
223
257
|
if (!existing) {
|
|
258
|
+
if (tableName === 'qe_patterns')
|
|
259
|
+
patternWinners?.set(String(row.id), incomingId);
|
|
224
260
|
dynamicInsert(db, validated, row);
|
|
225
261
|
return { imported: 1, skipped: 0, conflicts: 0 };
|
|
226
262
|
}
|
|
263
|
+
const replaceExisting = () => {
|
|
264
|
+
if (tableName === 'qe_patterns' && patternWinners) {
|
|
265
|
+
patternWinners.set(String(row.id), incomingId);
|
|
266
|
+
// An embedding describes pattern content, not its confidence or usage.
|
|
267
|
+
// Keep a valid vector for metadata-only updates when no vector is supplied.
|
|
268
|
+
const contentColumns = ['name', 'description', 'pattern_type', 'qe_domain', 'domain', 'template_json', 'context_json'];
|
|
269
|
+
if (contentColumns.some(column => Object.hasOwn(row, column) && (row[column] ?? null) !== (existing[column] ?? null)) &&
|
|
270
|
+
tableExists(db, 'qe_pattern_embeddings')) {
|
|
271
|
+
db.prepare('DELETE FROM qe_pattern_embeddings WHERE pattern_id = ?').run(row.id);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
dynamicUpdate(db, validated, row, idColumn);
|
|
275
|
+
};
|
|
227
276
|
switch (strategy) {
|
|
228
277
|
case 'skip-conflicts':
|
|
229
278
|
return { imported: 0, skipped: 1, conflicts: 1 };
|
|
@@ -232,7 +281,7 @@ export function mergeGenericRow(db, tableName, row, idColumn, strategy, timestam
|
|
|
232
281
|
const existingTime = existing[ts] || '';
|
|
233
282
|
const incomingTime = row[ts] || '';
|
|
234
283
|
if (incomingTime > existingTime) {
|
|
235
|
-
|
|
284
|
+
replaceExisting();
|
|
236
285
|
return { imported: 1, skipped: 0, conflicts: 1 };
|
|
237
286
|
}
|
|
238
287
|
return { imported: 0, skipped: 1, conflicts: 1 };
|
|
@@ -241,7 +290,7 @@ export function mergeGenericRow(db, tableName, row, idColumn, strategy, timestam
|
|
|
241
290
|
const cc = confidenceColumn || 'confidence';
|
|
242
291
|
if (typeof row[cc] === 'number' && typeof existing[cc] === 'number') {
|
|
243
292
|
if (row[cc] > existing[cc]) {
|
|
244
|
-
|
|
293
|
+
replaceExisting();
|
|
245
294
|
return { imported: 1, skipped: 0, conflicts: 1 };
|
|
246
295
|
}
|
|
247
296
|
}
|
|
@@ -349,4 +398,21 @@ export function insertWitnessEntry(db, entry) {
|
|
|
349
398
|
export function ensureTargetTables(db) {
|
|
350
399
|
ensureAllBrainTables(db);
|
|
351
400
|
}
|
|
401
|
+
/** Execute the real importer; dry runs roll back rows and schema, including nested calls. */
|
|
402
|
+
export function runImportTransaction(db, dryRun, importer) {
|
|
403
|
+
const rollback = Symbol('brain import dry run');
|
|
404
|
+
const transaction = db.transaction(() => {
|
|
405
|
+
ensureTargetTables(db);
|
|
406
|
+
importer();
|
|
407
|
+
if (dryRun)
|
|
408
|
+
throw rollback;
|
|
409
|
+
});
|
|
410
|
+
try {
|
|
411
|
+
transaction();
|
|
412
|
+
}
|
|
413
|
+
catch (error) {
|
|
414
|
+
if (error !== rollback)
|
|
415
|
+
throw error;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
352
418
|
//# sourceMappingURL=brain-shared.js.map
|