agentic-qe 3.14.2 → 3.14.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/v3/qe-coverage-specialist.md +1 -1
- package/.claude/agents/v3/qe-fleet-commander.md +1 -1
- package/.claude/agents/v3/qe-pentest-validator.md +1 -1
- package/.claude/agents/v3/qe-queen-coordinator.md +1 -1
- package/.claude/agents/v3/qe-risk-assessor.md +1 -1
- package/.claude/agents/v3/qe-root-cause-analyzer.md +1 -1
- package/.claude/agents/v3/qe-security-auditor.md +1 -1
- package/.claude/agents/v3/qe-test-architect.md +1 -1
- package/.claude/commands/aqe-costs.md +10 -10
- package/.claude/helpers/advisor-call.cjs +3 -3
- package/.claude/helpers/v3/advisor-call.cjs +3 -3
- package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +1 -1
- package/.claude/skills/.validation/examples/performance-testing-output.example.json +1 -1
- package/.claude/skills/.validation/examples/security-testing-output.example.json +1 -1
- package/.claude/skills/.validation/examples/testability-scoring-output.example.json +1 -1
- package/.claude/skills/.validation/schemas/skill-eval.schema.json +4 -1
- package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +1 -1
- package/.claude/skills/.validation/schemas/skill-output.template.json +1 -1
- package/.claude/skills/.validation/templates/eval.template.yaml +1 -1
- package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +1 -1
- package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
- package/.claude/skills/.validation/test-data/sample-output.json +1 -1
- package/.claude/skills/a11y-ally/SKILL.md +1 -1
- package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +1 -1
- package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +1 -1
- package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +1 -1
- package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
- package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +1 -1
- package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +1 -1
- package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1 -1
- package/.claude/skills/contract-testing/evals/contract-testing.yaml +1 -1
- package/.claude/skills/database-testing/evals/database-testing.yaml +1 -1
- package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +1 -1
- package/.claude/skills/localization-testing/evals/localization-testing.yaml +1 -1
- package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +1 -1
- package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
- package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +1 -1
- package/.claude/skills/mutation-testing/test-data/sample-output.json +1 -1
- package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +1 -1
- package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +1 -1
- package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +1 -1
- package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +1 -1
- package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +1 -1
- package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +1 -1
- package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
- package/.claude/skills/performance-testing/evals/performance-testing.yaml +1 -1
- package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +1 -1
- package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +1 -1
- package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +1 -1
- package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +1 -1
- package/.claude/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +1 -1
- package/.claude/skills/qe-browser/evals/qe-browser.yaml +1 -1
- package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
- package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
- package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
- package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
- package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +2 -2
- package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
- package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
- package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
- package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +1 -1
- package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +1 -1
- package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
- package/.claude/skills/regression-testing/evals/regression-testing.yaml +1 -1
- package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +1 -1
- package/.claude/skills/security-testing/evals/security-testing.yaml +1 -1
- package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +1 -1
- package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +1 -1
- package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +1 -1
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +1 -1
- package/.claude/skills/test-data-management/evals/test-data-management.yaml +1 -1
- package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +1 -1
- package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +1 -1
- package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +1 -1
- package/.claude/skills/validation-pipeline/evals/validation-pipeline.yaml +1 -1
- package/.claude/skills/verification-quality/evals/verification-quality.yaml +1 -1
- package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +1 -1
- package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +1 -1
- package/.opencode/agents/collective-intelligence-coordinator.yaml +1 -1
- package/.opencode/agents/ddd-domain-expert.yaml +1 -1
- package/.opencode/agents/memory-specialist.yaml +1 -1
- package/.opencode/agents/performance-engineer.yaml +1 -1
- package/.opencode/agents/qe-accessibility-auditor.yaml +1 -1
- package/.opencode/agents/qe-api-contract-validator.yaml +1 -1
- package/.opencode/agents/qe-bdd-generator.yaml +1 -1
- package/.opencode/agents/qe-chaos-engineer.yaml +1 -1
- package/.opencode/agents/qe-code-complexity.yaml +1 -1
- package/.opencode/agents/qe-code-intelligence.yaml +1 -1
- package/.opencode/agents/qe-coverage-analyzer.yaml +1 -1
- package/.opencode/agents/qe-defect-predictor.yaml +1 -1
- package/.opencode/agents/qe-dependency-mapper.yaml +1 -1
- package/.opencode/agents/qe-deployment-advisor.yaml +1 -1
- package/.opencode/agents/qe-devils-advocate.yaml +1 -1
- package/.opencode/agents/qe-flaky-hunter.yaml +1 -1
- package/.opencode/agents/qe-fleet-commander.yaml +1 -1
- package/.opencode/agents/qe-gap-detector.yaml +1 -1
- package/.opencode/agents/qe-graphql-tester.yaml +1 -1
- package/.opencode/agents/qe-impact-analyzer.yaml +1 -1
- package/.opencode/agents/qe-integration-architect.yaml +1 -1
- package/.opencode/agents/qe-integration-tester.yaml +1 -1
- package/.opencode/agents/qe-kg-builder.yaml +1 -1
- package/.opencode/agents/qe-learning-coordinator.yaml +1 -1
- package/.opencode/agents/qe-load-tester.yaml +1 -1
- package/.opencode/agents/qe-message-broker-tester.yaml +1 -1
- package/.opencode/agents/qe-metrics-optimizer.yaml +1 -1
- package/.opencode/agents/qe-middleware-validator.yaml +1 -1
- package/.opencode/agents/qe-mutation-tester.yaml +1 -1
- package/.opencode/agents/qe-odata-contract-tester.yaml +1 -1
- package/.opencode/agents/qe-parallel-executor.yaml +1 -1
- package/.opencode/agents/qe-pattern-learner.yaml +1 -1
- package/.opencode/agents/qe-pentest-validator.yaml +1 -1
- package/.opencode/agents/qe-performance-tester.yaml +1 -1
- package/.opencode/agents/qe-product-factors-assessor.yaml +1 -1
- package/.opencode/agents/qe-property-tester.yaml +1 -1
- package/.opencode/agents/qe-quality-criteria-recommender.yaml +1 -1
- package/.opencode/agents/qe-quality-gate.yaml +1 -1
- package/.opencode/agents/qe-queen-coordinator.yaml +1 -1
- package/.opencode/agents/qe-qx-partner.yaml +1 -1
- package/.opencode/agents/qe-regression-analyzer.yaml +1 -1
- package/.opencode/agents/qe-requirements-validator.yaml +1 -1
- package/.opencode/agents/qe-responsive-tester.yaml +1 -1
- package/.opencode/agents/qe-retry-handler.yaml +1 -1
- package/.opencode/agents/qe-risk-assessor.yaml +1 -1
- package/.opencode/agents/qe-root-cause-analyzer.yaml +1 -1
- package/.opencode/agents/qe-sap-idoc-tester.yaml +1 -1
- package/.opencode/agents/qe-sap-rfc-tester.yaml +1 -1
- package/.opencode/agents/qe-security-auditor.yaml +1 -1
- package/.opencode/agents/qe-security-scanner.yaml +1 -1
- package/.opencode/agents/qe-soap-tester.yaml +1 -1
- package/.opencode/agents/qe-sod-analyzer.yaml +1 -1
- package/.opencode/agents/qe-tdd-specialist.yaml +1 -1
- package/.opencode/agents/qe-test-generator.yaml +1 -1
- package/.opencode/agents/qe-test-idea-rewriter.yaml +1 -1
- package/.opencode/agents/qe-transfer-specialist.yaml +1 -1
- package/.opencode/agents/qe-visual-tester.yaml +1 -1
- package/.opencode/agents/security-architect.yaml +1 -1
- package/.opencode/agents/security-auditor.yaml +1 -1
- package/CHANGELOG.md +183 -0
- package/README.md +7 -2
- package/assets/agents/v3/helpers/advisor-call.cjs +3 -3
- package/assets/agents/v3/qe-coverage-specialist.md +1 -1
- package/assets/agents/v3/qe-fleet-commander.md +1 -1
- package/assets/agents/v3/qe-pentest-validator.md +1 -1
- package/assets/agents/v3/qe-queen-coordinator.md +1 -1
- package/assets/agents/v3/qe-risk-assessor.md +1 -1
- package/assets/agents/v3/qe-root-cause-analyzer.md +1 -1
- package/assets/agents/v3/qe-security-auditor.md +1 -1
- package/assets/agents/v3/qe-test-architect.md +1 -1
- package/assets/skills/.validation/examples/chaos-engineering-output.example.json +1 -1
- package/assets/skills/.validation/examples/performance-testing-output.example.json +1 -1
- package/assets/skills/.validation/examples/security-testing-output.example.json +1 -1
- package/assets/skills/.validation/examples/testability-scoring-output.example.json +1 -1
- package/assets/skills/.validation/schemas/skill-eval.schema.json +4 -1
- package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +1 -1
- package/assets/skills/.validation/schemas/skill-output.template.json +1 -1
- package/assets/skills/.validation/templates/eval.template.yaml +1 -1
- package/assets/skills/.validation/templates/security-testing-eval.template.yaml +1 -1
- package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
- package/assets/skills/.validation/test-data/sample-output.json +1 -1
- package/assets/skills/a11y-ally/SKILL.md +1 -1
- package/assets/skills/a11y-ally/evals/a11y-ally.yaml +1 -1
- package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +1 -1
- package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +1 -1
- package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
- package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +1 -1
- package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +1 -1
- package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1 -1
- package/assets/skills/contract-testing/evals/contract-testing.yaml +1 -1
- package/assets/skills/database-testing/evals/database-testing.yaml +1 -1
- package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +1 -1
- package/assets/skills/localization-testing/evals/localization-testing.yaml +1 -1
- package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +1 -1
- package/assets/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
- package/assets/skills/mutation-testing/evals/mutation-testing.yaml +1 -1
- package/assets/skills/mutation-testing/test-data/sample-output.json +1 -1
- package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +1 -1
- package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +1 -1
- package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +1 -1
- package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +1 -1
- package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +1 -1
- package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +1 -1
- package/assets/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
- package/assets/skills/performance-testing/evals/performance-testing.yaml +1 -1
- package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +1 -1
- package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +1 -1
- package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +1 -1
- package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +1 -1
- package/assets/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +1 -1
- package/assets/skills/qe-browser/evals/qe-browser.yaml +1 -1
- package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
- package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
- package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
- package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
- package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +2 -2
- package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
- package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
- package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
- package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +1 -1
- package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +1 -1
- package/assets/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
- package/assets/skills/regression-testing/evals/regression-testing.yaml +1 -1
- package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +1 -1
- package/assets/skills/security-testing/evals/security-testing.yaml +1 -1
- package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +1 -1
- package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +1 -1
- package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +1 -1
- package/assets/skills/skills-manifest.json +1 -1
- package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +1 -1
- package/assets/skills/test-data-management/evals/test-data-management.yaml +1 -1
- package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +1 -1
- package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +1 -1
- package/assets/skills/testability-scoring/evals/testability-scoring.yaml +1 -1
- package/assets/skills/validation-pipeline/evals/validation-pipeline.yaml +1 -1
- package/assets/skills/verification-quality/evals/verification-quality.yaml +1 -1
- package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +1 -1
- package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +1 -1
- package/dist/cli/bundle.js +7 -7
- package/dist/cli/chunks/adapter-TNNNJRDG.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-SD5N32MX.js → agent-booster-wasm-5PC7D2FW.js} +2 -2
- package/dist/cli/chunks/{agent-handler-OZRSJM7F.js → agent-handler-RDNTK4CA.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-NYTRANRN.js → agent-memory-branch-NAAMBWIR.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-5ZRMYJLB.js +2 -0
- package/dist/cli/chunks/{arena-EX3SC2DP.js → arena-HXTWJ5YY.js} +4 -4
- package/dist/cli/chunks/{arena-FOTVSRK4.js → arena-KXFHRWX4.js} +2 -2
- package/dist/cli/chunks/{audit-Q5GHSUQY.js → audit-YSGA7UWT.js} +3 -3
- package/dist/cli/chunks/base-KWZHOPSH.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-S7M5R2HS.js → better-sqlite3-UICJZIDG.js} +2 -2
- package/dist/cli/chunks/brain-handler-ET6YAP4B.js +90 -0
- package/dist/cli/chunks/{branch-enumerator-RWAXTGEU.js → branch-enumerator-SS7UNVIA.js} +2 -2
- package/dist/cli/chunks/{browser-IGDESJGF.js → browser-77GI6KBE.js} +2 -2
- package/dist/cli/chunks/browser-workflow-2FZTKDUL.js +2 -0
- package/dist/cli/chunks/{chunk-U54OOA24.js → chunk-2JW3BCGG.js} +1 -1
- package/dist/cli/chunks/{chunk-LML5VTFK.js → chunk-33YYYWBQ.js} +1 -1
- package/dist/cli/chunks/{chunk-P64DMQ2C.js → chunk-34WO57CW.js} +1 -1
- package/dist/cli/chunks/{chunk-57TNBR2P.js → chunk-3QHGWY7T.js} +2 -2
- package/dist/cli/chunks/chunk-3TW5W5LX.js +2 -0
- package/dist/cli/chunks/{chunk-S4MR6RTE.js → chunk-3UPAMMCB.js} +1 -1
- package/dist/cli/chunks/{chunk-5WJUNRTY.js → chunk-3VOQRIQM.js} +2 -2
- package/dist/cli/chunks/{chunk-4RT7I7PI.js → chunk-3X3DJZJJ.js} +1 -1
- package/dist/cli/chunks/{chunk-RFNEHNJV.js → chunk-4MHXCAG2.js} +1 -1
- package/dist/cli/chunks/{chunk-PMUBG2RU.js → chunk-4OYFXLBK.js} +2 -2
- package/dist/cli/chunks/{chunk-W2FLULF4.js → chunk-55RWDRJD.js} +3 -3
- package/dist/cli/chunks/chunk-5R3QL7WN.js +14 -0
- package/dist/cli/chunks/{chunk-RHJVDCLV.js → chunk-5SJHQ2CO.js} +2 -2
- package/dist/cli/chunks/{chunk-HBTC4L53.js → chunk-5YPYDPBJ.js} +2 -2
- package/dist/cli/chunks/chunk-5Z6XZV7K.js +65 -0
- package/dist/cli/chunks/{chunk-6EHN7Q2Q.js → chunk-64PFWE2F.js} +2 -2
- package/dist/cli/chunks/{chunk-KFXZDQ5J.js → chunk-6CQN24ZK.js} +1 -1
- package/dist/cli/chunks/{chunk-WVY22NHZ.js → chunk-6J62K3SW.js} +2 -2
- package/dist/cli/chunks/{chunk-TLPL3EQY.js → chunk-6KJABXAR.js} +2 -2
- package/dist/cli/chunks/{chunk-PZKZY6PB.js → chunk-6QYNWR7U.js} +2 -2
- package/dist/cli/chunks/{chunk-A7N3YUDJ.js → chunk-6TPKK7LD.js} +2 -2
- package/dist/cli/chunks/{chunk-RYJHREYS.js → chunk-6UWGMOND.js} +2 -2
- package/dist/cli/chunks/{chunk-XPLSLHRB.js → chunk-6VRA2QGL.js} +1 -1
- package/dist/cli/chunks/{chunk-Q3JHS3UD.js → chunk-7D777LTF.js} +2 -2
- package/dist/cli/chunks/chunk-7ZIOFPL3.js +2 -0
- package/dist/cli/chunks/chunk-A4FYONNU.js +2 -0
- package/dist/cli/chunks/{chunk-7AFBNU6K.js → chunk-AIHDEEJO.js} +2 -2
- package/dist/cli/chunks/{chunk-L2F7FVIU.js → chunk-AUXFKCQL.js} +2 -2
- package/dist/cli/chunks/{chunk-67A6PEZM.js → chunk-AWWNB2T7.js} +2 -2
- package/dist/cli/chunks/{chunk-DVHWLAEO.js → chunk-BDESSCVR.js} +3 -3
- package/dist/cli/chunks/{chunk-JQ2ZD3WO.js → chunk-BFP7KO7P.js} +2 -2
- package/dist/cli/chunks/{chunk-N5ZRUOMR.js → chunk-BGE6FOLM.js} +2 -2
- package/dist/cli/chunks/{chunk-BWRHOIYC.js → chunk-BOARZKU3.js} +2 -2
- package/dist/cli/chunks/{chunk-CTCQOYBS.js → chunk-BOZZYWCR.js} +1 -1
- package/dist/cli/chunks/{chunk-NHHWLJQF.js → chunk-C2WU3533.js} +1 -1
- package/dist/cli/chunks/{chunk-5EHLGOWW.js → chunk-CDHQFHRP.js} +2 -2
- package/dist/cli/chunks/chunk-CDKG6EI7.js +16 -0
- package/dist/cli/chunks/{chunk-RGH3WGWD.js → chunk-CIKSHTEQ.js} +3 -3
- package/dist/cli/chunks/{chunk-K574FLVB.js → chunk-CIZ5JPDC.js} +2 -2
- package/dist/cli/chunks/{chunk-LWUJQGCS.js → chunk-CLTMDCSE.js} +2 -2
- package/dist/cli/chunks/{chunk-GHQ5PUOV.js → chunk-CNG6GQEZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3C2K4YMS.js → chunk-CSU5NYOX.js} +3 -3
- package/dist/cli/chunks/chunk-CU46J64M.js +4 -0
- package/dist/cli/chunks/{chunk-EH5OCHAJ.js → chunk-CXQPR5MY.js} +1 -1
- package/dist/cli/chunks/chunk-DA5K5754.js +96 -0
- package/dist/cli/chunks/{chunk-FVGTINVR.js → chunk-DAEFDCJ4.js} +81 -65
- package/dist/cli/chunks/{chunk-MH73D5TN.js → chunk-DEYLEDJN.js} +2 -2
- package/dist/cli/chunks/{chunk-7FWP7CZY.js → chunk-DFZCKIGY.js} +3 -3
- package/dist/cli/chunks/{chunk-QXTW7XCS.js → chunk-DHJPWQBR.js} +2 -2
- package/dist/cli/chunks/{chunk-NAZVPZJS.js → chunk-DOTK76IJ.js} +2 -2
- package/dist/cli/chunks/{chunk-RCI64RIJ.js → chunk-DPFRKBOG.js} +2 -2
- package/dist/cli/chunks/{chunk-WMW47QMR.js → chunk-EDJ3O7RH.js} +2 -2
- package/dist/cli/chunks/{chunk-4K27ESCA.js → chunk-EKQ673SA.js} +1 -1
- package/dist/cli/chunks/chunk-F3SBRQC6.js +2 -0
- package/dist/cli/chunks/{chunk-4N44UJGI.js → chunk-FGYMFUE2.js} +2 -2
- package/dist/cli/chunks/chunk-FLYOJOKN.js +2 -0
- package/dist/cli/chunks/{chunk-W4OQYLYO.js → chunk-FRH6VAUS.js} +1 -1
- package/dist/cli/chunks/{chunk-VOYJJ3KA.js → chunk-FWGOHAAB.js} +2 -2
- package/dist/cli/chunks/{chunk-D4RCV4LY.js → chunk-G6T45OIC.js} +2 -2
- package/dist/cli/chunks/{chunk-2EHFEMRU.js → chunk-GPLQ6DOK.js} +2 -2
- package/dist/cli/chunks/{chunk-RVCWSAXI.js → chunk-HDSAM2RE.js} +2 -2
- package/dist/cli/chunks/chunk-HIVA55CJ.js +2 -0
- package/dist/cli/chunks/{chunk-6F4WHN7D.js → chunk-HIYXCDEP.js} +1 -1
- package/dist/cli/chunks/{chunk-NRR23SJV.js → chunk-HUWNIPZ5.js} +1 -1
- package/dist/cli/chunks/{chunk-4M6A3PVJ.js → chunk-HV2J7KKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-CJHVOBJY.js → chunk-IFCLB7FJ.js} +1 -1
- package/dist/cli/chunks/{chunk-Q335R4MR.js → chunk-IPR4QP3H.js} +2 -2
- package/dist/cli/chunks/{chunk-HZMLNM2T.js → chunk-ISDMD6EU.js} +178 -175
- package/dist/cli/chunks/chunk-J6GNQS62.js +5 -0
- package/dist/cli/chunks/{chunk-3DFFFXXO.js → chunk-JBNEE5UH.js} +2 -2
- package/dist/cli/chunks/chunk-JZ3ORVZ3.js +54 -0
- package/dist/cli/chunks/{chunk-T4C56HBW.js → chunk-KCZR45PA.js} +2 -2
- package/dist/cli/chunks/chunk-KGT36Z42.js +14 -0
- package/dist/cli/chunks/{chunk-JIUF6NV6.js → chunk-KHFNNVJA.js} +2 -2
- package/dist/cli/chunks/{chunk-7SK6IMGZ.js → chunk-KPA7MZ6C.js} +2 -2
- package/dist/cli/chunks/{chunk-G2CLZVYI.js → chunk-KSKEF7LZ.js} +3 -3
- package/dist/cli/chunks/{chunk-6LMLN5R2.js → chunk-M2JBBZQB.js} +2 -2
- package/dist/cli/chunks/{chunk-UHTAI4ZB.js → chunk-M4WJKGVK.js} +1 -1
- package/dist/cli/chunks/{chunk-KZOBLLXW.js → chunk-M5QUBZY6.js} +2 -2
- package/dist/cli/chunks/{chunk-42WUDDUU.js → chunk-MCUJEZT6.js} +2 -2
- package/dist/cli/chunks/{chunk-ZFGND4QK.js → chunk-MDWCE7YW.js} +1 -1
- package/dist/cli/chunks/{chunk-TYVQNYXX.js → chunk-MEGDYJPV.js} +7 -7
- package/dist/cli/chunks/chunk-MIQTXNBG.js +4 -0
- package/dist/cli/chunks/{chunk-PFXX5Q32.js → chunk-MNW6QGNJ.js} +2 -2
- package/dist/cli/chunks/{chunk-IVGVOGIZ.js → chunk-MOBNBMFW.js} +1 -1
- package/dist/cli/chunks/{chunk-NWFIJNEB.js → chunk-MTZH7AHC.js} +1 -1
- package/dist/cli/chunks/chunk-MVNP7GIR.js +2 -0
- package/dist/cli/chunks/chunk-MVPCNSPY.js +2 -0
- package/dist/cli/chunks/chunk-NA7B2QYB.js +2 -0
- package/dist/cli/chunks/{chunk-E3Q7WNJD.js → chunk-NDPFGIMJ.js} +3 -3
- package/dist/cli/chunks/{chunk-GHUPID5E.js → chunk-NJBGXDQ7.js} +1 -1
- package/dist/cli/chunks/chunk-OBAP2TXZ.js +2 -0
- package/dist/cli/chunks/{chunk-OBCKP3G4.js → chunk-OCWWP5PL.js} +4 -4
- package/dist/cli/chunks/{chunk-CJCT452S.js → chunk-ODKLFVYC.js} +2 -2
- package/dist/cli/chunks/{chunk-YN6W2XIT.js → chunk-ONII3572.js} +4 -4
- package/dist/cli/chunks/{chunk-QW4LN5NK.js → chunk-OSLYSG3B.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ6NEJMO.js → chunk-OULHKEVH.js} +2 -2
- package/dist/cli/chunks/{chunk-CG2MUD7U.js → chunk-PAWXJ73E.js} +1 -1
- package/dist/cli/chunks/chunk-PEPFCPES.js +2 -0
- package/dist/cli/chunks/{chunk-UIGEUEBT.js → chunk-PFR4G3DJ.js} +2 -2
- package/dist/cli/chunks/chunk-PO3IXGMQ.js +2 -0
- package/dist/cli/chunks/{chunk-6SZKLWZT.js → chunk-PZJOPURC.js} +5 -5
- package/dist/cli/chunks/{chunk-ARMZYHYL.js → chunk-Q5DO24IJ.js} +2 -2
- package/dist/cli/chunks/chunk-QGIU2WRL.js +2 -0
- package/dist/cli/chunks/{chunk-N3RN4QTC.js → chunk-R4VL6E65.js} +2 -2
- package/dist/cli/chunks/{chunk-MWQTACNA.js → chunk-R5NE6B2M.js} +2 -2
- package/dist/cli/chunks/{chunk-T46LOLW3.js → chunk-RJCYCLZV.js} +2 -2
- package/dist/cli/chunks/{chunk-CH2TQCV5.js → chunk-SGYJ4NFZ.js} +1 -1
- package/dist/cli/chunks/{chunk-NG2UVPTW.js → chunk-SRKETSFF.js} +1 -1
- package/dist/cli/chunks/{chunk-QFUX7ELG.js → chunk-STJCATGN.js} +2 -2
- package/dist/cli/chunks/{chunk-CIESXO73.js → chunk-STM3UDNO.js} +1 -1
- package/dist/cli/chunks/{chunk-C7AXRI7E.js → chunk-T6BVLVI5.js} +1 -1
- package/dist/cli/chunks/{chunk-HSJ5FQCF.js → chunk-TDZ53WO2.js} +2 -2
- package/dist/cli/chunks/{chunk-YF5OP6CR.js → chunk-TPGED2IF.js} +2 -2
- package/dist/cli/chunks/{chunk-2TG24LYQ.js → chunk-TSRSV3LD.js} +1 -1
- package/dist/cli/chunks/{chunk-6VKJAMZY.js → chunk-TT23RRB7.js} +1 -1
- package/dist/cli/chunks/{chunk-WXMSRBQF.js → chunk-TWAWHOP7.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCDXJ27H.js → chunk-U5K45TFH.js} +1 -1
- package/dist/cli/chunks/{chunk-3WV4H33V.js → chunk-UDHKLT4C.js} +1 -1
- package/dist/cli/chunks/{chunk-VNAKBHJI.js → chunk-UEM7ZF5K.js} +2 -2
- package/dist/cli/chunks/{chunk-4ZUZDFAA.js → chunk-UGVHCMUN.js} +6 -6
- package/dist/cli/chunks/{chunk-NNOMDM4N.js → chunk-V3QLFNA2.js} +2 -2
- package/dist/cli/chunks/{chunk-S7N4BKI3.js → chunk-VD6QRULW.js} +2 -2
- package/dist/cli/chunks/{chunk-WBH4C4BG.js → chunk-VIHTL3U2.js} +2 -2
- package/dist/cli/chunks/chunk-W7BWUTVV.js +2 -0
- package/dist/cli/chunks/{chunk-IWFL6EFI.js → chunk-WLG5AJ4N.js} +2 -2
- package/dist/cli/chunks/{chunk-KEEBUVGV.js → chunk-XC7DYDSY.js} +8 -8
- package/dist/cli/chunks/{chunk-F2KRT2II.js → chunk-XJ7QNVI5.js} +3 -3
- package/dist/cli/chunks/chunk-XRT2WRMS.js +2 -0
- package/dist/cli/chunks/{chunk-ADK7DF3G.js → chunk-XRYF6JV7.js} +2 -2
- package/dist/cli/chunks/{chunk-PWEIDHT7.js → chunk-XWMZ6D6N.js} +2 -2
- package/dist/cli/chunks/{chunk-ICKLBATY.js → chunk-Y3MW3YBC.js} +2 -2
- package/dist/cli/chunks/chunk-YNXS6CGV.js +2 -0
- package/dist/cli/chunks/{chunk-PVHO6KLB.js → chunk-Z3RHREWF.js} +1 -1
- package/dist/cli/chunks/{chunk-EAJK25IS.js → chunk-ZBAKA4YB.js} +1 -1
- package/dist/cli/chunks/chunk-ZBJ4XOOV.js +180 -0
- package/dist/cli/chunks/chunk-ZBQY5GLF.js +11 -0
- package/dist/cli/chunks/{chunk-R5RNOLHI.js → chunk-ZJ26AQA5.js} +1 -1
- package/dist/cli/chunks/{chunk-KPFG4OIM.js → chunk-ZNEMGX5O.js} +1 -1
- package/dist/cli/chunks/{chunk-2H5YJ5ZK.js → chunk-ZNPKDCZR.js} +2 -2
- package/dist/cli/chunks/{chunk-DW6ZMNMR.js → chunk-ZZDIMOOV.js} +2 -2
- package/dist/cli/chunks/ci-464KPQNP.js +81 -0
- package/dist/cli/chunks/ci-output-I7FX2RSO.js +2 -0
- package/dist/cli/chunks/{circuit-breaker-4WST3QSA.js → circuit-breaker-3FW237WW.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-KB4TKMYI.js → claude-flow-setup-6JKMBPGU.js} +2 -2
- package/dist/cli/chunks/client-7E4LM2WW.js +2 -0
- package/dist/cli/chunks/{cline-installer-W2ZHQ6WM.js → cline-installer-UWFHT6VY.js} +2 -2
- package/dist/cli/chunks/{code-TF2AVR5D.js → code-KQSUT3FS.js} +29 -29
- package/dist/cli/chunks/{code-index-extractor-RMDRUVQJ.js → code-index-extractor-PABBNUSC.js} +2 -2
- package/dist/cli/chunks/{codex-installer-VSTRHJHV.js → codex-installer-CQ24DTP5.js} +2 -2
- package/dist/cli/chunks/{completions-3Q37QVFR.js → completions-7RWHAUAR.js} +2 -2
- package/dist/cli/chunks/complexity-analyzer-XPOAF33E.js +2 -0
- package/dist/cli/chunks/{continuedev-installer-VTEXM455.js → continuedev-installer-V4F2FIZP.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-AGY7DQUS.js → copilot-installer-JMICURQB.js} +2 -2
- package/dist/cli/chunks/core-handlers-IFG3757P.js +2 -0
- package/dist/cli/chunks/cost-tracker-5OFHEYFJ.js +2 -0
- package/dist/cli/chunks/{coverage-TT64IOS4.js → coverage-QKN57JDS.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-EK7W4PGP.js +2 -0
- package/dist/cli/chunks/{cursor-installer-OVOJIOHN.js → cursor-installer-GBJ7YXSM.js} +2 -2
- package/dist/cli/chunks/{daemon-DMFZMXKA.js → daemon-GKP7CMEK.js} +3 -3
- package/dist/cli/chunks/{daemon-XCULEHWY.js → daemon-IAVSO6HK.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-WW2RX4B5.js → dag-attention-scheduler-S225TCI7.js} +2 -2
- package/dist/cli/chunks/{detect-QNWIM232.js → detect-IUYH422U.js} +2 -2
- package/dist/cli/chunks/{dist-node-6GQIY3CG.js → dist-node-2YRE6A7C.js} +2 -2
- package/dist/cli/chunks/{domain-handler-6RJPDELX.js → domain-handler-PL2TZC6H.js} +2 -2
- package/dist/cli/chunks/domain-plugins-HCGLXKIT.js +2 -0
- package/dist/cli/chunks/{domain-transfer-WK524LBS.js → domain-transfer-KQJRUPXA.js} +2 -2
- package/dist/cli/chunks/dream-NFSCSLY7.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-SO6GWJW7.js → embed-and-insert-pattern-ZPAG7235.js} +2 -2
- package/dist/cli/chunks/eval-WCK7KNFN.js +17 -0
- package/dist/cli/chunks/{experience-capture-middleware-BCCJ35OX.js → experience-capture-middleware-2MSQWSAR.js} +3 -3
- package/dist/cli/chunks/{fast-paths-CATDDBEU.js → fast-paths-VYOSIBKF.js} +2 -2
- package/dist/cli/chunks/{feature-flags-BUXNAORY.js → feature-flags-UJRHFBRX.js} +2 -2
- package/dist/cli/chunks/{feature-flags-KNNWWP5G.js → feature-flags-WCFUKHNQ.js} +2 -2
- package/dist/cli/chunks/{file-discovery-S4HF3O7D.js → file-discovery-JDGL4ZWS.js} +2 -2
- package/dist/cli/chunks/fleet-ROXVMZ2F.js +43 -0
- package/dist/cli/chunks/{gnn-wrapper-G7ABZUG7.js → gnn-wrapper-NIO4ZCO3.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-UFMELIWT.js → heartbeat-handler-PI42WD3C.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-ZATCDJDK.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-WXQABRCA.js +2 -0
- package/dist/cli/chunks/hnsw-index-TPSWLEA5.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-YIILSRXI.js → hnsw-legacy-bridge-YLC7SPK2.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-TSVRMXDH.js → hnswlib-node-LG6OS3B7.js} +2 -2
- package/dist/cli/chunks/{hooks-OHQPNK74.js → hooks-WVALP5GX.js} +10 -10
- package/dist/cli/chunks/{hypergraph-engine-LY7PJDSL.js → hypergraph-engine-GJEMW3EG.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-YGDYZO6H.js → hypergraph-handler-BLF6LXEV.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-HNIU45P5.js +2 -0
- package/dist/cli/chunks/{init-handler-MTK65LI3.js → init-handler-K25RWRYY.js} +6 -6
- package/dist/cli/chunks/init-wizard-JUIPBMHG.js +2 -0
- package/dist/cli/chunks/kernel-5BOZQ754.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-3IICU4RS.js → kilocode-installer-BXN6WZ7G.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-MXOVQYQA.js → kiro-installer-PM362DLN.js} +12 -12
- package/dist/cli/chunks/knowledge-graph-EWDAENWM.js +2 -0
- package/dist/cli/chunks/learning-CPERDDRG.js +122 -0
- package/dist/cli/chunks/llm-router-GOAV5FPI.js +37 -0
- package/dist/cli/chunks/llm-router-service-3YT7JGBS.js +2 -0
- package/dist/cli/chunks/{load-F4PVAMXQ.js → load-2BG6SHAK.js} +2 -2
- package/dist/cli/chunks/load-test-BP2CPLIV.js +2 -0
- package/dist/cli/chunks/{mcp-DUYJUEME.js → mcp-5TTB37DC.js} +2 -2
- package/dist/cli/chunks/{memory-XTTYORAS.js → memory-4NHBYT6S.js} +5 -5
- package/dist/cli/chunks/memory-backend-4PYQBPRM.js +2 -0
- package/dist/cli/chunks/memory-handlers-2B27NITS.js +2 -0
- package/dist/cli/chunks/multi-model-executor-KCWSGCDT.js +14 -0
- package/dist/cli/chunks/{opencode-installer-33ULBU2F.js → opencode-installer-ATZLLK74.js} +2 -2
- package/dist/cli/chunks/{orchestrator-34ZJEKTJ.js → orchestrator-RKB7XJRG.js} +19 -19
- package/dist/cli/chunks/pattern-null-store-OYOQOV2O.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-GZ2M3F2E.js → pattern-usage-recorder-7VE4XDAI.js} +2 -2
- package/dist/cli/chunks/pipeline-LQZSNDD2.js +19 -0
- package/dist/cli/chunks/{platform-VKJFJIAW.js → platform-OD5H5U6G.js} +2 -2
- package/dist/cli/chunks/{plugin-5C5UBQUQ.js → plugin-EJ6K2MGU.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-KO2PQI3D.js → prime-radiant-advanced-wasm-OIHTKJMN.js} +2 -2
- package/dist/cli/chunks/protocol-executor-3ATJTXWG.js +2 -0
- package/dist/cli/chunks/{protocol-handler-ZF74NIKA.js → protocol-handler-NRBROAU7.js} +2 -2
- package/dist/cli/chunks/{prove-MO5TQQU4.js → prove-EJOGEGD3.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-LLMYZT4X.js +2 -0
- package/dist/cli/chunks/{quality-EYIN6AER.js → quality-E55UC73D.js} +2 -2
- package/dist/cli/chunks/{quality-gate-V6OQM57O.js → quality-gate-OIQATNT3.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-RN7L6KG5.js +2 -0
- package/dist/cli/chunks/{real-embeddings-AR7TZX7U.js → real-embeddings-FPFFNOSZ.js} +2 -2
- package/dist/cli/chunks/ref-validation-OPO6J7OL.js +2 -0
- package/dist/cli/chunks/{roocode-installer-46E626VZ.js → roocode-installer-ODY5KRWU.js} +2 -2
- package/dist/cli/chunks/router-MDHITQ2V.js +2 -0
- package/dist/cli/chunks/routing-feedback-5XLNJ3Y3.js +2 -0
- package/dist/cli/chunks/{routing-handler-ZNRVW6QW.js → routing-handler-KQM6VWLC.js} +4 -4
- package/dist/cli/chunks/{ruvector-commands-4L2CQMWS.js → ruvector-commands-U2GVV6PF.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-JBW4O3II.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-BPPQL4XJ.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-H4RVGBIA.js → rvf-migration-coordinator-V2GHCJKN.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-S4562CG5.js +2 -0
- package/dist/cli/chunks/rvf-store-integrity-KMIHD3LP.js +2 -0
- package/dist/cli/chunks/safe-db-FIRHSXVF.js +2 -0
- package/dist/cli/chunks/schedule-RVXFB4HK.js +2 -0
- package/dist/cli/chunks/scheduler-IKKAMAOO.js +2 -0
- package/dist/cli/chunks/security-P5NM353C.js +13 -0
- package/dist/cli/chunks/{shared-rvf-adapter-M6NNIZ5W.js → shared-rvf-adapter-LVIUOO4S.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-LHMFCYVE.js → shared-rvf-dual-writer-2CSG7C4W.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-SQ3HCUQ7.js +2 -0
- package/dist/cli/chunks/{status-handler-GMIOXQIE.js → status-handler-6TU6O37R.js} +2 -2
- package/dist/cli/chunks/{structural-health-YZXHVHM6.js → structural-health-KBIJSTXJ.js} +2 -2
- package/dist/cli/chunks/{sync-GMPCPV5L.js → sync-LNHI5SB7.js} +2 -2
- package/dist/cli/chunks/{sync-N56UQGCS.js → sync-UHOX6RJW.js} +2 -2
- package/dist/cli/chunks/task-handler-AVDHMLGI.js +49 -0
- package/dist/cli/chunks/task-handlers-KYK4VTRA.js +9 -0
- package/dist/cli/chunks/{test-GQNCKRSP.js → test-DHAAI3DU.js} +11 -11
- package/dist/cli/chunks/test-scheduling-XDBZ3QC2.js +15 -0
- package/dist/cli/chunks/{token-bootstrap-76SRNXGG.js → token-bootstrap-GUTTLPZX.js} +2 -2
- package/dist/cli/chunks/{token-usage-O7CZDP5Q.js → token-usage-Q2YG5YQN.js} +2 -2
- package/dist/cli/chunks/{transformers-LTU4LSSC.js → transformers-F5UQTQCY.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-NQSQCMBM.js → tree-sitter-wasm-parser-DEGOHS6F.js} +2 -2
- package/dist/cli/chunks/types-JQ7EQO5Q.js +2 -0
- package/dist/cli/chunks/unified-memory-CXHLHB5I.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-I7WAE54M.js +2 -0
- package/dist/cli/chunks/unified-persistence-6CPF65WI.js +2 -0
- package/dist/cli/chunks/{upgrade-OQWRBZ3R.js → upgrade-TJRVGHGD.js} +2 -2
- package/dist/cli/chunks/{validate-TH5SRP3E.js → validate-BWPCVHBN.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-UITL2JUS.js → validate-swarm-QVVKCQLP.js} +2 -2
- package/dist/cli/chunks/{vibium-O6PRAG4J.js → vibium-ZFATIWHO.js} +2 -2
- package/dist/cli/chunks/visual-security-GNPHME5H.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-XBFBY4OF.js → web-tree-sitter-KPLY7ONR.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-DVT5NRNY.js → windsurf-installer-H7XM7ISA.js} +2 -2
- package/dist/cli/chunks/{witness-chain-VRSH2F36.js → witness-chain-RRN6NDCH.js} +2 -2
- package/dist/cli/chunks/witness-chain-VT4UHHBR.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-GFHRDKQ4.js → witness-key-manager-DFRL42GE.js} +2 -2
- package/dist/cli/chunks/workflow-2ZQO6WYI.js +51 -0
- package/dist/cli/chunks/workflow-orchestrator-DB3HIECD.js +2 -0
- package/dist/cli/chunks/{wrappers-5LLLT7GM.js → wrappers-SUS6XEJD.js} +2 -2
- package/dist/cli/commands/ci.js +54 -28
- package/dist/cli/commands/code.js +6 -0
- package/dist/cli/commands/eval.js +3 -2
- package/dist/cli/commands/fleet.js +35 -16
- package/dist/cli/commands/learning-snapshot.d.ts +38 -0
- package/dist/cli/commands/learning-snapshot.js +171 -0
- package/dist/cli/commands/learning.js +16 -64
- package/dist/cli/commands/llm-router.js +13 -12
- package/dist/cli/commands/pipeline.js +9 -0
- package/dist/cli/commands/security.js +167 -100
- package/dist/cli/commands/test.js +1 -0
- package/dist/cli/commands/workflow.js +9 -1
- package/dist/cli/handlers/task-handler.js +19 -9
- package/dist/cli/helpers/domain-plugins.d.ts +5 -0
- package/dist/cli/helpers/domain-plugins.js +11 -0
- package/dist/cli/index.js +17 -8
- package/dist/cli/utils/ci-config.d.ts +3 -0
- package/dist/cli/utils/ci-output.d.ts +17 -0
- package/dist/cli/utils/ci-output.js +34 -2
- package/dist/context/sources/git-source.d.ts +2 -0
- package/dist/context/sources/git-source.js +9 -2
- package/dist/coordination/cancelled-task-settlement.d.ts +11 -0
- package/dist/coordination/cancelled-task-settlement.js +15 -0
- package/dist/coordination/consensus/providers/claude-provider.d.ts +2 -2
- package/dist/coordination/consensus/providers/claude-provider.js +18 -25
- package/dist/coordination/consensus/providers/gemini-provider.d.ts +14 -4
- package/dist/coordination/consensus/providers/gemini-provider.js +39 -36
- package/dist/coordination/consensus/providers/ollama-provider.d.ts +8 -7
- package/dist/coordination/consensus/providers/ollama-provider.js +16 -18
- package/dist/coordination/consensus/providers/openai-provider.d.ts +14 -4
- package/dist/coordination/consensus/providers/openai-provider.js +36 -34
- package/dist/coordination/consensus/providers/openrouter-provider.d.ts +5 -5
- package/dist/coordination/consensus/providers/openrouter-provider.js +64 -37
- package/dist/coordination/handlers/handler-types.d.ts +3 -0
- package/dist/coordination/handlers/quality-handlers.js +10 -0
- package/dist/coordination/handlers/security-handlers.js +168 -72
- package/dist/coordination/handlers/test-execution-handlers.js +39 -43
- package/dist/coordination/interfaces.d.ts +2 -2
- package/dist/coordination/protocol-executor.js +68 -9
- package/dist/coordination/protocols/security-audit.d.ts +3 -0
- package/dist/coordination/protocols/security-audit.js +61 -39
- package/dist/coordination/queen-coordinator.js +10 -4
- package/dist/coordination/queen-event-handlers.js +17 -0
- package/dist/coordination/queen-task-management.js +25 -0
- package/dist/coordination/queen-types.d.ts +2 -0
- package/dist/coordination/result-saver.js +36 -5
- package/dist/coordination/task-executor.d.ts +3 -1
- package/dist/coordination/task-executor.js +8 -8
- package/dist/coordination/workflow-composition.d.ts +19 -0
- package/dist/coordination/workflow-composition.js +114 -0
- package/dist/coordination/workflow-orchestrator.d.ts +3 -2
- package/dist/coordination/workflow-orchestrator.js +219 -85
- package/dist/coordination/workflow-types.d.ts +30 -1
- package/dist/coordination/yaml-pipeline-loader.js +9 -5
- package/dist/domains/chaos-resilience/services/chaos-engineer.js +2 -7
- package/dist/domains/code-intelligence/services/knowledge-graph.js +2 -7
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +9 -40
- package/dist/domains/constants.d.ts +1 -6
- package/dist/domains/constants.js +2 -6
- package/dist/domains/contract-testing/services/contract-validator.js +2 -7
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +2 -12
- package/dist/domains/coverage-analysis/services/gap-detector.js +2 -7
- package/dist/domains/defect-intelligence/services/defect-predictor.js +2 -12
- package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +2 -7
- package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -7
- package/dist/domains/quality-assessment/services/deployment-advisor.js +2 -7
- package/dist/domains/quality-assessment/services/quality-analyzer.js +2 -7
- package/dist/domains/requirements-validation/services/requirements-validator.js +2 -7
- package/dist/domains/security-compliance/interfaces.d.ts +5 -0
- package/dist/domains/security-compliance/interfaces.js +0 -6
- package/dist/domains/security-compliance/scan-discovery.d.ts +12 -0
- package/dist/domains/security-compliance/scan-discovery.js +105 -0
- package/dist/domains/security-compliance/scan-evidence.d.ts +57 -0
- package/dist/domains/security-compliance/scan-evidence.js +2 -0
- package/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts +3 -2
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +112 -72
- package/dist/domains/security-compliance/services/semgrep-integration.d.ts +9 -2
- package/dist/domains/security-compliance/services/semgrep-integration.js +68 -20
- package/dist/domains/test-execution/services/flaky-detector.js +46 -5
- package/dist/domains/test-execution/services/retry-handler.js +38 -20
- package/dist/domains/test-execution/services/test-executor.js +84 -29
- package/dist/domains/test-generation/services/test-generator.js +2 -7
- package/dist/domains/visual-accessibility/services/visual-tester.js +2 -7
- package/dist/init/init-wizard-hooks.js +2 -2
- package/dist/init/init-wizard-steps.js +1 -1
- package/dist/init/kiro-installer.js +9 -8
- package/dist/init/opencode-installer.js +1 -1
- package/dist/init/phases/07-hooks.js +4 -2
- package/dist/init/phases/12-verification.js +1 -1
- package/dist/init/settings-merge.d.ts +10 -3
- package/dist/init/settings-merge.js +40 -9
- package/dist/integrations/agentic-flow/model-router/types.js +6 -8
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +3 -20
- package/dist/integrations/coherence/engines/cohomology-adapter.js +100 -30
- package/dist/integrations/ruvector/brain-exporter.js +9 -15
- package/dist/integrations/ruvector/brain-rvf-exporter.js +17 -30
- package/dist/integrations/ruvector/brain-shared.d.ts +5 -1
- package/dist/integrations/ruvector/brain-shared.js +70 -4
- package/dist/integrations/ruvector/rvf-dual-writer.js +36 -15
- package/dist/integrations/ruvector/rvf-store-integrity.d.ts +14 -9
- package/dist/integrations/ruvector/rvf-store-integrity.js +39 -9
- package/dist/integrations/ruvector/shared-rvf-adapter.js +20 -23
- package/dist/kernel/memory-factory.js +14 -4
- package/dist/kernel/project-root.js +10 -8
- package/dist/kernel/unified-memory.js +1 -1
- package/dist/learning/local-judge-client.d.ts +6 -5
- package/dist/learning/local-judge-client.js +7 -6
- package/dist/learning/pattern-store.js +29 -11
- package/dist/mcp/bundle.js +548 -527
- package/dist/mcp/handlers/domain-handler-configs.d.ts +22 -1
- package/dist/mcp/handlers/domain-handler-configs.js +50 -19
- package/dist/mcp/handlers/domain-handlers.d.ts +7 -5
- package/dist/mcp/handlers/domain-handlers.js +7 -5
- package/dist/mcp/handlers/index.d.ts +1 -1
- package/dist/mcp/handlers/index.js +1 -1
- package/dist/mcp/handlers/pipeline-handlers.d.ts +31 -1
- package/dist/mcp/handlers/pipeline-handlers.js +63 -0
- package/dist/mcp/handlers/task-handlers.d.ts +1 -0
- package/dist/mcp/handlers/task-handlers.js +12 -4
- package/dist/mcp/protocol-server.d.ts +2 -0
- package/dist/mcp/protocol-server.js +112 -53
- package/dist/mcp/security/sampling-server.js +2 -1
- package/dist/mcp/tool-annotations.js +1 -1
- package/dist/mcp/tools/test-execution/schedule.js +7 -0
- package/dist/mcp/types.d.ts +10 -1
- package/dist/optimization/session-cache.d.ts +5 -0
- package/dist/optimization/session-cache.js +23 -0
- package/dist/routing/advisor/multi-model-executor.d.ts +4 -1
- package/dist/routing/advisor/multi-model-executor.js +8 -1
- package/dist/routing/free-tier/ladder.d.ts +2 -1
- package/dist/routing/free-tier/ladder.js +3 -2
- package/dist/routing/security/cyber-pin.d.ts +35 -11
- package/dist/routing/security/cyber-pin.js +76 -14
- package/dist/routing/value-score.js +1 -1
- package/dist/shared/git/index.d.ts +1 -0
- package/dist/shared/git/index.js +1 -0
- package/dist/shared/git/ref-validation.d.ts +20 -0
- package/dist/shared/git/ref-validation.js +43 -0
- package/dist/shared/llm/anthropic-params.d.ts +40 -0
- package/dist/shared/llm/anthropic-params.js +51 -0
- package/dist/shared/llm/cost-tracker.d.ts +15 -2
- package/dist/shared/llm/cost-tracker.js +62 -10
- package/dist/shared/llm/index.d.ts +2 -2
- package/dist/shared/llm/index.js +2 -2
- package/dist/shared/llm/interfaces.d.ts +1 -1
- package/dist/shared/llm/metrics/cost-metrics.js +5 -4
- package/dist/shared/llm/model-mapping.js +131 -0
- package/dist/shared/llm/model-registry.d.ts +37 -11
- package/dist/shared/llm/model-registry.js +393 -18
- package/dist/shared/llm/openai-params.d.ts +35 -0
- package/dist/shared/llm/openai-params.js +54 -0
- package/dist/shared/llm/provider-manager.js +4 -3
- package/dist/shared/llm/providers/azure-openai.d.ts +11 -0
- package/dist/shared/llm/providers/azure-openai.js +26 -15
- package/dist/shared/llm/providers/bedrock.js +11 -19
- package/dist/shared/llm/providers/claude.js +6 -29
- package/dist/shared/llm/providers/codex.js +4 -3
- package/dist/shared/llm/providers/gemini.d.ts +3 -2
- package/dist/shared/llm/providers/gemini.js +19 -10
- package/dist/shared/llm/providers/ollama.d.ts +2 -0
- package/dist/shared/llm/providers/ollama.js +30 -20
- package/dist/shared/llm/providers/openai.js +10 -17
- package/dist/shared/llm/providers/openrouter.d.ts +1 -1
- package/dist/shared/llm/providers/openrouter.js +57 -21
- package/dist/shared/llm/router/agent-router-config.js +33 -32
- package/dist/shared/llm/router/hybrid-router.d.ts +4 -0
- package/dist/shared/llm/router/hybrid-router.js +95 -35
- package/dist/shared/llm/router/routing-rules.js +9 -8
- package/dist/shared/llm/router/types.d.ts +9 -2
- package/dist/shared/llm/router/types.js +81 -13
- package/dist/shared/llm/translation/message-formatter.js +4 -23
- package/dist/shared/test-runner-verdict.d.ts +29 -0
- package/dist/shared/test-runner-verdict.js +43 -0
- package/dist/shared/vitest-json-report.d.ts +45 -0
- package/dist/shared/vitest-json-report.js +80 -0
- package/dist/test-scheduling/executors/vitest-executor.d.ts +7 -2
- package/dist/test-scheduling/executors/vitest-executor.js +174 -52
- package/dist/test-scheduling/git-aware/test-selector.js +3 -0
- package/dist/test-scheduling/phase-scheduler.d.ts +1 -0
- package/dist/test-scheduling/phase-scheduler.js +23 -1
- package/dist/validation/frontier-judge.d.ts +7 -4
- package/dist/validation/frontier-judge.js +11 -6
- package/package.json +6 -6
- package/dist/cli/chunks/adapter-OJF6LAJV.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-FGT474XB.js +0 -2
- package/dist/cli/chunks/base-HH765JFV.js +0 -2
- package/dist/cli/chunks/brain-handler-5FSA46R5.js +0 -90
- package/dist/cli/chunks/browser-workflow-NPM4FUPI.js +0 -2
- package/dist/cli/chunks/chunk-2LKAMMMI.js +0 -2
- package/dist/cli/chunks/chunk-4AKGBUYD.js +0 -4
- package/dist/cli/chunks/chunk-4MH22236.js +0 -2
- package/dist/cli/chunks/chunk-4PH7O5ZH.js +0 -2
- package/dist/cli/chunks/chunk-4UCMTYFQ.js +0 -65
- package/dist/cli/chunks/chunk-DRO5NJZA.js +0 -11
- package/dist/cli/chunks/chunk-FPHPP5TQ.js +0 -2
- package/dist/cli/chunks/chunk-FREF6Y4L.js +0 -14
- package/dist/cli/chunks/chunk-G6AV2HGY.js +0 -54
- package/dist/cli/chunks/chunk-GJAWEUIN.js +0 -16
- package/dist/cli/chunks/chunk-IUNMW454.js +0 -2
- package/dist/cli/chunks/chunk-JDXLCNKV.js +0 -2
- package/dist/cli/chunks/chunk-OC2CKU7I.js +0 -2
- package/dist/cli/chunks/chunk-OX6T26CD.js +0 -180
- package/dist/cli/chunks/chunk-PHHXHG2W.js +0 -2
- package/dist/cli/chunks/chunk-SEHCX4NH.js +0 -2
- package/dist/cli/chunks/chunk-TENYL5TI.js +0 -14
- package/dist/cli/chunks/chunk-U2AY57XZ.js +0 -5
- package/dist/cli/chunks/chunk-UYTWDS2R.js +0 -2
- package/dist/cli/chunks/chunk-VSYBMNIR.js +0 -2
- package/dist/cli/chunks/chunk-WBMRADQP.js +0 -81
- package/dist/cli/chunks/chunk-ZWRQ5VAU.js +0 -2
- package/dist/cli/chunks/chunk-ZYLSOBOR.js +0 -2
- package/dist/cli/chunks/ci-NTRH7PAW.js +0 -81
- package/dist/cli/chunks/ci-output-F57RSD35.js +0 -2
- package/dist/cli/chunks/client-GPZEC54E.js +0 -2
- package/dist/cli/chunks/complexity-analyzer-3FNFLACD.js +0 -2
- package/dist/cli/chunks/core-handlers-YMGHYIBR.js +0 -2
- package/dist/cli/chunks/cost-tracker-LTZAQBX7.js +0 -2
- package/dist/cli/chunks/cross-domain-router-ECBNTGYJ.js +0 -2
- package/dist/cli/chunks/dream-EHGKCFWH.js +0 -2
- package/dist/cli/chunks/eval-GL544IPO.js +0 -17
- package/dist/cli/chunks/fleet-DQVQQONW.js +0 -43
- package/dist/cli/chunks/heartbeat-scheduler-UFEL2CBW.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-BLSD45CX.js +0 -2
- package/dist/cli/chunks/hnsw-index-A3RZODEN.js +0 -2
- package/dist/cli/chunks/impact-analyzer-OXHD3FOH.js +0 -2
- package/dist/cli/chunks/init-wizard-PKZL7QBU.js +0 -2
- package/dist/cli/chunks/kernel-XWPM72UJ.js +0 -2
- package/dist/cli/chunks/knowledge-graph-FRKR5XWI.js +0 -2
- package/dist/cli/chunks/learning-EV5LSOOM.js +0 -122
- package/dist/cli/chunks/llm-router-7LYDJUOT.js +0 -37
- package/dist/cli/chunks/llm-router-service-R7A5HHDM.js +0 -2
- package/dist/cli/chunks/load-test-5IKDWSYL.js +0 -2
- package/dist/cli/chunks/memory-backend-7VW5QCMO.js +0 -2
- package/dist/cli/chunks/memory-handlers-VZH3R2TQ.js +0 -2
- package/dist/cli/chunks/multi-model-executor-R6XCTMCF.js +0 -14
- package/dist/cli/chunks/pattern-null-store-BU6LCB2W.js +0 -2
- package/dist/cli/chunks/pipeline-SR5OTY45.js +0 -19
- package/dist/cli/chunks/protocol-executor-BSP5LWJN.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-J2RC7P25.js +0 -2
- package/dist/cli/chunks/queen-coordinator-XI5AJV2V.js +0 -2
- package/dist/cli/chunks/router-VXQYYA3D.js +0 -2
- package/dist/cli/chunks/routing-feedback-HZQTASFF.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-BDTLLJER.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-IB343MDN.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-Y7SN7LHU.js +0 -2
- package/dist/cli/chunks/rvf-store-integrity-OJGWWPLL.js +0 -2
- package/dist/cli/chunks/safe-db-2VTKKBJU.js +0 -2
- package/dist/cli/chunks/schedule-QJ4CFGJY.js +0 -2
- package/dist/cli/chunks/scheduler-2NHDQPC3.js +0 -2
- package/dist/cli/chunks/security-JF3BVNRO.js +0 -14
- package/dist/cli/chunks/sqlite-persistence-NVVAPZN3.js +0 -2
- package/dist/cli/chunks/task-handler-VTNRGAXP.js +0 -49
- package/dist/cli/chunks/task-handlers-FYSDH55N.js +0 -9
- package/dist/cli/chunks/test-scheduling-GPRXSIRP.js +0 -15
- package/dist/cli/chunks/types-OP6IWE6N.js +0 -2
- package/dist/cli/chunks/unified-memory-DSTIEDSH.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-KBV3P4OS.js +0 -2
- package/dist/cli/chunks/unified-persistence-XKCOUBKY.js +0 -2
- package/dist/cli/chunks/visual-security-TTWSPZTZ.js +0 -2
- package/dist/cli/chunks/witness-chain-2KY73HPN.js +0 -2
- package/dist/cli/chunks/workflow-HAZ6YKOG.js +0 -51
- package/dist/cli/chunks/workflow-orchestrator-UK56AVOT.js +0 -2
|
@@ -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
|
// ============================================================================
|
|
@@ -155,15 +155,6 @@ export class EnhancedReasoningBankAdapter {
|
|
|
155
155
|
...guidance.suggestedActions.map(a => `Action: ${a}`),
|
|
156
156
|
...result.guidance,
|
|
157
157
|
];
|
|
158
|
-
this.stats.tokensSavedEstimate += guidance.estimatedTokenSavings;
|
|
159
|
-
this.stats.experiencesApplied++;
|
|
160
|
-
// Record application of each source experience for reuse tracking
|
|
161
|
-
for (const src of guidance.sourceExperiences) {
|
|
162
|
-
this.experienceReplay.recordApplication(src.id, request.task, true, // success=true at routing time; updated later via recordOutcome
|
|
163
|
-
Math.round(guidance.estimatedTokenSavings)).catch(err => {
|
|
164
|
-
console.warn(`[EnhancedAdapter] Failed to record experience application: ${err}`);
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
158
|
}
|
|
168
159
|
}
|
|
169
160
|
// Find similar past trajectories
|
|
@@ -265,17 +256,8 @@ export class EnhancedReasoningBankAdapter {
|
|
|
265
256
|
if (!this.experienceReplay) {
|
|
266
257
|
return null;
|
|
267
258
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
this.stats.experiencesApplied++;
|
|
271
|
-
// Record application for reuse tracking (experience_applications table)
|
|
272
|
-
for (const src of guidance.sourceExperiences) {
|
|
273
|
-
this.experienceReplay.recordApplication(src.id, task, true, Math.round(guidance.estimatedTokenSavings)).catch(err => {
|
|
274
|
-
console.warn(`[EnhancedAdapter] Failed to record experience application: ${err}`);
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
return guidance;
|
|
259
|
+
// Retrieving guidance does not establish that it was applied successfully.
|
|
260
|
+
return this.experienceReplay.getGuidance(task, domain);
|
|
279
261
|
}
|
|
280
262
|
/**
|
|
281
263
|
* Record that an experience was applied
|
|
@@ -290,6 +272,7 @@ export class EnhancedReasoningBankAdapter {
|
|
|
290
272
|
if (!this.experienceReplay)
|
|
291
273
|
return;
|
|
292
274
|
await this.experienceReplay.recordApplication(experienceId, task, success, tokensSaved);
|
|
275
|
+
this.stats.experiencesApplied++;
|
|
293
276
|
this.stats.tokensSavedEstimate += tokensSaved;
|
|
294
277
|
}
|
|
295
278
|
// ============================================================================
|
|
@@ -19,6 +19,10 @@ import { WasmNotLoadedError, DEFAULT_COHERENCE_LOGGER } from '../types.js';
|
|
|
19
19
|
// ============================================================================
|
|
20
20
|
// WASM Engine Wrapper
|
|
21
21
|
// ============================================================================
|
|
22
|
+
// Dense restriction maps are copied into WASM. Bound each native call to
|
|
23
|
+
// 32 MiB of matrix cells and 256 MiB of cumulative cells per operation.
|
|
24
|
+
const MAX_NATIVE_BATCH_CELLS = 4 * 1024 * 1024;
|
|
25
|
+
const MAX_NATIVE_TOTAL_CELLS = 32 * 1024 * 1024;
|
|
22
26
|
/**
|
|
23
27
|
* Creates an ICohomologyEngine wrapper around the raw WASM engine
|
|
24
28
|
* Translates from snake_case adapter interface to camelCase WASM API
|
|
@@ -53,19 +57,78 @@ function createCohomologyEngineWrapper(rawEngine) {
|
|
|
53
57
|
// WASM sheaf cohomology expects:
|
|
54
58
|
// { nodes: [{id: number, label: string, section: number[], weight: number}], edges: [...] }
|
|
55
59
|
// "section" is the sheaf theory term for local data at each stalk
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
60
|
+
function* buildGraphs() {
|
|
61
|
+
// Native edge endpoints address the current nodes array by position, not
|
|
62
|
+
// node.id. Rebuild indices after removals or edges added before nodes.
|
|
63
|
+
stringToIndex.clear();
|
|
64
|
+
indexToString.clear();
|
|
65
|
+
nextIndex = 0;
|
|
66
|
+
const dimension = nodes.values().next().value?.embedding.length;
|
|
67
|
+
const graphNodes = Array.from(nodes.entries()).map(([id, data]) => {
|
|
68
|
+
if (data.embedding.length !== dimension) {
|
|
69
|
+
throw new RangeError('Cohomology graphs require matching embedding dimensions');
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
id: getOrCreateIndex(id),
|
|
73
|
+
label: id,
|
|
74
|
+
section: Array.from(data.embedding),
|
|
75
|
+
weight: 1.0,
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
// Validate the complete operation before allocating any dense matrices or
|
|
79
|
+
// calling WASM. A rejected graph must never yield partial energy/results.
|
|
80
|
+
let totalCells = 0;
|
|
81
|
+
const preparedEdges = edges.map(edge => {
|
|
82
|
+
const source = nodes.get(edge.source);
|
|
83
|
+
const target = nodes.get(edge.target);
|
|
84
|
+
if (!source || !target) {
|
|
85
|
+
throw new Error(`Cohomology edge references an unknown node: ${edge.source} -> ${edge.target}`);
|
|
86
|
+
}
|
|
87
|
+
const dimension = source.embedding.length;
|
|
88
|
+
const cells = dimension * dimension;
|
|
89
|
+
if (cells > MAX_NATIVE_BATCH_CELLS) {
|
|
90
|
+
throw new RangeError(`Cohomology restriction map exceeds ${MAX_NATIVE_BATCH_CELLS} cells`);
|
|
91
|
+
}
|
|
92
|
+
totalCells += cells;
|
|
93
|
+
if (totalCells > MAX_NATIVE_TOTAL_CELLS) {
|
|
94
|
+
throw new RangeError(`Cohomology graph exceeds ${MAX_NATIVE_TOTAL_CELLS} restriction-map cells`);
|
|
95
|
+
}
|
|
96
|
+
return { ...edge, dimension, cells };
|
|
97
|
+
});
|
|
98
|
+
let batch = [];
|
|
99
|
+
let batchCells = 0;
|
|
100
|
+
const restrictionMaps = new Map();
|
|
101
|
+
for (const edge of preparedEdges) {
|
|
102
|
+
if (batchCells + edge.cells > MAX_NATIVE_BATCH_CELLS) {
|
|
103
|
+
yield { nodes: graphNodes, edges: batch };
|
|
104
|
+
batch = [];
|
|
105
|
+
batchCells = 0;
|
|
106
|
+
restrictionMaps.clear();
|
|
107
|
+
}
|
|
108
|
+
let restrictionMap = restrictionMaps.get(edge.dimension);
|
|
109
|
+
if (!restrictionMap) {
|
|
110
|
+
// Sections share embedding coordinates; use a row-major identity map.
|
|
111
|
+
// Sharing the read-only JS matrix avoids per-edge JS allocations.
|
|
112
|
+
restrictionMap = Array(edge.cells).fill(0);
|
|
113
|
+
for (let i = 0; i < edge.dimension; i++) {
|
|
114
|
+
restrictionMap[i * edge.dimension + i] = 1;
|
|
115
|
+
}
|
|
116
|
+
restrictionMaps.set(edge.dimension, restrictionMap);
|
|
117
|
+
}
|
|
118
|
+
batch.push({
|
|
119
|
+
source: stringToIndex.get(edge.source),
|
|
120
|
+
target: stringToIndex.get(edge.target),
|
|
121
|
+
weight: edge.weight,
|
|
122
|
+
restriction_map: restrictionMap,
|
|
123
|
+
source_dim: edge.dimension,
|
|
124
|
+
target_dim: edge.dimension,
|
|
125
|
+
});
|
|
126
|
+
batchCells += edge.cells;
|
|
127
|
+
}
|
|
128
|
+
if (batch.length > 0 || preparedEdges.length === 0) {
|
|
129
|
+
yield { nodes: graphNodes, edges: batch };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
69
132
|
return {
|
|
70
133
|
add_node(id, embedding) {
|
|
71
134
|
nodes.set(id, { embedding });
|
|
@@ -79,8 +142,7 @@ function createCohomologyEngineWrapper(rawEngine) {
|
|
|
79
142
|
},
|
|
80
143
|
remove_node(id) {
|
|
81
144
|
nodes.delete(id);
|
|
82
|
-
//
|
|
83
|
-
// (indices are reused to avoid graph corruption)
|
|
145
|
+
// Native indices are rebuilt from current node order on serialization.
|
|
84
146
|
// Remove associated edges
|
|
85
147
|
for (let i = edges.length - 1; i >= 0; i--) {
|
|
86
148
|
if (edges[i].source === id || edges[i].target === id) {
|
|
@@ -94,22 +156,30 @@ function createCohomologyEngineWrapper(rawEngine) {
|
|
|
94
156
|
edges.splice(idx, 1);
|
|
95
157
|
},
|
|
96
158
|
sheaf_laplacian_energy() {
|
|
97
|
-
|
|
98
|
-
|
|
159
|
+
// Native consistency energy is the sum of independent edge energies.
|
|
160
|
+
let energy = 0;
|
|
161
|
+
for (const graph of buildGraphs()) {
|
|
162
|
+
energy += rawEngine.consistencyEnergy(graph);
|
|
163
|
+
}
|
|
164
|
+
return energy;
|
|
99
165
|
},
|
|
100
166
|
detect_contradictions(threshold) {
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
167
|
+
const contradictions = [];
|
|
168
|
+
for (const graph of buildGraphs()) {
|
|
169
|
+
const obstructions = rawEngine.detectObstructions(graph);
|
|
170
|
+
for (const obstruction of obstructions ?? []) {
|
|
171
|
+
if (obstruction.magnitude > threshold) {
|
|
172
|
+
contradictions.push({
|
|
173
|
+
node1: getStringId(obstruction.source_node),
|
|
174
|
+
node2: getStringId(obstruction.target_node),
|
|
175
|
+
severity: obstruction.magnitude,
|
|
176
|
+
distance: obstruction.magnitude,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Preserve the native global descending-magnitude order across batches.
|
|
182
|
+
return contradictions.sort((a, b) => b.distance - a.distance);
|
|
113
183
|
},
|
|
114
184
|
clear() {
|
|
115
185
|
nodes.clear();
|
|
@@ -297,7 +367,7 @@ export class CohomologyAdapter {
|
|
|
297
367
|
nodeIds: [raw.node1, raw.node2],
|
|
298
368
|
severity: this.severityFromDistance(raw.severity),
|
|
299
369
|
description: this.generateContradictionDescription(raw),
|
|
300
|
-
confidence: 1 - raw.distance, //
|
|
370
|
+
confidence: Math.max(0, 1 - raw.distance), // Native magnitudes can exceed one
|
|
301
371
|
resolution: this.suggestResolution(raw),
|
|
302
372
|
};
|
|
303
373
|
}
|
|
@@ -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
|