agentic-qe 3.10.6 → 3.10.8
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/hooks/aqe-hook.cjs +38 -2
- 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 +2 -4
- 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 +3 -3
- package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +3 -2
- package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +2 -2
- package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +2 -2
- package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +2 -3
- package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +2 -3
- package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +3 -3
- package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +2 -2
- package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +2 -2
- package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +2 -3
- package/.claude/skills/contract-testing/evals/contract-testing.yaml +2 -3
- package/.claude/skills/database-testing/evals/database-testing.yaml +2 -3
- package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +2 -2
- package/.claude/skills/localization-testing/evals/localization-testing.yaml +2 -2
- package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +2 -2
- package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +2 -2
- package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +2 -3
- package/.claude/skills/mutation-testing/test-data/sample-output.json +1 -1
- package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +2 -2
- package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +2 -2
- package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +3 -2
- package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +2 -2
- package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +2 -2
- package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +2 -2
- package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +3 -3
- package/.claude/skills/performance-testing/evals/performance-testing.yaml +2 -3
- package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +2 -2
- package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +2 -2
- package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +2 -2
- package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +2 -2
- package/.claude/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +2 -2
- package/.claude/skills/qe-browser/evals/qe-browser.yaml +2 -2
- package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +3 -2
- package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +2 -2
- package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +2 -2
- package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +3 -2
- package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +4 -4
- package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +2 -2
- package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +2 -2
- package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +2 -2
- package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +2 -2
- package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +2 -2
- package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +2 -2
- package/.claude/skills/regression-testing/evals/regression-testing.yaml +2 -2
- package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +2 -2
- package/.claude/skills/security-testing/evals/security-testing.yaml +3 -3
- package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +3 -2
- package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +2 -2
- package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +2 -2
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +2 -2
- package/.claude/skills/test-data-management/evals/test-data-management.yaml +2 -2
- package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +2 -2
- package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +2 -2
- package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +2 -3
- package/.claude/skills/validation-pipeline/evals/validation-pipeline.yaml +2 -2
- package/.claude/skills/verification-quality/evals/verification-quality.yaml +2 -2
- package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +2 -2
- package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +2 -1
- package/CHANGELOG.md +89 -0
- 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 +2 -4
- 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 +3 -3
- package/assets/skills/.validation/templates/security-testing-eval.template.yaml +3 -2
- package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +2 -2
- package/assets/skills/a11y-ally/evals/a11y-ally.yaml +2 -2
- package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +2 -3
- package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +2 -3
- package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +3 -3
- package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +2 -2
- package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +2 -2
- package/assets/skills/compliance-testing/evals/compliance-testing.yaml +2 -3
- package/assets/skills/contract-testing/evals/contract-testing.yaml +2 -3
- package/assets/skills/database-testing/evals/database-testing.yaml +2 -3
- package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +2 -2
- package/assets/skills/localization-testing/evals/localization-testing.yaml +2 -2
- package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +2 -2
- package/assets/skills/mobile-testing/evals/mobile-testing.yaml +2 -2
- package/assets/skills/mutation-testing/evals/mutation-testing.yaml +2 -3
- package/assets/skills/mutation-testing/test-data/sample-output.json +1 -1
- package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +2 -2
- package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +2 -2
- package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +3 -2
- package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +2 -2
- package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +2 -2
- package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +2 -2
- package/assets/skills/pentest-validation/evals/pentest-validation.yaml +3 -3
- package/assets/skills/performance-testing/evals/performance-testing.yaml +2 -3
- package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +2 -2
- package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +2 -2
- package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +2 -2
- package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +2 -2
- package/assets/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +2 -2
- package/assets/skills/qe-browser/evals/qe-browser.yaml +2 -2
- package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +3 -2
- package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +2 -2
- package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +2 -2
- package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +3 -2
- package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +4 -4
- package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +2 -2
- package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +2 -2
- package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +2 -2
- package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +2 -2
- package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +2 -2
- package/assets/skills/quality-metrics/evals/quality-metrics.yaml +2 -2
- package/assets/skills/regression-testing/evals/regression-testing.yaml +2 -2
- package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +2 -2
- package/assets/skills/security-testing/evals/security-testing.yaml +3 -3
- package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +3 -2
- package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +2 -2
- package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +2 -2
- package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +2 -2
- package/assets/skills/test-data-management/evals/test-data-management.yaml +2 -2
- package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +2 -2
- package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +2 -2
- package/assets/skills/testability-scoring/evals/testability-scoring.yaml +2 -3
- package/assets/skills/validation-pipeline/evals/validation-pipeline.yaml +2 -2
- package/assets/skills/verification-quality/evals/verification-quality.yaml +2 -2
- package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +2 -2
- package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +2 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-PAMPC2X7.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-J5CITTTV.js → agent-booster-wasm-4JSL6LF6.js} +2 -2
- package/dist/cli/chunks/{agent-handler-HMN4ZBZ6.js → agent-handler-6YOFH7KL.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-SCAKN4DU.js → agent-memory-branch-O3IBK4BY.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DGKLEC6I.js +2 -0
- package/dist/cli/chunks/{arena-FVBTSGKS.js → arena-BLCAZNAY.js} +2 -2
- package/dist/cli/chunks/{arena-CJOLCHZW.js → arena-KLGRZTTU.js} +4 -4
- package/dist/cli/chunks/{audit-SOF6L5RY.js → audit-FKKLR22S.js} +2 -2
- package/dist/cli/chunks/base-6HJR4VJT.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-LFVNGGCL.js → better-sqlite3-MROES2Y7.js} +2 -2
- package/dist/cli/chunks/{brain-handler-D2ZQQI2J.js → brain-handler-YTGYC2QW.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-QQXOCGOR.js → branch-enumerator-KIIBEJ5S.js} +2 -2
- package/dist/cli/chunks/{browser-XASHKIEN.js → browser-7YZLTV2C.js} +2 -2
- package/dist/cli/chunks/browser-workflow-OWNU5XK7.js +2 -0
- package/dist/cli/chunks/chunk-2B2RLPK3.js +2 -0
- package/dist/cli/chunks/{chunk-7SFCZ3AE.js → chunk-2F4VRCT6.js} +1 -1
- package/dist/cli/chunks/{chunk-BXOGLZGU.js → chunk-2KP5TJS2.js} +2 -2
- package/dist/cli/chunks/{chunk-UQYDFT6I.js → chunk-2RDWYJJY.js} +2 -2
- package/dist/cli/chunks/{chunk-5QTUGFFP.js → chunk-2UL4UK6V.js} +2 -2
- package/dist/cli/chunks/{chunk-4B22URZJ.js → chunk-33CLP2NE.js} +3 -3
- package/dist/cli/chunks/{chunk-JP2YXWJD.js → chunk-34LWJDCM.js} +2 -2
- package/dist/cli/chunks/{chunk-RH3I4Q23.js → chunk-3AG2MM7U.js} +2 -2
- package/dist/cli/chunks/{chunk-MQN3HYFX.js → chunk-474ZUVGP.js} +1 -1
- package/dist/cli/chunks/{chunk-2UI5LQ7C.js → chunk-4AG2TQEF.js} +3 -3
- package/dist/cli/chunks/{chunk-NN35QH6X.js → chunk-4B676LUC.js} +2 -2
- package/dist/cli/chunks/{chunk-OBLAWVXM.js → chunk-4G2GTX2V.js} +1 -1
- package/dist/cli/chunks/{chunk-ULEVKOWQ.js → chunk-4IGSL7CX.js} +1 -1
- package/dist/cli/chunks/{chunk-7NXVVIJZ.js → chunk-4OHLPG6B.js} +2 -2
- package/dist/cli/chunks/{chunk-6ZLVQTQ5.js → chunk-54PBHRRW.js} +4 -4
- package/dist/cli/chunks/{chunk-ZMCMSDXR.js → chunk-5GPOSKGP.js} +2 -2
- package/dist/cli/chunks/{chunk-CH7KUYGO.js → chunk-5KUINS3D.js} +3 -3
- package/dist/cli/chunks/{chunk-ESZDW6G7.js → chunk-6B32USSC.js} +2 -2
- package/dist/cli/chunks/{chunk-QUQA4NNZ.js → chunk-6B3COND2.js} +2 -2
- package/dist/cli/chunks/{chunk-NKEGEQ3J.js → chunk-6R6RC6YJ.js} +2 -2
- package/dist/cli/chunks/{chunk-JADBRSQN.js → chunk-77BVW2CT.js} +2 -2
- package/dist/cli/chunks/{chunk-ZBSEXVEI.js → chunk-7LHN6WBX.js} +2 -2
- package/dist/cli/chunks/{chunk-HWKFBRMX.js → chunk-7NKVEEXD.js} +1 -1
- package/dist/cli/chunks/{chunk-TWH3ZL6B.js → chunk-AGQIJWAD.js} +2 -2
- package/dist/cli/chunks/{chunk-ELTN4F4R.js → chunk-ALFF4AAM.js} +2 -2
- package/dist/cli/chunks/{chunk-SA5FTDRS.js → chunk-B3B5QZYN.js} +2 -2
- package/dist/cli/chunks/{chunk-JXCIRWLQ.js → chunk-BALWMVCX.js} +2 -2
- package/dist/cli/chunks/{chunk-NEIJP6TG.js → chunk-BMSMDD72.js} +2 -2
- package/dist/cli/chunks/{chunk-M4OYZMXE.js → chunk-C6TUX7YJ.js} +2 -2
- package/dist/cli/chunks/{chunk-UWDC3TZP.js → chunk-CCUUTTTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-XLFYVBOD.js → chunk-CDNXXNQM.js} +1 -1
- package/dist/cli/chunks/{chunk-VFFIMJWT.js → chunk-CHPL7TA4.js} +1 -1
- package/dist/cli/chunks/{chunk-PFSBUTDA.js → chunk-CO6UY7ZU.js} +1 -1
- package/dist/cli/chunks/{chunk-AQPFTDGS.js → chunk-CP4CSI5R.js} +2 -2
- package/dist/cli/chunks/{chunk-QZSNYXYC.js → chunk-D7IH2A3C.js} +2 -2
- package/dist/cli/chunks/{chunk-K32AUACO.js → chunk-D7ZVIL3C.js} +1 -1
- package/dist/cli/chunks/{chunk-DFBVWMX3.js → chunk-DDMKCHYT.js} +2 -2
- package/dist/cli/chunks/{chunk-XOYTW6LI.js → chunk-DI7REPYC.js} +2 -2
- package/dist/cli/chunks/{chunk-TFJDJVPC.js → chunk-DNC27OP7.js} +2 -2
- package/dist/cli/chunks/{chunk-7OK5H6ML.js → chunk-DNEYBK7X.js} +1 -1
- package/dist/cli/chunks/{chunk-LOQMQEKN.js → chunk-DPSLJ6IW.js} +1 -1
- package/dist/cli/chunks/{chunk-AJ2VDNPB.js → chunk-E5GUTKET.js} +2 -2
- package/dist/cli/chunks/{chunk-NUCJS3Z7.js → chunk-FPEFIJQ6.js} +3 -3
- package/dist/cli/chunks/{chunk-EJWAKPZD.js → chunk-FWQZZ22V.js} +1 -1
- package/dist/cli/chunks/{chunk-RTFFD263.js → chunk-FXPAGKVS.js} +1 -1
- package/dist/cli/chunks/{chunk-NHC635LL.js → chunk-G2J7WGOG.js} +2 -2
- package/dist/cli/chunks/{chunk-F72A356B.js → chunk-G73PIM7X.js} +2 -2
- package/dist/cli/chunks/{chunk-XKRJQIGP.js → chunk-GDHJZPNC.js} +2 -2
- package/dist/cli/chunks/{chunk-WNAFMYND.js → chunk-GHIHW3IE.js} +2 -2
- package/dist/cli/chunks/{chunk-MSJGDIRP.js → chunk-GXKCRIHK.js} +2 -2
- package/dist/cli/chunks/{chunk-P7EOYGR2.js → chunk-H35FNLQJ.js} +2 -2
- package/dist/cli/chunks/{chunk-H73FLSBV.js → chunk-H73AA2JI.js} +10 -10
- package/dist/cli/chunks/{chunk-Q4LYWIEX.js → chunk-HE3KLHNO.js} +2 -2
- package/dist/cli/chunks/{chunk-XOGBTPJI.js → chunk-HEC2UWY3.js} +4 -4
- package/dist/cli/chunks/{chunk-TNVOINYC.js → chunk-HVE3EH36.js} +3 -3
- package/dist/cli/chunks/{chunk-LEDF3LGZ.js → chunk-HVFHPDXV.js} +1 -1
- package/dist/cli/chunks/{chunk-ROXH622K.js → chunk-HWJEHXPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-HDEFCRHI.js → chunk-IFQPGBKQ.js} +1 -1
- package/dist/cli/chunks/{chunk-LHA4OQ7G.js → chunk-JFTRHS5V.js} +2 -2
- package/dist/cli/chunks/{chunk-I7ADT6AZ.js → chunk-JITZAJJN.js} +2 -2
- package/dist/cli/chunks/{chunk-7RTI5WT4.js → chunk-JQBD4JO2.js} +2 -2
- package/dist/cli/chunks/{chunk-HZGOVRZ6.js → chunk-JZYXYHEE.js} +2 -2
- package/dist/cli/chunks/{chunk-2RQSFRON.js → chunk-K5Y64X2U.js} +2 -2
- package/dist/cli/chunks/{chunk-PIJ5XOMM.js → chunk-KTBBSOZG.js} +2 -2
- package/dist/cli/chunks/{chunk-KQOJYO5Z.js → chunk-KTEWRRDZ.js} +4 -4
- package/dist/cli/chunks/{chunk-S574AFAT.js → chunk-KWKGROPS.js} +1 -1
- package/dist/cli/chunks/{chunk-DF4Z7TKZ.js → chunk-LBR5FXPD.js} +2 -2
- package/dist/cli/chunks/{chunk-CSM4LXTH.js → chunk-LCDMB5SP.js} +1 -1
- package/dist/cli/chunks/{chunk-A2DCROAN.js → chunk-LIOK7WBX.js} +2 -2
- package/dist/cli/chunks/{chunk-KVMY2ABO.js → chunk-LJEO5R32.js} +2 -2
- package/dist/cli/chunks/{chunk-H6UPZFI6.js → chunk-LT4OZHMK.js} +2 -2
- package/dist/cli/chunks/{chunk-6DHJPKAH.js → chunk-LZVKR7HV.js} +2 -2
- package/dist/cli/chunks/{chunk-C75ODWRP.js → chunk-M5PBVK3V.js} +3 -3
- package/dist/cli/chunks/{chunk-T6SCQVWH.js → chunk-MSWBVPVQ.js} +2 -2
- package/dist/cli/chunks/{chunk-O4MNYX4X.js → chunk-MTWBYHMS.js} +2 -2
- package/dist/cli/chunks/{chunk-3XUPDWMA.js → chunk-MWAEUJDC.js} +8 -8
- package/dist/cli/chunks/{chunk-BHD6THT5.js → chunk-NFZY6ZVY.js} +1 -1
- package/dist/cli/chunks/{chunk-ELC6JIXL.js → chunk-NKKDO5W4.js} +2 -2
- package/dist/cli/chunks/{chunk-Q5432RIH.js → chunk-NL4EKO2J.js} +2 -2
- package/dist/cli/chunks/{chunk-QJXZ4SU7.js → chunk-NOP5ZJ7E.js} +2 -2
- package/dist/cli/chunks/{chunk-L2IMTNZF.js → chunk-NSI3WL6P.js} +2 -2
- package/dist/cli/chunks/{chunk-2IC2I525.js → chunk-NWIKNQLJ.js} +1 -1
- package/dist/cli/chunks/chunk-O75ODKCX.js +2 -0
- package/dist/cli/chunks/{chunk-LHZOIXJ6.js → chunk-OIU6PKLF.js} +2 -2
- package/dist/cli/chunks/{chunk-VQM2TC2V.js → chunk-OK6CSJOX.js} +1 -1
- package/dist/cli/chunks/{chunk-RA7HEY5G.js → chunk-OLOKPY5O.js} +14 -14
- package/dist/cli/chunks/chunk-ON6C2OYG.js +2 -0
- package/dist/cli/chunks/{chunk-HMHQOEU7.js → chunk-OV3ESWN4.js} +2 -2
- package/dist/cli/chunks/{chunk-B3H2TTYT.js → chunk-OZDRAKFF.js} +2 -2
- package/dist/cli/chunks/{chunk-ZY4G7O7Y.js → chunk-PG7KISET.js} +2 -2
- package/dist/cli/chunks/{chunk-QNIL3D6E.js → chunk-PRYSWF6F.js} +1 -1
- package/dist/cli/chunks/{chunk-X3YWLJGT.js → chunk-PTPGYUT2.js} +2 -2
- package/dist/cli/chunks/{chunk-GXNNKM7F.js → chunk-Q32LITZL.js} +1 -1
- package/dist/cli/chunks/{chunk-H4Q36ILL.js → chunk-Q7B7T4YK.js} +2 -2
- package/dist/cli/chunks/{chunk-EYKID5HA.js → chunk-QHGHWATK.js} +1 -1
- package/dist/cli/chunks/{chunk-TUFU3BAK.js → chunk-QHLENBGB.js} +2 -2
- package/dist/cli/chunks/{chunk-J2SMTP2L.js → chunk-QNNH5TDV.js} +3 -3
- package/dist/cli/chunks/{chunk-JPL53G4V.js → chunk-R2LWUBET.js} +2 -2
- package/dist/cli/chunks/{chunk-5V4IFRG5.js → chunk-RNJRKFMX.js} +2 -2
- package/dist/cli/chunks/{chunk-4XEUJH2M.js → chunk-RXWPYY6H.js} +1 -1
- package/dist/cli/chunks/{chunk-MCMVRPNG.js → chunk-S6PGWJDK.js} +2 -2
- package/dist/cli/chunks/chunk-SDGRU6SG.js +2 -0
- package/dist/cli/chunks/{chunk-MJLDZSFB.js → chunk-SDVL5TZK.js} +1 -1
- package/dist/cli/chunks/{chunk-EDPVATNH.js → chunk-SSRMFU4P.js} +2 -2
- package/dist/cli/chunks/{chunk-GWHDPEBT.js → chunk-T2Z3M6HA.js} +1 -1
- package/dist/cli/chunks/{chunk-4N4TU7ST.js → chunk-TXLLF7XR.js} +1 -1
- package/dist/cli/chunks/{chunk-O2H5WYFK.js → chunk-UU422SST.js} +2 -2
- package/dist/cli/chunks/{chunk-RTAGNKCV.js → chunk-VKLPSPPI.js} +2 -2
- package/dist/cli/chunks/{chunk-HFU3LTQX.js → chunk-VL4MSE3J.js} +2 -2
- package/dist/cli/chunks/{chunk-Z3RPA3RD.js → chunk-VM5C4DIV.js} +2 -2
- package/dist/cli/chunks/{chunk-JX7HZMW5.js → chunk-W72CUJRB.js} +1 -1
- package/dist/cli/chunks/{chunk-T6CUKJHS.js → chunk-WDZT344G.js} +1 -1
- package/dist/cli/chunks/{chunk-X5R6SUWM.js → chunk-WKLI5Z3L.js} +2 -2
- package/dist/cli/chunks/{chunk-ULV5K4V5.js → chunk-WYAHOUK2.js} +1 -1
- package/dist/cli/chunks/{chunk-RBZWUWUG.js → chunk-X3NEQ3SL.js} +1 -1
- package/dist/cli/chunks/{chunk-IB3QQDC4.js → chunk-X4CHPEOQ.js} +1 -1
- package/dist/cli/chunks/{chunk-5VTRPOYL.js → chunk-XKIVOADM.js} +3 -3
- package/dist/cli/chunks/{chunk-UVWOIF6P.js → chunk-XLQX77KP.js} +1 -1
- package/dist/cli/chunks/{chunk-TFA5UETW.js → chunk-XNFYQRJ2.js} +1 -1
- package/dist/cli/chunks/{chunk-J3WUBGLQ.js → chunk-XPAH7SEX.js} +2 -2
- package/dist/cli/chunks/{chunk-USPBUR6P.js → chunk-XRJH5KXF.js} +2 -2
- package/dist/cli/chunks/{chunk-6RFPELCD.js → chunk-XYXRO7VP.js} +2 -2
- package/dist/cli/chunks/{chunk-OU4HRUVV.js → chunk-Y4XTPEAC.js} +2 -2
- package/dist/cli/chunks/chunk-YATW2RWQ.js +2 -0
- package/dist/cli/chunks/{chunk-SHVTMMJB.js → chunk-YMJ5AVVU.js} +1 -1
- package/dist/cli/chunks/{chunk-2I5RXDNO.js → chunk-YQYTQRTR.js} +2 -2
- package/dist/cli/chunks/{chunk-LAGNWKAD.js → chunk-YUK4KU2B.js} +2 -2
- package/dist/cli/chunks/{chunk-2CZQA3NN.js → chunk-Z4WAJ647.js} +2 -2
- package/dist/cli/chunks/{chunk-DAUQIXHW.js → chunk-Z57UERQZ.js} +2 -2
- package/dist/cli/chunks/{chunk-SUGQZCNI.js → chunk-Z7FWPSOK.js} +2 -2
- package/dist/cli/chunks/{chunk-7BPYFDWY.js → chunk-ZSMHQENA.js} +1 -1
- package/dist/cli/chunks/{ci-COQUVZH6.js → ci-2G4BBIQD.js} +2 -2
- package/dist/cli/chunks/{ci-output-KVUHUEOT.js → ci-output-SI3ME52L.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-O4JNXAYH.js → circuit-breaker-KTICF3EC.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-J65U34NA.js → claude-flow-setup-F44PULFU.js} +2 -2
- package/dist/cli/chunks/client-E6GK5NWT.js +2 -0
- package/dist/cli/chunks/{cline-installer-ZTG234Z2.js → cline-installer-A7G7OXIS.js} +2 -2
- package/dist/cli/chunks/{code-5GWPY4IX.js → code-EDLIBN77.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-TWNKG4VS.js → code-index-extractor-P4NBWGTV.js} +2 -2
- package/dist/cli/chunks/{codex-installer-4TM4BLAE.js → codex-installer-JB3ULDQP.js} +2 -2
- package/dist/cli/chunks/{completions-BBNHQXMV.js → completions-XPCXB5SR.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-2SCI2VGH.js → complexity-analyzer-LAL5RSB7.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-CTIORASU.js → continuedev-installer-GSYBLQV7.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-4R2V4IYB.js → copilot-installer-7B56CNU2.js} +2 -2
- package/dist/cli/chunks/core-handlers-HJUORTFU.js +2 -0
- package/dist/cli/chunks/{cost-tracker-KDBYQBKG.js → cost-tracker-EUJFKHGT.js} +2 -2
- package/dist/cli/chunks/{coverage-QQJQVDPZ.js → coverage-C75LPZYB.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-35WVZFAZ.js +2 -0
- package/dist/cli/chunks/{cursor-installer-5WEZCESZ.js → cursor-installer-WXQFM4KJ.js} +2 -2
- package/dist/cli/chunks/{daemon-M4DKHEEA.js → daemon-BPVBZZQO.js} +3 -3
- package/dist/cli/chunks/{daemon-Y7H3ZUXQ.js → daemon-JR2MSTSK.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-SD2UIADT.js → dag-attention-scheduler-I5H7DBNU.js} +2 -2
- package/dist/cli/chunks/{detect-WONWUXFH.js → detect-O5TMML24.js} +2 -2
- package/dist/cli/chunks/{dist-node-Q5GQN2R6.js → dist-node-MDZ6UQ3V.js} +2 -2
- package/dist/cli/chunks/{domain-handler-EMXE2XQW.js → domain-handler-BGBTZETG.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-QATUJJRP.js → domain-transfer-C2D2IEYV.js} +2 -2
- package/dist/cli/chunks/dream-QTZDMP6D.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-AAFHLBEJ.js → embed-and-insert-pattern-UJREBJF5.js} +2 -2
- package/dist/cli/chunks/{eval-73BDNLSK.js → eval-BDD24HQC.js} +3 -3
- package/dist/cli/chunks/{experience-capture-middleware-YPAPVSYY.js → experience-capture-middleware-KLVXIIYH.js} +3 -3
- package/dist/cli/chunks/{fast-paths-33ZKMNYY.js → fast-paths-5HIKAQZ7.js} +2 -2
- package/dist/cli/chunks/{feature-flags-QKO5YYDU.js → feature-flags-NM3S7OEW.js} +2 -2
- package/dist/cli/chunks/{feature-flags-F3DVW4ST.js → feature-flags-YE5SJPDS.js} +2 -2
- package/dist/cli/chunks/{file-discovery-YYVZLRYD.js → file-discovery-PWRQZNJQ.js} +2 -2
- package/dist/cli/chunks/{fleet-EJX6BXLR.js → fleet-UIPKNQX3.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-TBNLYPTM.js → gnn-wrapper-GWGKZRTO.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-HPRTS6SI.js → heartbeat-handler-GQHJPNAY.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-N433NZCG.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-MR6W2OA4.js +2 -0
- package/dist/cli/chunks/hnsw-index-XC6EMJA2.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-Z6V6TOF5.js → hnsw-legacy-bridge-NE5JIRG3.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-5G7LRX7Q.js → hnswlib-node-PNPV64M3.js} +2 -2
- package/dist/cli/chunks/{hooks-GG2Z3BDB.js → hooks-3NBBUOB6.js} +10 -10
- package/dist/cli/chunks/hybrid-router-SH4IEAJA.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-X4Q2TTET.js → hypergraph-engine-6NRFVDV7.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-6BZWV5PL.js → hypergraph-handler-F3OOGTXF.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-RUTVXE7P.js +2 -0
- package/dist/cli/chunks/init-handler-DOTXTVUI.js +73 -0
- package/dist/cli/chunks/init-wizard-56NY5BSP.js +2 -0
- package/dist/cli/chunks/kernel-7JAN7WCO.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-BWAVVSQG.js → kilocode-installer-3AXYSZTO.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-UADO53E5.js → kiro-installer-WBJDXY7Q.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-ST4LW3V4.js +2 -0
- package/dist/cli/chunks/{learning-HMUTCYQM.js → learning-BC5N4V3D.js} +3 -3
- package/dist/cli/chunks/{llm-router-453TBDUY.js → llm-router-T427WD6R.js} +4 -4
- package/dist/cli/chunks/llm-router-service-JNDF5MVJ.js +2 -0
- package/dist/cli/chunks/{load-DBBSNP6T.js → load-M6SL2O3M.js} +2 -2
- package/dist/cli/chunks/load-test-I3P3DUS5.js +2 -0
- package/dist/cli/chunks/{mcp-PK3SAKRF.js → mcp-F2V3KKG6.js} +2 -2
- package/dist/cli/chunks/{memory-63NHVBXS.js → memory-FJAO3CSF.js} +5 -5
- package/dist/cli/chunks/memory-backend-27BBT57O.js +2 -0
- package/dist/cli/chunks/{memory-handlers-YIKKORRY.js → memory-handlers-S3W6IQJL.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-HUGRXJ6D.js → multi-model-executor-FYOVZ4OH.js} +2 -2
- package/dist/cli/chunks/opencode-installer-APSBE4UR.js +15 -0
- package/dist/cli/chunks/{orchestrator-KDFYDNE3.js → orchestrator-LN53EQ45.js} +16 -16
- package/dist/cli/chunks/pattern-null-store-SRBYJRNX.js +2 -0
- package/dist/cli/chunks/{pipeline-HSPRKEYE.js → pipeline-BYWXY2NO.js} +2 -2
- package/dist/cli/chunks/{platform-X74IBN2H.js → platform-CZ774YPS.js} +2 -2
- package/dist/cli/chunks/{plugin-KDJZ7VFD.js → plugin-72NXRX5Z.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-2YZGKQE7.js → prime-radiant-advanced-wasm-G4DE6YKJ.js} +2 -2
- package/dist/cli/chunks/protocol-executor-WJLJHWO2.js +2 -0
- package/dist/cli/chunks/{protocol-handler-I2SDHC7B.js → protocol-handler-UH6CV63V.js} +2 -2
- package/dist/cli/chunks/{prove-JQJDNIZH.js → prove-V7FAT5HF.js} +2 -2
- package/dist/cli/chunks/provider-manager-UKUHSHAL.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-IMUECSFZ.js +2 -0
- package/dist/cli/chunks/{quality-2P7KHVY3.js → quality-N2K62FQM.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-EC4SVNMB.js +2 -0
- package/dist/cli/chunks/{real-embeddings-L7NMMNDO.js → real-embeddings-TKHUE2RL.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-LA4QN5AG.js → roocode-installer-DFUA6FXW.js} +2 -2
- package/dist/cli/chunks/router-TVTOUQLL.js +2 -0
- package/dist/cli/chunks/routing-feedback-Y4WDXNXW.js +2 -0
- package/dist/cli/chunks/{routing-handler-B5CDEZF3.js → routing-handler-UUWD4IKG.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-SOVCRLJ6.js → ruvector-commands-B4WPTGCI.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-M6WI2KFB.js → rvf-dual-writer-MNRJGNIX.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-YDMZGPMA.js → rvf-migration-adapter-P2RDBFA4.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-TFGQ5EO4.js → rvf-migration-coordinator-DFESZQSS.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-4YSC6QKO.js +2 -0
- package/dist/cli/chunks/safe-db-RGAY54O5.js +2 -0
- package/dist/cli/chunks/schedule-KJ4GWLPJ.js +2 -0
- package/dist/cli/chunks/scheduler-AONSLVA3.js +2 -0
- package/dist/cli/chunks/{security-R3IXQXDA.js → security-MHLTNKFX.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-GZX7LSQZ.js → shared-rvf-adapter-LR7E2EQI.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-YT7SJX7K.js → shared-rvf-dual-writer-RFFON2F3.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-7RZUEPM4.js +2 -0
- package/dist/cli/chunks/{status-handler-7PZSPBHJ.js → status-handler-ROPTYGQC.js} +2 -2
- package/dist/cli/chunks/{structural-health-UMJS6IVR.js → structural-health-YGUFXGJ6.js} +2 -2
- package/dist/cli/chunks/{sync-UIREA3UG.js → sync-6JTRTDL3.js} +2 -2
- package/dist/cli/chunks/{sync-HA5SLSBA.js → sync-NZZUMTKC.js} +2 -2
- package/dist/cli/chunks/{task-handler-NV4HGMEG.js → task-handler-KYMV3AC6.js} +2 -2
- package/dist/cli/chunks/{task-handlers-RXYWWOSU.js → task-handlers-Z63YBQVU.js} +3 -3
- package/dist/cli/chunks/{test-2Y6OXGEU.js → test-O6BQ7FGP.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-N55VFOYT.js → test-scheduling-T3IOXEFI.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-FW3ZVMRP.js → token-bootstrap-CTI2ULJF.js} +2 -2
- package/dist/cli/chunks/{token-usage-YXKOB3U6.js → token-usage-TNQTNAVT.js} +2 -2
- package/dist/cli/chunks/{transformers-GBRSFAVA.js → transformers-CJQDNQER.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-FJHMEHJS.js → tree-sitter-wasm-parser-RBZWLEVQ.js} +2 -2
- package/dist/cli/chunks/{types-NVMRVSBH.js → types-OMFCO364.js} +2 -2
- package/dist/cli/chunks/unified-memory-G3BYQ3WU.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-F7XUZMKW.js +2 -0
- package/dist/cli/chunks/unified-persistence-V35NXJSO.js +2 -0
- package/dist/cli/chunks/{upgrade-L2OTYHD3.js → upgrade-KRVOYWN3.js} +2 -2
- package/dist/cli/chunks/{validate-3NWRQYTP.js → validate-32FKHMKQ.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-MDURRWXK.js → validate-swarm-45RPBPPH.js} +2 -2
- package/dist/cli/chunks/{vibium-SZX7RB4H.js → vibium-LCTNDCKK.js} +2 -2
- package/dist/cli/chunks/visual-security-K47U7KUM.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-LGQT7JRD.js → web-tree-sitter-FX2EFCLH.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-EYYGHPPX.js → windsurf-installer-I3TSJCNL.js} +2 -2
- package/dist/cli/chunks/witness-chain-G6GJXZD3.js +2 -0
- package/dist/cli/chunks/{witness-chain-YYYA2CU3.js → witness-chain-YG2UWTYZ.js} +2 -2
- package/dist/cli/chunks/{workflow-UD45FQAH.js → workflow-AEJ37RNV.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-SKF7GC5X.js +2 -0
- package/dist/cli/chunks/{wrappers-JXD3KNSR.js → wrappers-GSU6VNU6.js} +2 -2
- package/dist/cli/commands/eval.js +2 -2
- package/dist/cli/handlers/init-handler.d.ts +2 -0
- package/dist/cli/handlers/init-handler.js +29 -1
- package/dist/coordination/result-saver.js +4 -0
- package/dist/domains/code-intelligence/coordinator-hypergraph.js +9 -4
- package/dist/domains/code-intelligence/coordinator.js +9 -4
- package/dist/init/opencode-installer.d.ts +39 -17
- package/dist/init/opencode-installer.js +166 -114
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/04-database.d.ts +5 -0
- package/dist/init/phases/04-database.js +7 -0
- package/dist/init/phases/05-learning.js +3 -0
- package/dist/init/phases/06-code-intelligence.js +6 -0
- package/dist/init/phases/09-assets.js +5 -1
- package/dist/init/phases/10-workers.js +4 -0
- package/dist/init/phases/12-verification.js +10 -5
- package/dist/init/phases/phase-interface.d.ts +6 -0
- package/dist/integrations/ruvector/rvf-native-adapter.js +8 -0
- package/dist/integrations/ruvector/shared-rvf-dual-writer.js +5 -0
- package/dist/kernel/kernel.js +4 -2
- package/dist/kernel/unified-memory.js +66 -48
- package/dist/learning/rvf-pattern-store.js +8 -0
- package/dist/mcp/bundle.js +327 -325
- package/dist/mcp/entry.js +42 -5
- package/dist/mcp/handlers/core-handlers.js +7 -2
- package/dist/mcp/protocol-server.js +10 -1
- package/dist/mcp/services/session-store.d.ts +1 -0
- package/dist/mcp/services/session-store.js +7 -0
- package/dist/mcp/tools/base.d.ts +6 -0
- package/dist/mcp/tools/base.js +16 -0
- package/package.json +7 -5
- package/dist/cli/chunks/adapter-AMIHQ243.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-LRG2UG6P.js +0 -2
- package/dist/cli/chunks/base-WDL3FANJ.js +0 -2
- package/dist/cli/chunks/browser-workflow-W7S4IKWD.js +0 -2
- package/dist/cli/chunks/chunk-434VUSZP.js +0 -2
- package/dist/cli/chunks/chunk-LWUIK5DH.js +0 -2
- package/dist/cli/chunks/chunk-M3APJ7VS.js +0 -2
- package/dist/cli/chunks/chunk-PIIBVLFC.js +0 -2
- package/dist/cli/chunks/chunk-UNDPB5SS.js +0 -2
- package/dist/cli/chunks/client-VJNNIAMG.js +0 -2
- package/dist/cli/chunks/core-handlers-MV5CAR7O.js +0 -2
- package/dist/cli/chunks/cross-domain-router-ULY4NIML.js +0 -2
- package/dist/cli/chunks/dream-PIGWXWE4.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-5BBLZP6R.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-FMEBL5T4.js +0 -2
- package/dist/cli/chunks/hnsw-index-K2R24V4Z.js +0 -2
- package/dist/cli/chunks/hybrid-router-LVF6N345.js +0 -2
- package/dist/cli/chunks/impact-analyzer-CCVVMGWE.js +0 -2
- package/dist/cli/chunks/init-handler-EKUS7U6L.js +0 -70
- package/dist/cli/chunks/init-wizard-KDPMO4G3.js +0 -2
- package/dist/cli/chunks/kernel-PBYNK5VA.js +0 -2
- package/dist/cli/chunks/knowledge-graph-C7LVHHLN.js +0 -2
- package/dist/cli/chunks/llm-router-service-LMTRJCPP.js +0 -2
- package/dist/cli/chunks/load-test-FHMZXTXD.js +0 -2
- package/dist/cli/chunks/memory-backend-UZHPCQTB.js +0 -2
- package/dist/cli/chunks/opencode-installer-A6IXNF26.js +0 -3
- package/dist/cli/chunks/pattern-null-store-5PS4JN6V.js +0 -2
- package/dist/cli/chunks/protocol-executor-2GTGIOFD.js +0 -2
- package/dist/cli/chunks/provider-manager-VH6YTBB3.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-47JSO76G.js +0 -2
- package/dist/cli/chunks/queen-coordinator-C7EDY7IS.js +0 -2
- package/dist/cli/chunks/router-7DVH66WB.js +0 -2
- package/dist/cli/chunks/routing-feedback-4I2MF235.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-UN3ESMMW.js +0 -2
- package/dist/cli/chunks/safe-db-Y2ZXKWBK.js +0 -2
- package/dist/cli/chunks/schedule-PG2NVRGA.js +0 -2
- package/dist/cli/chunks/scheduler-CNH6WWU2.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-WWT4DRRP.js +0 -2
- package/dist/cli/chunks/unified-memory-PXEJKKMN.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-M7OI5WUU.js +0 -2
- package/dist/cli/chunks/unified-persistence-WR4VDTAF.js +0 -2
- package/dist/cli/chunks/visual-security-CKSZZHKG.js +0 -2
- package/dist/cli/chunks/witness-chain-IOQX3XFG.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-Z2ZJRWIN.js +0 -2
|
@@ -2,8 +2,20 @@
|
|
|
2
2
|
* OpenCode Platform Installer
|
|
3
3
|
* ADR-025: Enhanced Init with Self-Configuration
|
|
4
4
|
*
|
|
5
|
-
* Installs OpenCode agents
|
|
6
|
-
*
|
|
5
|
+
* Installs OpenCode agents and skills to user projects in OpenCode's NATIVE
|
|
6
|
+
* on-disk format (validated against OpenCode CLI v1.17.x):
|
|
7
|
+
* - agents -> .opencode/agent/<name>.md (markdown + YAML frontmatter; body = system prompt)
|
|
8
|
+
* - skills -> .opencode/skills/<name>/SKILL.md (frontmatter name+description; body = instructions)
|
|
9
|
+
* - MCP -> opencode.json (mcp.agentic-qe local server)
|
|
10
|
+
*
|
|
11
|
+
* The shipped source assets under <pkg>/.opencode/{agents,skills} use AQE's own
|
|
12
|
+
* YAML schema (name/description/model/systemPrompt/tools/permissions). OpenCode
|
|
13
|
+
* does NOT load that schema, so this installer CONVERTS them at install time.
|
|
14
|
+
*
|
|
15
|
+
* Tools are intentionally NOT installed: AQE's .opencode/tools/*.ts use a custom
|
|
16
|
+
* `{name, parameters, execute}` shape and call ctx.callTool('mcp:agentic-qe:*'),
|
|
17
|
+
* which is incompatible with OpenCode's `tool()` API and redundant once the MCP
|
|
18
|
+
* server is connected (the underlying tools are exposed directly).
|
|
7
19
|
*/
|
|
8
20
|
export interface OpenCodeInstallerOptions {
|
|
9
21
|
/** Project root directory */
|
|
@@ -12,10 +24,21 @@ export interface OpenCodeInstallerOptions {
|
|
|
12
24
|
installAgents?: boolean;
|
|
13
25
|
/** Install OpenCode skill definitions (default: true) */
|
|
14
26
|
installSkills?: boolean;
|
|
15
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Install AQE tool wrappers. Default false — AQE's tool .ts files are not in
|
|
29
|
+
* OpenCode's `tool()` format and are redundant with the MCP server. Kept as an
|
|
30
|
+
* option only for backward compatibility; enabling it copies incompatible files.
|
|
31
|
+
*/
|
|
16
32
|
installTools?: boolean;
|
|
17
33
|
/** Overwrite existing files (default: false) */
|
|
18
34
|
overwrite?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Memory backend the generated opencode.json MCP server should use at runtime.
|
|
37
|
+
* 'memory' => fully database-free install: AQE_MEMORY_BACKEND=memory and no
|
|
38
|
+
* AQE_MEMORY_PATH, so the MCP server keeps everything in-memory and writes
|
|
39
|
+
* nothing under .agentic-qe/. Default (undefined) preserves persistent SQLite.
|
|
40
|
+
*/
|
|
41
|
+
memoryBackend?: 'memory' | 'sqlite' | 'agentdb' | 'hybrid';
|
|
19
42
|
}
|
|
20
43
|
export interface OpenCodeInstallResult {
|
|
21
44
|
success: boolean;
|
|
@@ -32,7 +55,7 @@ export declare class OpenCodeInstaller {
|
|
|
32
55
|
private sourceDir;
|
|
33
56
|
constructor(options: OpenCodeInstallerOptions);
|
|
34
57
|
/**
|
|
35
|
-
* Find the source .opencode/ directory containing agents/skills
|
|
58
|
+
* Find the source .opencode/ directory containing agents/skills to install.
|
|
36
59
|
* Resolves relative to the package installation directory (not CWD) so that
|
|
37
60
|
* globally-installed and bundled CLI paths all work correctly (#361).
|
|
38
61
|
*/
|
|
@@ -43,27 +66,26 @@ export declare class OpenCodeInstaller {
|
|
|
43
66
|
*/
|
|
44
67
|
private isValidSourceDir;
|
|
45
68
|
/**
|
|
46
|
-
* Install OpenCode agents, skills,
|
|
69
|
+
* Install OpenCode agents, skills, and MCP config (native OpenCode format).
|
|
47
70
|
*/
|
|
48
71
|
install(): Promise<OpenCodeInstallResult>;
|
|
49
72
|
/**
|
|
50
|
-
*
|
|
73
|
+
* Load the shipped permissions.yaml (defaults + per-agent overrides). Returns
|
|
74
|
+
* { defaults, agents } or empty maps if the file is missing/unparseable.
|
|
51
75
|
*/
|
|
52
|
-
private
|
|
76
|
+
private loadPermissionsYaml;
|
|
53
77
|
/**
|
|
54
|
-
*
|
|
78
|
+
* Build an OpenCode-valid `permission` frontmatter object by merging
|
|
79
|
+
* defaults -> agent.permissions (from agent yaml) -> permissions.yaml override,
|
|
80
|
+
* remapping keys and dropping anything OpenCode does not understand.
|
|
55
81
|
*/
|
|
82
|
+
private buildPermission;
|
|
83
|
+
private installAgents;
|
|
56
84
|
private installSkills;
|
|
85
|
+
/** Render a frontmatter object as a `---`-delimited YAML block. */
|
|
86
|
+
private renderFrontmatter;
|
|
57
87
|
/**
|
|
58
|
-
*
|
|
59
|
-
*/
|
|
60
|
-
private installTools;
|
|
61
|
-
/**
|
|
62
|
-
* Install permissions.yaml to target .opencode/ directory
|
|
63
|
-
*/
|
|
64
|
-
private installPermissions;
|
|
65
|
-
/**
|
|
66
|
-
* Generate opencode.json MCP config if it does not already exist
|
|
88
|
+
* Generate opencode.json MCP config if it does not already exist.
|
|
67
89
|
*/
|
|
68
90
|
private generateOpenCodeConfig;
|
|
69
91
|
}
|
|
@@ -2,13 +2,39 @@
|
|
|
2
2
|
* OpenCode Platform Installer
|
|
3
3
|
* ADR-025: Enhanced Init with Self-Configuration
|
|
4
4
|
*
|
|
5
|
-
* Installs OpenCode agents
|
|
6
|
-
*
|
|
5
|
+
* Installs OpenCode agents and skills to user projects in OpenCode's NATIVE
|
|
6
|
+
* on-disk format (validated against OpenCode CLI v1.17.x):
|
|
7
|
+
* - agents -> .opencode/agent/<name>.md (markdown + YAML frontmatter; body = system prompt)
|
|
8
|
+
* - skills -> .opencode/skills/<name>/SKILL.md (frontmatter name+description; body = instructions)
|
|
9
|
+
* - MCP -> opencode.json (mcp.agentic-qe local server)
|
|
10
|
+
*
|
|
11
|
+
* The shipped source assets under <pkg>/.opencode/{agents,skills} use AQE's own
|
|
12
|
+
* YAML schema (name/description/model/systemPrompt/tools/permissions). OpenCode
|
|
13
|
+
* does NOT load that schema, so this installer CONVERTS them at install time.
|
|
14
|
+
*
|
|
15
|
+
* Tools are intentionally NOT installed: AQE's .opencode/tools/*.ts use a custom
|
|
16
|
+
* `{name, parameters, execute}` shape and call ctx.callTool('mcp:agentic-qe:*'),
|
|
17
|
+
* which is incompatible with OpenCode's `tool()` API and redundant once the MCP
|
|
18
|
+
* server is connected (the underlying tools are exposed directly).
|
|
7
19
|
*/
|
|
8
|
-
import { existsSync, mkdirSync, readdirSync,
|
|
20
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, } from 'fs';
|
|
9
21
|
import { join } from 'path';
|
|
22
|
+
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
10
23
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
11
24
|
import { findPackageRoot } from './find-package-root.js';
|
|
25
|
+
// OpenCode-valid per-agent permission keys. AQE keys outside this set are dropped
|
|
26
|
+
// or remapped (see PERM_KEY_MAP). In particular `mcp:agentic-qe:*` patterns are
|
|
27
|
+
// dropped — OpenCode does not interpret MCP tool patterns in the permission block.
|
|
28
|
+
const VALID_PERMISSION_KEYS = new Set([
|
|
29
|
+
'read', 'edit', 'glob', 'grep', 'list', 'bash', 'task',
|
|
30
|
+
'external_directory', 'todowrite', 'webfetch', 'websearch',
|
|
31
|
+
'lsp', 'skill', 'question', 'doom_loop',
|
|
32
|
+
]);
|
|
33
|
+
// Remap AQE permission keys to OpenCode equivalents.
|
|
34
|
+
const PERM_KEY_MAP = {
|
|
35
|
+
fetch: 'webfetch',
|
|
36
|
+
write: 'edit', // OpenCode has no separate 'write' permission; file writes are 'edit'
|
|
37
|
+
};
|
|
12
38
|
// ============================================================================
|
|
13
39
|
// OpenCode Installer Class
|
|
14
40
|
// ============================================================================
|
|
@@ -21,7 +47,7 @@ export class OpenCodeInstaller {
|
|
|
21
47
|
this.options = {
|
|
22
48
|
installAgents: true,
|
|
23
49
|
installSkills: true,
|
|
24
|
-
installTools:
|
|
50
|
+
installTools: false,
|
|
25
51
|
overwrite: false,
|
|
26
52
|
...options,
|
|
27
53
|
};
|
|
@@ -31,7 +57,7 @@ export class OpenCodeInstaller {
|
|
|
31
57
|
// Source Directory Detection
|
|
32
58
|
// ==========================================================================
|
|
33
59
|
/**
|
|
34
|
-
* Find the source .opencode/ directory containing agents/skills
|
|
60
|
+
* Find the source .opencode/ directory containing agents/skills to install.
|
|
35
61
|
* Resolves relative to the package installation directory (not CWD) so that
|
|
36
62
|
* globally-installed and bundled CLI paths all work correctly (#361).
|
|
37
63
|
*/
|
|
@@ -40,20 +66,16 @@ export class OpenCodeInstaller {
|
|
|
40
66
|
const pkgRoot = findPackageRoot(import.meta.url);
|
|
41
67
|
const possiblePaths = [];
|
|
42
68
|
if (pkgRoot) {
|
|
43
|
-
// OpenCode assets live at the package root .opencode/ directory
|
|
44
69
|
possiblePaths.push(join(pkgRoot, '.opencode'));
|
|
45
70
|
}
|
|
46
|
-
// Local install: in node_modules
|
|
47
71
|
possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/.opencode'));
|
|
48
72
|
for (const path of possiblePaths) {
|
|
49
|
-
// Never use the target directory as the source
|
|
50
73
|
if (path === targetDir)
|
|
51
74
|
continue;
|
|
52
75
|
if (this.isValidSourceDir(path)) {
|
|
53
76
|
return path;
|
|
54
77
|
}
|
|
55
78
|
}
|
|
56
|
-
// Return the first package path even if not found — install() will report the error
|
|
57
79
|
return possiblePaths[0] ?? join(this.projectRoot, 'node_modules/agentic-qe/.opencode');
|
|
58
80
|
}
|
|
59
81
|
/**
|
|
@@ -69,7 +91,7 @@ export class OpenCodeInstaller {
|
|
|
69
91
|
// Installation
|
|
70
92
|
// ==========================================================================
|
|
71
93
|
/**
|
|
72
|
-
* Install OpenCode agents, skills,
|
|
94
|
+
* Install OpenCode agents, skills, and MCP config (native OpenCode format).
|
|
73
95
|
*/
|
|
74
96
|
async install() {
|
|
75
97
|
const targetDir = join(this.projectRoot, '.opencode');
|
|
@@ -88,29 +110,22 @@ export class OpenCodeInstaller {
|
|
|
88
110
|
result.success = false;
|
|
89
111
|
return result;
|
|
90
112
|
}
|
|
91
|
-
//
|
|
113
|
+
// Per-agent permission overrides shipped in permissions.yaml (defaults +
|
|
114
|
+
// per-agent). Merged with each agent's own `permissions` field.
|
|
115
|
+
const permissionsYaml = this.loadPermissionsYaml();
|
|
92
116
|
if (this.options.installAgents) {
|
|
93
|
-
const agentResult = this.installAgents(targetDir);
|
|
117
|
+
const agentResult = this.installAgents(targetDir, permissionsYaml);
|
|
94
118
|
result.agentsInstalled = agentResult.installed;
|
|
95
119
|
result.errors.push(...agentResult.errors);
|
|
120
|
+
// Per-agent permissions are folded into each agent's frontmatter.
|
|
121
|
+
result.permissionsInstalled = result.agentsInstalled.length > 0;
|
|
96
122
|
}
|
|
97
|
-
// Install skills
|
|
98
123
|
if (this.options.installSkills) {
|
|
99
124
|
const skillResult = this.installSkills(targetDir);
|
|
100
125
|
result.skillsInstalled = skillResult.installed;
|
|
101
126
|
result.errors.push(...skillResult.errors);
|
|
102
127
|
}
|
|
103
|
-
//
|
|
104
|
-
if (this.options.installTools) {
|
|
105
|
-
const toolResult = this.installTools(targetDir);
|
|
106
|
-
result.toolsInstalled = toolResult.installed;
|
|
107
|
-
result.errors.push(...toolResult.errors);
|
|
108
|
-
}
|
|
109
|
-
// Install permissions
|
|
110
|
-
const permResult = this.installPermissions(targetDir);
|
|
111
|
-
result.permissionsInstalled = permResult.installed;
|
|
112
|
-
result.errors.push(...permResult.errors);
|
|
113
|
-
// Generate opencode.json MCP config if not exists
|
|
128
|
+
// Generate opencode.json MCP config if not present.
|
|
114
129
|
this.generateOpenCodeConfig();
|
|
115
130
|
}
|
|
116
131
|
catch (error) {
|
|
@@ -119,14 +134,58 @@ export class OpenCodeInstaller {
|
|
|
119
134
|
}
|
|
120
135
|
return result;
|
|
121
136
|
}
|
|
137
|
+
// ==========================================================================
|
|
138
|
+
// Permission helpers
|
|
139
|
+
// ==========================================================================
|
|
122
140
|
/**
|
|
123
|
-
*
|
|
141
|
+
* Load the shipped permissions.yaml (defaults + per-agent overrides). Returns
|
|
142
|
+
* { defaults, agents } or empty maps if the file is missing/unparseable.
|
|
124
143
|
*/
|
|
125
|
-
|
|
144
|
+
loadPermissionsYaml() {
|
|
145
|
+
const empty = { defaults: {}, agents: {} };
|
|
146
|
+
const file = join(this.sourceDir, 'permissions.yaml');
|
|
147
|
+
if (!existsSync(file))
|
|
148
|
+
return empty;
|
|
149
|
+
try {
|
|
150
|
+
const parsed = parseYaml(readFileSync(file, 'utf-8'));
|
|
151
|
+
return { defaults: parsed?.defaults ?? {}, agents: parsed?.agents ?? {} };
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return empty;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Build an OpenCode-valid `permission` frontmatter object by merging
|
|
159
|
+
* defaults -> agent.permissions (from agent yaml) -> permissions.yaml override,
|
|
160
|
+
* remapping keys and dropping anything OpenCode does not understand.
|
|
161
|
+
*/
|
|
162
|
+
buildPermission(agentName, agentPerms, permissionsYaml) {
|
|
163
|
+
const merged = {
|
|
164
|
+
...permissionsYaml.defaults,
|
|
165
|
+
...(agentPerms ?? {}),
|
|
166
|
+
...(permissionsYaml.agents[agentName] ?? {}),
|
|
167
|
+
};
|
|
168
|
+
const out = {};
|
|
169
|
+
for (const [rawKey, value] of Object.entries(merged)) {
|
|
170
|
+
// Drop MCP tool patterns and any other unsupported key.
|
|
171
|
+
if (rawKey.includes(':'))
|
|
172
|
+
continue;
|
|
173
|
+
const key = PERM_KEY_MAP[rawKey] ?? rawKey;
|
|
174
|
+
if (!VALID_PERMISSION_KEYS.has(key))
|
|
175
|
+
continue;
|
|
176
|
+
// 'allow' | 'ask' | 'deny' (string) or object map for bash etc.
|
|
177
|
+
out[key] = value;
|
|
178
|
+
}
|
|
179
|
+
return out;
|
|
180
|
+
}
|
|
181
|
+
// ==========================================================================
|
|
182
|
+
// Agents: <name>.yaml -> .opencode/agent/<name>.md
|
|
183
|
+
// ==========================================================================
|
|
184
|
+
installAgents(targetDir, permissionsYaml) {
|
|
126
185
|
const installed = [];
|
|
127
186
|
const errors = [];
|
|
128
187
|
const sourceAgentsDir = join(this.sourceDir, 'agents');
|
|
129
|
-
const targetAgentsDir = join(targetDir, '
|
|
188
|
+
const targetAgentsDir = join(targetDir, 'agent'); // OpenCode native: singular 'agent'
|
|
130
189
|
if (!existsSync(sourceAgentsDir)) {
|
|
131
190
|
errors.push(`Source agents directory not found: ${sourceAgentsDir}`);
|
|
132
191
|
return { installed, errors };
|
|
@@ -134,26 +193,37 @@ export class OpenCodeInstaller {
|
|
|
134
193
|
if (!existsSync(targetAgentsDir)) {
|
|
135
194
|
mkdirSync(targetAgentsDir, { recursive: true });
|
|
136
195
|
}
|
|
137
|
-
const
|
|
138
|
-
for (const file of files) {
|
|
139
|
-
const sourceFile = join(sourceAgentsDir, file);
|
|
140
|
-
const targetFile = join(targetAgentsDir, file);
|
|
141
|
-
if (existsSync(targetFile) && !this.options.overwrite) {
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
196
|
+
for (const file of readdirSync(sourceAgentsDir).filter(f => f.endsWith('.yaml'))) {
|
|
144
197
|
try {
|
|
145
|
-
|
|
146
|
-
|
|
198
|
+
const data = parseYaml(readFileSync(join(sourceAgentsDir, file), 'utf-8'));
|
|
199
|
+
const name = data.name || file.replace(/\.yaml$/, '');
|
|
200
|
+
const targetFile = join(targetAgentsDir, `${name}.md`);
|
|
201
|
+
if (existsSync(targetFile) && !this.options.overwrite)
|
|
202
|
+
continue;
|
|
203
|
+
const frontmatter = {
|
|
204
|
+
description: (data.description || name).replace(/\s+/g, ' ').trim(),
|
|
205
|
+
mode: 'subagent',
|
|
206
|
+
};
|
|
207
|
+
// NOTE: `model` is intentionally omitted so agents inherit the user's
|
|
208
|
+
// default OpenCode model. AQE ships model "claude-sonnet-4-6" which may
|
|
209
|
+
// not resolve in OpenCode's provider registry; inheriting avoids
|
|
210
|
+
// hard-failing the agent at invocation time.
|
|
211
|
+
const permission = this.buildPermission(name, data.permissions, permissionsYaml);
|
|
212
|
+
if (Object.keys(permission).length > 0)
|
|
213
|
+
frontmatter.permission = permission;
|
|
214
|
+
const body = (data.systemPrompt || '').trimEnd() + '\n';
|
|
215
|
+
writeFileSync(targetFile, this.renderFrontmatter(frontmatter) + '\n' + body);
|
|
216
|
+
installed.push(name);
|
|
147
217
|
}
|
|
148
218
|
catch (error) {
|
|
149
|
-
errors.push(`Failed to
|
|
219
|
+
errors.push(`Failed to convert agent ${file}: ${toErrorMessage(error)}`);
|
|
150
220
|
}
|
|
151
221
|
}
|
|
152
222
|
return { installed, errors };
|
|
153
223
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
224
|
+
// ==========================================================================
|
|
225
|
+
// Skills: <name>.yaml -> .opencode/skills/<name>/SKILL.md
|
|
226
|
+
// ==========================================================================
|
|
157
227
|
installSkills(targetDir) {
|
|
158
228
|
const installed = [];
|
|
159
229
|
const errors = [];
|
|
@@ -166,97 +236,79 @@ export class OpenCodeInstaller {
|
|
|
166
236
|
if (!existsSync(targetSkillsDir)) {
|
|
167
237
|
mkdirSync(targetSkillsDir, { recursive: true });
|
|
168
238
|
}
|
|
169
|
-
const
|
|
170
|
-
for (const file of files) {
|
|
171
|
-
const sourceFile = join(sourceSkillsDir, file);
|
|
172
|
-
const targetFile = join(targetSkillsDir, file);
|
|
173
|
-
if (existsSync(targetFile) && !this.options.overwrite) {
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
239
|
+
for (const file of readdirSync(sourceSkillsDir).filter(f => f.endsWith('.yaml'))) {
|
|
176
240
|
try {
|
|
177
|
-
|
|
178
|
-
|
|
241
|
+
const data = parseYaml(readFileSync(join(sourceSkillsDir, file), 'utf-8'));
|
|
242
|
+
const name = (data.name || file.replace(/\.yaml$/, '')).toLowerCase();
|
|
243
|
+
// OpenCode requires: ^[a-z0-9]+(-[a-z0-9]+)*$ and name === directory.
|
|
244
|
+
if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(name)) {
|
|
245
|
+
errors.push(`Skipped skill with non-conforming name: ${name}`);
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
const skillDir = join(targetSkillsDir, name);
|
|
249
|
+
const targetFile = join(skillDir, 'SKILL.md');
|
|
250
|
+
if (existsSync(targetFile) && !this.options.overwrite)
|
|
251
|
+
continue;
|
|
252
|
+
if (!existsSync(skillDir))
|
|
253
|
+
mkdirSync(skillDir, { recursive: true });
|
|
254
|
+
let description = (data.description || name).replace(/\s+/g, ' ').trim();
|
|
255
|
+
if (description.length > 1024)
|
|
256
|
+
description = description.slice(0, 1021) + '...';
|
|
257
|
+
let body = '';
|
|
258
|
+
for (const step of data.steps ?? []) {
|
|
259
|
+
body += `## ${step.name || 'step'}\n\n`;
|
|
260
|
+
const text = (step.prompt || step.description || '').trimEnd();
|
|
261
|
+
if (text)
|
|
262
|
+
body += `${text}\n\n`;
|
|
263
|
+
}
|
|
264
|
+
if (!body.trim())
|
|
265
|
+
body = `${data.description || name}\n`;
|
|
266
|
+
writeFileSync(targetFile, this.renderFrontmatter({ name, description }) + '\n' + body.trimEnd() + '\n');
|
|
267
|
+
installed.push(name);
|
|
179
268
|
}
|
|
180
269
|
catch (error) {
|
|
181
|
-
errors.push(`Failed to
|
|
270
|
+
errors.push(`Failed to convert skill ${file}: ${toErrorMessage(error)}`);
|
|
182
271
|
}
|
|
183
272
|
}
|
|
184
273
|
return { installed, errors };
|
|
185
274
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
const sourceToolsDir = join(this.sourceDir, 'tools');
|
|
193
|
-
const targetToolsDir = join(targetDir, 'tools');
|
|
194
|
-
if (!existsSync(sourceToolsDir)) {
|
|
195
|
-
errors.push(`Source tools directory not found: ${sourceToolsDir}`);
|
|
196
|
-
return { installed, errors };
|
|
197
|
-
}
|
|
198
|
-
if (!existsSync(targetToolsDir)) {
|
|
199
|
-
mkdirSync(targetToolsDir, { recursive: true });
|
|
200
|
-
}
|
|
201
|
-
const files = readdirSync(sourceToolsDir).filter(f => f.endsWith('.ts'));
|
|
202
|
-
for (const file of files) {
|
|
203
|
-
const sourceFile = join(sourceToolsDir, file);
|
|
204
|
-
const targetFile = join(targetToolsDir, file);
|
|
205
|
-
if (existsSync(targetFile) && !this.options.overwrite) {
|
|
206
|
-
continue;
|
|
207
|
-
}
|
|
208
|
-
try {
|
|
209
|
-
copyFileSync(sourceFile, targetFile);
|
|
210
|
-
installed.push(file.replace('.ts', ''));
|
|
211
|
-
}
|
|
212
|
-
catch (error) {
|
|
213
|
-
errors.push(`Failed to install tool ${file}: ${toErrorMessage(error)}`);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
return { installed, errors };
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Install permissions.yaml to target .opencode/ directory
|
|
220
|
-
*/
|
|
221
|
-
installPermissions(targetDir) {
|
|
222
|
-
const errors = [];
|
|
223
|
-
const sourceFile = join(this.sourceDir, 'permissions.yaml');
|
|
224
|
-
const targetFile = join(targetDir, 'permissions.yaml');
|
|
225
|
-
if (!existsSync(sourceFile)) {
|
|
226
|
-
return { installed: false, errors: [] };
|
|
227
|
-
}
|
|
228
|
-
if (existsSync(targetFile) && !this.options.overwrite) {
|
|
229
|
-
return { installed: false, errors: [] };
|
|
230
|
-
}
|
|
231
|
-
try {
|
|
232
|
-
if (!existsSync(targetDir)) {
|
|
233
|
-
mkdirSync(targetDir, { recursive: true });
|
|
234
|
-
}
|
|
235
|
-
copyFileSync(sourceFile, targetFile);
|
|
236
|
-
return { installed: true, errors: [] };
|
|
237
|
-
}
|
|
238
|
-
catch (error) {
|
|
239
|
-
errors.push(`Failed to install permissions.yaml: ${toErrorMessage(error)}`);
|
|
240
|
-
return { installed: false, errors };
|
|
241
|
-
}
|
|
275
|
+
// ==========================================================================
|
|
276
|
+
// Frontmatter rendering
|
|
277
|
+
// ==========================================================================
|
|
278
|
+
/** Render a frontmatter object as a `---`-delimited YAML block. */
|
|
279
|
+
renderFrontmatter(obj) {
|
|
280
|
+
return `---\n${stringifyYaml(obj).trimEnd()}\n---\n`;
|
|
242
281
|
}
|
|
282
|
+
// ==========================================================================
|
|
283
|
+
// opencode.json MCP config
|
|
284
|
+
// ==========================================================================
|
|
243
285
|
/**
|
|
244
|
-
* Generate opencode.json MCP config if it does not already exist
|
|
286
|
+
* Generate opencode.json MCP config if it does not already exist.
|
|
245
287
|
*/
|
|
246
288
|
generateOpenCodeConfig() {
|
|
247
289
|
const configPath = join(this.projectRoot, 'opencode.json');
|
|
248
|
-
if (existsSync(configPath))
|
|
290
|
+
if (existsSync(configPath))
|
|
249
291
|
return;
|
|
250
|
-
|
|
292
|
+
// Database-free install: in-memory backend => no AQE_MEMORY_PATH, set
|
|
293
|
+
// AQE_MEMORY_BACKEND=memory so the MCP server writes nothing to disk.
|
|
294
|
+
// Otherwise preserve the historical persistent SQLite path.
|
|
295
|
+
const environment = this.options.memoryBackend === 'memory'
|
|
296
|
+
? { AQE_MEMORY_BACKEND: 'memory', AQE_V3_MODE: 'true' }
|
|
297
|
+
: { AQE_MEMORY_PATH: '.agentic-qe/memory.db', AQE_V3_MODE: 'true' };
|
|
251
298
|
const config = {
|
|
299
|
+
$schema: 'https://opencode.ai/config.json',
|
|
252
300
|
mcp: {
|
|
253
301
|
'agentic-qe': {
|
|
254
302
|
type: 'local',
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
303
|
+
// Use the dedicated `aqe-mcp` bin, which runs the MCP server bundle
|
|
304
|
+
// directly. The `agentic-qe mcp` subcommand instead double-spawns the
|
|
305
|
+
// server (stdio:'inherit'), which corrupts stdin delivery and makes
|
|
306
|
+
// OpenCode's client fail with "Failed to get tools". A higher timeout
|
|
307
|
+
// accommodates the server's subsystem boot.
|
|
308
|
+
command: ['aqe-mcp'],
|
|
309
|
+
environment,
|
|
310
|
+
enabled: true,
|
|
311
|
+
timeout: 60000,
|
|
260
312
|
},
|
|
261
313
|
},
|
|
262
314
|
};
|
|
@@ -29,6 +29,11 @@ export declare class DatabasePhase extends BasePhase<DatabaseResult> {
|
|
|
29
29
|
readonly order = 40;
|
|
30
30
|
readonly critical = true;
|
|
31
31
|
readonly requiresPhases: readonly ["configuration"];
|
|
32
|
+
/**
|
|
33
|
+
* Database-free mode (`--no-database` / memoryBackend: 'memory'): skip the
|
|
34
|
+
* SQLite database entirely. Nothing is written under .agentic-qe/.
|
|
35
|
+
*/
|
|
36
|
+
shouldRun(context: InitContext): Promise<boolean>;
|
|
32
37
|
protected run(context: InitContext): Promise<DatabaseResult>;
|
|
33
38
|
}
|
|
34
39
|
//# sourceMappingURL=04-database.d.ts.map
|
|
@@ -26,6 +26,13 @@ export class DatabasePhase extends BasePhase {
|
|
|
26
26
|
order = 40;
|
|
27
27
|
critical = true;
|
|
28
28
|
requiresPhases = ['configuration'];
|
|
29
|
+
/**
|
|
30
|
+
* Database-free mode (`--no-database` / memoryBackend: 'memory'): skip the
|
|
31
|
+
* SQLite database entirely. Nothing is written under .agentic-qe/.
|
|
32
|
+
*/
|
|
33
|
+
async shouldRun(context) {
|
|
34
|
+
return context.options.memoryBackend !== 'memory';
|
|
35
|
+
}
|
|
29
36
|
async run(context) {
|
|
30
37
|
const { projectRoot } = context;
|
|
31
38
|
// Issue #399 / ADR-090: warn on stale ./vectors.db cruft.
|
|
@@ -16,6 +16,9 @@ export class LearningPhase extends BasePhase {
|
|
|
16
16
|
critical = false;
|
|
17
17
|
requiresPhases = ['database', 'configuration'];
|
|
18
18
|
async shouldRun(context) {
|
|
19
|
+
// Database-free mode has no persistent store to seed patterns into.
|
|
20
|
+
if (context.options.memoryBackend === 'memory')
|
|
21
|
+
return false;
|
|
19
22
|
const config = context.config;
|
|
20
23
|
return config?.learning?.enabled ?? true;
|
|
21
24
|
}
|
|
@@ -84,6 +84,12 @@ export class CodeIntelligencePhase extends BasePhase {
|
|
|
84
84
|
* for the case where the corpus misses something in the wild.
|
|
85
85
|
*/
|
|
86
86
|
async shouldRun(context) {
|
|
87
|
+
// Database-free mode: the knowledge graph is persisted to the SQLite DB,
|
|
88
|
+
// which does not exist here. Build it later with `aqe code index`.
|
|
89
|
+
if (context.options.memoryBackend === 'memory') {
|
|
90
|
+
context.services.log(' Code intelligence skipped (database-free mode)');
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
87
93
|
const envSkip = process.env.AQE_SKIP_CODE_INDEX;
|
|
88
94
|
if (envSkip === '1' || envSkip === 'true') {
|
|
89
95
|
context.services.log(' Code intelligence skipped (AQE_SKIP_CODE_INDEX=1)');
|
|
@@ -169,8 +169,12 @@ export class AssetsPhase extends BasePhase {
|
|
|
169
169
|
projectRoot,
|
|
170
170
|
installAgents: true,
|
|
171
171
|
installSkills: true,
|
|
172
|
-
|
|
172
|
+
// AQE tool .ts files are not in OpenCode's tool() format and are
|
|
173
|
+
// redundant with the MCP server — never install them.
|
|
174
|
+
installTools: false,
|
|
173
175
|
overwrite: shouldOverwrite,
|
|
176
|
+
// Database-free install => MCP server configured to run in-memory.
|
|
177
|
+
memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined,
|
|
174
178
|
});
|
|
175
179
|
const ocResult = await openCodeInstaller.install();
|
|
176
180
|
openCodeAgents = ocResult.agentsInstalled.length;
|
|
@@ -18,6 +18,10 @@ export class WorkersPhase extends BasePhase {
|
|
|
18
18
|
critical = false;
|
|
19
19
|
requiresPhases = ['configuration'];
|
|
20
20
|
async shouldRun(context) {
|
|
21
|
+
// Background workers persist to the SQLite DB, which is absent in
|
|
22
|
+
// database-free mode.
|
|
23
|
+
if (context.options.memoryBackend === 'memory')
|
|
24
|
+
return false;
|
|
21
25
|
const config = context.config;
|
|
22
26
|
return config?.workers?.daemonAutoStart && (config?.workers?.enabled?.length ?? 0) > 0;
|
|
23
27
|
}
|
|
@@ -23,11 +23,13 @@ export class VerificationPhase extends BasePhase {
|
|
|
23
23
|
const config = context.config;
|
|
24
24
|
const { projectRoot } = context;
|
|
25
25
|
const checks = [];
|
|
26
|
-
//
|
|
26
|
+
// Database-free mode: there is no SQLite database to verify or write to.
|
|
27
|
+
const memOnly = context.options.memoryBackend === 'memory';
|
|
28
|
+
// Check database exists (in-memory mode has none — treated as satisfied).
|
|
27
29
|
const dbPath = join(projectRoot, '.agentic-qe', 'memory.db');
|
|
28
30
|
checks.push({
|
|
29
|
-
name: 'Database exists',
|
|
30
|
-
passed: existsSync(dbPath),
|
|
31
|
+
name: memOnly ? 'Database (in-memory mode)' : 'Database exists',
|
|
32
|
+
passed: memOnly || existsSync(dbPath),
|
|
31
33
|
});
|
|
32
34
|
// Check .agentic-qe directory
|
|
33
35
|
checks.push({
|
|
@@ -42,8 +44,11 @@ export class VerificationPhase extends BasePhase {
|
|
|
42
44
|
name: 'Config saved',
|
|
43
45
|
passed: existsSync(configPath),
|
|
44
46
|
});
|
|
45
|
-
// Write version marker
|
|
46
|
-
|
|
47
|
+
// Write version marker. Skipped in database-free mode — there is no
|
|
48
|
+
// memory.db; the version is still recorded in config.yaml above.
|
|
49
|
+
const versionWritten = memOnly
|
|
50
|
+
? true
|
|
51
|
+
: await this.writeVersionToDb(config.version, projectRoot);
|
|
47
52
|
checks.push({
|
|
48
53
|
name: 'Version marker',
|
|
49
54
|
passed: versionWritten,
|
|
@@ -131,6 +131,12 @@ export interface InitOptions {
|
|
|
131
131
|
noMcp?: boolean;
|
|
132
132
|
/** @deprecated Use default behavior instead — MCP is now enabled by default */
|
|
133
133
|
withMcp?: boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Memory backend for this install. 'memory' => database-free: the SQLite
|
|
136
|
+
* database phase is skipped and any MCP config is written to run in-memory.
|
|
137
|
+
* Undefined preserves the default persistent backend. Set via `--no-database`.
|
|
138
|
+
*/
|
|
139
|
+
memoryBackend?: 'memory' | 'sqlite' | 'agentdb' | 'hybrid';
|
|
134
140
|
}
|
|
135
141
|
/**
|
|
136
142
|
* V2 installation detection result
|
|
@@ -368,6 +368,14 @@ export function openRvfStoreReadonly(path) {
|
|
|
368
368
|
}
|
|
369
369
|
/** Check whether the native binding is loadable on this platform */
|
|
370
370
|
export function isRvfNativeAvailable() {
|
|
371
|
+
// Database-free mode (#534): report RVF as unavailable so every consumer
|
|
372
|
+
// (RVF pattern store, dual-writer, agent memory branches) takes its existing
|
|
373
|
+
// "no native RVF" degraded path and writes nothing to disk — no patterns.rvf,
|
|
374
|
+
// brain.rvf, or branches/*.rvf. This is the single central gate for all
|
|
375
|
+
// on-disk RVF stores.
|
|
376
|
+
if (process.env.AQE_MEMORY_BACKEND === 'memory') {
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
371
379
|
return getNative() !== null;
|
|
372
380
|
}
|
|
373
381
|
//# sourceMappingURL=rvf-native-adapter.js.map
|
|
@@ -50,6 +50,11 @@ export async function getSharedRvfDualWriter() {
|
|
|
50
50
|
if (rvfMode === 'sqlite-only') {
|
|
51
51
|
return null;
|
|
52
52
|
}
|
|
53
|
+
// Database-free mode (#534): no on-disk RVF store (brain.rvf). The unified
|
|
54
|
+
// DB is already in-memory, so there is nothing to dual-write to disk.
|
|
55
|
+
if (process.env.AQE_MEMORY_BACKEND === 'memory') {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
53
58
|
// Auto-detect native availability (dynamic import to avoid bundling .node files)
|
|
54
59
|
const { isRvfNativeAvailable } = await import('./rvf-native-adapter.js');
|
|
55
60
|
if (!isRvfNativeAvailable()) {
|