agentic-qe 3.9.14 → 3.9.16
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/skills/accessibility-testing/SKILL.md +18 -0
- package/.claude/skills/enterprise-integration-testing/SKILL.md +1 -1
- package/.claude/skills/pentest-validation/SKILL.md +1 -1
- package/.claude/skills/qe-browser/evals/qe-browser.yaml +46 -63
- package/.claude/skills/qe-browser/scripts/smoke-test.sh +16 -4
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +52 -0
- package/assets/skills/accessibility-testing/SKILL.md +18 -0
- package/assets/skills/qe-browser/evals/qe-browser.yaml +46 -63
- package/assets/skills/qe-browser/scripts/smoke-test.sh +16 -4
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/brain-commands.d.ts +14 -0
- package/dist/cli/brain-commands.js +24 -0
- package/dist/cli/bundle.js +7 -7
- package/dist/cli/chunks/adapter-XFJIW42U.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-O6EXMPMF.js → agent-booster-wasm-IECTFMRK.js} +2 -2
- package/dist/cli/chunks/{agent-handler-4LPJVTJU.js → agent-handler-HLLTKZ5G.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-PRR323JZ.js → agent-memory-branch-WJUD3DS4.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-UD4SXENM.js +2 -0
- package/dist/cli/chunks/{audit-YCKXQOXD.js → audit-3DLZNWHO.js} +2 -2
- package/dist/cli/chunks/base-ETEN7L2V.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-44RIH62G.js → better-sqlite3-Q356NEQ6.js} +2 -2
- package/dist/cli/chunks/brain-handler-MX2HP7LO.js +89 -0
- package/dist/cli/chunks/{branch-enumerator-RVVS2UYR.js → branch-enumerator-Z3TF3HVO.js} +2 -2
- package/dist/cli/chunks/{browser-L6IKC4PR.js → browser-Z6PQ7FTO.js} +2 -2
- package/dist/cli/chunks/browser-workflow-KVHPOIBA.js +2 -0
- package/dist/cli/chunks/{chunk-JOGKQTCU.js → chunk-2KCMS4UW.js} +3 -3
- package/dist/cli/chunks/{chunk-VUS4VRPQ.js → chunk-2MJEAEOW.js} +2 -2
- package/dist/cli/chunks/{chunk-FNKKENLS.js → chunk-3ADFXSO2.js} +2 -2
- package/dist/cli/chunks/{chunk-JN7MSUGK.js → chunk-3CAPNE2H.js} +2 -2
- package/dist/cli/chunks/{chunk-MFGYMNNY.js → chunk-3EUA73H6.js} +2 -2
- package/dist/cli/chunks/{chunk-ORHCO2I7.js → chunk-3H657FNU.js} +2 -2
- package/dist/cli/chunks/{chunk-OZBTC26R.js → chunk-3K4IX7L4.js} +2 -2
- package/dist/cli/chunks/{chunk-GIUAY4KY.js → chunk-3SLFWPRE.js} +3 -3
- package/dist/cli/chunks/{chunk-P5YSBYZV.js → chunk-3ZGYB23S.js} +1 -1
- package/dist/cli/chunks/{chunk-6BK2S2WE.js → chunk-46K7ALFU.js} +2 -2
- package/dist/cli/chunks/{chunk-I3P5RZX7.js → chunk-4CFQZHUC.js} +3 -3
- package/dist/cli/chunks/{chunk-DMZ2XOEW.js → chunk-4PFHQH4B.js} +2 -2
- package/dist/cli/chunks/{chunk-TOSFK4VG.js → chunk-4ZN4GM7W.js} +1 -1
- package/dist/cli/chunks/{chunk-MXIFVOYA.js → chunk-5A5XANSD.js} +2 -2
- package/dist/cli/chunks/{chunk-UG2J5MTY.js → chunk-5E7FVOOG.js} +1 -1
- package/dist/cli/chunks/chunk-5LDXAVDC.js +2 -0
- package/dist/cli/chunks/{chunk-KFAN5FZM.js → chunk-666L7MC2.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCRLZINE.js → chunk-66BUIFFH.js} +2 -2
- package/dist/cli/chunks/{chunk-6EZY2QVM.js → chunk-6V5P2VMQ.js} +8 -8
- package/dist/cli/chunks/{chunk-YPMBD44A.js → chunk-6XKZ62O7.js} +2 -2
- package/dist/cli/chunks/{chunk-JNLKLC7G.js → chunk-77OVXVN2.js} +2 -2
- package/dist/cli/chunks/{chunk-I5U64MHU.js → chunk-7DP2IQ6F.js} +2 -2
- package/dist/cli/chunks/{chunk-FFACJODG.js → chunk-7IF4LRX2.js} +2 -2
- package/dist/cli/chunks/{chunk-36YZ2UF7.js → chunk-7JFSMXIA.js} +2 -2
- package/dist/cli/chunks/{chunk-VU4QET3C.js → chunk-7MF6LVLH.js} +2 -2
- package/dist/cli/chunks/{chunk-WELNFHDN.js → chunk-7NMLIJHL.js} +1 -1
- package/dist/cli/chunks/{chunk-IOHDE27P.js → chunk-7PHYOV2X.js} +2 -2
- package/dist/cli/chunks/{chunk-YZBY4ZRF.js → chunk-7V2Z3PUJ.js} +2 -2
- package/dist/cli/chunks/{chunk-GM5LIYLQ.js → chunk-AA6IUBCM.js} +2 -2
- package/dist/cli/chunks/{chunk-TJOZPPZR.js → chunk-AFLQFUXA.js} +2 -2
- package/dist/cli/chunks/{chunk-KJB6JJXT.js → chunk-BCT26J7X.js} +1 -1
- package/dist/cli/chunks/{chunk-D6APBW66.js → chunk-BEE5KXQT.js} +1 -1
- package/dist/cli/chunks/{chunk-A2TK52B2.js → chunk-BNDK7JRW.js} +2 -2
- package/dist/cli/chunks/{chunk-4EQWK6P6.js → chunk-CR7LLS26.js} +2 -2
- package/dist/cli/chunks/{chunk-S2KGZJHS.js → chunk-DBCN7R63.js} +1 -1
- package/dist/cli/chunks/{chunk-BNPJMPM3.js → chunk-DF3DZP7H.js} +2 -2
- package/dist/cli/chunks/{chunk-OGLS6HB4.js → chunk-DJPS7H2M.js} +1 -1
- package/dist/cli/chunks/{chunk-G7L5Y47C.js → chunk-ED5OUSYZ.js} +1 -1
- package/dist/cli/chunks/{chunk-PZF5ISGS.js → chunk-EFTK4ZVP.js} +1 -1
- package/dist/cli/chunks/chunk-FEQ5RDQL.js +18 -0
- package/dist/cli/chunks/{chunk-VDGWDDBC.js → chunk-FKQV52TC.js} +2 -2
- package/dist/cli/chunks/{chunk-DD4T7ZUM.js → chunk-FLWIEPAT.js} +1 -1
- package/dist/cli/chunks/{chunk-5DWTU2PN.js → chunk-FQTUUZVK.js} +1 -1
- package/dist/cli/chunks/{chunk-4JYLXYAH.js → chunk-G5DMEEQQ.js} +1 -1
- package/dist/cli/chunks/{chunk-JLBUS4PR.js → chunk-GB6D3SSY.js} +2 -2
- package/dist/cli/chunks/{chunk-HEQ23HBE.js → chunk-GP7IXB3E.js} +2 -2
- package/dist/cli/chunks/{chunk-3NUMJB3U.js → chunk-H3JEGAFC.js} +9 -9
- package/dist/cli/chunks/{chunk-ZFZX2NA3.js → chunk-H4BZJVKU.js} +2 -2
- package/dist/cli/chunks/{chunk-AOYN6XYJ.js → chunk-HFGCLV56.js} +1 -1
- package/dist/cli/chunks/{chunk-XNXOW7BQ.js → chunk-HJUC2DE6.js} +2 -2
- package/dist/cli/chunks/{chunk-NWZYULZE.js → chunk-HN6GVQ4Q.js} +4 -4
- package/dist/cli/chunks/{chunk-RQFC7Q33.js → chunk-HON4X4Z3.js} +2 -2
- package/dist/cli/chunks/{chunk-AEQMQVDJ.js → chunk-HVAW64YW.js} +2 -2
- package/dist/cli/chunks/{chunk-5MWNXDQW.js → chunk-HXF4FUPY.js} +2 -2
- package/dist/cli/chunks/{chunk-HJJTLOWZ.js → chunk-IUQ6HE2J.js} +2 -2
- package/dist/cli/chunks/{chunk-IH4OOAEP.js → chunk-J2ERTUDX.js} +1 -1
- package/dist/cli/chunks/{chunk-DNFDSDKE.js → chunk-JCQ5PXVM.js} +2 -2
- package/dist/cli/chunks/{chunk-XH774Q6Z.js → chunk-JNXIYHLI.js} +1 -1
- package/dist/cli/chunks/{chunk-ERMIIRYN.js → chunk-JUKCBZCZ.js} +1 -1
- package/dist/cli/chunks/{chunk-AHVUILGE.js → chunk-JZOMOYHZ.js} +1 -1
- package/dist/cli/chunks/{chunk-UAAJ3BSW.js → chunk-KLVS6FT2.js} +2 -2
- package/dist/cli/chunks/{chunk-GUEK5DOK.js → chunk-KR7S4IZZ.js} +2 -2
- package/dist/cli/chunks/{chunk-VQB5SLXZ.js → chunk-L2GANTQN.js} +2 -2
- package/dist/cli/chunks/{chunk-GALNZTYE.js → chunk-LJINNQNN.js} +2 -2
- package/dist/cli/chunks/{chunk-IL3ESNHA.js → chunk-LSA4XGSE.js} +3 -3
- package/dist/cli/chunks/{chunk-M2RO34V7.js → chunk-LVA53A5R.js} +4 -4
- package/dist/cli/chunks/{chunk-LJ3WQIBN.js → chunk-LVK2PDUW.js} +1 -1
- package/dist/cli/chunks/{chunk-3ZKTPPIC.js → chunk-LWG7LKOK.js} +1 -1
- package/dist/cli/chunks/{chunk-PFSSI3YR.js → chunk-MECDNFOJ.js} +2 -2
- package/dist/cli/chunks/{chunk-FWI7PK4X.js → chunk-MFRC267A.js} +1 -1
- package/dist/cli/chunks/{chunk-WE7KIXR6.js → chunk-MJKFU6A6.js} +2 -2
- package/dist/cli/chunks/{chunk-5U6M4XCP.js → chunk-MQHP65QB.js} +3 -3
- package/dist/cli/chunks/{chunk-7732TLNA.js → chunk-MTF6ABUH.js} +2 -2
- package/dist/cli/chunks/{chunk-ME4LVBTT.js → chunk-N5ZTPAX7.js} +2 -2
- package/dist/cli/chunks/{chunk-NWGIQCCO.js → chunk-NCXXXZGL.js} +1 -1
- package/dist/cli/chunks/{chunk-DJLRRCR6.js → chunk-NIXMFJJC.js} +2 -2
- package/dist/cli/chunks/{chunk-JWR3NNFA.js → chunk-NLU4XJBN.js} +1 -1
- package/dist/cli/chunks/{chunk-DGUAAG3T.js → chunk-NOJVROCD.js} +1 -1
- package/dist/cli/chunks/{chunk-Z3PSKGBO.js → chunk-OE7SGIX2.js} +2 -2
- package/dist/cli/chunks/{chunk-KHUFPJE4.js → chunk-OP7X434R.js} +2 -2
- package/dist/cli/chunks/{chunk-WUYJYRBY.js → chunk-P4IYRPCB.js} +1 -1
- package/dist/cli/chunks/{chunk-GOTVYSX5.js → chunk-PNZADZSI.js} +3 -3
- package/dist/cli/chunks/{chunk-3PZ2QLLR.js → chunk-PPUEXTH2.js} +3 -3
- package/dist/cli/chunks/{chunk-6J6GXRHX.js → chunk-PQLT3X6X.js} +3 -3
- package/dist/cli/chunks/{chunk-VVKENR4I.js → chunk-QEKZA2NJ.js} +1 -1
- package/dist/cli/chunks/{chunk-S6SM7LJK.js → chunk-QKQAQPXY.js} +2 -2
- package/dist/cli/chunks/{chunk-LWHM5BWD.js → chunk-RFLSJ7OL.js} +2 -2
- package/dist/cli/chunks/{chunk-WSZVSDD5.js → chunk-RVQXMMRO.js} +2 -2
- package/dist/cli/chunks/{chunk-Q4DAYLH4.js → chunk-RYCAVZSD.js} +2 -2
- package/dist/cli/chunks/{chunk-VEAVDXXT.js → chunk-SMNOZEM7.js} +2 -2
- package/dist/cli/chunks/{chunk-4RDTR2OF.js → chunk-T36IXY5W.js} +2 -2
- package/dist/cli/chunks/{chunk-J3XLOHWB.js → chunk-T7VIUEKI.js} +2 -2
- package/dist/cli/chunks/{chunk-J5YOXLBD.js → chunk-TFBEX7ED.js} +1 -1
- package/dist/cli/chunks/{chunk-Y3X5OS5F.js → chunk-TPRYLARW.js} +2 -2
- package/dist/cli/chunks/{chunk-SY74WSBN.js → chunk-TR4NPMRW.js} +2 -2
- package/dist/cli/chunks/{chunk-WVN4YJSF.js → chunk-TUPFBZKO.js} +1 -1
- package/dist/cli/chunks/{chunk-UUVTLYUK.js → chunk-TWEBJWJI.js} +2 -2
- package/dist/cli/chunks/{chunk-QUK34CSU.js → chunk-UH7TV6BY.js} +1 -1
- package/dist/cli/chunks/{chunk-QLWP7ZIT.js → chunk-UT4CXF6C.js} +2 -2
- package/dist/cli/chunks/{chunk-UIYK4Y7K.js → chunk-V2ELGHLG.js} +2 -2
- package/dist/cli/chunks/{chunk-ZU5VHW6P.js → chunk-VK2GKQYI.js} +2 -2
- package/dist/cli/chunks/{chunk-FYBTGEOV.js → chunk-VNAAXZGF.js} +1 -1
- package/dist/cli/chunks/{chunk-G2KQUEGY.js → chunk-VOAECU7B.js} +2 -2
- package/dist/cli/chunks/{chunk-3GIZRGX6.js → chunk-W4ZV6LAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-5HUAD4UU.js → chunk-W6TMZY5R.js} +2 -2
- package/dist/cli/chunks/{chunk-KVN4FTPT.js → chunk-WKLSXJD4.js} +2 -2
- package/dist/cli/chunks/{chunk-BOMJHE4I.js → chunk-WSKASZYC.js} +2 -2
- package/dist/cli/chunks/{chunk-6GKXC6DE.js → chunk-WVFLNGOK.js} +2 -2
- package/dist/cli/chunks/{chunk-SUXUCW5I.js → chunk-WVHH3OQ4.js} +2 -2
- package/dist/cli/chunks/{chunk-CGC63MGF.js → chunk-XAULPLOC.js} +4 -4
- package/dist/cli/chunks/{chunk-L4IWZXSC.js → chunk-XKMMFQSJ.js} +1 -1
- package/dist/cli/chunks/{chunk-7IJBZGZY.js → chunk-XQ6WIPDC.js} +1 -1
- package/dist/cli/chunks/{chunk-LKGLKX2A.js → chunk-ZCE6JNRI.js} +2 -2
- package/dist/cli/chunks/{chunk-BFCMOMOF.js → chunk-ZCZJYM42.js} +1 -1
- package/dist/cli/chunks/{chunk-2L3BCZ2F.js → chunk-ZXLF3IKT.js} +1 -1
- package/dist/cli/chunks/{ci-QQ4F5TYO.js → ci-TTP5HJSW.js} +2 -2
- package/dist/cli/chunks/{ci-output-QC4WRENA.js → ci-output-TKESU45X.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-HFQUNYTK.js → circuit-breaker-GFRV5R7E.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-XNSCWIUN.js → claude-flow-setup-LY6MADFA.js} +2 -2
- package/dist/cli/chunks/client-ZDVM5WFL.js +2 -0
- package/dist/cli/chunks/{cline-installer-S3CECBYL.js → cline-installer-OSAILLDH.js} +2 -2
- package/dist/cli/chunks/{code-QHUELDUH.js → code-ASRSOGYH.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-QLA5EQTE.js → code-index-extractor-AMLGVHB7.js} +2 -2
- package/dist/cli/chunks/{codex-installer-CQ7JNNOA.js → codex-installer-3CKH3WV4.js} +2 -2
- package/dist/cli/chunks/{completions-S33U3KIT.js → completions-MXNPWLOE.js} +91 -10
- package/dist/cli/chunks/{complexity-analyzer-J7IEW3EM.js → complexity-analyzer-2Z347PXF.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-DVU24D37.js → continuedev-installer-LE7K745N.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-DYISOPBC.js → copilot-installer-CHJL3275.js} +2 -2
- package/dist/cli/chunks/{cost-tracker-URJADKKS.js → cost-tracker-C3ZWNNSV.js} +2 -2
- package/dist/cli/chunks/{coverage-NGMKJNW6.js → coverage-6JOXBVDL.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-J5VK276J.js +2 -0
- package/dist/cli/chunks/{cursor-installer-DFBJRDSY.js → cursor-installer-RKCNWO42.js} +2 -2
- package/dist/cli/chunks/{daemon-JSKKVVCV.js → daemon-XXWOT6TM.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-YITFS6MR.js → dag-attention-scheduler-37MG6XR4.js} +2 -2
- package/dist/cli/chunks/{detect-5APZP2D3.js → detect-QOTL36CE.js} +2 -2
- package/dist/cli/chunks/{domain-handler-WHH6XPSZ.js → domain-handler-TJNLNJ7Z.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-SERX53SS.js → domain-transfer-FDHC2MGH.js} +2 -2
- package/dist/cli/chunks/dream-VCLN6RM4.js +2 -0
- package/dist/cli/chunks/esm-node-YZSRCH6T.js +2 -0
- package/dist/cli/chunks/eval-JP7CLUTD.js +15 -0
- package/dist/cli/chunks/{fast-paths-4MSOOJVK.js → fast-paths-CWTVLIIC.js} +2 -2
- package/dist/cli/chunks/{feature-flags-564YFR65.js → feature-flags-H2UU53L4.js} +2 -2
- package/dist/cli/chunks/{feature-flags-WJT57IEJ.js → feature-flags-SKFBAHR3.js} +2 -2
- package/dist/cli/chunks/{file-discovery-5QVG65WF.js → file-discovery-RWVGKIDB.js} +2 -2
- package/dist/cli/chunks/{fleet-CF5JRK5B.js → fleet-JOSUYRTZ.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-NYQ77563.js → gnn-wrapper-WNOZFTDD.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-42QJPKHE.js → heartbeat-handler-73YSR6K7.js} +4 -4
- package/dist/cli/chunks/{heartbeat-scheduler-7XEAV74Y.js → heartbeat-scheduler-EN52JZUX.js} +2 -2
- package/dist/cli/chunks/hnsw-adapter-Y5HVTNJW.js +2 -0
- package/dist/cli/chunks/hnsw-index-NZTCPZA5.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-ZRR6PGWN.js → hnsw-legacy-bridge-PWD6DXS4.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-DY7NOW76.js → hnswlib-node-VAZOCNY7.js} +2 -2
- package/dist/cli/chunks/{hooks-IRRHEJLR.js → hooks-K7XGDF2Y.js} +6 -6
- package/dist/cli/chunks/{hybrid-router-S4JXJLUY.js → hybrid-router-6W323WKW.js} +2 -2
- package/dist/cli/chunks/{hypergraph-engine-WFHZJMP2.js → hypergraph-engine-R2N4C24I.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-LHUKR7PT.js → hypergraph-handler-AY4YZDOG.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-ROWLIS6H.js +2 -0
- package/dist/cli/chunks/{init-handler-ZBIW7PSB.js → init-handler-UDBW4P3Z.js} +6 -6
- package/dist/cli/chunks/init-wizard-MI76CUL5.js +2 -0
- package/dist/cli/chunks/kernel-5WVAV5RX.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-JYHA4NW7.js → kilocode-installer-J2NZUDEQ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-OBXTRK77.js → kiro-installer-AHOOKFQH.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-QXL3AWPV.js +2 -0
- package/dist/cli/chunks/{learning-OAEJHEJD.js → learning-VC7X2HKA.js} +3 -3
- package/dist/cli/chunks/{llm-router-NNEOZAVB.js → llm-router-3PU7CH5P.js} +4 -4
- package/dist/cli/chunks/{load-WIKLBESW.js → load-WB4JD6X7.js} +2 -2
- package/dist/cli/chunks/load-test-2JOY7YH6.js +2 -0
- package/dist/cli/chunks/{mcp-KR43GFGP.js → mcp-QUU2DYYK.js} +2 -2
- package/dist/cli/chunks/{memory-KQIYKAYU.js → memory-UAEWPG34.js} +5 -5
- package/dist/cli/chunks/memory-backend-ZKGLAWQZ.js +2 -0
- package/dist/cli/chunks/{memory-handlers-LAI4AO4O.js → memory-handlers-3FBXIZG4.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-NPS3VOAR.js → multi-model-executor-CIUHXR43.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-FE475WME.js → opencode-installer-VV6RIHNR.js} +2 -2
- package/dist/cli/chunks/{orchestrator-MW4MZ3RW.js → orchestrator-WV27PZZM.js} +20 -20
- package/dist/cli/chunks/{pipeline-R2TGZSUA.js → pipeline-JRBCX2U3.js} +2 -2
- package/dist/cli/chunks/{platform-N2GZBCBP.js → platform-TUPMH4ND.js} +2 -2
- package/dist/cli/chunks/{plugin-V2AQF23V.js → plugin-H757CYQK.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-ZQSYRLRS.js → prime-radiant-advanced-wasm-5BWO25RA.js} +2 -2
- package/dist/cli/chunks/protocol-executor-3Q4QY7G6.js +2 -0
- package/dist/cli/chunks/{protocol-handler-V3U724F2.js → protocol-handler-Z6DCNTUU.js} +2 -2
- package/dist/cli/chunks/{prove-NCH56HZB.js → prove-4OGWFOUM.js} +2 -2
- package/dist/cli/chunks/{provider-manager-7NUHS3T5.js → provider-manager-K736L6LN.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-SAMJF3NF.js +2 -0
- package/dist/cli/chunks/{quality-J3IVPPPW.js → quality-YFLEATGZ.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-OFRH67Y2.js +2 -0
- package/dist/cli/chunks/{real-embeddings-VURZXAEY.js → real-embeddings-5QUSL7J4.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-STWFJGMR.js → roocode-installer-HDWE5XW3.js} +2 -2
- package/dist/cli/chunks/router-UDHEENEY.js +2 -0
- package/dist/cli/chunks/routing-feedback-PBZRVFVL.js +2 -0
- package/dist/cli/chunks/{routing-handler-6GZT7EXM.js → routing-handler-P6PP3FYW.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-LCPAH6WH.js → ruvector-commands-VNMTRQML.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-76LWFT5X.js → rvf-dual-writer-A7VW5CAT.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-G7KFWJKY.js → rvf-migration-adapter-QIPSNASM.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-3DXOUPWF.js → rvf-migration-coordinator-XT4XDLRZ.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-CJFEDG74.js +2 -0
- package/dist/cli/chunks/safe-db-YMSZFHWP.js +2 -0
- package/dist/cli/chunks/schedule-B43N6CVB.js +2 -0
- package/dist/cli/chunks/scheduler-ITZH5YQM.js +2 -0
- package/dist/cli/chunks/{security-XDBPYA5T.js → security-E2XCP5CG.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-PV5ZBJ25.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-UGXTS2XI.js → shared-rvf-dual-writer-NPWTXHUI.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-RK5CKPHB.js +2 -0
- package/dist/cli/chunks/{status-handler-ZLXES3QL.js → status-handler-MWVNDZSZ.js} +2 -2
- package/dist/cli/chunks/{structural-health-4PFCOQ7T.js → structural-health-2KZO43IF.js} +2 -2
- package/dist/cli/chunks/{sync-3DROIEZN.js → sync-C5BOK3WU.js} +2 -2
- package/dist/cli/chunks/{task-handler-4UGZ5VIE.js → task-handler-KRVSHJGJ.js} +2 -2
- package/dist/cli/chunks/{task-handlers-I5VVBTWI.js → task-handlers-CKOHD633.js} +2 -2
- package/dist/cli/chunks/{test-Z2MM7O5A.js → test-3B7FK6MJ.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-AP76GKN5.js → test-scheduling-HZIMSTAX.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-P54N6PZV.js → token-bootstrap-JJCANIHJ.js} +2 -2
- package/dist/cli/chunks/{token-usage-AXAZTPA6.js → token-usage-5VCMBZU7.js} +2 -2
- package/dist/cli/chunks/{transformers-VOZ2Z7FS.js → transformers-ETUTMOTF.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-IYKLBTXB.js → tree-sitter-wasm-parser-TMR44BKP.js} +2 -2
- package/dist/cli/chunks/{types-TKDH5EBW.js → types-GYT6373C.js} +2 -2
- package/dist/cli/chunks/unified-memory-LIKELZVA.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-VTN3MUB4.js +2 -0
- package/dist/cli/chunks/unified-persistence-MQVUY5WN.js +2 -0
- package/dist/cli/chunks/upgrade-534QLY7P.js +5 -0
- package/dist/cli/chunks/{validate-ZGF5FVZE.js → validate-UBVF3CSS.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-OPWWUWYA.js → validate-swarm-2XD45EVM.js} +2 -2
- package/dist/cli/chunks/{vibium-HEQUGRKJ.js → vibium-NMT6AQ4S.js} +2 -2
- package/dist/cli/chunks/visual-security-HVJWGY7T.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-JZ7JCJJR.js → web-tree-sitter-RNG6NRDD.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-2SGRCS6C.js → windsurf-installer-RVCDSJT3.js} +2 -2
- package/dist/cli/chunks/witness-chain-5R322YYF.js +2 -0
- package/dist/cli/chunks/{witness-chain-LJUYOCB5.js → witness-chain-YDFB22MT.js} +2 -2
- package/dist/cli/chunks/{workflow-QORI3KO7.js → workflow-MHW4KHNK.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-637BCZI4.js +2 -0
- package/dist/cli/chunks/{wrappers-3NR7LNB5.js → wrappers-SAZY3C2S.js} +2 -2
- package/dist/cli/commands/eval.js +86 -0
- package/dist/cli/commands/upgrade.d.ts +96 -0
- package/dist/cli/commands/upgrade.js +342 -0
- package/dist/cli/completions/index.d.ts +27 -0
- package/dist/cli/completions/index.js +112 -14
- package/dist/cli/handlers/brain-handler.d.ts +2 -0
- package/dist/cli/handlers/brain-handler.js +221 -1
- package/dist/cli/index.js +5 -1
- package/dist/init/browser-engine-installer.d.ts +60 -1
- package/dist/init/browser-engine-installer.js +73 -3
- package/dist/init/phases/09-assets.js +9 -2
- package/dist/integrations/ruvector/brain-diff.d.ts +93 -0
- package/dist/integrations/ruvector/brain-diff.js +281 -0
- package/dist/integrations/ruvector/brain-search.d.ts +78 -0
- package/dist/integrations/ruvector/brain-search.js +154 -0
- package/dist/mcp/bundle.js +1 -1
- package/dist/validation/command-eval-runner.d.ts +154 -0
- package/dist/validation/command-eval-runner.js +293 -0
- package/dist/validation/index.d.ts +2 -0
- package/dist/validation/index.js +4 -0
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-W2EM7ZQ7.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-JQMPNHQU.js +0 -2
- package/dist/cli/chunks/base-EOPYE6JR.js +0 -2
- package/dist/cli/chunks/brain-handler-IAYJBAFL.js +0 -68
- package/dist/cli/chunks/browser-workflow-CSARLAJD.js +0 -2
- package/dist/cli/chunks/chunk-53KLVMAT.js +0 -18
- package/dist/cli/chunks/chunk-STYNOKOM.js +0 -2
- package/dist/cli/chunks/client-3GECKJWB.js +0 -2
- package/dist/cli/chunks/cross-domain-router-UYONX76U.js +0 -2
- package/dist/cli/chunks/dream-Z5QDQJSM.js +0 -2
- package/dist/cli/chunks/esm-node-FOI5Y3O2.js +0 -2
- package/dist/cli/chunks/eval-FM3BLVFO.js +0 -15
- package/dist/cli/chunks/hnsw-adapter-NOAQ76QF.js +0 -2
- package/dist/cli/chunks/hnsw-index-KDIZQRSB.js +0 -2
- package/dist/cli/chunks/impact-analyzer-VDXJBWFG.js +0 -2
- package/dist/cli/chunks/init-wizard-Q6DEACKX.js +0 -2
- package/dist/cli/chunks/kernel-YNQOGTM5.js +0 -2
- package/dist/cli/chunks/knowledge-graph-GOZG3YOM.js +0 -2
- package/dist/cli/chunks/load-test-UJLTMPXW.js +0 -2
- package/dist/cli/chunks/memory-backend-WJH6XER3.js +0 -2
- package/dist/cli/chunks/protocol-executor-LYYYHXAX.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-JK4UKLYY.js +0 -2
- package/dist/cli/chunks/queen-coordinator-6OKLSCHV.js +0 -2
- package/dist/cli/chunks/router-DDZHCGUD.js +0 -2
- package/dist/cli/chunks/routing-feedback-BA66F37P.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-TXTRJNPW.js +0 -2
- package/dist/cli/chunks/safe-db-IFBVWIGF.js +0 -2
- package/dist/cli/chunks/schedule-WMZLOPCW.js +0 -2
- package/dist/cli/chunks/scheduler-WBORWJD5.js +0 -2
- package/dist/cli/chunks/shared-rvf-adapter-SQQ27EEI.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-XH47B3BG.js +0 -2
- package/dist/cli/chunks/unified-memory-NHJHPLIC.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-IMMCI2XK.js +0 -2
- package/dist/cli/chunks/unified-persistence-JS6CEV35.js +0 -2
- package/dist/cli/chunks/visual-security-XLO5JBVP.js +0 -2
- package/dist/cli/chunks/witness-chain-PPWPHYTY.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-H4DKRHVP.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.
|
|
2
|
-
import{b as u}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.16");process.exit(0)}
|
|
2
|
+
import{b as u}from"./chunk-HFGCLV56.js";import{a as f,c as h}from"./chunk-V2ELGHLG.js";import"./chunk-NOJVROCD.js";h();import{existsSync as i,mkdirSync as d,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf"),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||d(o,{recursive:!0}),i(r)&&this.overwrite){let m=this.mergeExistingConfig(r,t.content);a(r,m)}else a(r,t.content);e.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("windsurf"),s=p(this.projectRoot,n.path);if(e.rulesPath=s,!i(s)||this.overwrite){if(i(s)&&this.overwrite){let o=this.mergeExistingRules(s,n.content);a(s,o)}else a(s,n.content);e.rulesInstalled=!0}}catch(t){e.success=!1,e.errors.push(`Windsurf installation failed: ${f(t)}`)}return e}mergeExistingConfig(e,t){try{let r=JSON.parse(g(e,"utf-8")),n=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,n.mcpServers),JSON.stringify(r,null,2)+`
|
|
3
3
|
`}catch{return t}}mergeExistingRules(e,t){try{let r=g(e,"utf-8");return r.includes("Agentic QE")||r.includes("fleet_init")?r:r.trimEnd()+`
|
|
4
4
|
|
|
5
5
|
---
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.16");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g,h}from"./chunk-CR7LLS26.js";import"./chunk-H4BZJVKU.js";import"./chunk-TWEBJWJI.js";import"./chunk-5LDXAVDC.js";import"./chunk-KR7S4IZZ.js";import"./chunk-4PFHQH4B.js";import"./chunk-V2ELGHLG.js";import"./chunk-RFLSJ7OL.js";import"./chunk-T7VIUEKI.js";import"./chunk-3CAPNE2H.js";import"./chunk-77OVXVN2.js";import"./chunk-MJKFU6A6.js";import"./chunk-HJUC2DE6.js";import"./chunk-GB6D3SSY.js";import"./chunk-NIXMFJJC.js";import"./chunk-W6TMZY5R.js";import"./chunk-NOJVROCD.js";export{a as GENESIS_PREV_HASH,f as WitnessChain,h as createWitnessChain,g as getWitnessChain,d as hashWith,e as serializeEntry,b as sha256,c as shake256};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.
|
|
2
|
-
import{a,b,c,d,e,f,g}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.16");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g}from"./chunk-T36IXY5W.js";import"./chunk-5LDXAVDC.js";import"./chunk-KR7S4IZZ.js";import"./chunk-W6TMZY5R.js";import"./chunk-NOJVROCD.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.
|
|
2
|
-
import"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.16");process.exit(0)}
|
|
2
|
+
import"./chunk-7DP2IQ6F.js";import{b as $}from"./chunk-DJPS7H2M.js";import{d as R}from"./chunk-SMNOZEM7.js";import{b as k,c as C,d as b}from"./chunk-3K4IX7L4.js";import{c as W}from"./chunk-4PFHQH4B.js";import"./chunk-EFTK4ZVP.js";import"./chunk-V2ELGHLG.js";import"./chunk-NOJVROCD.js";import{Command as O}from"commander";import o from"chalk";function P(d,a){let m=d.indexOf("=");return m>0&&(a[d.substring(0,m)]=d.substring(m+1)),a}function x(d,a,m){let y=new O("workflow").description("Manage QE workflows and pipelines (ADR-041)");return y.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(t,l)=>{if(!await m())return;let e=await import("fs"),c=(await import("path")).resolve(t);try{console.log(o.blue(`
|
|
3
3
|
Running workflow from: ${t}
|
|
4
4
|
`));let s=k(c);if(!s.success||!s.workflow){console.log(o.red("Failed to parse pipeline:"));for(let w of s.errors)console.log(o.red(` ${w}`));await a(1)}let r={...W(l.params,"params")};if(s.pipeline){for(let w of s.pipeline.stages)if(w.params)for(let[S,h]of Object.entries(w.params))r[S]=h}if(!d.workflowOrchestrator.getWorkflow(s.workflow.id)){let w=d.workflowOrchestrator.registerWorkflow(s.workflow);w.success||(console.log(o.red(`Failed to register workflow: ${w.error.message}`)),await a(1))}let n=await d.workflowOrchestrator.executeWorkflow(s.workflow.id,r);if(!n.success){console.log(o.red(`Failed to start workflow: ${n.error.message}`)),await a(1);return}let p=n.value;if(console.log(o.cyan(` Execution ID: ${p}`)),console.log(o.gray(` Workflow: ${s.workflow.name}`)),console.log(o.gray(` Stages: ${s.workflow.steps.length}`)),console.log(""),l.watch){console.log(o.blue(`Workflow Progress:
|
|
5
5
|
`));let w,S=Date.now();for(;;){let g=d.workflowOrchestrator.getWorkflowStatus(p);if(!g)break;if(!w||w.progress!==g.progress||w.status!==g.status||JSON.stringify(w.currentSteps)!==JSON.stringify(g.currentSteps)){process.stdout.write("\r\x1B[K");let v="\u2588".repeat(Math.floor(g.progress/5))+"\u2591".repeat(20-Math.floor(g.progress/5)),D=g.status==="completed"?o.green:g.status==="failed"?o.red:g.status==="running"?o.yellow:o.gray;console.log(` [${v}] ${g.progress}% - ${D(g.status)}`),g.currentSteps.length>0&&l.verbose&&console.log(o.gray(` Running: ${g.currentSteps.join(", ")}`)),w=g}if(g.status==="completed"||g.status==="failed"||g.status==="cancelled")break;await new Promise(v=>setTimeout(v,500))}let h=d.workflowOrchestrator.getWorkflowStatus(p);if(h){console.log("");let g=h.duration||Date.now()-S;h.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(g)}`)),console.log(o.gray(` Completed: ${h.completedSteps.length} stages`)),h.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${h.skippedSteps.length} stages`))):h.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${h.error}`)),console.log(o.gray(` Failed stages: ${h.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${h.status}`))}}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${p}' to check progress`));console.log(""),await a(0)}catch(s){console.error(o.red(`
|
|
@@ -35,10 +35,10 @@ Workflow cancelled: ${t}
|
|
|
35
35
|
`)):console.log(o.red(`
|
|
36
36
|
Failed to cancel workflow: ${l.error.message}
|
|
37
37
|
`)),await a(l.success?0:1)}catch(l){console.error(o.red(`
|
|
38
|
-
Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-
|
|
38
|
+
Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-KVHPOIBA.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
|
|
39
39
|
Browser Workflow Templates:
|
|
40
40
|
`));for(let u of e.data.availableTemplates)console.log(` ${o.cyan(u)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await a(0)}catch(t){console.error(o.red(`
|
|
41
|
-
Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-
|
|
41
|
+
Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-KVHPOIBA.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-TKESU45X.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
|
|
42
42
|
File not found: ${p}
|
|
43
43
|
`)),await a(1)),f.workflowYaml=i.readFileSync(p,"utf-8")}else f.templateName=t;else console.log(o.red(`
|
|
44
44
|
Provide a template name or --yaml. Use "workflow browser-list" to see templates.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.16");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-OP7X434R.js";import"./chunk-7JFSMXIA.js";import"./chunk-H4BZJVKU.js";import"./chunk-TWEBJWJI.js";import"./chunk-5LDXAVDC.js";import"./chunk-KR7S4IZZ.js";import"./chunk-4PFHQH4B.js";import"./chunk-EFTK4ZVP.js";import"./chunk-V2ELGHLG.js";import"./chunk-ED5OUSYZ.js";import"./chunk-RFLSJ7OL.js";import"./chunk-T7VIUEKI.js";import"./chunk-3CAPNE2H.js";import"./chunk-77OVXVN2.js";import"./chunk-MJKFU6A6.js";import"./chunk-HJUC2DE6.js";import"./chunk-GB6D3SSY.js";import"./chunk-NIXMFJJC.js";import"./chunk-W6TMZY5R.js";import"./chunk-NOJVROCD.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.16");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-HXF4FUPY.js";import"./chunk-H4BZJVKU.js";import"./chunk-TWEBJWJI.js";import"./chunk-5LDXAVDC.js";import"./chunk-KR7S4IZZ.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-7MF6LVLH.js";import"./chunk-4PFHQH4B.js";import"./chunk-V2ELGHLG.js";import"./chunk-RFLSJ7OL.js";import"./chunk-T7VIUEKI.js";import"./chunk-3CAPNE2H.js";import"./chunk-77OVXVN2.js";import"./chunk-MJKFU6A6.js";import"./chunk-HJUC2DE6.js";import"./chunk-GB6D3SSY.js";import"./chunk-NIXMFJJC.js";import"./chunk-W6TMZY5R.js";import"./chunk-NOJVROCD.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
|
|
@@ -14,7 +14,9 @@ import { Command } from 'commander';
|
|
|
14
14
|
import chalk from 'chalk';
|
|
15
15
|
import * as fs from 'fs';
|
|
16
16
|
import * as path from 'path';
|
|
17
|
+
import * as yaml from 'yaml';
|
|
17
18
|
import { createParallelEvalRunner, DEFAULT_PARALLEL_EVAL_CONFIG, } from '../../validation/parallel-eval-runner.js';
|
|
19
|
+
import { createCommandEvalRunner, isCommandEvalSuite, } from '../../validation/command-eval-runner.js';
|
|
18
20
|
import { createSkillValidationLearner, } from '../../learning/skill-validation-learner.js';
|
|
19
21
|
import { createRealQEReasoningBank, } from '../../learning/real-qe-reasoning-bank.js';
|
|
20
22
|
// ============================================================================
|
|
@@ -185,6 +187,70 @@ function formatMarkdownReport(results) {
|
|
|
185
187
|
return lines.join('\n');
|
|
186
188
|
}
|
|
187
189
|
// ============================================================================
|
|
190
|
+
// Suite-shape dispatch
|
|
191
|
+
// ============================================================================
|
|
192
|
+
const DEFAULT_SKILLS_DIR = '.claude/skills';
|
|
193
|
+
/**
|
|
194
|
+
* Peek at the eval yaml to decide whether the suite is command-mode
|
|
195
|
+
* (scripts producing JSON, per ADR-091) or LLM-mode (prompts evaluated by
|
|
196
|
+
* an LLM, the pre-existing shape). Returns null if the file is missing or
|
|
197
|
+
* unparseable; that error path is then surfaced by the respective runner.
|
|
198
|
+
*/
|
|
199
|
+
function detectSuiteMode(skill) {
|
|
200
|
+
const evalPath = path.join(process.cwd(), DEFAULT_SKILLS_DIR, skill, 'evals', `${skill}.yaml`);
|
|
201
|
+
if (!fs.existsSync(evalPath))
|
|
202
|
+
return null;
|
|
203
|
+
try {
|
|
204
|
+
const raw = yaml.parse(fs.readFileSync(evalPath, 'utf-8'));
|
|
205
|
+
return isCommandEvalSuite(raw) ? 'command' : 'llm';
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Adapt a {@link CommandEvalResult} into the {@link ParallelEvalResult} shape
|
|
213
|
+
* so the existing CLI formatting / reporting path works unchanged. Fields
|
|
214
|
+
* that don't apply to shell-command evals (model, reasoning quality,
|
|
215
|
+
* parallel speedup, worker count) are filled with sensible neutral values.
|
|
216
|
+
*/
|
|
217
|
+
function commandResultToParallel(cr, model) {
|
|
218
|
+
return {
|
|
219
|
+
skill: cr.skill,
|
|
220
|
+
model,
|
|
221
|
+
totalTests: cr.totalTests,
|
|
222
|
+
passedTests: cr.passedTests,
|
|
223
|
+
failedTests: cr.failedTests,
|
|
224
|
+
skippedTests: 0,
|
|
225
|
+
passRate: cr.passRate,
|
|
226
|
+
testResults: cr.testResults.map((t) => toParallelTestResult(t)),
|
|
227
|
+
totalDurationMs: cr.totalDurationMs,
|
|
228
|
+
parallelSpeedup: 1,
|
|
229
|
+
avgReasoningQuality: 0,
|
|
230
|
+
passed: cr.passed,
|
|
231
|
+
workersUsed: 1,
|
|
232
|
+
timestamp: cr.timestamp,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
function toParallelTestResult(t) {
|
|
236
|
+
const errorParts = [];
|
|
237
|
+
if (t.setupFailure)
|
|
238
|
+
errorParts.push(t.setupFailure);
|
|
239
|
+
if (t.failures.length)
|
|
240
|
+
errorParts.push(...t.failures);
|
|
241
|
+
return {
|
|
242
|
+
testId: t.testId,
|
|
243
|
+
passed: t.passed,
|
|
244
|
+
expectedPatterns: [],
|
|
245
|
+
actualPatterns: [],
|
|
246
|
+
reasoningQuality: 0,
|
|
247
|
+
executionTimeMs: t.durationMs,
|
|
248
|
+
category: t.category ?? 'uncategorized',
|
|
249
|
+
priority: (t.priority ?? 'medium'),
|
|
250
|
+
error: errorParts.length ? errorParts.join('; ') : undefined,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
// ============================================================================
|
|
188
254
|
// Command Handlers
|
|
189
255
|
// ============================================================================
|
|
190
256
|
async function initializeRunner() {
|
|
@@ -209,6 +275,26 @@ async function initializeRunner() {
|
|
|
209
275
|
async function handleRunCommand(options) {
|
|
210
276
|
console.log(chalk.bold('\nAQE Parallel Eval Runner'));
|
|
211
277
|
console.log(chalk.dim('ADR-056 Phase 5: Worker Pool Pattern\n'));
|
|
278
|
+
const suiteMode = detectSuiteMode(options.skill);
|
|
279
|
+
if (suiteMode === 'command') {
|
|
280
|
+
// Command-mode skills (e.g. qe-browser) don't need an LLM executor or a
|
|
281
|
+
// ReasoningBank. Keep them on a fast, dependency-light path.
|
|
282
|
+
console.log(chalk.cyan(`Running eval suite: ${options.skill}`));
|
|
283
|
+
console.log(chalk.dim('Mode: command-eval (shell-based, ADR-091)'));
|
|
284
|
+
console.log('');
|
|
285
|
+
const commandRunner = createCommandEvalRunner({
|
|
286
|
+
timeoutMs: options.timeout,
|
|
287
|
+
});
|
|
288
|
+
const commandResult = await commandRunner.run(options.skill);
|
|
289
|
+
const result = commandResultToParallel(commandResult, options.model);
|
|
290
|
+
console.log(formatResult(result));
|
|
291
|
+
if (options.output) {
|
|
292
|
+
const outputPath = path.resolve(options.output);
|
|
293
|
+
fs.writeFileSync(outputPath, JSON.stringify(result, null, 2));
|
|
294
|
+
console.log(chalk.green(`Results saved to: ${outputPath}`));
|
|
295
|
+
}
|
|
296
|
+
process.exit(result.passed ? 0 : 1);
|
|
297
|
+
}
|
|
212
298
|
const { runner, reasoningBank } = await initializeRunner();
|
|
213
299
|
try {
|
|
214
300
|
// Configure runner
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aqe upgrade` — read-only advisory
|
|
3
|
+
*
|
|
4
|
+
* Detects which optional native bindings load on this platform and prints a
|
|
5
|
+
* report with recommendations. Does NOT modify feature flags, env vars, or
|
|
6
|
+
* config files — it only tells the user what they'd gain by installing the
|
|
7
|
+
* missing optional deps.
|
|
8
|
+
*
|
|
9
|
+
* Related: issue #383 item 2.
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
export type LoadStatus = 'loaded' | 'missing' | 'required-missing';
|
|
13
|
+
export interface NativeCheck {
|
|
14
|
+
/** npm package name as it appears in package.json */
|
|
15
|
+
readonly packageName: string;
|
|
16
|
+
/** Human-readable role */
|
|
17
|
+
readonly role: string;
|
|
18
|
+
/** What the fallback looks like when missing (not applicable for required deps) */
|
|
19
|
+
readonly fallback: string;
|
|
20
|
+
/** Feature flag(s) this native affects (informational) */
|
|
21
|
+
readonly affectsFlags: readonly string[];
|
|
22
|
+
/** Whether missing is fatal or just degrades performance */
|
|
23
|
+
readonly required: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface NativeResult extends NativeCheck {
|
|
26
|
+
readonly status: LoadStatus;
|
|
27
|
+
/** Error message if the load failed (missing means MODULE_NOT_FOUND; other errors get surfaced). */
|
|
28
|
+
readonly loadError?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface EnvOverride {
|
|
31
|
+
readonly envVar: string;
|
|
32
|
+
readonly value: string;
|
|
33
|
+
readonly flagName: string;
|
|
34
|
+
}
|
|
35
|
+
export interface Recommendation {
|
|
36
|
+
readonly severity: 'info' | 'warn' | 'error';
|
|
37
|
+
readonly message: string;
|
|
38
|
+
/** Copy-paste install command, when relevant. */
|
|
39
|
+
readonly action?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface UpgradeReport {
|
|
42
|
+
readonly aqeVersion: string;
|
|
43
|
+
readonly platform: {
|
|
44
|
+
readonly os: string;
|
|
45
|
+
readonly arch: string;
|
|
46
|
+
readonly node: string;
|
|
47
|
+
};
|
|
48
|
+
readonly natives: readonly NativeResult[];
|
|
49
|
+
readonly flags: {
|
|
50
|
+
readonly useRVFPatternStore: boolean;
|
|
51
|
+
readonly useSublinearSolver: boolean;
|
|
52
|
+
readonly useNativeHNSW: boolean;
|
|
53
|
+
readonly useGraphMAEEmbeddings: boolean;
|
|
54
|
+
readonly useQEFlashAttention: boolean;
|
|
55
|
+
};
|
|
56
|
+
readonly envOverrides: readonly EnvOverride[];
|
|
57
|
+
readonly recommendations: readonly Recommendation[];
|
|
58
|
+
readonly summary: {
|
|
59
|
+
readonly requiredOk: boolean;
|
|
60
|
+
readonly optionalMissingCount: number;
|
|
61
|
+
readonly optionalLoadedCount: number;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The set of packages `aqe upgrade` inspects. Order controls the report
|
|
66
|
+
* rendering order.
|
|
67
|
+
*/
|
|
68
|
+
export declare const NATIVE_CATALOG: readonly NativeCheck[];
|
|
69
|
+
export type LoadProbe = (packageName: string) => {
|
|
70
|
+
ok: true;
|
|
71
|
+
} | {
|
|
72
|
+
ok: false;
|
|
73
|
+
error: Error;
|
|
74
|
+
};
|
|
75
|
+
/** Default probe — uses a CJS require relative to this module's location. */
|
|
76
|
+
export declare function createDefaultLoadProbe(): LoadProbe;
|
|
77
|
+
export declare function detectNatives(catalog: readonly NativeCheck[], probe: LoadProbe): NativeResult[];
|
|
78
|
+
export declare function readEnvOverrides(env: NodeJS.ProcessEnv): EnvOverride[];
|
|
79
|
+
interface RecommendationInput {
|
|
80
|
+
readonly natives: readonly NativeResult[];
|
|
81
|
+
readonly flags: UpgradeReport['flags'];
|
|
82
|
+
readonly envOverrides: readonly EnvOverride[];
|
|
83
|
+
}
|
|
84
|
+
export declare function buildRecommendations(input: RecommendationInput): Recommendation[];
|
|
85
|
+
export interface BuildReportInput {
|
|
86
|
+
readonly aqeVersion: string;
|
|
87
|
+
readonly probe: LoadProbe;
|
|
88
|
+
readonly env: NodeJS.ProcessEnv;
|
|
89
|
+
readonly flags: UpgradeReport['flags'];
|
|
90
|
+
}
|
|
91
|
+
export declare function buildReport(input: BuildReportInput): UpgradeReport;
|
|
92
|
+
export declare function exitCodeFor(report: UpgradeReport, strict: boolean): number;
|
|
93
|
+
export declare function renderReportHuman(report: UpgradeReport): string;
|
|
94
|
+
export declare function createUpgradeCommand(cleanupAndExit: (code: number) => Promise<never>): Command;
|
|
95
|
+
export {};
|
|
96
|
+
//# sourceMappingURL=upgrade.d.ts.map
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aqe upgrade` — read-only advisory
|
|
3
|
+
*
|
|
4
|
+
* Detects which optional native bindings load on this platform and prints a
|
|
5
|
+
* report with recommendations. Does NOT modify feature flags, env vars, or
|
|
6
|
+
* config files — it only tells the user what they'd gain by installing the
|
|
7
|
+
* missing optional deps.
|
|
8
|
+
*
|
|
9
|
+
* Related: issue #383 item 2.
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import { createRequire } from 'node:module';
|
|
14
|
+
import { platform, arch } from 'node:os';
|
|
15
|
+
import { getRuVectorFeatureFlags } from '../../integrations/ruvector/feature-flags.js';
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Native catalog
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* The set of packages `aqe upgrade` inspects. Order controls the report
|
|
21
|
+
* rendering order.
|
|
22
|
+
*/
|
|
23
|
+
export const NATIVE_CATALOG = [
|
|
24
|
+
{
|
|
25
|
+
packageName: 'better-sqlite3',
|
|
26
|
+
role: 'SQLite storage (required — memory.db, patterns, audit)',
|
|
27
|
+
fallback: 'n/a — required',
|
|
28
|
+
affectsFlags: [],
|
|
29
|
+
required: true,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
packageName: 'web-tree-sitter',
|
|
33
|
+
role: 'Tree-sitter WASM parser runtime (required — code intelligence)',
|
|
34
|
+
fallback: 'n/a — required',
|
|
35
|
+
affectsFlags: [],
|
|
36
|
+
required: true,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
packageName: 'hnswlib-node',
|
|
40
|
+
role: 'Canonical HNSW vector index (default since ADR-090)',
|
|
41
|
+
fallback: 'ProgressiveHnswBackend (JS) — correct but slower on large codebases',
|
|
42
|
+
affectsFlags: ['useNativeHNSW'],
|
|
43
|
+
required: false,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
packageName: '@ruvector/rvf-node',
|
|
47
|
+
role: 'Persistent HNSW pattern store + RVF brain export format',
|
|
48
|
+
fallback: 'SQLite-backed HNSW + JSONL brain export',
|
|
49
|
+
affectsFlags: ['useRVFPatternStore'],
|
|
50
|
+
required: false,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
packageName: '@ruvector/solver-node',
|
|
54
|
+
role: 'Sublinear PageRank on the pattern citation graph',
|
|
55
|
+
fallback: 'TypeScript power iteration — O(n·m) (practical cap ≈ 50K nodes)',
|
|
56
|
+
affectsFlags: ['useSublinearSolver'],
|
|
57
|
+
required: false,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
packageName: '@ruvector/attention',
|
|
61
|
+
role: 'Flash Attention with SIMD acceleration',
|
|
62
|
+
fallback: 'Plain attention — 2.5–7× slower on large sequences',
|
|
63
|
+
affectsFlags: ['useQEFlashAttention'],
|
|
64
|
+
required: false,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
packageName: '@ruvector/gnn',
|
|
68
|
+
role: 'GraphMAE native acceleration',
|
|
69
|
+
fallback: 'TypeScript GraphMAE — correct but slower',
|
|
70
|
+
affectsFlags: ['useGraphMAEEmbeddings'],
|
|
71
|
+
required: false,
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
/** Default probe — uses a CJS require relative to this module's location. */
|
|
75
|
+
export function createDefaultLoadProbe() {
|
|
76
|
+
const req = createRequire(import.meta.url);
|
|
77
|
+
return (packageName) => {
|
|
78
|
+
try {
|
|
79
|
+
req(packageName);
|
|
80
|
+
return { ok: true };
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export function detectNatives(catalog, probe) {
|
|
88
|
+
return catalog.map((check) => {
|
|
89
|
+
const result = probe(check.packageName);
|
|
90
|
+
if (result.ok) {
|
|
91
|
+
return { ...check, status: 'loaded' };
|
|
92
|
+
}
|
|
93
|
+
const missingModule = isModuleNotFound(result.error);
|
|
94
|
+
const status = check.required
|
|
95
|
+
? 'required-missing'
|
|
96
|
+
: missingModule
|
|
97
|
+
? 'missing'
|
|
98
|
+
: 'missing';
|
|
99
|
+
return { ...check, status, loadError: result.error.message };
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function isModuleNotFound(err) {
|
|
103
|
+
return err.code === 'MODULE_NOT_FOUND';
|
|
104
|
+
}
|
|
105
|
+
// ============================================================================
|
|
106
|
+
// Environment overrides
|
|
107
|
+
// ============================================================================
|
|
108
|
+
/**
|
|
109
|
+
* Map of RUVECTOR_* env vars → feature flag names that aqe upgrade cares about.
|
|
110
|
+
* Only includes flags tied to optional natives — the full list is in
|
|
111
|
+
* feature-flags.ts.
|
|
112
|
+
*/
|
|
113
|
+
const ENV_VAR_TO_FLAG = {
|
|
114
|
+
RUVECTOR_USE_RVF_PATTERN_STORE: 'useRVFPatternStore',
|
|
115
|
+
RUVECTOR_USE_SUBLINEAR_SOLVER: 'useSublinearSolver',
|
|
116
|
+
RUVECTOR_USE_NATIVE_HNSW: 'useNativeHNSW',
|
|
117
|
+
RUVECTOR_USE_GNN_INDEX: 'useQEGNNIndex',
|
|
118
|
+
RUVECTOR_USE_FLASH_ATTENTION: 'useQEFlashAttention',
|
|
119
|
+
RUVECTOR_USE_GRAPH_MAE_EMBEDDINGS: 'useGraphMAEEmbeddings',
|
|
120
|
+
};
|
|
121
|
+
export function readEnvOverrides(env) {
|
|
122
|
+
const out = [];
|
|
123
|
+
for (const [envVar, flagName] of Object.entries(ENV_VAR_TO_FLAG)) {
|
|
124
|
+
const v = env[envVar];
|
|
125
|
+
if (v !== undefined)
|
|
126
|
+
out.push({ envVar, value: v, flagName });
|
|
127
|
+
}
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
130
|
+
export function buildRecommendations(input) {
|
|
131
|
+
const recs = [];
|
|
132
|
+
const nativeByName = new Map(input.natives.map((n) => [n.packageName, n]));
|
|
133
|
+
// Missing required deps are a hard error.
|
|
134
|
+
for (const n of input.natives) {
|
|
135
|
+
if (n.status === 'required-missing') {
|
|
136
|
+
recs.push({
|
|
137
|
+
severity: 'error',
|
|
138
|
+
message: `Required dependency missing: ${n.packageName} — ${n.role}`,
|
|
139
|
+
action: `npm install ${n.packageName}`,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Missing optional deps: suggest install, note fallback.
|
|
144
|
+
for (const n of input.natives) {
|
|
145
|
+
if (n.status === 'missing' && !n.required) {
|
|
146
|
+
recs.push({
|
|
147
|
+
severity: 'warn',
|
|
148
|
+
message: `Optional native missing: ${n.packageName} — falls back to ${n.fallback}`,
|
|
149
|
+
action: `npm install ${n.packageName}`,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Env override conflicts: user forced a flag ON but the native isn't loadable.
|
|
154
|
+
const flagByName = { ...input.flags };
|
|
155
|
+
for (const override of input.envOverrides) {
|
|
156
|
+
const natives = input.natives.filter((n) => n.affectsFlags.includes(override.flagName));
|
|
157
|
+
const anyLoaded = natives.some((n) => n.status === 'loaded');
|
|
158
|
+
const wantsOn = override.value === 'true' || override.value === '1';
|
|
159
|
+
if (wantsOn && natives.length > 0 && !anyLoaded) {
|
|
160
|
+
const missing = natives.map((n) => n.packageName).join(', ');
|
|
161
|
+
recs.push({
|
|
162
|
+
severity: 'warn',
|
|
163
|
+
message: `${override.envVar}=${override.value} requests flag ${override.flagName}=true, ` +
|
|
164
|
+
`but required native(s) not loaded: ${missing}. The flag will silently fall back.`,
|
|
165
|
+
action: natives[0] ? `npm install ${natives[0].packageName}` : undefined,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
void flagByName; // reserved for future rules
|
|
170
|
+
void nativeByName;
|
|
171
|
+
// All optionals loaded → positive-confirmation info line.
|
|
172
|
+
const optionalMissing = input.natives.filter((n) => !n.required && n.status === 'missing');
|
|
173
|
+
if (optionalMissing.length === 0 && input.natives.every((n) => n.status !== 'required-missing')) {
|
|
174
|
+
recs.push({
|
|
175
|
+
severity: 'info',
|
|
176
|
+
message: 'All recommended native bindings are loaded — no action required.',
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
return recs;
|
|
180
|
+
}
|
|
181
|
+
export function buildReport(input) {
|
|
182
|
+
const natives = detectNatives(NATIVE_CATALOG, input.probe);
|
|
183
|
+
const envOverrides = readEnvOverrides(input.env);
|
|
184
|
+
const recommendations = buildRecommendations({
|
|
185
|
+
natives,
|
|
186
|
+
flags: input.flags,
|
|
187
|
+
envOverrides,
|
|
188
|
+
});
|
|
189
|
+
const optionalLoadedCount = natives.filter((n) => !n.required && n.status === 'loaded').length;
|
|
190
|
+
const optionalMissingCount = natives.filter((n) => !n.required && n.status === 'missing').length;
|
|
191
|
+
const requiredOk = natives.filter((n) => n.required).every((n) => n.status === 'loaded');
|
|
192
|
+
return {
|
|
193
|
+
aqeVersion: input.aqeVersion,
|
|
194
|
+
platform: {
|
|
195
|
+
os: platform(),
|
|
196
|
+
arch: arch(),
|
|
197
|
+
node: process.version,
|
|
198
|
+
},
|
|
199
|
+
natives,
|
|
200
|
+
flags: input.flags,
|
|
201
|
+
envOverrides,
|
|
202
|
+
recommendations,
|
|
203
|
+
summary: {
|
|
204
|
+
requiredOk,
|
|
205
|
+
optionalMissingCount,
|
|
206
|
+
optionalLoadedCount,
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// ============================================================================
|
|
211
|
+
// Exit-code policy
|
|
212
|
+
// ============================================================================
|
|
213
|
+
export function exitCodeFor(report, strict) {
|
|
214
|
+
if (!report.summary.requiredOk)
|
|
215
|
+
return 2;
|
|
216
|
+
if (strict && report.summary.optionalMissingCount > 0)
|
|
217
|
+
return 1;
|
|
218
|
+
return 0;
|
|
219
|
+
}
|
|
220
|
+
// ============================================================================
|
|
221
|
+
// Rendering
|
|
222
|
+
// ============================================================================
|
|
223
|
+
export function renderReportHuman(report) {
|
|
224
|
+
const lines = [];
|
|
225
|
+
const push = (s = '') => lines.push(s);
|
|
226
|
+
push('');
|
|
227
|
+
push(chalk.bold.blue(' aqe upgrade — native binding report'));
|
|
228
|
+
push(chalk.gray(' ──────────────────────────────────────'));
|
|
229
|
+
push('');
|
|
230
|
+
push(` AQE: ${chalk.cyan(report.aqeVersion)}`);
|
|
231
|
+
push(` Platform: ${chalk.cyan(`${report.platform.os} ${report.platform.arch}`)}`);
|
|
232
|
+
push(` Node: ${chalk.cyan(report.platform.node)}`);
|
|
233
|
+
push('');
|
|
234
|
+
push(chalk.blue(' Native bindings:'));
|
|
235
|
+
for (const n of report.natives) {
|
|
236
|
+
const status = statusBadge(n.status);
|
|
237
|
+
push(` ${status} ${chalk.bold(n.packageName.padEnd(28))} ${chalk.gray(n.role)}`);
|
|
238
|
+
if (n.status !== 'loaded' && n.loadError) {
|
|
239
|
+
// Node's MODULE_NOT_FOUND error message carries a multi-line "Require
|
|
240
|
+
// stack:" trailer that adds no signal here — keep the first line only.
|
|
241
|
+
push(` ${chalk.gray(n.loadError.split('\n')[0])}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
push('');
|
|
245
|
+
push(chalk.blue(' Flag state (after env overrides):'));
|
|
246
|
+
const flagEntries = Object.entries(report.flags);
|
|
247
|
+
for (const [name, value] of flagEntries) {
|
|
248
|
+
const badge = value ? chalk.green('on ') : chalk.yellow('off');
|
|
249
|
+
push(` ${badge} ${name}`);
|
|
250
|
+
}
|
|
251
|
+
if (report.envOverrides.length > 0) {
|
|
252
|
+
push('');
|
|
253
|
+
push(chalk.blue(' Env overrides in effect:'));
|
|
254
|
+
for (const o of report.envOverrides) {
|
|
255
|
+
push(` ${chalk.cyan(o.envVar)}=${chalk.cyan(o.value)} ${chalk.gray(`→ ${o.flagName}`)}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
push('');
|
|
259
|
+
push(chalk.blue(' Recommendations:'));
|
|
260
|
+
if (report.recommendations.length === 0) {
|
|
261
|
+
push(chalk.gray(' (none)'));
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
for (const rec of report.recommendations) {
|
|
265
|
+
const prefix = recommendationPrefix(rec.severity);
|
|
266
|
+
push(` ${prefix} ${rec.message}`);
|
|
267
|
+
if (rec.action)
|
|
268
|
+
push(` ${chalk.gray('→')} ${chalk.cyan(rec.action)}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
push('');
|
|
272
|
+
const okBadge = report.summary.requiredOk ? chalk.green('OK') : chalk.red('FAIL');
|
|
273
|
+
push(` Summary: required ${okBadge} ` +
|
|
274
|
+
`optional loaded ${chalk.cyan(report.summary.optionalLoadedCount)} / ` +
|
|
275
|
+
`${chalk.cyan(report.summary.optionalLoadedCount + report.summary.optionalMissingCount)}`);
|
|
276
|
+
push('');
|
|
277
|
+
return lines.join('\n');
|
|
278
|
+
}
|
|
279
|
+
function statusBadge(status) {
|
|
280
|
+
switch (status) {
|
|
281
|
+
case 'loaded':
|
|
282
|
+
return chalk.green('✓');
|
|
283
|
+
case 'missing':
|
|
284
|
+
return chalk.yellow('…');
|
|
285
|
+
case 'required-missing':
|
|
286
|
+
return chalk.red('✗');
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
function recommendationPrefix(severity) {
|
|
290
|
+
switch (severity) {
|
|
291
|
+
case 'info':
|
|
292
|
+
return chalk.green('✓');
|
|
293
|
+
case 'warn':
|
|
294
|
+
return chalk.yellow('!');
|
|
295
|
+
case 'error':
|
|
296
|
+
return chalk.red('✗');
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
export function createUpgradeCommand(cleanupAndExit) {
|
|
300
|
+
const cmd = new Command('upgrade')
|
|
301
|
+
.description('Detect optional native bindings and recommend install / flag changes (read-only)')
|
|
302
|
+
.option('--json', 'Emit the report as JSON to stdout', false)
|
|
303
|
+
.option('--strict', 'Exit non-zero if any recommended optional native is missing', false)
|
|
304
|
+
.action(async (options) => {
|
|
305
|
+
const aqeVersion = resolveAqeVersion();
|
|
306
|
+
const rvFlags = getRuVectorFeatureFlags();
|
|
307
|
+
const report = buildReport({
|
|
308
|
+
aqeVersion,
|
|
309
|
+
probe: createDefaultLoadProbe(),
|
|
310
|
+
env: process.env,
|
|
311
|
+
flags: {
|
|
312
|
+
useRVFPatternStore: rvFlags.useRVFPatternStore,
|
|
313
|
+
useSublinearSolver: rvFlags.useSublinearSolver,
|
|
314
|
+
useNativeHNSW: rvFlags.useNativeHNSW,
|
|
315
|
+
useGraphMAEEmbeddings: rvFlags.useGraphMAEEmbeddings,
|
|
316
|
+
useQEFlashAttention: rvFlags.useQEFlashAttention,
|
|
317
|
+
},
|
|
318
|
+
});
|
|
319
|
+
if (options.json) {
|
|
320
|
+
process.stdout.write(JSON.stringify(report, null, 2) + '\n');
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
process.stdout.write(renderReportHuman(report));
|
|
324
|
+
}
|
|
325
|
+
await cleanupAndExit(exitCodeFor(report, options.strict === true));
|
|
326
|
+
});
|
|
327
|
+
return cmd;
|
|
328
|
+
}
|
|
329
|
+
// ============================================================================
|
|
330
|
+
// Helpers
|
|
331
|
+
// ============================================================================
|
|
332
|
+
function resolveAqeVersion() {
|
|
333
|
+
try {
|
|
334
|
+
const req = createRequire(import.meta.url);
|
|
335
|
+
const pkg = req('../../../package.json');
|
|
336
|
+
return pkg.version ?? 'unknown';
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
return 'unknown';
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=upgrade.js.map
|
|
@@ -152,6 +152,33 @@ export declare const COMMANDS: {
|
|
|
152
152
|
};
|
|
153
153
|
};
|
|
154
154
|
};
|
|
155
|
+
readonly brain: {
|
|
156
|
+
readonly description: "Export, import, and inspect QE brain state";
|
|
157
|
+
readonly subcommands: {
|
|
158
|
+
readonly export: {
|
|
159
|
+
readonly options: readonly ["-o", "--output", "--format", "--db"];
|
|
160
|
+
};
|
|
161
|
+
readonly import: {
|
|
162
|
+
readonly options: readonly ["-i", "--input", "--strategy", "--dry-run", "--db"];
|
|
163
|
+
};
|
|
164
|
+
readonly info: {
|
|
165
|
+
readonly options: readonly ["-i", "--input"];
|
|
166
|
+
};
|
|
167
|
+
readonly diff: {
|
|
168
|
+
readonly options: readonly ["--table", "--verbose", "--json"];
|
|
169
|
+
};
|
|
170
|
+
readonly search: {
|
|
171
|
+
readonly options: readonly ["-i", "--input", "--table", "--domain", "--pattern-type", "--since", "--until", "-q", "--query", "-l", "--limit", "--json"];
|
|
172
|
+
};
|
|
173
|
+
readonly 'witness-backfill': {
|
|
174
|
+
readonly options: readonly ["--db"];
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
readonly upgrade: {
|
|
179
|
+
readonly description: "Detect optional native bindings and recommend install / flag changes";
|
|
180
|
+
readonly options: readonly ["--json", "--strict"];
|
|
181
|
+
};
|
|
155
182
|
};
|
|
156
183
|
/**
|
|
157
184
|
* Task types for completion
|