agentic-qe 3.13.8 → 3.13.10
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/skills-manifest.json +1 -1
- package/CHANGELOG.md +65 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-6CNMDJVJ.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-W5KKWWGM.js → agent-booster-wasm-AWNQ6KB3.js} +2 -2
- package/dist/cli/chunks/{agent-handler-U27BOQIY.js → agent-handler-RSHQZHPS.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-FYEN2L2U.js → agent-memory-branch-FU7Y3TQ3.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-JGHHNSFX.js +2 -0
- package/dist/cli/chunks/{arena-F2ZO52SD.js → arena-LOK2WYHC.js} +2 -2
- package/dist/cli/chunks/{arena-7GWHLRNN.js → arena-XQOCNKB6.js} +4 -4
- package/dist/cli/chunks/{audit-O4RLECCQ.js → audit-6ZS4EAD2.js} +3 -3
- package/dist/cli/chunks/base-ND3KAA2L.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-3VQVXH7I.js → better-sqlite3-IMBCIZK3.js} +2 -2
- package/dist/cli/chunks/{brain-handler-Z4FSHVHF.js → brain-handler-3U6BH4EO.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-VW7QDS3O.js → branch-enumerator-CJBPVBXM.js} +2 -2
- package/dist/cli/chunks/{browser-P5PZI236.js → browser-M4VW3KJY.js} +2 -2
- package/dist/cli/chunks/browser-workflow-EBSNGTSH.js +2 -0
- package/dist/cli/chunks/{chunk-CR5ZQXMN.js → chunk-2CLM53W2.js} +2 -2
- package/dist/cli/chunks/{chunk-DKX6SIVF.js → chunk-2E35LWYJ.js} +4 -4
- package/dist/cli/chunks/{chunk-UK2267F4.js → chunk-2FFCL4BK.js} +3 -3
- package/dist/cli/chunks/{chunk-XONUAS4K.js → chunk-2FPHM356.js} +2 -2
- package/dist/cli/chunks/{chunk-SLTIRAYZ.js → chunk-2HEHM2KV.js} +2 -2
- package/dist/cli/chunks/{chunk-PTAX4IY2.js → chunk-2HMBDTSI.js} +2 -2
- package/dist/cli/chunks/{chunk-HBM423QM.js → chunk-2LGQNT6Q.js} +1 -1
- package/dist/cli/chunks/{chunk-W2FT6OUU.js → chunk-2SS2SSNZ.js} +3 -3
- package/dist/cli/chunks/{chunk-SYPXKVVR.js → chunk-35CHBX6K.js} +2 -2
- package/dist/cli/chunks/{chunk-426SRHIW.js → chunk-37GWETSW.js} +2 -2
- package/dist/cli/chunks/{chunk-QYPXBIP5.js → chunk-3E3YLEHB.js} +1 -1
- package/dist/cli/chunks/{chunk-2CSKJ5JM.js → chunk-3I5ZTLFY.js} +1 -1
- package/dist/cli/chunks/{chunk-6H3VRSJ4.js → chunk-4EWKERKV.js} +2 -2
- package/dist/cli/chunks/{chunk-6BNPFSFE.js → chunk-4NXABNLF.js} +1 -1
- package/dist/cli/chunks/{chunk-M3PXWTNF.js → chunk-4PRQMFVO.js} +2 -2
- package/dist/cli/chunks/{chunk-YTBW2SLZ.js → chunk-4TSLLWE7.js} +1 -1
- package/dist/cli/chunks/{chunk-MRLPZMA3.js → chunk-54RIPGMC.js} +1 -1
- package/dist/cli/chunks/{chunk-MLFS3MVR.js → chunk-66BUC3JG.js} +2 -2
- package/dist/cli/chunks/{chunk-U6O3CFIW.js → chunk-6C5WRBGZ.js} +3 -3
- package/dist/cli/chunks/{chunk-YEGZUE6G.js → chunk-6FIWTBR5.js} +1 -1
- package/dist/cli/chunks/{chunk-5QZAXVUI.js → chunk-6L36EHM2.js} +2 -2
- package/dist/cli/chunks/{chunk-5PRVDHNG.js → chunk-6SM74KJI.js} +1 -1
- package/dist/cli/chunks/{chunk-MKCCKFUY.js → chunk-74QKFILD.js} +2 -2
- package/dist/cli/chunks/{chunk-Y7ALSL72.js → chunk-7BZUNNWC.js} +1 -1
- package/dist/cli/chunks/{chunk-A3V4SRLU.js → chunk-7GZJMPTD.js} +2 -2
- package/dist/cli/chunks/{chunk-BTCQJOI2.js → chunk-7JK57AI2.js} +1 -1
- package/dist/cli/chunks/chunk-7NDJW2DU.js +22 -0
- package/dist/cli/chunks/{chunk-5LLHM6NK.js → chunk-7QNN4GQU.js} +2 -2
- package/dist/cli/chunks/{chunk-Y5JWDXGB.js → chunk-7QSGUJE2.js} +1 -1
- package/dist/cli/chunks/{chunk-PIPV2C7N.js → chunk-7XCRPSSU.js} +2 -2
- package/dist/cli/chunks/{chunk-HP76TI6A.js → chunk-7XWFAPPI.js} +2 -2
- package/dist/cli/chunks/{chunk-RWSBQ2AD.js → chunk-A233TTUX.js} +1 -1
- package/dist/cli/chunks/{chunk-AMTA6V5L.js → chunk-A6V5NZCV.js} +2 -2
- package/dist/cli/chunks/{chunk-SEOOA2FX.js → chunk-AJQGNQ3W.js} +2 -2
- package/dist/cli/chunks/{chunk-CB6FBMND.js → chunk-ATSVI6T4.js} +1 -1
- package/dist/cli/chunks/{chunk-X4FHVATG.js → chunk-BB4LWAAH.js} +2 -2
- package/dist/cli/chunks/{chunk-AGJG5PAS.js → chunk-BFX3N7KU.js} +1 -1
- package/dist/cli/chunks/{chunk-BC37ZYBO.js → chunk-BM5BSYPW.js} +2 -2
- package/dist/cli/chunks/{chunk-CK2I5QTK.js → chunk-BTG5UFMA.js} +2 -2
- package/dist/cli/chunks/{chunk-HQQI4ZEO.js → chunk-C5CP66K5.js} +1 -1
- package/dist/cli/chunks/{chunk-2Q7T3PL4.js → chunk-C5HYQTD7.js} +1 -1
- package/dist/cli/chunks/{chunk-ZKOIWNH7.js → chunk-C656WHED.js} +2 -2
- package/dist/cli/chunks/{chunk-DZHVLIR6.js → chunk-CCAY7Q56.js} +1 -1
- package/dist/cli/chunks/{chunk-D2SHZXX7.js → chunk-CPXZC7LF.js} +1 -1
- package/dist/cli/chunks/{chunk-PVUQMV6P.js → chunk-DR4V75BF.js} +2 -2
- package/dist/cli/chunks/{chunk-MQKQTX4T.js → chunk-DZNK4EM7.js} +3 -3
- package/dist/cli/chunks/{chunk-X6MSSQFP.js → chunk-EE55ALFK.js} +2 -2
- package/dist/cli/chunks/{chunk-SECJ2IQE.js → chunk-EJRDL5W5.js} +2 -2
- package/dist/cli/chunks/{chunk-YWISQTXQ.js → chunk-EKZNA6HW.js} +1 -1
- package/dist/cli/chunks/{chunk-AKCNLYE3.js → chunk-EP2HOAEB.js} +2 -2
- package/dist/cli/chunks/{chunk-D53CCDCD.js → chunk-EZY3DAIX.js} +1 -1
- package/dist/cli/chunks/{chunk-SSIOQDWN.js → chunk-F3AHUNWH.js} +2 -2
- package/dist/cli/chunks/{chunk-Y6EFJG52.js → chunk-FBJUNJ2A.js} +1 -1
- package/dist/cli/chunks/{chunk-IYOGT6HD.js → chunk-FC47FRFI.js} +2 -2
- package/dist/cli/chunks/{chunk-7QJ344ZA.js → chunk-FOPLJRWL.js} +2 -2
- package/dist/cli/chunks/{chunk-XIJGRH5I.js → chunk-FOWBKCRK.js} +10 -10
- package/dist/cli/chunks/{chunk-QYZLZ6P3.js → chunk-G427QR5W.js} +2 -2
- package/dist/cli/chunks/{chunk-TQL4CSAS.js → chunk-G7YD3BR3.js} +2 -2
- package/dist/cli/chunks/{chunk-HD22NMGP.js → chunk-GQ6H37RN.js} +2 -2
- package/dist/cli/chunks/{chunk-CDBTYQ4N.js → chunk-GRTU5QOT.js} +2 -2
- package/dist/cli/chunks/{chunk-YCL7OWK3.js → chunk-GSN4QIDI.js} +2 -2
- package/dist/cli/chunks/{chunk-ZLWYE47I.js → chunk-H633BGA7.js} +1 -1
- package/dist/cli/chunks/{chunk-QFHOF4F3.js → chunk-H7AACUYS.js} +2 -2
- package/dist/cli/chunks/{chunk-BS4ZARET.js → chunk-HEY2ZRL7.js} +2 -2
- package/dist/cli/chunks/{chunk-ACZ7CNBM.js → chunk-HL5RC5YB.js} +1 -1
- package/dist/cli/chunks/{chunk-YRSKYBOL.js → chunk-HZIT42TM.js} +2 -2
- package/dist/cli/chunks/{chunk-JKSAZL2F.js → chunk-I3SBXWF2.js} +1 -1
- package/dist/cli/chunks/{chunk-X6VCAUOX.js → chunk-IHNPXNFG.js} +2 -2
- package/dist/cli/chunks/{chunk-NXTV6EJQ.js → chunk-IJ3HHUSD.js} +2 -2
- package/dist/cli/chunks/{chunk-PZS742LW.js → chunk-IR7FZYPO.js} +1 -1
- package/dist/cli/chunks/{chunk-XUB5UG7C.js → chunk-IYLSML27.js} +2 -2
- package/dist/cli/chunks/{chunk-3KSB2PDF.js → chunk-J6H2LUBM.js} +2 -2
- package/dist/cli/chunks/{chunk-YISGZEZR.js → chunk-JALFKAAD.js} +1 -1
- package/dist/cli/chunks/{chunk-MMNNQ5PO.js → chunk-JGXU5FUZ.js} +3 -3
- package/dist/cli/chunks/{chunk-OWWLOSVW.js → chunk-JMF3FMAO.js} +2 -2
- package/dist/cli/chunks/{chunk-4GTPYV66.js → chunk-JPDJARGR.js} +2 -2
- package/dist/cli/chunks/{chunk-BU6HG2RT.js → chunk-JUVW4DOU.js} +2 -2
- package/dist/cli/chunks/{chunk-XJT6TR5E.js → chunk-JWV5ZM2S.js} +2 -2
- package/dist/cli/chunks/{chunk-UJ5KZ764.js → chunk-K6SXDKWV.js} +1 -1
- package/dist/cli/chunks/{chunk-PDIJAWCK.js → chunk-KBJYXZI7.js} +2 -2
- package/dist/cli/chunks/{chunk-GO6GSIHE.js → chunk-KBOGA4GA.js} +2 -2
- package/dist/cli/chunks/{chunk-J3EDJVZR.js → chunk-KITVDY4T.js} +1 -1
- package/dist/cli/chunks/{chunk-ZO6QWQ2G.js → chunk-KQVTTP2S.js} +2 -2
- package/dist/cli/chunks/{chunk-CZTNTQZA.js → chunk-LPVHYZAE.js} +1 -1
- package/dist/cli/chunks/{chunk-UGBHQC32.js → chunk-MFGKSD44.js} +2 -2
- package/dist/cli/chunks/{chunk-CDVGXGUX.js → chunk-MGJPS2YV.js} +2 -2
- package/dist/cli/chunks/{chunk-Q53NBMNL.js → chunk-MMA6Q6NF.js} +2 -2
- package/dist/cli/chunks/{chunk-DTN5NUAJ.js → chunk-MMRORLMM.js} +2 -2
- package/dist/cli/chunks/{chunk-SXSCWO6M.js → chunk-NBUBGYLE.js} +2 -2
- package/dist/cli/chunks/{chunk-D45ZSWZD.js → chunk-NCX4W65B.js} +5 -5
- package/dist/cli/chunks/{chunk-M7O7UKP3.js → chunk-NL3KX4NE.js} +10 -10
- package/dist/cli/chunks/{chunk-YLFM5AZ4.js → chunk-NRD76M7A.js} +2 -2
- package/dist/cli/chunks/{chunk-R557EYUJ.js → chunk-NZRKWUBM.js} +2 -2
- package/dist/cli/chunks/{chunk-2GD3RLVF.js → chunk-O5QZB2AP.js} +2 -2
- package/dist/cli/chunks/{chunk-XKKCH24C.js → chunk-OLETDPH2.js} +2 -2
- package/dist/cli/chunks/{chunk-CB23FNZW.js → chunk-OSWAQX4G.js} +2 -2
- package/dist/cli/chunks/{chunk-GVX4IAKF.js → chunk-OZLMIEJC.js} +2 -2
- package/dist/cli/chunks/{chunk-SBGMMCPJ.js → chunk-OZO2JUEK.js} +1 -1
- package/dist/cli/chunks/{chunk-65LJ2QU4.js → chunk-PGJHCCR6.js} +3 -3
- package/dist/cli/chunks/{chunk-WR3PYP6X.js → chunk-PIV3QHGJ.js} +2 -2
- package/dist/cli/chunks/{chunk-L24DBYXX.js → chunk-PLJ72A3I.js} +2 -2
- package/dist/cli/chunks/{chunk-LXGDJ5TO.js → chunk-PSBQRTNF.js} +5 -5
- package/dist/cli/chunks/{chunk-7TK24XF7.js → chunk-PUN3KZ6N.js} +2 -2
- package/dist/cli/chunks/{chunk-TM55OOPV.js → chunk-PVGOOKBF.js} +1 -1
- package/dist/cli/chunks/{chunk-WIDOUTFF.js → chunk-Q26QKZYI.js} +2 -2
- package/dist/cli/chunks/{chunk-7VWAKVRE.js → chunk-Q7QKJY6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-22TNTFEN.js → chunk-QHRMZP6J.js} +1 -1
- package/dist/cli/chunks/{chunk-ICET3FUT.js → chunk-QR6NVCRT.js} +3 -3
- package/dist/cli/chunks/{chunk-I6LGE3DO.js → chunk-QZOAU2N5.js} +1 -1
- package/dist/cli/chunks/{chunk-XPMQEFQI.js → chunk-RCXC4YGL.js} +1 -1
- package/dist/cli/chunks/{chunk-756OZOSH.js → chunk-RQTXQ6C7.js} +2 -2
- package/dist/cli/chunks/{chunk-EO3RV7QV.js → chunk-RYHOV4E3.js} +2 -2
- package/dist/cli/chunks/{chunk-FSKEQ625.js → chunk-SWZUMHIQ.js} +2 -2
- package/dist/cli/chunks/{chunk-WMRLLJDW.js → chunk-T7OS4CB4.js} +2 -2
- package/dist/cli/chunks/{chunk-OZSYL2CL.js → chunk-TIGBPVPZ.js} +1 -1
- package/dist/cli/chunks/chunk-TL5FMEKW.js +2 -0
- package/dist/cli/chunks/{chunk-SZYHPGZD.js → chunk-U562TIMO.js} +2 -2
- package/dist/cli/chunks/{chunk-N7ITWNQP.js → chunk-U5NKLMF4.js} +2 -2
- package/dist/cli/chunks/{chunk-QMMRUFEI.js → chunk-U5WFVIKL.js} +2 -2
- package/dist/cli/chunks/{chunk-3OJWLZIO.js → chunk-U6YDS37V.js} +2 -2
- package/dist/cli/chunks/{chunk-DPQ2IANL.js → chunk-UHHWEWDA.js} +2 -2
- package/dist/cli/chunks/{chunk-PLIUHFVE.js → chunk-UHSIP4DJ.js} +2 -2
- package/dist/cli/chunks/{chunk-E2OORKCW.js → chunk-UL6PT654.js} +2 -2
- package/dist/cli/chunks/{chunk-QWACAQQ4.js → chunk-UNXPBIX5.js} +2 -2
- package/dist/cli/chunks/{chunk-DW5F6DJM.js → chunk-VUCCPPQ6.js} +2 -2
- package/dist/cli/chunks/{chunk-FMTURKX4.js → chunk-VWZ743HH.js} +4 -4
- package/dist/cli/chunks/{chunk-NW5XQQMC.js → chunk-W3DCBOLL.js} +1 -1
- package/dist/cli/chunks/{chunk-HRAU4ZC3.js → chunk-WFEHOEYP.js} +1 -1
- package/dist/cli/chunks/{chunk-NJ7SVXE6.js → chunk-WIB6KRFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZNJJLA64.js → chunk-WK5MKY45.js} +3 -3
- package/dist/cli/chunks/{chunk-VJDGJ6CW.js → chunk-WKE2FUCP.js} +1 -1
- package/dist/cli/chunks/{chunk-C37IK75J.js → chunk-WSPEAYPG.js} +2 -2
- package/dist/cli/chunks/{chunk-2CJ5V2DT.js → chunk-XPUPST5T.js} +1 -1
- package/dist/cli/chunks/{chunk-GPRPGL5N.js → chunk-YALYPHSG.js} +2 -2
- package/dist/cli/chunks/{chunk-YHV23E6J.js → chunk-YC5UJVV3.js} +1 -1
- package/dist/cli/chunks/{chunk-3UENFJEV.js → chunk-YHAUBZ4H.js} +3 -3
- package/dist/cli/chunks/{chunk-55UQC4BO.js → chunk-YO63NTJV.js} +1 -1
- package/dist/cli/chunks/{chunk-W4CW6TKP.js → chunk-ZAEUW3Q4.js} +1 -1
- package/dist/cli/chunks/{chunk-P6PRMORM.js → chunk-ZH3MVVXO.js} +2 -2
- package/dist/cli/chunks/{ci-3Z3OSULB.js → ci-7QW7234M.js} +2 -2
- package/dist/cli/chunks/{ci-output-ETGFFPKJ.js → ci-output-WGP4YKPQ.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-G7ABL353.js → circuit-breaker-AOHSCJYO.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-EKBBG7HG.js → claude-flow-setup-CIZ3TWR7.js} +2 -2
- package/dist/cli/chunks/client-NEGGUFEM.js +2 -0
- package/dist/cli/chunks/{cline-installer-TRNHEMDA.js → cline-installer-J2QVGPJY.js} +2 -2
- package/dist/cli/chunks/{code-JMENIVDM.js → code-WH26MFMB.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-JIYCGDUF.js → code-index-extractor-DBOYEFZ4.js} +2 -2
- package/dist/cli/chunks/{codex-installer-XBHDOIN7.js → codex-installer-MWYVGZC4.js} +2 -2
- package/dist/cli/chunks/{completions-HF6I7WD3.js → completions-LNBHGWUS.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-MWV6KUSW.js → complexity-analyzer-AMYCTQG2.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-YWTPGW7K.js → continuedev-installer-73EQPP37.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-V2SX7GBX.js → copilot-installer-JWSY2272.js} +2 -2
- package/dist/cli/chunks/core-handlers-Q2XPFYQ5.js +2 -0
- package/dist/cli/chunks/{cost-tracker-RQJRRISN.js → cost-tracker-XQVIORRZ.js} +2 -2
- package/dist/cli/chunks/{coverage-IZ43CIOL.js → coverage-HYGJIQ25.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-WNZMUQ3G.js +2 -0
- package/dist/cli/chunks/{cursor-installer-K3VUWVE3.js → cursor-installer-DNPNJGZM.js} +2 -2
- package/dist/cli/chunks/{daemon-HFAAQUIJ.js → daemon-6JNNBU33.js} +4 -4
- package/dist/cli/chunks/{daemon-N6AICOXE.js → daemon-GSOGO6L3.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-7TFE4MSB.js → dag-attention-scheduler-7SGPLKGI.js} +2 -2
- package/dist/cli/chunks/{detect-VFGXI7AL.js → detect-IXD77HG4.js} +2 -2
- package/dist/cli/chunks/{dist-node-P2JPEBHL.js → dist-node-ARTYK2HL.js} +2 -2
- package/dist/cli/chunks/{domain-handler-CIMGA5Z3.js → domain-handler-X4BOFLMY.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-UHNJ2JW4.js → domain-transfer-7JBEXLFL.js} +2 -2
- package/dist/cli/chunks/dream-OL5XLAYS.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-UWK2RRN4.js → embed-and-insert-pattern-VSOLKM3Y.js} +2 -2
- package/dist/cli/chunks/{eval-NXHZ7BQE.js → eval-HS2QQW42.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-RVQ7F34S.js → experience-capture-middleware-MWEPZYBT.js} +3 -3
- package/dist/cli/chunks/{fast-paths-DRXANKX2.js → fast-paths-RONNJ6AC.js} +2 -2
- package/dist/cli/chunks/{feature-flags-V45DD537.js → feature-flags-4YE5A6XG.js} +2 -2
- package/dist/cli/chunks/{feature-flags-NW6VEQMN.js → feature-flags-CLW4K2HN.js} +2 -2
- package/dist/cli/chunks/{file-discovery-GJO7L2NH.js → file-discovery-56C2FW4V.js} +2 -2
- package/dist/cli/chunks/{fleet-O35WUOSC.js → fleet-KMB6RM3R.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-AUVW767T.js → gnn-wrapper-R2OMDND4.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-5YXDBHH4.js → heartbeat-handler-FP3CIA2V.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-XUAW3I3Q.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-EDK2YUZJ.js +2 -0
- package/dist/cli/chunks/hnsw-index-RDMT66NM.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-BYJY6BS3.js → hnsw-legacy-bridge-EQKXBLRX.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-DOAKQHTK.js → hnswlib-node-JG3WOXKM.js} +2 -2
- package/dist/cli/chunks/{hooks-AXI33SEK.js → hooks-6QZYELUZ.js} +51 -50
- package/dist/cli/chunks/hybrid-router-BALMPXND.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-SMYLLI4Z.js → hypergraph-engine-5HGNZFDH.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-GYPRTMRE.js → hypergraph-handler-LO2ODOYD.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-P6XLP3QX.js +2 -0
- package/dist/cli/chunks/{init-handler-DO5NFTZT.js → init-handler-E346YK6H.js} +6 -6
- package/dist/cli/chunks/init-wizard-HMU5OPKQ.js +2 -0
- package/dist/cli/chunks/kernel-HMSENQ6R.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-CVWXBLG6.js → kilocode-installer-ZBJNB6N4.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-DK7J7XL7.js → kiro-installer-3TWFO4QZ.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-G7W72UC5.js +2 -0
- package/dist/cli/chunks/{learning-QHDQFBN4.js → learning-3MLFLTM2.js} +44 -44
- package/dist/cli/chunks/{llm-router-AMNXDGQ2.js → llm-router-XCBGZRKA.js} +4 -4
- package/dist/cli/chunks/llm-router-service-VCM7LAGO.js +2 -0
- package/dist/cli/chunks/{load-2NZHFE5D.js → load-P6XC2P74.js} +2 -2
- package/dist/cli/chunks/load-test-H5FATYS2.js +2 -0
- package/dist/cli/chunks/{mcp-MX4GB3MU.js → mcp-XEND7FPN.js} +2 -2
- package/dist/cli/chunks/{memory-NZACDD2C.js → memory-HZ2WSMWW.js} +5 -5
- package/dist/cli/chunks/memory-backend-OPHD5UCR.js +2 -0
- package/dist/cli/chunks/{memory-handlers-KV7IJ2XA.js → memory-handlers-EA5UFT4G.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-ABZUIP3S.js → multi-model-executor-IYEHZP73.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-V3IFSJQT.js → opencode-installer-GH3VVBM2.js} +2 -2
- package/dist/cli/chunks/{orchestrator-GCK47DTJ.js → orchestrator-GOKIBTQG.js} +8 -8
- package/dist/cli/chunks/pattern-null-store-XJOXEDQO.js +2 -0
- package/dist/cli/chunks/pattern-usage-recorder-J2X4DD5S.js +2 -0
- package/dist/cli/chunks/{pipeline-ZIXBDYN5.js → pipeline-ELINTMVF.js} +2 -2
- package/dist/cli/chunks/{platform-4B7OOTAM.js → platform-PIPUB3LU.js} +2 -2
- package/dist/cli/chunks/{plugin-QQ3SOXY2.js → plugin-DXDNI6ZV.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-4BYJTTZX.js → prime-radiant-advanced-wasm-K6WWURGX.js} +2 -2
- package/dist/cli/chunks/protocol-executor-XVN7GTLL.js +2 -0
- package/dist/cli/chunks/{protocol-handler-VNRDG3KY.js → protocol-handler-NMO7VI64.js} +2 -2
- package/dist/cli/chunks/{prove-WVPJXN6K.js → prove-4BLOE4SC.js} +2 -2
- package/dist/cli/chunks/provider-manager-NQICCJZZ.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-SVCH233Z.js +2 -0
- package/dist/cli/chunks/{quality-E3VPSE2L.js → quality-MYXBP3GX.js} +2 -2
- package/dist/cli/chunks/{quality-gate-2ZPH7H7Z.js → quality-gate-AXPBK3MT.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-Z3PBE4EH.js +2 -0
- package/dist/cli/chunks/{real-embeddings-CYHZLS5U.js → real-embeddings-4AKAVZIY.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-A2PJDZ6G.js → roocode-installer-JE36LP4T.js} +2 -2
- package/dist/cli/chunks/router-HMWZW2SF.js +2 -0
- package/dist/cli/chunks/routing-feedback-ZZYHE2CL.js +2 -0
- package/dist/cli/chunks/{routing-handler-WASZ7YUM.js → routing-handler-LOJUJCVV.js} +2 -2
- package/dist/cli/chunks/ruvector-commands-6PNDYF32.js +8 -0
- package/dist/cli/chunks/{rvf-dual-writer-GC2SZLOS.js → rvf-dual-writer-GSTQPRNA.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-RMXAP7UZ.js → rvf-migration-adapter-Z2DSEG3E.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-22D6BTI5.js → rvf-migration-coordinator-XRNODDH4.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-ZPT4RLBE.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-B5676PI2.js → rvf-store-integrity-LVEFIUUW.js} +2 -2
- package/dist/cli/chunks/safe-db-VMYUKPV6.js +2 -0
- package/dist/cli/chunks/schedule-DOQ4X4MH.js +2 -0
- package/dist/cli/chunks/scheduler-FE2DH224.js +2 -0
- package/dist/cli/chunks/{security-GYR2YU72.js → security-A2FK2DER.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-RTWRMMCR.js → shared-rvf-adapter-V7IBEGQQ.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-4YKFV67E.js → shared-rvf-dual-writer-SMGECN2K.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-TKCACSFQ.js +2 -0
- package/dist/cli/chunks/{status-handler-CBPWW3QD.js → status-handler-UHY36LOR.js} +2 -2
- package/dist/cli/chunks/{structural-health-CATUHO2L.js → structural-health-6BRP74EW.js} +2 -2
- package/dist/cli/chunks/{sync-ADHPFKN6.js → sync-4PDTGP34.js} +2 -2
- package/dist/cli/chunks/{sync-YFHOSBNL.js → sync-KI573HOR.js} +2 -2
- package/dist/cli/chunks/{task-handler-R2KZIXXF.js → task-handler-QQGSAK6T.js} +2 -2
- package/dist/cli/chunks/{task-handlers-HLXWXRC4.js → task-handlers-VUPCDYTI.js} +3 -3
- package/dist/cli/chunks/{test-A5SJ4CSH.js → test-CJLXBSRH.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-NWAUSA6A.js → test-scheduling-IKPQPQUB.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-KOZLR5KD.js → token-bootstrap-FHLC3SHC.js} +2 -2
- package/dist/cli/chunks/{token-usage-7EDWF7XZ.js → token-usage-NCXAK7TB.js} +2 -2
- package/dist/cli/chunks/{transformers-OJGVAPSE.js → transformers-SZFBEILB.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-A2BLMPCC.js → tree-sitter-wasm-parser-LFGJRML7.js} +2 -2
- package/dist/cli/chunks/{types-AU2VADM6.js → types-NKXH7VTP.js} +2 -2
- package/dist/cli/chunks/unified-memory-2PA3CIQT.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-W43H4ZKY.js +2 -0
- package/dist/cli/chunks/unified-persistence-SOW7AAZL.js +2 -0
- package/dist/cli/chunks/upgrade-PFCFH6M5.js +5 -0
- package/dist/cli/chunks/{validate-AMJG6AVL.js → validate-YEBJRWQM.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-6J4VKCBH.js → validate-swarm-TD2NA6QF.js} +2 -2
- package/dist/cli/chunks/{vibium-YATMPDAF.js → vibium-ACC4GIOT.js} +2 -2
- package/dist/cli/chunks/visual-security-R6BVIOYU.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-UCDN3H4X.js → web-tree-sitter-IWVW5FIE.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-WHKYYVAM.js → windsurf-installer-5PVGLJ3T.js} +2 -2
- package/dist/cli/chunks/witness-chain-GSJW7VDF.js +2 -0
- package/dist/cli/chunks/{witness-chain-NDBGA7TH.js → witness-chain-VZB4LJOJ.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-2PQHTQVG.js → witness-key-manager-X632AZTN.js} +2 -2
- package/dist/cli/chunks/{workflow-F5HE4FGG.js → workflow-VNAYFUVY.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-TXEMI5DD.js +2 -0
- package/dist/cli/chunks/{wrappers-UHG2KXGO.js → wrappers-KO3QXNZP.js} +2 -2
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +18 -8
- package/dist/cli/commands/learning.js +55 -17
- package/dist/cli/commands/ruvector-commands.js +1 -1
- package/dist/cli/commands/upgrade.d.ts +5 -1
- package/dist/cli/commands/upgrade.js +34 -6
- package/dist/init/phases/12-verification.js +8 -2
- package/dist/integrations/ruvector/feature-flags.d.ts +2 -2
- package/dist/integrations/ruvector/index.d.ts +1 -1
- package/dist/integrations/ruvector/page-rank-backends.d.ts +41 -0
- package/dist/integrations/ruvector/page-rank-backends.js +154 -0
- package/dist/integrations/ruvector/solver-adapter.d.ts +26 -29
- package/dist/integrations/ruvector/solver-adapter.js +56 -163
- package/dist/learning/pattern-promotion.d.ts +11 -1
- package/dist/learning/pattern-promotion.js +27 -0
- package/dist/learning/pattern-usage-recorder.d.ts +10 -0
- package/dist/learning/pattern-usage-recorder.js +47 -0
- package/dist/learning/qe-reasoning-bank-types.d.ts +2 -0
- package/dist/learning/qe-reasoning-bank.d.ts +6 -0
- package/dist/learning/qe-reasoning-bank.js +14 -0
- package/dist/mcp/bundle.js +311 -303
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-DM2E2X4Q.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-STMX2LM7.js +0 -2
- package/dist/cli/chunks/base-EPDGZB2X.js +0 -2
- package/dist/cli/chunks/browser-workflow-CRZ6635H.js +0 -2
- package/dist/cli/chunks/chunk-5P2K6VVS.js +0 -14
- package/dist/cli/chunks/chunk-K6XYLMXO.js +0 -2
- package/dist/cli/chunks/client-IAOK3VSF.js +0 -2
- package/dist/cli/chunks/core-handlers-624KK362.js +0 -2
- package/dist/cli/chunks/cross-domain-router-2DAGKVTZ.js +0 -2
- package/dist/cli/chunks/dream-EYG2RXNJ.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-43Q5PRW7.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-XN2M6KGB.js +0 -2
- package/dist/cli/chunks/hnsw-index-4TEELZ7L.js +0 -2
- package/dist/cli/chunks/hybrid-router-L4IMWRLC.js +0 -2
- package/dist/cli/chunks/impact-analyzer-GNCMGV2E.js +0 -2
- package/dist/cli/chunks/init-wizard-6XY76PR6.js +0 -2
- package/dist/cli/chunks/kernel-KSJDDMZX.js +0 -2
- package/dist/cli/chunks/knowledge-graph-MDPRHCAD.js +0 -2
- package/dist/cli/chunks/llm-router-service-Y5Q7C6J5.js +0 -2
- package/dist/cli/chunks/load-test-NZZNYHOR.js +0 -2
- package/dist/cli/chunks/memory-backend-H3JXCBSZ.js +0 -2
- package/dist/cli/chunks/pattern-null-store-DXW5PB5E.js +0 -2
- package/dist/cli/chunks/pattern-usage-recorder-TAD2TRNY.js +0 -2
- package/dist/cli/chunks/protocol-executor-RRLH6VOX.js +0 -2
- package/dist/cli/chunks/provider-manager-S7QOPTRO.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-SPKHDTEL.js +0 -2
- package/dist/cli/chunks/queen-coordinator-T7LEO2QL.js +0 -2
- package/dist/cli/chunks/router-LMBUXWVM.js +0 -2
- package/dist/cli/chunks/routing-feedback-A5JZ2HTV.js +0 -2
- package/dist/cli/chunks/ruvector-commands-USEIUYOT.js +0 -8
- package/dist/cli/chunks/rvf-native-adapter-IVKAJC5C.js +0 -2
- package/dist/cli/chunks/safe-db-MREVE34L.js +0 -2
- package/dist/cli/chunks/schedule-QUQSORLA.js +0 -2
- package/dist/cli/chunks/scheduler-POQUTUKP.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-K4TX4WXV.js +0 -2
- package/dist/cli/chunks/unified-memory-EWCB3EHN.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-PH2ECVGQ.js +0 -2
- package/dist/cli/chunks/unified-persistence-2AM7JHBZ.js +0 -2
- package/dist/cli/chunks/upgrade-JLXJ6UTR.js +0 -5
- package/dist/cli/chunks/visual-security-B4KSJUTG.js +0 -2
- package/dist/cli/chunks/witness-chain-QHAHCB7E.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-LYU63YL7.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.13.
|
|
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.13.10");process.exit(0)}
|
|
2
|
+
import"./chunk-U5WFVIKL.js";import{b as $}from"./chunk-FBJUNJ2A.js";import{d as R}from"./chunk-H7AACUYS.js";import{b as k,c as C,d as b}from"./chunk-BM5BSYPW.js";import{c as W}from"./chunk-GQ6H37RN.js";import"./chunk-54RIPGMC.js";import"./chunk-OLETDPH2.js";import"./chunk-W3DCBOLL.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-EBSNGTSH.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-EBSNGTSH.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-WGP4YKPQ.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.13.10");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-KBJYXZI7.js";import"./chunk-OZLMIEJC.js";import"./chunk-37GWETSW.js";import"./chunk-F3AHUNWH.js";import"./chunk-WSPEAYPG.js";import"./chunk-TL5FMEKW.js";import"./chunk-DR4V75BF.js";import"./chunk-KQVTTP2S.js";import"./chunk-GQ6H37RN.js";import"./chunk-54RIPGMC.js";import"./chunk-OLETDPH2.js";import"./chunk-4TSLLWE7.js";import"./chunk-G427QR5W.js";import"./chunk-NRD76M7A.js";import"./chunk-GRTU5QOT.js";import"./chunk-PUN3KZ6N.js";import"./chunk-WIB6KRFJ.js";import"./chunk-Q7QKJY6Y.js";import"./chunk-JWV5ZM2S.js";import"./chunk-EJRDL5W5.js";import"./chunk-VUCCPPQ6.js";import"./chunk-W3DCBOLL.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.13.
|
|
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.13.10");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-J6H2LUBM.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-IYLSML27.js";import"./chunk-37GWETSW.js";import"./chunk-F3AHUNWH.js";import"./chunk-WSPEAYPG.js";import"./chunk-TL5FMEKW.js";import"./chunk-DR4V75BF.js";import"./chunk-KQVTTP2S.js";import"./chunk-GQ6H37RN.js";import"./chunk-OLETDPH2.js";import"./chunk-G427QR5W.js";import"./chunk-NRD76M7A.js";import"./chunk-GRTU5QOT.js";import"./chunk-PUN3KZ6N.js";import"./chunk-WIB6KRFJ.js";import"./chunk-Q7QKJY6Y.js";import"./chunk-JWV5ZM2S.js";import"./chunk-EJRDL5W5.js";import"./chunk-VUCCPPQ6.js";import"./chunk-W3DCBOLL.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};
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { randomUUID } from 'crypto';
|
|
8
8
|
import chalk from 'chalk';
|
|
9
|
-
import { recordPatternUsage } from '../../../learning/pattern-usage-recorder.js';
|
|
9
|
+
import { recordPatternUsage, recordPatternUsageBatch, } from '../../../learning/pattern-usage-recorder.js';
|
|
10
10
|
// ============================================================================
|
|
11
11
|
// Dream Scheduler State (persisted in kv_store between hook invocations)
|
|
12
12
|
// ============================================================================
|
|
@@ -739,16 +739,26 @@ export async function consolidateExperiencesToPatterns() {
|
|
|
739
739
|
LIMIT 1
|
|
740
740
|
`).get(agg.domain, patternName);
|
|
741
741
|
if (existing) {
|
|
742
|
-
//
|
|
742
|
+
// Issue #618: the aggregate writer must use the same audited write
|
|
743
|
+
// path as individual usage. The former inline UPDATE skipped every
|
|
744
|
+
// qe_pattern_usage row and never evaluated promotion.
|
|
745
|
+
recordPatternUsageBatch(db, {
|
|
746
|
+
patternId: existing.id,
|
|
747
|
+
usageCount: agg.cnt,
|
|
748
|
+
successfulUses: agg.successes,
|
|
749
|
+
metrics: { source: 'session-consolidation', domain: agg.domain, agent: agg.agent },
|
|
750
|
+
});
|
|
743
751
|
db.prepare(`
|
|
744
752
|
UPDATE qe_patterns
|
|
745
|
-
SET
|
|
746
|
-
successful_uses = successful_uses + ?,
|
|
747
|
-
confidence = MIN(0.99, confidence + 0.01),
|
|
748
|
-
quality_score = MIN(0.99, quality_score + 0.005),
|
|
749
|
-
updated_at = datetime('now')
|
|
753
|
+
SET confidence = MIN(0.99, confidence + 0.01), updated_at = datetime('now')
|
|
750
754
|
WHERE id = ?
|
|
751
|
-
`).run(
|
|
755
|
+
`).run(existing.id);
|
|
756
|
+
db.prepare(`
|
|
757
|
+
UPDATE qe_patterns
|
|
758
|
+
SET tier = 'long-term', updated_at = datetime('now')
|
|
759
|
+
WHERE id = ? AND tier = 'short-term'
|
|
760
|
+
AND successful_uses >= 3 AND success_rate >= 0.7 AND confidence >= 0.6
|
|
761
|
+
`).run(existing.id);
|
|
752
762
|
}
|
|
753
763
|
else {
|
|
754
764
|
const patternId = uuidv4();
|
|
@@ -219,28 +219,60 @@ function registerConsolidateCommand(learning) {
|
|
|
219
219
|
.action(async (options) => {
|
|
220
220
|
try {
|
|
221
221
|
const reasoningBank = await initializeLearningSystem();
|
|
222
|
-
const threshold =
|
|
223
|
-
const successRateMin =
|
|
222
|
+
const threshold = Number(options.threshold);
|
|
223
|
+
const successRateMin = Number(options.successRate);
|
|
224
|
+
const confidenceMin = 0.6;
|
|
225
|
+
if (!Number.isInteger(threshold) || threshold < 1) {
|
|
226
|
+
throw new Error('threshold must be a positive integer');
|
|
227
|
+
}
|
|
228
|
+
if (!Number.isFinite(successRateMin) || successRateMin < 0 || successRateMin > 1) {
|
|
229
|
+
throw new Error('success rate must be between 0 and 1');
|
|
230
|
+
}
|
|
224
231
|
const eligiblePatterns = [];
|
|
225
|
-
const searchResult = await reasoningBank.searchPatterns('
|
|
226
|
-
if (searchResult.success)
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
232
|
+
const searchResult = await reasoningBank.searchPatterns('', { limit: 1000 });
|
|
233
|
+
if (!searchResult.success)
|
|
234
|
+
throw new Error(searchResult.error.message);
|
|
235
|
+
for (const match of searchResult.value) {
|
|
236
|
+
const pattern = match.pattern;
|
|
237
|
+
if (pattern.tier === 'short-term' &&
|
|
238
|
+
pattern.successfulUses >= threshold &&
|
|
239
|
+
pattern.successRate >= successRateMin &&
|
|
240
|
+
pattern.confidence >= confidenceMin) {
|
|
241
|
+
eligiblePatterns.push({
|
|
242
|
+
id: pattern.id, name: pattern.name, domain: pattern.qeDomain,
|
|
243
|
+
successfulUses: pattern.successfulUses, successRate: pattern.successRate, currentTier: pattern.tier,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
let promotedCount = 0;
|
|
248
|
+
const failures = [];
|
|
249
|
+
if (!options.dryRun) {
|
|
250
|
+
for (const pattern of eligiblePatterns) {
|
|
251
|
+
const result = await reasoningBank.promotePattern(pattern.id);
|
|
252
|
+
if (result.success)
|
|
253
|
+
promotedCount++;
|
|
254
|
+
else
|
|
255
|
+
failures.push({ id: pattern.id, error: result.error.message });
|
|
235
256
|
}
|
|
236
257
|
}
|
|
237
258
|
if (options.json) {
|
|
238
|
-
printJson({
|
|
259
|
+
printJson({
|
|
260
|
+
dryRun: options.dryRun || false,
|
|
261
|
+
eligibleCount: eligiblePatterns.length,
|
|
262
|
+
promotedCount,
|
|
263
|
+
failedCount: failures.length,
|
|
264
|
+
threshold,
|
|
265
|
+
successRateMin,
|
|
266
|
+
confidenceMin,
|
|
267
|
+
patterns: eligiblePatterns,
|
|
268
|
+
failures,
|
|
269
|
+
});
|
|
239
270
|
}
|
|
240
271
|
else {
|
|
241
272
|
console.log(chalk.bold('\n🔄 Pattern Consolidation\n'));
|
|
242
273
|
console.log(` Promotion threshold: ${threshold} successful uses`);
|
|
243
274
|
console.log(` Minimum success rate: ${(successRateMin * 100).toFixed(0)}%`);
|
|
275
|
+
console.log(` Minimum confidence: ${(confidenceMin * 100).toFixed(0)}%`);
|
|
244
276
|
console.log(` Eligible patterns: ${eligiblePatterns.length}\n`);
|
|
245
277
|
if (eligiblePatterns.length === 0) {
|
|
246
278
|
console.log(chalk.dim(' No patterns eligible for promotion yet.'));
|
|
@@ -252,7 +284,13 @@ function registerConsolidateCommand(learning) {
|
|
|
252
284
|
console.log(chalk.dim(` Domain: ${p.domain}, Uses: ${p.successfulUses}, Rate: ${(p.successRate * 100).toFixed(0)}%`));
|
|
253
285
|
}
|
|
254
286
|
if (!options.dryRun) {
|
|
255
|
-
console.log(chalk.
|
|
287
|
+
console.log(chalk.green(`\n Promoted: ${promotedCount}`));
|
|
288
|
+
if (failures.length > 0) {
|
|
289
|
+
console.log(chalk.red(` Failed: ${failures.length}`));
|
|
290
|
+
for (const failure of failures) {
|
|
291
|
+
console.log(chalk.dim(` ${failure.id}: ${failure.error}`));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
256
294
|
}
|
|
257
295
|
else {
|
|
258
296
|
console.log(chalk.yellow('\n Dry run - no changes made'));
|
|
@@ -282,7 +320,7 @@ function registerExportCommand(learning) {
|
|
|
282
320
|
.action(async (options) => {
|
|
283
321
|
try {
|
|
284
322
|
const reasoningBank = await initializeLearningSystem();
|
|
285
|
-
const searchResult = await reasoningBank.searchPatterns('
|
|
323
|
+
const searchResult = await reasoningBank.searchPatterns('', { limit: 10000, domain: options.domain });
|
|
286
324
|
if (!searchResult.success)
|
|
287
325
|
throw new Error(searchResult.error.message);
|
|
288
326
|
const patterns = searchResult.value.map(m => m.pattern).filter(p => !options.longTermOnly || p.tier === 'long-term');
|
|
@@ -817,7 +855,7 @@ function registerExportFullCommand(learning) {
|
|
|
817
855
|
throw new Error('No learning database found. Run "aqe init --auto" first.');
|
|
818
856
|
const reasoningBank = await initializeLearningSystem();
|
|
819
857
|
const schemaVersion = await getSchemaVersion(dbPath);
|
|
820
|
-
const searchResult = await reasoningBank.searchPatterns('
|
|
858
|
+
const searchResult = await reasoningBank.searchPatterns('', { limit: 10000 });
|
|
821
859
|
if (!searchResult.success)
|
|
822
860
|
throw new Error(searchResult.error.message);
|
|
823
861
|
const patterns = searchResult.value.map(m => ({
|
|
@@ -912,7 +950,7 @@ function registerImportMergeCommand(learning) {
|
|
|
912
950
|
if (!importData.patterns || !Array.isArray(importData.patterns))
|
|
913
951
|
throw new Error('Invalid import file format: missing patterns array');
|
|
914
952
|
const reasoningBank = await initializeLearningSystem();
|
|
915
|
-
const existingResult = await reasoningBank.searchPatterns('
|
|
953
|
+
const existingResult = await reasoningBank.searchPatterns('', { limit: 10000 });
|
|
916
954
|
const existingNames = new Set();
|
|
917
955
|
if (existingResult.success)
|
|
918
956
|
for (const m of existingResult.value)
|
|
@@ -69,7 +69,7 @@ const FLAG_DESCRIPTIONS = {
|
|
|
69
69
|
useColdTierGNN: 'Cold-tier GNN training (R6, ADR-087)',
|
|
70
70
|
// Phase 5 Milestone 3 (ADR-087)
|
|
71
71
|
useMetaLearningEnhancements: 'Meta-learning enhancements (R7, ADR-087)',
|
|
72
|
-
useSublinearSolver: '
|
|
72
|
+
useSublinearSolver: 'Weighted PageRank solver (R8, ADR-087)',
|
|
73
73
|
useSpectralSparsification: 'Spectral graph sparsification (R9, ADR-087)',
|
|
74
74
|
useReservoirReplay: 'Reservoir replay with coherence gating (R10, ADR-087)',
|
|
75
75
|
// Phase 5 Milestone 4 (ADR-087)
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* Related: issue #383 item 2.
|
|
10
10
|
*/
|
|
11
11
|
import { Command } from 'commander';
|
|
12
|
-
export type LoadStatus = 'loaded' | 'missing' | 'required-missing';
|
|
12
|
+
export type LoadStatus = 'loaded' | 'missing' | 'unavailable' | 'required-missing';
|
|
13
|
+
export type PackageAvailability = 'published' | 'unpublished';
|
|
13
14
|
export interface NativeCheck {
|
|
14
15
|
/** npm package name as it appears in package.json */
|
|
15
16
|
readonly packageName: string;
|
|
@@ -21,6 +22,8 @@ export interface NativeCheck {
|
|
|
21
22
|
readonly affectsFlags: readonly string[];
|
|
22
23
|
/** Whether missing is fatal or just degrades performance */
|
|
23
24
|
readonly required: boolean;
|
|
25
|
+
/** Whether users can currently install the package from npm. */
|
|
26
|
+
readonly availability?: PackageAvailability;
|
|
24
27
|
}
|
|
25
28
|
export interface NativeResult extends NativeCheck {
|
|
26
29
|
readonly status: LoadStatus;
|
|
@@ -59,6 +62,7 @@ export interface UpgradeReport {
|
|
|
59
62
|
readonly requiredOk: boolean;
|
|
60
63
|
readonly optionalMissingCount: number;
|
|
61
64
|
readonly optionalLoadedCount: number;
|
|
65
|
+
readonly optionalUnavailableCount: number;
|
|
62
66
|
};
|
|
63
67
|
}
|
|
64
68
|
/**
|
|
@@ -50,11 +50,12 @@ export const NATIVE_CATALOG = [
|
|
|
50
50
|
required: false,
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
|
-
packageName: '@ruvector/solver
|
|
54
|
-
role: '
|
|
55
|
-
fallback: 'TypeScript power iteration — O(
|
|
53
|
+
packageName: '@ruvector/solver',
|
|
54
|
+
role: 'Async native weighted PageRank on the pattern citation graph',
|
|
55
|
+
fallback: 'TypeScript power iteration — O(iterations × (nodes + edges)); no hard size limit',
|
|
56
56
|
affectsFlags: ['useSublinearSolver'],
|
|
57
57
|
required: false,
|
|
58
|
+
availability: 'unpublished',
|
|
58
59
|
},
|
|
59
60
|
{
|
|
60
61
|
packageName: '@ruvector/attention',
|
|
@@ -90,6 +91,9 @@ export function detectNatives(catalog, probe) {
|
|
|
90
91
|
if (result.ok) {
|
|
91
92
|
return { ...check, status: 'loaded' };
|
|
92
93
|
}
|
|
94
|
+
if (check.availability === 'unpublished') {
|
|
95
|
+
return { ...check, status: 'unavailable', loadError: result.error.message };
|
|
96
|
+
}
|
|
93
97
|
const missingModule = isModuleNotFound(result.error);
|
|
94
98
|
const status = check.required
|
|
95
99
|
? 'required-missing'
|
|
@@ -150,11 +154,23 @@ export function buildRecommendations(input) {
|
|
|
150
154
|
});
|
|
151
155
|
}
|
|
152
156
|
}
|
|
157
|
+
// Known unpublished packages are informational: keep the fallback visible,
|
|
158
|
+
// but never offer an install command that is guaranteed to fail.
|
|
159
|
+
for (const n of input.natives) {
|
|
160
|
+
if (n.status === 'unavailable') {
|
|
161
|
+
recs.push({
|
|
162
|
+
severity: 'info',
|
|
163
|
+
message: `Optional native unavailable on npm: ${n.packageName} — ` +
|
|
164
|
+
`using ${n.fallback}. No install action is currently available.`,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
153
168
|
// Env override conflicts: user forced a flag ON but the native isn't loadable.
|
|
154
169
|
const flagByName = { ...input.flags };
|
|
155
170
|
for (const override of input.envOverrides) {
|
|
156
171
|
const natives = input.natives.filter((n) => n.affectsFlags.includes(override.flagName));
|
|
157
172
|
const anyLoaded = natives.some((n) => n.status === 'loaded');
|
|
173
|
+
const installableMissing = natives.find((n) => n.status === 'missing');
|
|
158
174
|
const wantsOn = override.value === 'true' || override.value === '1';
|
|
159
175
|
if (wantsOn && natives.length > 0 && !anyLoaded) {
|
|
160
176
|
const missing = natives.map((n) => n.packageName).join(', ');
|
|
@@ -162,7 +178,9 @@ export function buildRecommendations(input) {
|
|
|
162
178
|
severity: 'warn',
|
|
163
179
|
message: `${override.envVar}=${override.value} requests flag ${override.flagName}=true, ` +
|
|
164
180
|
`but required native(s) not loaded: ${missing}. The flag will silently fall back.`,
|
|
165
|
-
action:
|
|
181
|
+
action: installableMissing
|
|
182
|
+
? `npm install ${installableMissing.packageName}`
|
|
183
|
+
: undefined,
|
|
166
184
|
});
|
|
167
185
|
}
|
|
168
186
|
}
|
|
@@ -170,7 +188,10 @@ export function buildRecommendations(input) {
|
|
|
170
188
|
void nativeByName;
|
|
171
189
|
// All optionals loaded → positive-confirmation info line.
|
|
172
190
|
const optionalMissing = input.natives.filter((n) => !n.required && n.status === 'missing');
|
|
173
|
-
|
|
191
|
+
const optionalUnavailable = input.natives.filter((n) => !n.required && n.status === 'unavailable');
|
|
192
|
+
if (optionalMissing.length === 0 &&
|
|
193
|
+
optionalUnavailable.length === 0 &&
|
|
194
|
+
input.natives.every((n) => n.status !== 'required-missing')) {
|
|
174
195
|
recs.push({
|
|
175
196
|
severity: 'info',
|
|
176
197
|
message: 'All recommended native bindings are loaded — no action required.',
|
|
@@ -188,6 +209,7 @@ export function buildReport(input) {
|
|
|
188
209
|
});
|
|
189
210
|
const optionalLoadedCount = natives.filter((n) => !n.required && n.status === 'loaded').length;
|
|
190
211
|
const optionalMissingCount = natives.filter((n) => !n.required && n.status === 'missing').length;
|
|
212
|
+
const optionalUnavailableCount = natives.filter((n) => !n.required && n.status === 'unavailable').length;
|
|
191
213
|
const requiredOk = natives.filter((n) => n.required).every((n) => n.status === 'loaded');
|
|
192
214
|
return {
|
|
193
215
|
aqeVersion: input.aqeVersion,
|
|
@@ -204,6 +226,7 @@ export function buildReport(input) {
|
|
|
204
226
|
requiredOk,
|
|
205
227
|
optionalMissingCount,
|
|
206
228
|
optionalLoadedCount,
|
|
229
|
+
optionalUnavailableCount,
|
|
207
230
|
},
|
|
208
231
|
};
|
|
209
232
|
}
|
|
@@ -272,7 +295,10 @@ export function renderReportHuman(report) {
|
|
|
272
295
|
const okBadge = report.summary.requiredOk ? chalk.green('OK') : chalk.red('FAIL');
|
|
273
296
|
push(` Summary: required ${okBadge} ` +
|
|
274
297
|
`optional loaded ${chalk.cyan(report.summary.optionalLoadedCount)} / ` +
|
|
275
|
-
`${chalk.cyan(report.summary.optionalLoadedCount +
|
|
298
|
+
`${chalk.cyan(report.summary.optionalLoadedCount +
|
|
299
|
+
report.summary.optionalMissingCount +
|
|
300
|
+
report.summary.optionalUnavailableCount)} ` +
|
|
301
|
+
`(${chalk.cyan(report.summary.optionalUnavailableCount)} unavailable)`);
|
|
276
302
|
push('');
|
|
277
303
|
return lines.join('\n');
|
|
278
304
|
}
|
|
@@ -282,6 +308,8 @@ function statusBadge(status) {
|
|
|
282
308
|
return chalk.green('✓');
|
|
283
309
|
case 'missing':
|
|
284
310
|
return chalk.yellow('…');
|
|
311
|
+
case 'unavailable':
|
|
312
|
+
return chalk.gray('–');
|
|
285
313
|
case 'required-missing':
|
|
286
314
|
return chalk.red('✗');
|
|
287
315
|
}
|
|
@@ -108,7 +108,7 @@ export class VerificationPhase extends BasePhase {
|
|
|
108
108
|
db.close();
|
|
109
109
|
return true;
|
|
110
110
|
}
|
|
111
|
-
catch
|
|
111
|
+
catch {
|
|
112
112
|
db.close();
|
|
113
113
|
return false;
|
|
114
114
|
}
|
|
@@ -286,6 +286,12 @@ export class VerificationPhase extends BasePhase {
|
|
|
286
286
|
if (existing.learning?.enabled !== undefined) {
|
|
287
287
|
newConfig.learning.enabled = existing.learning.enabled;
|
|
288
288
|
}
|
|
289
|
+
if (existing.learning?.qualityThreshold !== undefined) {
|
|
290
|
+
newConfig.learning.qualityThreshold = existing.learning.qualityThreshold;
|
|
291
|
+
}
|
|
292
|
+
if (existing.learning?.promotionThreshold !== undefined) {
|
|
293
|
+
newConfig.learning.promotionThreshold = existing.learning.promotionThreshold;
|
|
294
|
+
}
|
|
289
295
|
// Preserve user's hook preferences
|
|
290
296
|
if (existing.hooks?.claudeCode !== undefined) {
|
|
291
297
|
newConfig.hooks.claudeCode = existing.hooks.claudeCode;
|
|
@@ -326,7 +332,7 @@ export class VerificationPhase extends BasePhase {
|
|
|
326
332
|
'# take effect immediately. The following settings are merged on reinstall:',
|
|
327
333
|
'# - domains.enabled (custom domains like visual-accessibility)',
|
|
328
334
|
'# - domains.disabled',
|
|
329
|
-
'# - learning.enabled',
|
|
335
|
+
'# - learning.enabled, qualityThreshold, and promotionThreshold',
|
|
330
336
|
'# - hooks.* preferences',
|
|
331
337
|
'# - workers.enabled',
|
|
332
338
|
'# - agents.maxConcurrent and defaultTimeout',
|
|
@@ -305,8 +305,8 @@ export interface RuVectorFeatureFlags {
|
|
|
305
305
|
useMetaLearningEnhancements: boolean;
|
|
306
306
|
/**
|
|
307
307
|
* Enable Sublinear Solver (R8, ADR-087)
|
|
308
|
-
*
|
|
309
|
-
* TypeScript power-iteration fallback; native @ruvector/solver
|
|
308
|
+
* Sparse weighted PageRank for graph-based pattern importance scoring.
|
|
309
|
+
* TypeScript power-iteration fallback; native @ruvector/solver optional.
|
|
310
310
|
* Consumer: pattern-promotion.ts (future integration)
|
|
311
311
|
* Activation: enable after bootstrapping a pattern citation graph
|
|
312
312
|
* @default false
|
|
@@ -108,7 +108,7 @@ export { VectorDeltaTracker, createVectorDeltaTracker, type PatternDelta, type S
|
|
|
108
108
|
export { GraphMAEEncoder, createGraphMAEEncoder, type GraphMAEConfig, type QEGraph, type GraphMAEResult, } from './graphmae-encoder';
|
|
109
109
|
export { HopfieldMemory, createHopfieldMemory, type HopfieldConfig, type StoredPattern, type RecallResult, } from './hopfield-memory';
|
|
110
110
|
export { ColdTierTrainer, InMemoryGraph, FileBackedGraph, createColdTierTrainer, type ColdTierConfig, type ColdTierGraph, type TrainingResult, type CacheStats, } from './cold-tier-trainer';
|
|
111
|
-
export { PageRankSolver, createPageRankSolver, type PatternGraph, type ImportanceScore, type SolverConfig, } from './solver-adapter';
|
|
111
|
+
export { PageRankSolver, createPageRankSolver, type PatternGraph, type ImportanceScore, type SolverConfig, type PageRankRuntimeOptions, } from './solver-adapter';
|
|
112
112
|
export { SpectralSparsifier, createSpectralSparsifier, type SparsifierGraph, type SpectralValidation, type SparsifierConfig, } from './spectral-sparsifier';
|
|
113
113
|
export { ReservoirReplayBuffer, createReservoirReplayBuffer, type ReservoirEntry, type ReservoirConfig, type ReservoirStats, type CoherenceTier, } from './reservoir-replay';
|
|
114
114
|
export { EpropNetwork, createEpropNetwork, type EpropConfig, type EpropStats, } from './eprop-learner';
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface PatternGraph {
|
|
2
|
+
nodes: string[];
|
|
3
|
+
edges: Array<[number, number, number]>;
|
|
4
|
+
}
|
|
5
|
+
export interface SolverConfig {
|
|
6
|
+
dampingFactor: number;
|
|
7
|
+
tolerance: number;
|
|
8
|
+
maxIterations: number;
|
|
9
|
+
}
|
|
10
|
+
export interface NativePageRankResult {
|
|
11
|
+
scores: number[] | Float64Array;
|
|
12
|
+
converged: boolean;
|
|
13
|
+
iterations: number;
|
|
14
|
+
residual: number;
|
|
15
|
+
}
|
|
16
|
+
export interface NativePageRankSolver {
|
|
17
|
+
pagerank(input: {
|
|
18
|
+
values: number[];
|
|
19
|
+
colIndices: number[];
|
|
20
|
+
rowPtrs: number[];
|
|
21
|
+
numNodes: number;
|
|
22
|
+
damping: number;
|
|
23
|
+
tolerance: number;
|
|
24
|
+
maxIterations: number;
|
|
25
|
+
}): Promise<NativePageRankResult>;
|
|
26
|
+
}
|
|
27
|
+
export interface NativeSolverModule {
|
|
28
|
+
NapiSolver: new () => NativePageRankSolver;
|
|
29
|
+
}
|
|
30
|
+
export type AsyncPageRankRunner = (graph: PatternGraph, config: SolverConfig, timeoutMs?: number) => Promise<Float64Array>;
|
|
31
|
+
/** Standard weighted PageRank with uniform dangling-node redistribution. */
|
|
32
|
+
export declare function computeTypeScriptPageRank(graph: PatternGraph, config: SolverConfig): Float64Array;
|
|
33
|
+
export declare function edgeListToCsr(graph: PatternGraph): {
|
|
34
|
+
values: number[];
|
|
35
|
+
colIndices: number[];
|
|
36
|
+
rowPtrs: number[];
|
|
37
|
+
};
|
|
38
|
+
export declare function loadNativeSolverModule(): NativeSolverModule | null;
|
|
39
|
+
export declare function runNativePageRank(module: NativeSolverModule, graph: PatternGraph, config: SolverConfig): Promise<Float64Array>;
|
|
40
|
+
export declare function runPageRankWorker(graph: PatternGraph, config: SolverConfig, timeoutMs?: number): Promise<Float64Array>;
|
|
41
|
+
//# sourceMappingURL=page-rank-backends.d.ts.map
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { Worker } from 'node:worker_threads';
|
|
3
|
+
/** Standard weighted PageRank with uniform dangling-node redistribution. */
|
|
4
|
+
export function computeTypeScriptPageRank(graph, config) {
|
|
5
|
+
const n = graph.nodes.length;
|
|
6
|
+
if (n === 0)
|
|
7
|
+
return new Float64Array();
|
|
8
|
+
const { dampingFactor: d, tolerance, maxIterations } = config;
|
|
9
|
+
const weightedOutDegree = new Float64Array(n);
|
|
10
|
+
const inEdges = new Array(n);
|
|
11
|
+
for (let i = 0; i < n; i++)
|
|
12
|
+
inEdges[i] = [];
|
|
13
|
+
for (const [from, to, weight] of graph.edges) {
|
|
14
|
+
weightedOutDegree[from] += weight;
|
|
15
|
+
inEdges[to].push([from, weight]);
|
|
16
|
+
}
|
|
17
|
+
const danglingNodes = [];
|
|
18
|
+
for (let i = 0; i < n; i++) {
|
|
19
|
+
if (weightedOutDegree[i] === 0)
|
|
20
|
+
danglingNodes.push(i);
|
|
21
|
+
}
|
|
22
|
+
let scores = new Float64Array(n);
|
|
23
|
+
scores.fill(1 / n);
|
|
24
|
+
const base = (1 - d) / n;
|
|
25
|
+
for (let iter = 0; iter < maxIterations; iter++) {
|
|
26
|
+
let danglingSum = 0;
|
|
27
|
+
for (const index of danglingNodes)
|
|
28
|
+
danglingSum += scores[index];
|
|
29
|
+
const danglingContribution = d * danglingSum / n;
|
|
30
|
+
const next = new Float64Array(n);
|
|
31
|
+
for (let i = 0; i < n; i++) {
|
|
32
|
+
let incoming = 0;
|
|
33
|
+
for (const [from, weight] of inEdges[i]) {
|
|
34
|
+
incoming += scores[from] * weight / weightedOutDegree[from];
|
|
35
|
+
}
|
|
36
|
+
next[i] = base + d * incoming + danglingContribution;
|
|
37
|
+
}
|
|
38
|
+
let maxDelta = 0;
|
|
39
|
+
for (let i = 0; i < n; i++) {
|
|
40
|
+
maxDelta = Math.max(maxDelta, Math.abs(next[i] - scores[i]));
|
|
41
|
+
}
|
|
42
|
+
scores = next;
|
|
43
|
+
if (maxDelta < tolerance)
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
return scores;
|
|
47
|
+
}
|
|
48
|
+
export function edgeListToCsr(graph) {
|
|
49
|
+
const rows = Array.from({ length: graph.nodes.length }, () => []);
|
|
50
|
+
for (const [from, to, weight] of graph.edges)
|
|
51
|
+
rows[from].push([to, weight]);
|
|
52
|
+
const values = [];
|
|
53
|
+
const colIndices = [];
|
|
54
|
+
const rowPtrs = [0];
|
|
55
|
+
for (const row of rows) {
|
|
56
|
+
row.sort((left, right) => left[0] - right[0]);
|
|
57
|
+
for (const [column, value] of row) {
|
|
58
|
+
colIndices.push(column);
|
|
59
|
+
values.push(value);
|
|
60
|
+
}
|
|
61
|
+
rowPtrs.push(values.length);
|
|
62
|
+
}
|
|
63
|
+
return { values, colIndices, rowPtrs };
|
|
64
|
+
}
|
|
65
|
+
export function loadNativeSolverModule() {
|
|
66
|
+
try {
|
|
67
|
+
const req = createRequire(import.meta.url);
|
|
68
|
+
const candidate = req('@ruvector/solver');
|
|
69
|
+
return typeof candidate.NapiSolver === 'function'
|
|
70
|
+
? candidate
|
|
71
|
+
: null;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export async function runNativePageRank(module, graph, config) {
|
|
78
|
+
const csr = edgeListToCsr(graph);
|
|
79
|
+
const result = await new module.NapiSolver().pagerank({
|
|
80
|
+
...csr,
|
|
81
|
+
numNodes: graph.nodes.length,
|
|
82
|
+
damping: config.dampingFactor,
|
|
83
|
+
tolerance: config.tolerance,
|
|
84
|
+
maxIterations: config.maxIterations,
|
|
85
|
+
});
|
|
86
|
+
if (!result.converged)
|
|
87
|
+
throw new Error('Native PageRank did not converge');
|
|
88
|
+
return validatePageRankScores(result.scores, graph.nodes.length);
|
|
89
|
+
}
|
|
90
|
+
export function runPageRankWorker(graph, config, timeoutMs = 30_000) {
|
|
91
|
+
const workerSource = `
|
|
92
|
+
const { parentPort, workerData } = require('node:worker_threads');
|
|
93
|
+
const compute = ${computeTypeScriptPageRank.toString()};
|
|
94
|
+
try {
|
|
95
|
+
const graph = {
|
|
96
|
+
nodes: new Array(workerData.nodeCount),
|
|
97
|
+
edges: workerData.edges,
|
|
98
|
+
};
|
|
99
|
+
const scores = compute(graph, workerData.config);
|
|
100
|
+
parentPort.postMessage(scores, [scores.buffer]);
|
|
101
|
+
} catch (error) {
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
`;
|
|
105
|
+
return new Promise((resolve, reject) => {
|
|
106
|
+
const worker = new Worker(workerSource, {
|
|
107
|
+
eval: true,
|
|
108
|
+
workerData: {
|
|
109
|
+
nodeCount: graph.nodes.length,
|
|
110
|
+
edges: graph.edges,
|
|
111
|
+
config,
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
const timeout = setTimeout(() => {
|
|
115
|
+
void worker.terminate();
|
|
116
|
+
reject(new Error(`PageRank worker timed out after ${timeoutMs}ms`));
|
|
117
|
+
}, timeoutMs);
|
|
118
|
+
worker.once('message', (scores) => {
|
|
119
|
+
clearTimeout(timeout);
|
|
120
|
+
resolve(validatePageRankScores(scores, graph.nodes.length));
|
|
121
|
+
});
|
|
122
|
+
worker.once('error', (error) => {
|
|
123
|
+
clearTimeout(timeout);
|
|
124
|
+
reject(error);
|
|
125
|
+
});
|
|
126
|
+
worker.once('exit', (code) => {
|
|
127
|
+
if (code !== 0) {
|
|
128
|
+
clearTimeout(timeout);
|
|
129
|
+
reject(new Error(`PageRank worker exited with code ${code}`));
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
function validatePageRankScores(input, expectedLength) {
|
|
135
|
+
const scores = input instanceof Float64Array ? input : Float64Array.from(input);
|
|
136
|
+
if (scores.length !== expectedLength) {
|
|
137
|
+
throw new Error(`PageRank returned ${scores.length} scores for ${expectedLength} nodes`);
|
|
138
|
+
}
|
|
139
|
+
let total = 0;
|
|
140
|
+
for (const score of scores) {
|
|
141
|
+
if (!Number.isFinite(score) || score < 0) {
|
|
142
|
+
throw new Error('PageRank returned an invalid score');
|
|
143
|
+
}
|
|
144
|
+
total += score;
|
|
145
|
+
}
|
|
146
|
+
if (!(total > 0))
|
|
147
|
+
throw new Error('PageRank returned a zero score total');
|
|
148
|
+
if (Math.abs(total - 1) > 1e-12) {
|
|
149
|
+
for (let i = 0; i < scores.length; i++)
|
|
150
|
+
scores[i] /= total;
|
|
151
|
+
}
|
|
152
|
+
return scores;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=page-rank-backends.js.map
|