agentic-qe 3.11.3 → 3.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +48 -0
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-2HMUXHWY.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-BFRW7HEU.js → agent-booster-wasm-62I6ZNRW.js} +2 -2
- package/dist/cli/chunks/{agent-handler-ZVC3VFPC.js → agent-handler-E2TZKKBS.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-3WU3CVSX.js → agent-memory-branch-JHAHC2NH.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-M2NKRVRE.js +2 -0
- package/dist/cli/chunks/{arena-QMRLNQUC.js → arena-72ZV65BR.js} +4 -4
- package/dist/cli/chunks/{arena-JMVTWWG5.js → arena-KLG3YSSR.js} +2 -2
- package/dist/cli/chunks/{audit-TTWAAV7P.js → audit-EPB7ETMT.js} +2 -2
- package/dist/cli/chunks/base-CCHC2DAC.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-EBRXKEX5.js → better-sqlite3-URULPKRF.js} +2 -2
- package/dist/cli/chunks/{brain-handler-FXPLJCPV.js → brain-handler-FBMYEERK.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-CJJG6X3I.js → branch-enumerator-C7MPNYT7.js} +2 -2
- package/dist/cli/chunks/{browser-LI2CDWVR.js → browser-UUDUDYLR.js} +2 -2
- package/dist/cli/chunks/browser-workflow-4DGHFYY3.js +2 -0
- package/dist/cli/chunks/{chunk-EXCU4J7T.js → chunk-2KNFS3L5.js} +1 -1
- package/dist/cli/chunks/{chunk-H6YFMUFG.js → chunk-2WPSMQIL.js} +1 -1
- package/dist/cli/chunks/chunk-37ZDGJ3H.js +2 -0
- package/dist/cli/chunks/{chunk-BQ5EJPK3.js → chunk-3E7D3A35.js} +1 -1
- package/dist/cli/chunks/{chunk-3BREKEL5.js → chunk-3FJZMQJ7.js} +2 -2
- package/dist/cli/chunks/chunk-3SBUL72V.js +2 -0
- package/dist/cli/chunks/{chunk-3XLGXCSX.js → chunk-3SKIZDKL.js} +1 -1
- package/dist/cli/chunks/{chunk-ED7MD6OI.js → chunk-3SRPFBU7.js} +3 -3
- package/dist/cli/chunks/{chunk-3FOFPGHH.js → chunk-4BFCLSDN.js} +2 -2
- package/dist/cli/chunks/{chunk-7S7QF4HJ.js → chunk-4JFH3MVA.js} +1 -1
- package/dist/cli/chunks/{chunk-IJHPZMEQ.js → chunk-4RHNPRAP.js} +2 -2
- package/dist/cli/chunks/{chunk-RRSUW2TK.js → chunk-4YT5YN5G.js} +2 -2
- package/dist/cli/chunks/{chunk-O7ZDQ5FF.js → chunk-54B6P2WS.js} +3 -3
- package/dist/cli/chunks/{chunk-EBCUWMLX.js → chunk-5AQ7FXYG.js} +2 -2
- package/dist/cli/chunks/{chunk-H7Y43HBQ.js → chunk-5P7Q5YNC.js} +1 -1
- package/dist/cli/chunks/{chunk-ZDPQB67L.js → chunk-5U2WHPXL.js} +1 -1
- package/dist/cli/chunks/{chunk-OFMVC6P3.js → chunk-5VSQAGA2.js} +1 -1
- package/dist/cli/chunks/{chunk-EHEFI6LR.js → chunk-5Z4FBCBK.js} +1 -1
- package/dist/cli/chunks/{chunk-LKLWIP4Z.js → chunk-63QUN3JK.js} +1 -1
- package/dist/cli/chunks/{chunk-WYJFVSEB.js → chunk-6545AS2J.js} +2 -2
- package/dist/cli/chunks/{chunk-7UOH55UT.js → chunk-6GYGAW53.js} +2 -2
- package/dist/cli/chunks/{chunk-VFEU4JM4.js → chunk-6JUOH6L4.js} +2 -2
- package/dist/cli/chunks/{chunk-DPYNXEBC.js → chunk-6W3QHS45.js} +2 -2
- package/dist/cli/chunks/{chunk-L6PH7JIE.js → chunk-7ADD2ZQL.js} +2 -2
- package/dist/cli/chunks/{chunk-WTKT2AD3.js → chunk-7AWK43JN.js} +2 -2
- package/dist/cli/chunks/{chunk-HRD5I7ES.js → chunk-7IKWF2AD.js} +1 -1
- package/dist/cli/chunks/{chunk-PLQADRA6.js → chunk-7QTB5XIQ.js} +2 -2
- package/dist/cli/chunks/{chunk-4ITHKHR5.js → chunk-A4OMK3FO.js} +2 -2
- package/dist/cli/chunks/{chunk-GCIL7PK7.js → chunk-ADFKY3X2.js} +2 -2
- package/dist/cli/chunks/{chunk-27MMZQ7X.js → chunk-AE6HXMOG.js} +1 -1
- package/dist/cli/chunks/{chunk-6F43POT6.js → chunk-AJXGGTX7.js} +1 -1
- package/dist/cli/chunks/{chunk-KTYESESI.js → chunk-AQIEK4SY.js} +2 -2
- package/dist/cli/chunks/{chunk-RXN5DWVM.js → chunk-ARPBG6FQ.js} +2 -2
- package/dist/cli/chunks/{chunk-26KHL4VO.js → chunk-AYGEWPN4.js} +1 -1
- package/dist/cli/chunks/{chunk-MX5FMAY5.js → chunk-B5XUWHKQ.js} +1 -1
- package/dist/cli/chunks/{chunk-UFZCHVLH.js → chunk-BMQDELPA.js} +1 -1
- package/dist/cli/chunks/{chunk-S2T2BXUL.js → chunk-BRLUNIR4.js} +2 -2
- package/dist/cli/chunks/{chunk-H2YOWAEB.js → chunk-CNF3ZWLM.js} +2 -2
- package/dist/cli/chunks/{chunk-3E3PSEC5.js → chunk-D5S47YUS.js} +2 -2
- package/dist/cli/chunks/{chunk-A4NYOH7P.js → chunk-D6CKKNYC.js} +2 -2
- package/dist/cli/chunks/{chunk-PUUGIBFF.js → chunk-DNOU2HVQ.js} +2 -2
- package/dist/cli/chunks/{chunk-SWRGPCZ2.js → chunk-DRMHVY4T.js} +4 -4
- package/dist/cli/chunks/{chunk-CGKHG46K.js → chunk-EONKMHKO.js} +2 -2
- package/dist/cli/chunks/{chunk-AKOGQT3A.js → chunk-EZRHSHOQ.js} +2 -2
- package/dist/cli/chunks/{chunk-ATFADWGD.js → chunk-FRFVN6AA.js} +2 -2
- package/dist/cli/chunks/{chunk-CYJ6O5VZ.js → chunk-FSGMRQFC.js} +2 -2
- package/dist/cli/chunks/{chunk-22CUJA33.js → chunk-G3TFNY4T.js} +2 -2
- package/dist/cli/chunks/{chunk-AC6OZTY4.js → chunk-GOQ4P2PB.js} +2 -2
- package/dist/cli/chunks/chunk-GRQ36XUH.js +24 -0
- package/dist/cli/chunks/{chunk-RWUGXU2K.js → chunk-HH6NCBSP.js} +3 -3
- package/dist/cli/chunks/{chunk-KHUN65Q3.js → chunk-HJ24KMC2.js} +1 -1
- package/dist/cli/chunks/{chunk-SIAJP3YA.js → chunk-HJO4RNOW.js} +2 -2
- package/dist/cli/chunks/{chunk-B65CRJN6.js → chunk-HT6WAYIR.js} +1 -1
- package/dist/cli/chunks/{chunk-7SBMTSGY.js → chunk-HWBMYR5W.js} +3 -3
- package/dist/cli/chunks/{chunk-KULBMV6K.js → chunk-IB3ZPLFA.js} +2 -2
- package/dist/cli/chunks/{chunk-5746QYRF.js → chunk-ICCTQ5LO.js} +2 -2
- package/dist/cli/chunks/{chunk-NBOEXSV2.js → chunk-IF3HPQNV.js} +1 -1
- package/dist/cli/chunks/{chunk-KXRI4MR3.js → chunk-IQBZBUP5.js} +2 -2
- package/dist/cli/chunks/{chunk-ZM7WOA3K.js → chunk-JCTCM6IR.js} +1 -1
- package/dist/cli/chunks/{chunk-PSL53AQ4.js → chunk-JDFPAJGB.js} +10 -10
- package/dist/cli/chunks/{chunk-SFDBIO64.js → chunk-JFLSQH2X.js} +2 -2
- package/dist/cli/chunks/{chunk-BHZI6PDR.js → chunk-JNQN5DNS.js} +1 -1
- package/dist/cli/chunks/{chunk-ABD6JBNO.js → chunk-JPENUVCI.js} +1 -1
- package/dist/cli/chunks/{chunk-PMHSTMHV.js → chunk-KUZMVH6N.js} +3 -3
- package/dist/cli/chunks/{chunk-6IHB3T6M.js → chunk-KYTFIP6R.js} +2 -2
- package/dist/cli/chunks/{chunk-QCCXH5DK.js → chunk-LKURMUBU.js} +4 -4
- package/dist/cli/chunks/{chunk-BA7PJS3Y.js → chunk-LLUPRGOR.js} +2 -2
- package/dist/cli/chunks/{chunk-S7KDHA6P.js → chunk-LMJUMUQJ.js} +4 -4
- package/dist/cli/chunks/{chunk-7FVWETN4.js → chunk-LW5DHT3Z.js} +2 -2
- package/dist/cli/chunks/{chunk-WCVZHXWL.js → chunk-MALOUGSF.js} +2 -2
- package/dist/cli/chunks/{chunk-ECGASTG7.js → chunk-MCT4CD5M.js} +2 -2
- package/dist/cli/chunks/{chunk-MU36VPXV.js → chunk-MWFJC5HR.js} +1 -1
- package/dist/cli/chunks/{chunk-NWUVXLBB.js → chunk-MYMIEQSZ.js} +4 -4
- package/dist/cli/chunks/{chunk-XKUN5PDH.js → chunk-N2BJN6AO.js} +3 -3
- package/dist/cli/chunks/{chunk-B7XPSXK6.js → chunk-NBBLPDJX.js} +2 -2
- package/dist/cli/chunks/{chunk-6KKKPVOF.js → chunk-NFJT7XXR.js} +1 -1
- package/dist/cli/chunks/{chunk-UTGW75AZ.js → chunk-NSPCZPTB.js} +2 -2
- package/dist/cli/chunks/{chunk-GBCDJJWH.js → chunk-NV3TXXOW.js} +2 -2
- package/dist/cli/chunks/{chunk-SMHYPPO6.js → chunk-O5NEJIHB.js} +2 -2
- package/dist/cli/chunks/{chunk-REZ2GZQ3.js → chunk-O7PVZ32A.js} +1 -1
- package/dist/cli/chunks/{chunk-BFBZFUBP.js → chunk-ODZSQVEW.js} +1 -1
- package/dist/cli/chunks/{chunk-FJRRXCIS.js → chunk-P6S6ZVB5.js} +1 -1
- package/dist/cli/chunks/{chunk-LGEZ3ZJX.js → chunk-PEIQDQXN.js} +2 -2
- package/dist/cli/chunks/{chunk-CCDGNJZX.js → chunk-PFWJQPUC.js} +2 -2
- package/dist/cli/chunks/{chunk-WV66MXJI.js → chunk-PQUXFSN6.js} +2 -2
- package/dist/cli/chunks/{chunk-54TDOQAH.js → chunk-Q7ORVHJB.js} +3 -3
- package/dist/cli/chunks/{chunk-NJ2RY4OL.js → chunk-QEVX4GWF.js} +2 -2
- package/dist/cli/chunks/{chunk-36HTS4EP.js → chunk-QJ5NCYJ3.js} +2 -2
- package/dist/cli/chunks/{chunk-6GVRP64A.js → chunk-QMC5MTBV.js} +2 -2
- package/dist/cli/chunks/{chunk-P4UGVVVX.js → chunk-QSDIY3E2.js} +1 -1
- package/dist/cli/chunks/chunk-RCPD6F4R.js +2 -0
- package/dist/cli/chunks/{chunk-7QIYYYUE.js → chunk-RFQBDMAP.js} +1 -1
- package/dist/cli/chunks/{chunk-DZZ4AJQI.js → chunk-SFDUT5WM.js} +2 -2
- package/dist/cli/chunks/{chunk-3CBYKKRW.js → chunk-SL3SNOO2.js} +2 -2
- package/dist/cli/chunks/{chunk-LW5TUN5F.js → chunk-SRVTNG6L.js} +2 -2
- package/dist/cli/chunks/{chunk-A43MKBSX.js → chunk-T76RFXQX.js} +2 -2
- package/dist/cli/chunks/{chunk-VTDWQ7WI.js → chunk-TCVEKRPI.js} +2 -2
- package/dist/cli/chunks/{chunk-DNOBN3IR.js → chunk-TCWR6TDN.js} +2 -2
- package/dist/cli/chunks/{chunk-FPKKKUWF.js → chunk-THKZVOZV.js} +1 -1
- package/dist/cli/chunks/{chunk-JVXPKHND.js → chunk-TPMBFARK.js} +31 -26
- package/dist/cli/chunks/{chunk-OVEG5MEL.js → chunk-TQ373GGI.js} +2 -2
- package/dist/cli/chunks/{chunk-242B625Q.js → chunk-TSWF3AGQ.js} +2 -2
- package/dist/cli/chunks/{chunk-WLLGPGQY.js → chunk-TU6YN43Q.js} +1 -1
- package/dist/cli/chunks/{chunk-5EW36WTI.js → chunk-U34OZXD6.js} +2 -2
- package/dist/cli/chunks/{chunk-B6USJW5E.js → chunk-U3AVZGQA.js} +1 -1
- package/dist/cli/chunks/{chunk-OQGELUM2.js → chunk-UCYTY4LG.js} +2 -2
- package/dist/cli/chunks/{chunk-DS7AZD26.js → chunk-UJMTKXPI.js} +2 -2
- package/dist/cli/chunks/{chunk-6JR2RSY2.js → chunk-UQ72K44T.js} +2 -2
- package/dist/cli/chunks/{chunk-77QJQRL2.js → chunk-VCUCD3B5.js} +2 -2
- package/dist/cli/chunks/{chunk-G6MPXBCD.js → chunk-VJGHRWMH.js} +2 -2
- package/dist/cli/chunks/{chunk-XCSEJQXR.js → chunk-VKJQAKYG.js} +2 -2
- package/dist/cli/chunks/{chunk-FZLCKIPP.js → chunk-VO6YJGB4.js} +2 -2
- package/dist/cli/chunks/{chunk-CLZ5RQVA.js → chunk-VQU7DMEY.js} +2 -2
- package/dist/cli/chunks/{chunk-EZ4GKHSI.js → chunk-WMIRAD3J.js} +2 -2
- package/dist/cli/chunks/{chunk-UMWYL37S.js → chunk-WNMDWP5A.js} +2 -2
- package/dist/cli/chunks/{chunk-PW4GGJMP.js → chunk-WQZ2WRO4.js} +1 -1
- package/dist/cli/chunks/{chunk-QPMISAWB.js → chunk-WZYNY3VF.js} +1 -1
- package/dist/cli/chunks/{chunk-6WWNK67C.js → chunk-X64BEXUY.js} +173 -173
- package/dist/cli/chunks/{chunk-L44XXD3X.js → chunk-XHRLBJTM.js} +2 -2
- package/dist/cli/chunks/{chunk-N2K2EQFH.js → chunk-XQ6DW5FV.js} +2 -2
- package/dist/cli/chunks/chunk-XXRTWG7O.js +2 -0
- package/dist/cli/chunks/{chunk-PUK5NE47.js → chunk-Y4AXOHW4.js} +1 -1
- package/dist/cli/chunks/{chunk-SFGBC5RP.js → chunk-YKSWC7I4.js} +2 -2
- package/dist/cli/chunks/{chunk-YPRM6ZFL.js → chunk-YNK6SUPU.js} +2 -2
- package/dist/cli/chunks/{chunk-2OUXYSQV.js → chunk-YUHM72VQ.js} +2 -2
- package/dist/cli/chunks/{chunk-DZ7PWB6E.js → chunk-YZ5EQR37.js} +2 -2
- package/dist/cli/chunks/{chunk-Q2A2XQGF.js → chunk-Z2REKBD6.js} +2 -2
- package/dist/cli/chunks/{chunk-JWTMVC6E.js → chunk-ZFCVT43J.js} +2 -2
- package/dist/cli/chunks/{chunk-VUEYLW5P.js → chunk-ZKCKOQJI.js} +2 -2
- package/dist/cli/chunks/{chunk-7PDUD7FF.js → chunk-ZSA6V5FH.js} +2 -2
- package/dist/cli/chunks/{chunk-SLU35IDJ.js → chunk-ZSBJNE35.js} +2 -2
- package/dist/cli/chunks/{chunk-LMA6KEZH.js → chunk-ZYZT2CDX.js} +1 -1
- package/dist/cli/chunks/{ci-JW4O2J3W.js → ci-HQCRSCC7.js} +2 -2
- package/dist/cli/chunks/{ci-output-JNXJV4B2.js → ci-output-YBVXLA6O.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-XDD4KUGR.js → circuit-breaker-ULGMF2QN.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-L6IZOGYZ.js → claude-flow-setup-MKZ2LJXK.js} +2 -2
- package/dist/cli/chunks/client-2OVEDWGU.js +2 -0
- package/dist/cli/chunks/{cline-installer-PK5SMN2B.js → cline-installer-WZQ6XBWN.js} +2 -2
- package/dist/cli/chunks/{code-ZDVX3SQH.js → code-H3KGH45S.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-VXZNKEU5.js → code-index-extractor-NUVEAJ7C.js} +2 -2
- package/dist/cli/chunks/{codex-installer-OXKSIX7H.js → codex-installer-JQI6E6CV.js} +2 -2
- package/dist/cli/chunks/{completions-VRFFK223.js → completions-NDF4PFE7.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-FTIMV74J.js → complexity-analyzer-XCZH66HG.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-KTYBBPN4.js → continuedev-installer-Z4AJGZ7S.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-WDC3YNUR.js → copilot-installer-K4IPAL7C.js} +2 -2
- package/dist/cli/chunks/core-handlers-UXRRYP52.js +2 -0
- package/dist/cli/chunks/{cost-tracker-6MH4H33B.js → cost-tracker-35KXAB23.js} +2 -2
- package/dist/cli/chunks/{coverage-NHATLNS4.js → coverage-QW5I4TYZ.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-PV3VQVLO.js +2 -0
- package/dist/cli/chunks/{cursor-installer-VQSUJDFB.js → cursor-installer-P4Z7RMIZ.js} +2 -2
- package/dist/cli/chunks/{daemon-ZSK6CLQR.js → daemon-ESUEM6VB.js} +4 -4
- package/dist/cli/chunks/{daemon-3VAOEKQW.js → daemon-WQWTCYBM.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-HZ6OGYIH.js → dag-attention-scheduler-7XD2VGON.js} +2 -2
- package/dist/cli/chunks/{detect-CGU3SC63.js → detect-GZ3P4DI7.js} +2 -2
- package/dist/cli/chunks/{dist-node-DIBQ7PTA.js → dist-node-6WWAW7OP.js} +2 -2
- package/dist/cli/chunks/{domain-handler-DCMGAYXS.js → domain-handler-3GTLWARQ.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-UWFKBZTJ.js → domain-transfer-TQYO3SVG.js} +2 -2
- package/dist/cli/chunks/dream-UFUXVJQC.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-7247LAU3.js → embed-and-insert-pattern-BGIMA77V.js} +2 -2
- package/dist/cli/chunks/{eval-6KR7TFOK.js → eval-SXV6DRDD.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-IIOR6RVV.js → experience-capture-middleware-TT6WCT2S.js} +3 -3
- package/dist/cli/chunks/{fast-paths-M7OGD4ZI.js → fast-paths-HTAZHEQP.js} +2 -2
- package/dist/cli/chunks/{feature-flags-GGUXHRJI.js → feature-flags-DIE3Z2B4.js} +2 -2
- package/dist/cli/chunks/{feature-flags-U75KFIGH.js → feature-flags-WBUKU54W.js} +2 -2
- package/dist/cli/chunks/{file-discovery-V52AYEB7.js → file-discovery-SKDETFS3.js} +2 -2
- package/dist/cli/chunks/{fleet-2UH72CK4.js → fleet-WCWEPAVU.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-J2GDLT3P.js → gnn-wrapper-KWZOWBYS.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-QIDQHRXT.js → heartbeat-handler-3AGYHVG2.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-MBG3SARO.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-5HXA3QB3.js +2 -0
- package/dist/cli/chunks/hnsw-index-PZRQWBRG.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-IU62PIY5.js → hnsw-legacy-bridge-6OJJDZHL.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-QNZJOJAB.js → hnswlib-node-LAFK5QZ4.js} +2 -2
- package/dist/cli/chunks/{hooks-ZI4D3ATS.js → hooks-OXEBTLXV.js} +10 -10
- package/dist/cli/chunks/hybrid-router-NQRIE2GG.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-6JEERAGA.js → hypergraph-engine-NL74PRHD.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-YMDGYCB6.js → hypergraph-handler-KZ54AEEL.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-46347ZDV.js +2 -0
- package/dist/cli/chunks/{init-handler-N57NW3QI.js → init-handler-XKZXRXPG.js} +6 -6
- package/dist/cli/chunks/init-wizard-CJYP4WKO.js +2 -0
- package/dist/cli/chunks/kernel-22KQZ56U.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-7ABTGXJ5.js → kilocode-installer-WISQMJK7.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-2JFOHLVI.js → kiro-installer-O7TBB3GM.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-KM3JDBGR.js +2 -0
- package/dist/cli/chunks/{learning-3P3ZXRGD.js → learning-6IZBGVRU.js} +3 -3
- package/dist/cli/chunks/{llm-router-AWB2KHDW.js → llm-router-QDMQPPQ7.js} +4 -4
- package/dist/cli/chunks/llm-router-service-IFO6GRRO.js +2 -0
- package/dist/cli/chunks/{load-GGVBCBGX.js → load-KLAJJGL5.js} +2 -2
- package/dist/cli/chunks/load-test-TTKCYAPB.js +2 -0
- package/dist/cli/chunks/{mcp-33NHIBN3.js → mcp-SZOPQZIZ.js} +2 -2
- package/dist/cli/chunks/{memory-IVAQS4OW.js → memory-G3WY74C6.js} +5 -5
- package/dist/cli/chunks/memory-backend-ELHCX2ZT.js +2 -0
- package/dist/cli/chunks/memory-handlers-3SKYQZTL.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-NWQY6IN2.js → multi-model-executor-TDNQGTOT.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-FBB4JOEV.js → opencode-installer-NGYGEDMV.js} +2 -2
- package/dist/cli/chunks/{orchestrator-GDAXR7DH.js → orchestrator-KPI5DY2C.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-TMXAYD43.js +2 -0
- package/dist/cli/chunks/{pipeline-VIKAOIBE.js → pipeline-CSDCC675.js} +2 -2
- package/dist/cli/chunks/{platform-FFVP36LH.js → platform-Q5XKEVKH.js} +2 -2
- package/dist/cli/chunks/{plugin-TI6QOLXH.js → plugin-XKKR3GVL.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-AZRNI2OL.js → prime-radiant-advanced-wasm-22QVNKEN.js} +2 -2
- package/dist/cli/chunks/protocol-executor-BPLR5EJC.js +2 -0
- package/dist/cli/chunks/{protocol-handler-J4EA34B3.js → protocol-handler-REQKTJGG.js} +2 -2
- package/dist/cli/chunks/{prove-ADVRMAWS.js → prove-NOFUFSQN.js} +2 -2
- package/dist/cli/chunks/provider-manager-4MMD5QKL.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-P7KNT3WZ.js +2 -0
- package/dist/cli/chunks/{quality-GB5SJFSD.js → quality-3DQ2H5TK.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-NBZZ4MGC.js +2 -0
- package/dist/cli/chunks/{real-embeddings-GDRJ4XSH.js → real-embeddings-FCGNYWLL.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-Q6EISUDV.js → roocode-installer-HX3CNRIR.js} +2 -2
- package/dist/cli/chunks/router-2RXR6J2Q.js +2 -0
- package/dist/cli/chunks/routing-feedback-AVAA76TK.js +2 -0
- package/dist/cli/chunks/{routing-handler-RO4RTRAG.js → routing-handler-YRZ2LDCR.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-FFIHCGVQ.js → ruvector-commands-GCQVBJ4E.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-JGEK3A5Y.js → rvf-dual-writer-B562P3ZC.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-OVYC4QM6.js → rvf-migration-adapter-NAGFKCMD.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-U6L77QTS.js → rvf-migration-coordinator-WWFBEJ5Q.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-X2YDJA55.js +2 -0
- package/dist/cli/chunks/safe-db-4PRU65BK.js +2 -0
- package/dist/cli/chunks/schedule-2AST5CHW.js +2 -0
- package/dist/cli/chunks/scheduler-SW6II7OU.js +2 -0
- package/dist/cli/chunks/{security-QPQIDAIL.js → security-IFOYTD75.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-JRJTI4UD.js → shared-rvf-adapter-TYD5TQ35.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-DSHGURDA.js → shared-rvf-dual-writer-YGOOVDQZ.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-OB5NEGAK.js +2 -0
- package/dist/cli/chunks/{status-handler-SBT3MZTX.js → status-handler-HFPWSCBY.js} +2 -2
- package/dist/cli/chunks/{structural-health-UVECCN7U.js → structural-health-KZI6YMKV.js} +2 -2
- package/dist/cli/chunks/{sync-ZLZ4CZFJ.js → sync-ABZNNYRC.js} +2 -2
- package/dist/cli/chunks/{sync-XXIGTGCG.js → sync-Z5BDDBMK.js} +2 -2
- package/dist/cli/chunks/{task-handler-73YAVOKJ.js → task-handler-5ACZEPJ7.js} +2 -2
- package/dist/cli/chunks/{task-handlers-PKECV27D.js → task-handlers-UZWDPL6A.js} +3 -3
- package/dist/cli/chunks/{test-U3SXW4SV.js → test-APO3MCVV.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-POJND3GV.js → test-scheduling-EFZA5G5C.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-ICX6SIXJ.js → token-bootstrap-J2OPLNUK.js} +2 -2
- package/dist/cli/chunks/{token-usage-WCHJUVGT.js → token-usage-VHWVNN4R.js} +2 -2
- package/dist/cli/chunks/{transformers-L77UIHIY.js → transformers-PX4HPO75.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-CVAXURQP.js → tree-sitter-wasm-parser-44HA2Z3F.js} +2 -2
- package/dist/cli/chunks/{types-LNVJBDM2.js → types-IMOP7F4R.js} +2 -2
- package/dist/cli/chunks/unified-memory-X7OJYGSD.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-O6HOD5YL.js +2 -0
- package/dist/cli/chunks/unified-persistence-C332CER2.js +2 -0
- package/dist/cli/chunks/{upgrade-4ND5RQFY.js → upgrade-OZ3O6ZZI.js} +2 -2
- package/dist/cli/chunks/{validate-ZA4XT6K2.js → validate-DRY5BMWX.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-FNK3GCJ4.js → validate-swarm-QD3LYPUF.js} +2 -2
- package/dist/cli/chunks/{vibium-E2CK2GBQ.js → vibium-2J3H2ITD.js} +2 -2
- package/dist/cli/chunks/visual-security-MPUG5HPI.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-63VRNKZV.js → web-tree-sitter-KRNUOGKI.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-5BTCVOLH.js → windsurf-installer-PQIPH3WP.js} +2 -2
- package/dist/cli/chunks/{witness-chain-6CUUGISD.js → witness-chain-HPLOYPS7.js} +2 -2
- package/dist/cli/chunks/witness-chain-Q4BZHPDF.js +2 -0
- package/dist/cli/chunks/{workflow-V7ED22XT.js → workflow-OAQ3FWCY.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-4NDWECYK.js +2 -0
- package/dist/cli/chunks/{wrappers-7S3NTTLW.js → wrappers-UPIU6S5S.js} +2 -2
- package/dist/coordination/consensus/providers/ollama-provider.js +3 -2
- package/dist/integrations/ruvector/proof-gate.d.ts +68 -0
- package/dist/integrations/ruvector/proof-gate.js +135 -0
- package/dist/kernel/unified-memory.d.ts +35 -0
- package/dist/kernel/unified-memory.js +105 -0
- package/dist/learning/local-judge-client.js +2 -1
- package/dist/mcp/bundle.js +382 -377
- package/dist/routing/free-tier/coordinator-support.d.ts +6 -3
- package/dist/routing/free-tier/coordinator-support.js +6 -3
- package/dist/routing/free-tier/executor.d.ts +14 -0
- package/dist/routing/free-tier/executor.js +21 -0
- package/dist/routing/free-tier/index.d.ts +1 -0
- package/dist/routing/free-tier/index.js +1 -0
- package/dist/routing/free-tier/pattern-cache.d.ts +57 -0
- package/dist/routing/free-tier/pattern-cache.js +148 -0
- package/dist/routing/free-tier/provider.js +9 -1
- package/dist/routing/value-score.js +3 -0
- package/dist/shared/embeddings/ollama-client.js +2 -1
- package/dist/shared/llm/model-mapping.js +26 -0
- package/dist/shared/llm/model-registry.d.ts +10 -0
- package/dist/shared/llm/model-registry.js +92 -0
- package/dist/shared/llm/ollama-url.d.ts +17 -0
- package/dist/shared/llm/ollama-url.js +25 -0
- package/dist/shared/llm/providers/ollama-timeout.d.ts +26 -0
- package/dist/shared/llm/providers/ollama-timeout.js +31 -0
- package/dist/shared/llm/providers/ollama.d.ts +10 -0
- package/dist/shared/llm/providers/ollama.js +31 -4
- package/dist/shared/llm/router/hybrid-router.js +18 -1
- package/package.json +5 -1
- package/dist/cli/chunks/adapter-IU3H3MD7.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-BGOC63IN.js +0 -2
- package/dist/cli/chunks/base-DVPRE3WO.js +0 -2
- package/dist/cli/chunks/browser-workflow-MP5P7KZF.js +0 -2
- package/dist/cli/chunks/chunk-2SZQDTI5.js +0 -2
- package/dist/cli/chunks/chunk-OCACCUFO.js +0 -2
- package/dist/cli/chunks/chunk-PY2Q6MN3.js +0 -24
- package/dist/cli/chunks/chunk-UNH2DE2G.js +0 -2
- package/dist/cli/chunks/client-ADCDBTEE.js +0 -2
- package/dist/cli/chunks/core-handlers-HCACMLUW.js +0 -2
- package/dist/cli/chunks/cross-domain-router-HXFQAU4M.js +0 -2
- package/dist/cli/chunks/dream-SVWQH62A.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-QW5TW5QS.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-D6EJWYAL.js +0 -2
- package/dist/cli/chunks/hnsw-index-4MWR4U5W.js +0 -2
- package/dist/cli/chunks/hybrid-router-BYVUBHER.js +0 -2
- package/dist/cli/chunks/impact-analyzer-OK2UIMSG.js +0 -2
- package/dist/cli/chunks/init-wizard-6NNPNS6J.js +0 -2
- package/dist/cli/chunks/kernel-F4A4GRNO.js +0 -2
- package/dist/cli/chunks/knowledge-graph-MSJDEZCF.js +0 -2
- package/dist/cli/chunks/llm-router-service-27IQAO7G.js +0 -2
- package/dist/cli/chunks/load-test-TT5VLAN7.js +0 -2
- package/dist/cli/chunks/memory-backend-FVSK53IM.js +0 -2
- package/dist/cli/chunks/memory-handlers-OPUDOZNT.js +0 -2
- package/dist/cli/chunks/pattern-null-store-7MVEDWCY.js +0 -2
- package/dist/cli/chunks/protocol-executor-BLDDYEJ4.js +0 -2
- package/dist/cli/chunks/provider-manager-ZYCFRYZQ.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-P66CCPHM.js +0 -2
- package/dist/cli/chunks/queen-coordinator-LPHT3SX5.js +0 -2
- package/dist/cli/chunks/router-XQ2TERUT.js +0 -2
- package/dist/cli/chunks/routing-feedback-K52O752B.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-G4DV7FK3.js +0 -2
- package/dist/cli/chunks/safe-db-TMSEITES.js +0 -2
- package/dist/cli/chunks/schedule-RWFLA43O.js +0 -2
- package/dist/cli/chunks/scheduler-2V55MJJR.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-L7QM6IWF.js +0 -2
- package/dist/cli/chunks/unified-memory-ZSULA46X.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-SQEWFUBN.js +0 -2
- package/dist/cli/chunks/unified-persistence-EDCTT6SE.js +0 -2
- package/dist/cli/chunks/visual-security-SOGAETFP.js +0 -2
- package/dist/cli/chunks/witness-chain-AJCECBH5.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-UXRUCOZR.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.11.
|
|
2
|
-
import{a as i,b as k,c as d,d as p}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.11.4");process.exit(0)}
|
|
2
|
+
import{a as i,b as k,c as d,d as p}from"./chunk-D6CKKNYC.js";import"./chunk-SL3SNOO2.js";import{a as v}from"./chunk-VO6YJGB4.js";import{a as h}from"./chunk-EONKMHKO.js";import"./chunk-4JFH3MVA.js";import"./chunk-TU6YN43Q.js";import"./chunk-3FJZMQJ7.js";import"./chunk-NFJT7XXR.js";import"./chunk-BRLUNIR4.js";import"./chunk-QSDIY3E2.js";import"./chunk-IF3HPQNV.js";import"./chunk-YKSWC7I4.js";import"./chunk-54B6P2WS.js";import"./chunk-TPMBFARK.js";import"./chunk-LW5DHT3Z.js";import"./chunk-XXRTWG7O.js";import"./chunk-6GYGAW53.js";import"./chunk-LLUPRGOR.js";import"./chunk-VJGHRWMH.js";import"./chunk-NSPCZPTB.js";import"./chunk-O7PVZ32A.js";import"./chunk-PEIQDQXN.js";import"./chunk-BMQDELPA.js";import"./chunk-TCWR6TDN.js";import"./chunk-YUHM72VQ.js";import"./chunk-PQUXFSN6.js";import"./chunk-7AWK43JN.js";import"./chunk-VCUCD3B5.js";import"./chunk-QJ5NCYJ3.js";import"./chunk-TQ373GGI.js";import"./chunk-7QTB5XIQ.js";import"./chunk-7ADD2ZQL.js";import"./chunk-Y4AXOHW4.js";import{Command as x}from"commander";import o from"chalk";function j(e,t,n){let c=new x("validate").description("Validation commands for skills and agents");return c.command("swarm").description("Validate skills in parallel using Claude Flow swarms (ADR-056)").option("-s, --skills <skills>",'Comma-separated list of skills to validate, or "all" for P0 skills',"all").option("-m, --models <models>","Comma-separated list of models to validate against",p.join(",")).option("-t, --topology <topology>","Swarm topology: hierarchical or mesh","hierarchical").option("--max-concurrent <number>","Maximum concurrent skill validations",String(i.maxConcurrentSkills)).option("--max-models <number>","Maximum concurrent models per skill",String(i.maxConcurrentModels)).option("--timeout <ms>","Timeout per validation in milliseconds",String(i.timeout)).option("--no-retry","Disable retries on failure").option("-v, --verbose","Show detailed output").option("--json","Output results as JSON").action(async l=>{if(await n())try{console.log(o.blue(`
|
|
3
3
|
Swarm Skill Validation
|
|
4
4
|
`));let r=l.skills==="all"?[...d]:l.skills.split(",").map(y=>y.trim()),u=l.models.split(",").map(y=>y.trim()),g=P(l.topology),a={topology:g,maxConcurrentSkills:parseInt(l.maxConcurrent,10)||i.maxConcurrentSkills,maxConcurrentModels:parseInt(l.maxModels,10)||i.maxConcurrentModels,timeout:parseInt(l.timeout,10)||i.timeout,continueOnFailure:!0,retry:l.retry!==!1?i.retry:void 0};l.verbose&&(console.log(o.gray("Configuration:")),console.log(o.gray(` Topology: ${a.topology}`)),console.log(o.gray(` Skills: ${r.length}`)),console.log(o.gray(` Models: ${u.length}`)),console.log(o.gray(` Max Concurrent Skills: ${a.maxConcurrentSkills}`)),console.log(o.gray(` Max Concurrent Models: ${a.maxConcurrentModels}`)),console.log(o.gray(` Timeout: ${a.timeout}ms`)),console.log(o.gray(` Retry: ${a.retry?"enabled":"disabled"}`)),console.log("")),console.log(o.cyan(` Skills: ${r.join(", ")}`)),console.log(o.cyan(` Models: ${u.join(", ")}`)),console.log(o.cyan(` Topology: ${g}`)),console.log("");let m=await R(e),f=h(m),C=k(a,f),$=Date.now();console.log(o.yellow(` Starting parallel validation...
|
|
5
5
|
`));let b=await C.validateSkillsParallel(r,u),s=C.getSummary(b),w=Date.now()-$;l.json?T(s):D(s,l.verbose),console.log(o.blue(`
|
|
@@ -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.11.
|
|
2
|
-
import{c as t}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.11.4");process.exit(0)}
|
|
2
|
+
import{c as t}from"./chunk-Y4AXOHW4.js";import{createRequire as o}from"module";var i,e,a,c,l,p,s,m,u,d,A,f,h,_,b,v,L,n=t(()=>{i=o(import.meta.url),e=i("vibium"),a=e,{RuvectorLayer:c,TensorCompress:l,differentiableSearch:p,hierarchicalForward:s,getCompressionLevel:m,init:u,FlashAttention:d,DotProductAttention:A,MultiHeadAttention:f,HyperbolicAttention:h,LinearAttention:_,MoEAttention:b,SonaEngine:v,pipeline:L}=e||{}});n();export{A as DotProductAttention,d as FlashAttention,h as HyperbolicAttention,_ as LinearAttention,b as MoEAttention,f as MultiHeadAttention,c as RuvectorLayer,v as SonaEngine,l as TensorCompress,a as default,p as differentiableSearch,m as getCompressionLevel,s as hierarchicalForward,u as init,L as pipeline};
|
|
@@ -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.11.4");process.exit(0)}
|
|
2
|
+
import{a}from"./chunk-A4OMK3FO.js";import"./chunk-ZSA6V5FH.js";import"./chunk-IQBZBUP5.js";import"./chunk-TPMBFARK.js";import"./chunk-LW5DHT3Z.js";import"./chunk-XXRTWG7O.js";import"./chunk-6GYGAW53.js";import"./chunk-LLUPRGOR.js";import"./chunk-VJGHRWMH.js";import"./chunk-NSPCZPTB.js";import"./chunk-PEIQDQXN.js";import"./chunk-BMQDELPA.js";import"./chunk-ICCTQ5LO.js";import"./chunk-TCWR6TDN.js";import"./chunk-YUHM72VQ.js";import"./chunk-PQUXFSN6.js";import"./chunk-7AWK43JN.js";import"./chunk-VCUCD3B5.js";import"./chunk-QJ5NCYJ3.js";import"./chunk-TQ373GGI.js";import"./chunk-7QTB5XIQ.js";import"./chunk-7ADD2ZQL.js";import"./chunk-Y4AXOHW4.js";export{a as VisualSecurityTool};
|
|
@@ -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.11.
|
|
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.11.4");process.exit(0)}
|
|
2
|
+
import"./chunk-Y4AXOHW4.js";import{createRequire as t}from"module";var o=t(import.meta.url),e=o("web-tree-sitter"),i=e,{RuvectorLayer:n,TensorCompress:a,differentiableSearch:c,hierarchicalForward:s,getCompressionLevel:l,init:p,FlashAttention:m,DotProductAttention:u,MultiHeadAttention:d,HyperbolicAttention:A,LinearAttention:f,MoEAttention:h,SonaEngine:_,pipeline:b}=e||{};export{u as DotProductAttention,m as FlashAttention,A as HyperbolicAttention,f as LinearAttention,h as MoEAttention,d as MultiHeadAttention,n as RuvectorLayer,_ as SonaEngine,a as TensorCompress,i as default,c as differentiableSearch,l as getCompressionLevel,s as hierarchicalForward,p as init,b as pipeline};
|
|
@@ -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.11.
|
|
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.11.4");process.exit(0)}
|
|
2
|
+
import{b as u}from"./chunk-JPENUVCI.js";import{a as f,c as d}from"./chunk-PEIQDQXN.js";import"./chunk-Y4AXOHW4.js";d();import{existsSync as i,mkdirSync as h,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;options;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.options=e,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf",{memoryBackend:this.options.memoryBackend}),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||h(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 s=this.generator.generateBehavioralRules("windsurf"),n=p(this.projectRoot,s.path);if(e.rulesPath=n,!i(n)||this.overwrite){if(i(n)&&this.overwrite){let o=this.mergeExistingRules(n,s.content);a(n,o)}else a(n,s.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")),s=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,s.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
|
---
|
|
@@ -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.11.
|
|
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.11.4");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g}from"./chunk-BRLUNIR4.js";import"./chunk-XXRTWG7O.js";import"./chunk-6GYGAW53.js";import"./chunk-7ADD2ZQL.js";import"./chunk-Y4AXOHW4.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
|
|
@@ -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.11.4");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i}from"./chunk-5AQ7FXYG.js";import"./chunk-TPMBFARK.js";import"./chunk-LW5DHT3Z.js";import"./chunk-XXRTWG7O.js";import"./chunk-6GYGAW53.js";import"./chunk-LLUPRGOR.js";import"./chunk-VJGHRWMH.js";import"./chunk-NSPCZPTB.js";import"./chunk-PEIQDQXN.js";import"./chunk-TCWR6TDN.js";import"./chunk-YUHM72VQ.js";import"./chunk-PQUXFSN6.js";import"./chunk-7AWK43JN.js";import"./chunk-VCUCD3B5.js";import"./chunk-QJ5NCYJ3.js";import"./chunk-TQ373GGI.js";import"./chunk-7QTB5XIQ.js";import"./chunk-7ADD2ZQL.js";import"./chunk-Y4AXOHW4.js";export{a as GENESIS_PREV_HASH,f as WitnessChain,i as _resetWitnessChainForTests,h as createWitnessChain,g as getWitnessChain,d as hashWith,e as serializeEntry,b as sha256,c as shake256};
|
|
@@ -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.11.
|
|
2
|
-
import{b as $}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.11.4");process.exit(0)}
|
|
2
|
+
import{b as $}from"./chunk-2KNFS3L5.js";import"./chunk-SRVTNG6L.js";import{d as R}from"./chunk-6545AS2J.js";import{b as k,c as C,d as b}from"./chunk-ARPBG6FQ.js";import{c as W}from"./chunk-VJGHRWMH.js";import"./chunk-O7PVZ32A.js";import"./chunk-PEIQDQXN.js";import"./chunk-Y4AXOHW4.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-4DGHFYY3.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-4DGHFYY3.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-YBVXLA6O.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.11.4");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-WMIRAD3J.js";import"./chunk-4BFCLSDN.js";import"./chunk-TPMBFARK.js";import"./chunk-LW5DHT3Z.js";import"./chunk-XXRTWG7O.js";import"./chunk-6GYGAW53.js";import"./chunk-LLUPRGOR.js";import"./chunk-VJGHRWMH.js";import"./chunk-NSPCZPTB.js";import"./chunk-O7PVZ32A.js";import"./chunk-PEIQDQXN.js";import"./chunk-BMQDELPA.js";import"./chunk-TCWR6TDN.js";import"./chunk-YUHM72VQ.js";import"./chunk-PQUXFSN6.js";import"./chunk-7AWK43JN.js";import"./chunk-VCUCD3B5.js";import"./chunk-QJ5NCYJ3.js";import"./chunk-TQ373GGI.js";import"./chunk-7QTB5XIQ.js";import"./chunk-7ADD2ZQL.js";import"./chunk-Y4AXOHW4.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.11.
|
|
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.11.4");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-KYTFIP6R.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-G3TFNY4T.js";import"./chunk-TPMBFARK.js";import"./chunk-LW5DHT3Z.js";import"./chunk-XXRTWG7O.js";import"./chunk-6GYGAW53.js";import"./chunk-LLUPRGOR.js";import"./chunk-VJGHRWMH.js";import"./chunk-NSPCZPTB.js";import"./chunk-PEIQDQXN.js";import"./chunk-TCWR6TDN.js";import"./chunk-YUHM72VQ.js";import"./chunk-PQUXFSN6.js";import"./chunk-7AWK43JN.js";import"./chunk-VCUCD3B5.js";import"./chunk-QJ5NCYJ3.js";import"./chunk-TQ373GGI.js";import"./chunk-7QTB5XIQ.js";import"./chunk-7ADD2ZQL.js";import"./chunk-Y4AXOHW4.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};
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { BaseModelProvider } from '../model-provider';
|
|
12
12
|
import { CONSENSUS_CONSTANTS, OLLAMA_CONSTANTS } from '../../constants.js';
|
|
13
13
|
import { toErrorMessage, toError } from '../../../shared/error-utils.js';
|
|
14
|
+
import { resolveOllamaBaseUrl } from '../../../shared/llm/ollama-url.js';
|
|
14
15
|
// ============================================================================
|
|
15
16
|
// Model Information
|
|
16
17
|
// ============================================================================
|
|
@@ -51,7 +52,7 @@ export function getCodeOllamaModels() {
|
|
|
51
52
|
// Ollama Provider Implementation
|
|
52
53
|
// ============================================================================
|
|
53
54
|
const DEFAULT_CONFIG = {
|
|
54
|
-
baseUrl: OLLAMA_CONSTANTS.DEFAULT_BASE_URL,
|
|
55
|
+
baseUrl: resolveOllamaBaseUrl(OLLAMA_CONSTANTS.DEFAULT_BASE_URL),
|
|
55
56
|
defaultModel: 'llama3.1',
|
|
56
57
|
defaultTimeout: CONSENSUS_CONSTANTS.OLLAMA_TIMEOUT_MS, // 5 minutes (local models can be slow)
|
|
57
58
|
maxRetries: 2,
|
|
@@ -330,7 +331,7 @@ export function createMultiOllamaProviders(models = getRecommendedOllamaModels()
|
|
|
330
331
|
* @param baseUrl - Ollama server URL
|
|
331
332
|
* @returns True if Ollama is running and accessible
|
|
332
333
|
*/
|
|
333
|
-
export async function isOllamaAvailable(baseUrl =
|
|
334
|
+
export async function isOllamaAvailable(baseUrl = resolveOllamaBaseUrl(OLLAMA_CONSTANTS.DEFAULT_BASE_URL)) {
|
|
334
335
|
try {
|
|
335
336
|
const controller = new AbortController();
|
|
336
337
|
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tamper-evident hash-chain audit gate — a faithful, dependency-free TypeScript
|
|
3
|
+
* port of RuVector's `ruvector-proof-gate` `HashChainGate` (upstream ADR-194;
|
|
4
|
+
* AQE-side integration decision: ADR-116).
|
|
5
|
+
*
|
|
6
|
+
* Why ported rather than bound: the Rust crate ships no NAPI/WASM binding, and
|
|
7
|
+
* the algorithm is small and exact. This uses only Node's `crypto` (no native
|
|
8
|
+
* dep) and opens NO database — the chain lives in memory and is serialized via
|
|
9
|
+
* {@link HashChainGate.toJSON}/{@link HashChainGate.fromJSON} so a caller can
|
|
10
|
+
* persist it through the existing unified `memory.db` (never a competing store).
|
|
11
|
+
*
|
|
12
|
+
* QE use-case: turn AQE's "verify row counts BEFORE and AFTER, never claim a
|
|
13
|
+
* sync/migration succeeded without proof" mandate into a cryptographic
|
|
14
|
+
* guarantee. Admit one payload per DB operation (table, op, row-count, content
|
|
15
|
+
* digest); a later `verifyIntegrity()` proves no admitted entry was mutated,
|
|
16
|
+
* reordered, or dropped.
|
|
17
|
+
*
|
|
18
|
+
* Commitment: commitment[n] = SHA256("ruvector:chain:" || commitment[n-1] ||
|
|
19
|
+
* payload_hash[n] || u64le(n)), seeded from a fixed genesis. Verification is
|
|
20
|
+
* O(n): replay from genesis. (Genesis differs from the Rust literal — we do not
|
|
21
|
+
* interoperate with Rust receipts, only self-verify.)
|
|
22
|
+
*/
|
|
23
|
+
/** Any admissible payload. Objects are canonicalized (sorted keys) before hashing. */
|
|
24
|
+
export type GatePayload = string | Uint8Array | Record<string, unknown>;
|
|
25
|
+
export interface WriteReceipt {
|
|
26
|
+
/** 0-based admission order. */
|
|
27
|
+
sequence: number;
|
|
28
|
+
/** SHA-256 of the canonical payload bytes (hex). */
|
|
29
|
+
payloadHash: string;
|
|
30
|
+
/** Chain commitment at this entry (hex) — binds it to every prior entry. */
|
|
31
|
+
chainCommitment: string;
|
|
32
|
+
}
|
|
33
|
+
/** Serializable chain state for persistence through the unified store. */
|
|
34
|
+
export interface HashChainState {
|
|
35
|
+
seq: number;
|
|
36
|
+
head: string;
|
|
37
|
+
chain: string[];
|
|
38
|
+
payloadHashes: string[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Sequential SHA-256 hash chain. O(1) per `admit`, O(n) `verifyIntegrity`.
|
|
42
|
+
* In-memory; persist/restore via {@link toJSON}/{@link fromJSON}.
|
|
43
|
+
*/
|
|
44
|
+
export declare class HashChainGate {
|
|
45
|
+
private seq;
|
|
46
|
+
private prev;
|
|
47
|
+
private readonly chain;
|
|
48
|
+
private readonly payloadHashes;
|
|
49
|
+
/** Admit a payload; returns a receipt committing the chain state. */
|
|
50
|
+
admit(payload: GatePayload): WriteReceipt;
|
|
51
|
+
/** True iff `receipt` matches the commitment recorded at its sequence. */
|
|
52
|
+
verifyReceipt(receipt: WriteReceipt): boolean;
|
|
53
|
+
/** Current chain head (hex). Changes after every successful `admit`. */
|
|
54
|
+
chainRoot(): string;
|
|
55
|
+
get length(): number;
|
|
56
|
+
get isEmpty(): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Full cryptographic re-derivation from genesis. Returns false if ANY
|
|
59
|
+
* commitment fails to re-derive — catches a mutated commitment, a mutated
|
|
60
|
+
* payload hash, a reorder, or a length mismatch.
|
|
61
|
+
*/
|
|
62
|
+
verifyIntegrity(): boolean;
|
|
63
|
+
/** Snapshot for persistence through the unified store (no DB opened here). */
|
|
64
|
+
toJSON(): HashChainState;
|
|
65
|
+
/** Restore a chain from a {@link toJSON} snapshot. */
|
|
66
|
+
static fromJSON(state: HashChainState): HashChainGate;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=proof-gate.d.ts.map
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tamper-evident hash-chain audit gate — a faithful, dependency-free TypeScript
|
|
3
|
+
* port of RuVector's `ruvector-proof-gate` `HashChainGate` (upstream ADR-194;
|
|
4
|
+
* AQE-side integration decision: ADR-116).
|
|
5
|
+
*
|
|
6
|
+
* Why ported rather than bound: the Rust crate ships no NAPI/WASM binding, and
|
|
7
|
+
* the algorithm is small and exact. This uses only Node's `crypto` (no native
|
|
8
|
+
* dep) and opens NO database — the chain lives in memory and is serialized via
|
|
9
|
+
* {@link HashChainGate.toJSON}/{@link HashChainGate.fromJSON} so a caller can
|
|
10
|
+
* persist it through the existing unified `memory.db` (never a competing store).
|
|
11
|
+
*
|
|
12
|
+
* QE use-case: turn AQE's "verify row counts BEFORE and AFTER, never claim a
|
|
13
|
+
* sync/migration succeeded without proof" mandate into a cryptographic
|
|
14
|
+
* guarantee. Admit one payload per DB operation (table, op, row-count, content
|
|
15
|
+
* digest); a later `verifyIntegrity()` proves no admitted entry was mutated,
|
|
16
|
+
* reordered, or dropped.
|
|
17
|
+
*
|
|
18
|
+
* Commitment: commitment[n] = SHA256("ruvector:chain:" || commitment[n-1] ||
|
|
19
|
+
* payload_hash[n] || u64le(n)), seeded from a fixed genesis. Verification is
|
|
20
|
+
* O(n): replay from genesis. (Genesis differs from the Rust literal — we do not
|
|
21
|
+
* interoperate with Rust receipts, only self-verify.)
|
|
22
|
+
*/
|
|
23
|
+
import { createHash } from 'node:crypto';
|
|
24
|
+
const CHAIN_TAG = Buffer.from('ruvector:chain:');
|
|
25
|
+
/** Re-derivation anchor. Self-consistent; not byte-compatible with the Rust crate. */
|
|
26
|
+
const GENESIS = createHash('sha256').update('ruvector-proof-gate-v1').digest();
|
|
27
|
+
function u64le(n) {
|
|
28
|
+
const b = Buffer.alloc(8);
|
|
29
|
+
b.writeBigUInt64LE(BigInt(n));
|
|
30
|
+
return b;
|
|
31
|
+
}
|
|
32
|
+
/** Deterministic, key-sorted serialization so equal payloads hash equally. */
|
|
33
|
+
function canonicalBytes(payload) {
|
|
34
|
+
if (typeof payload === 'string')
|
|
35
|
+
return Buffer.from(payload, 'utf8');
|
|
36
|
+
if (payload instanceof Uint8Array)
|
|
37
|
+
return Buffer.from(payload);
|
|
38
|
+
return Buffer.from(canonicalJson(payload), 'utf8');
|
|
39
|
+
}
|
|
40
|
+
function canonicalJson(value) {
|
|
41
|
+
if (value === null || typeof value !== 'object')
|
|
42
|
+
return JSON.stringify(value) ?? 'null';
|
|
43
|
+
if (Array.isArray(value))
|
|
44
|
+
return `[${value.map(canonicalJson).join(',')}]`;
|
|
45
|
+
const keys = Object.keys(value).sort();
|
|
46
|
+
return `{${keys.map((k) => `${JSON.stringify(k)}:${canonicalJson(value[k])}`).join(',')}}`;
|
|
47
|
+
}
|
|
48
|
+
function sha256(...parts) {
|
|
49
|
+
const h = createHash('sha256');
|
|
50
|
+
for (const p of parts)
|
|
51
|
+
h.update(p);
|
|
52
|
+
return h.digest();
|
|
53
|
+
}
|
|
54
|
+
function commitmentOf(prev, payloadHash, seq) {
|
|
55
|
+
return sha256(CHAIN_TAG, prev, payloadHash, u64le(seq));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Sequential SHA-256 hash chain. O(1) per `admit`, O(n) `verifyIntegrity`.
|
|
59
|
+
* In-memory; persist/restore via {@link toJSON}/{@link fromJSON}.
|
|
60
|
+
*/
|
|
61
|
+
export class HashChainGate {
|
|
62
|
+
seq = 0;
|
|
63
|
+
prev = GENESIS;
|
|
64
|
+
chain = [];
|
|
65
|
+
payloadHashes = [];
|
|
66
|
+
/** Admit a payload; returns a receipt committing the chain state. */
|
|
67
|
+
admit(payload) {
|
|
68
|
+
const payloadHash = sha256(canonicalBytes(payload));
|
|
69
|
+
const commitment = commitmentOf(this.prev, payloadHash, this.seq);
|
|
70
|
+
this.prev = commitment;
|
|
71
|
+
this.chain.push(commitment);
|
|
72
|
+
this.payloadHashes.push(payloadHash);
|
|
73
|
+
const receipt = {
|
|
74
|
+
sequence: this.seq,
|
|
75
|
+
payloadHash: payloadHash.toString('hex'),
|
|
76
|
+
chainCommitment: commitment.toString('hex'),
|
|
77
|
+
};
|
|
78
|
+
this.seq += 1;
|
|
79
|
+
return receipt;
|
|
80
|
+
}
|
|
81
|
+
/** True iff `receipt` matches the commitment recorded at its sequence. */
|
|
82
|
+
verifyReceipt(receipt) {
|
|
83
|
+
return (receipt.sequence >= 0 &&
|
|
84
|
+
receipt.sequence < this.chain.length &&
|
|
85
|
+
this.chain[receipt.sequence].toString('hex') === receipt.chainCommitment);
|
|
86
|
+
}
|
|
87
|
+
/** Current chain head (hex). Changes after every successful `admit`. */
|
|
88
|
+
chainRoot() {
|
|
89
|
+
return this.prev.toString('hex');
|
|
90
|
+
}
|
|
91
|
+
get length() {
|
|
92
|
+
return this.seq;
|
|
93
|
+
}
|
|
94
|
+
get isEmpty() {
|
|
95
|
+
return this.seq === 0;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Full cryptographic re-derivation from genesis. Returns false if ANY
|
|
99
|
+
* commitment fails to re-derive — catches a mutated commitment, a mutated
|
|
100
|
+
* payload hash, a reorder, or a length mismatch.
|
|
101
|
+
*/
|
|
102
|
+
verifyIntegrity() {
|
|
103
|
+
if (this.chain.length !== this.payloadHashes.length)
|
|
104
|
+
return false;
|
|
105
|
+
let prev = GENESIS;
|
|
106
|
+
for (let i = 0; i < this.chain.length; i++) {
|
|
107
|
+
const expected = commitmentOf(prev, this.payloadHashes[i], i);
|
|
108
|
+
if (!expected.equals(this.chain[i]))
|
|
109
|
+
return false;
|
|
110
|
+
prev = this.chain[i];
|
|
111
|
+
}
|
|
112
|
+
return prev.equals(this.prev);
|
|
113
|
+
}
|
|
114
|
+
/** Snapshot for persistence through the unified store (no DB opened here). */
|
|
115
|
+
toJSON() {
|
|
116
|
+
return {
|
|
117
|
+
seq: this.seq,
|
|
118
|
+
head: this.prev.toString('hex'),
|
|
119
|
+
chain: this.chain.map((c) => c.toString('hex')),
|
|
120
|
+
payloadHashes: this.payloadHashes.map((p) => p.toString('hex')),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/** Restore a chain from a {@link toJSON} snapshot. */
|
|
124
|
+
static fromJSON(state) {
|
|
125
|
+
const g = new HashChainGate();
|
|
126
|
+
g.seq = state.seq;
|
|
127
|
+
g.prev = Buffer.from(state.head, 'hex');
|
|
128
|
+
for (const c of state.chain)
|
|
129
|
+
g.chain.push(Buffer.from(c, 'hex'));
|
|
130
|
+
for (const p of state.payloadHashes)
|
|
131
|
+
g.payloadHashes.push(Buffer.from(p, 'hex'));
|
|
132
|
+
return g;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=proof-gate.js.map
|
|
@@ -71,6 +71,10 @@ export declare class UnifiedMemoryManager {
|
|
|
71
71
|
private preparedStatements;
|
|
72
72
|
private vectorIndex;
|
|
73
73
|
private crdtStore;
|
|
74
|
+
private proofGate;
|
|
75
|
+
private proofGateEnvChecked;
|
|
76
|
+
private static readonly PROOF_NS;
|
|
77
|
+
private static readonly PROOF_KEY;
|
|
74
78
|
private constructor();
|
|
75
79
|
static getInstance(config?: Partial<UnifiedMemoryConfig>): UnifiedMemoryManager;
|
|
76
80
|
static getInstanceAsync(config?: Partial<UnifiedMemoryConfig>): Promise<UnifiedMemoryManager>;
|
|
@@ -94,6 +98,37 @@ export declare class UnifiedMemoryManager {
|
|
|
94
98
|
kvExists(key: string, namespace?: string): Promise<boolean>;
|
|
95
99
|
kvSearch(pattern: string, namespace?: string, limit?: number): Promise<string[]>;
|
|
96
100
|
kvCleanupExpired(): Promise<number>;
|
|
101
|
+
/**
|
|
102
|
+
* Enable the tamper-evident proof-gate audit. OFF by default — once enabled,
|
|
103
|
+
* every kv write/delete admits a receipt to a persisted SHA-256 hash chain so
|
|
104
|
+
* {@link verifyMemoryIntegrity} can later prove no admitted write was mutated,
|
|
105
|
+
* reordered, or dropped. Restores any chain persisted from a prior process.
|
|
106
|
+
*
|
|
107
|
+
* Intended for BOUNDED audit windows (a sync / migration / publish gate), not
|
|
108
|
+
* permanent always-on use: the chain grows O(n) with audited writes and its
|
|
109
|
+
* snapshot is rewritten per write. Idempotent.
|
|
110
|
+
*/
|
|
111
|
+
enableProofGate(): void;
|
|
112
|
+
isProofGateEnabled(): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Re-derive the proof-gate chain from genesis. Returns true iff no admitted
|
|
115
|
+
* write was mutated, reordered, or dropped. Throws if the gate is not enabled.
|
|
116
|
+
*/
|
|
117
|
+
verifyMemoryIntegrity(): boolean;
|
|
118
|
+
/** Current proof-gate chain head (hex), or null if the gate is not enabled. */
|
|
119
|
+
getProofChainRoot(): string | null;
|
|
120
|
+
/** Number of writes admitted to the proof-gate chain (0 if not enabled). */
|
|
121
|
+
getProofChainLength(): number;
|
|
122
|
+
/**
|
|
123
|
+
* Best-effort audit of a kv mutation. Admits a content-bound receipt and
|
|
124
|
+
* persists the chain. NEVER throws into the caller — the actual write has
|
|
125
|
+
* already committed; a failed audit must not break or alter it.
|
|
126
|
+
*/
|
|
127
|
+
private auditWrite;
|
|
128
|
+
/** Persist the chain snapshot via a DIRECT write (bypasses kvSet → no recursion). */
|
|
129
|
+
private persistProofChain;
|
|
130
|
+
/** Restore a persisted chain from the reserved namespace, or null if none/corrupt. */
|
|
131
|
+
private loadProofChain;
|
|
97
132
|
vectorStore(id: string, embedding: number[], namespace?: string, metadata?: unknown): Promise<void>;
|
|
98
133
|
vectorGet(id: string): Promise<{
|
|
99
134
|
embedding: number[];
|
|
@@ -29,6 +29,7 @@ import * as os from 'os';
|
|
|
29
29
|
import * as path from 'path';
|
|
30
30
|
import { MEMORY_CONSTANTS } from './constants.js';
|
|
31
31
|
import { LoggerFactory } from '../logging/index.js';
|
|
32
|
+
import { HashChainGate } from '../integrations/ruvector/proof-gate.js';
|
|
32
33
|
const logger = LoggerFactory.create('unified-memory');
|
|
33
34
|
// Re-export from shared module for backward compatibility
|
|
34
35
|
export { validateTableName, ALLOWED_TABLE_NAMES } from '../shared/sql-safety.js';
|
|
@@ -122,6 +123,12 @@ export class UnifiedMemoryManager {
|
|
|
122
123
|
vectorIndex = new UnifiedHnswIndex('qe-memory');
|
|
123
124
|
// CRDT store for distributed state synchronization
|
|
124
125
|
crdtStore = null;
|
|
126
|
+
// Proof-gate (AQE ADR-116; upstream ADR-194): tamper-evident SHA-256 hash chain over kv writes.
|
|
127
|
+
// Off by default; enable per audit window via enableProofGate() / AQE_PROOF_GATE=1.
|
|
128
|
+
proofGate = null;
|
|
129
|
+
proofGateEnvChecked = false;
|
|
130
|
+
static PROOF_NS = '__proofgate__';
|
|
131
|
+
static PROOF_KEY = 'chain';
|
|
125
132
|
constructor(config) {
|
|
126
133
|
const resolvedDefaults = getResolvedDefaultConfig();
|
|
127
134
|
this.config = { ...resolvedDefaults, ...config };
|
|
@@ -506,6 +513,8 @@ export class UnifiedMemoryManager {
|
|
|
506
513
|
INSERT OR REPLACE INTO kv_store (key, namespace, value, expires_at)
|
|
507
514
|
VALUES (?, ?, ?, ?)
|
|
508
515
|
`).run(key, namespace, serialized, expiresAt);
|
|
516
|
+
// ADR-194: tamper-evident audit (no-op unless the proof-gate is enabled).
|
|
517
|
+
this.auditWrite('kvSet', namespace, key, serialized);
|
|
509
518
|
}
|
|
510
519
|
async kvGet(key, namespace = 'default') {
|
|
511
520
|
this.ensureInitialized();
|
|
@@ -524,6 +533,9 @@ export class UnifiedMemoryManager {
|
|
|
524
533
|
async kvDelete(key, namespace = 'default') {
|
|
525
534
|
this.ensureInitialized();
|
|
526
535
|
const result = this.db.prepare('DELETE FROM kv_store WHERE key = ? AND namespace = ?').run(key, namespace);
|
|
536
|
+
// ADR-194: audit deletes too (no-op unless the proof-gate is enabled).
|
|
537
|
+
if (result.changes > 0)
|
|
538
|
+
this.auditWrite('kvDelete', namespace, key, '');
|
|
527
539
|
return result.changes > 0;
|
|
528
540
|
}
|
|
529
541
|
async kvExists(key, namespace = 'default') {
|
|
@@ -551,6 +563,99 @@ export class UnifiedMemoryManager {
|
|
|
551
563
|
return result.changes;
|
|
552
564
|
}
|
|
553
565
|
// ============================================================================
|
|
566
|
+
// Proof-Gate: tamper-evident write audit (ADR-194)
|
|
567
|
+
// ============================================================================
|
|
568
|
+
/**
|
|
569
|
+
* Enable the tamper-evident proof-gate audit. OFF by default — once enabled,
|
|
570
|
+
* every kv write/delete admits a receipt to a persisted SHA-256 hash chain so
|
|
571
|
+
* {@link verifyMemoryIntegrity} can later prove no admitted write was mutated,
|
|
572
|
+
* reordered, or dropped. Restores any chain persisted from a prior process.
|
|
573
|
+
*
|
|
574
|
+
* Intended for BOUNDED audit windows (a sync / migration / publish gate), not
|
|
575
|
+
* permanent always-on use: the chain grows O(n) with audited writes and its
|
|
576
|
+
* snapshot is rewritten per write. Idempotent.
|
|
577
|
+
*/
|
|
578
|
+
enableProofGate() {
|
|
579
|
+
this.ensureInitialized();
|
|
580
|
+
this.proofGateEnvChecked = true;
|
|
581
|
+
if (this.proofGate)
|
|
582
|
+
return;
|
|
583
|
+
this.proofGate = this.loadProofChain() ?? new HashChainGate();
|
|
584
|
+
}
|
|
585
|
+
isProofGateEnabled() {
|
|
586
|
+
return this.proofGate !== null;
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Re-derive the proof-gate chain from genesis. Returns true iff no admitted
|
|
590
|
+
* write was mutated, reordered, or dropped. Throws if the gate is not enabled.
|
|
591
|
+
*/
|
|
592
|
+
verifyMemoryIntegrity() {
|
|
593
|
+
if (!this.proofGate) {
|
|
594
|
+
throw new Error('Proof-gate not enabled — call enableProofGate() or set AQE_PROOF_GATE=1');
|
|
595
|
+
}
|
|
596
|
+
return this.proofGate.verifyIntegrity();
|
|
597
|
+
}
|
|
598
|
+
/** Current proof-gate chain head (hex), or null if the gate is not enabled. */
|
|
599
|
+
getProofChainRoot() {
|
|
600
|
+
return this.proofGate ? this.proofGate.chainRoot() : null;
|
|
601
|
+
}
|
|
602
|
+
/** Number of writes admitted to the proof-gate chain (0 if not enabled). */
|
|
603
|
+
getProofChainLength() {
|
|
604
|
+
return this.proofGate ? this.proofGate.length : 0;
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* Best-effort audit of a kv mutation. Admits a content-bound receipt and
|
|
608
|
+
* persists the chain. NEVER throws into the caller — the actual write has
|
|
609
|
+
* already committed; a failed audit must not break or alter it.
|
|
610
|
+
*/
|
|
611
|
+
auditWrite(op, namespace, key, serializedValue) {
|
|
612
|
+
// Lazy env-enable so an operator can turn auditing on without a code change.
|
|
613
|
+
if (!this.proofGate) {
|
|
614
|
+
if (this.proofGateEnvChecked)
|
|
615
|
+
return;
|
|
616
|
+
this.proofGateEnvChecked = true;
|
|
617
|
+
if (process.env.AQE_PROOF_GATE !== '1')
|
|
618
|
+
return;
|
|
619
|
+
this.proofGate = this.loadProofChain() ?? new HashChainGate();
|
|
620
|
+
}
|
|
621
|
+
// Never audit the chain's own persistence namespace (no self-reference / recursion).
|
|
622
|
+
if (namespace === UnifiedMemoryManager.PROOF_NS)
|
|
623
|
+
return;
|
|
624
|
+
try {
|
|
625
|
+
this.proofGate.admit({ op, ns: namespace, key, value: serializedValue });
|
|
626
|
+
this.persistProofChain();
|
|
627
|
+
}
|
|
628
|
+
catch (error) {
|
|
629
|
+
logger.warn(`proof-gate audit skipped for ${namespace}/${key}: ${toErrorMessage(error)}`);
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
/** Persist the chain snapshot via a DIRECT write (bypasses kvSet → no recursion). */
|
|
633
|
+
persistProofChain() {
|
|
634
|
+
if (!this.proofGate || !this.db)
|
|
635
|
+
return;
|
|
636
|
+
this.db.prepare(`
|
|
637
|
+
INSERT OR REPLACE INTO kv_store (key, namespace, value, expires_at)
|
|
638
|
+
VALUES (?, ?, ?, NULL)
|
|
639
|
+
`).run(UnifiedMemoryManager.PROOF_KEY, UnifiedMemoryManager.PROOF_NS, JSON.stringify(this.proofGate.toJSON()));
|
|
640
|
+
}
|
|
641
|
+
/** Restore a persisted chain from the reserved namespace, or null if none/corrupt. */
|
|
642
|
+
loadProofChain() {
|
|
643
|
+
if (!this.db)
|
|
644
|
+
return null;
|
|
645
|
+
const row = this.db.prepare(`
|
|
646
|
+
SELECT value FROM kv_store WHERE key = ? AND namespace = ?
|
|
647
|
+
`).get(UnifiedMemoryManager.PROOF_KEY, UnifiedMemoryManager.PROOF_NS);
|
|
648
|
+
if (!row)
|
|
649
|
+
return null;
|
|
650
|
+
try {
|
|
651
|
+
return HashChainGate.fromJSON(JSON.parse(row.value));
|
|
652
|
+
}
|
|
653
|
+
catch (error) {
|
|
654
|
+
logger.warn(`proof-gate chain failed to load (starting fresh): ${toErrorMessage(error)}`);
|
|
655
|
+
return null;
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
// ============================================================================
|
|
554
659
|
// Vector Operations
|
|
555
660
|
// ============================================================================
|
|
556
661
|
async vectorStore(id, embedding, namespace = 'default', metadata) {
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* qwen3:30b-a3b — 18GB, highest quality, use only if RAM permits
|
|
18
18
|
*/
|
|
19
19
|
import { LoggerFactory } from '../logging/index.js';
|
|
20
|
+
import { resolveOllamaBaseUrl } from '../shared/llm/ollama-url.js';
|
|
20
21
|
const logger = LoggerFactory.create('local-judge');
|
|
21
22
|
const DEFAULT_URL = 'http://localhost:11434';
|
|
22
23
|
const DEFAULT_MODEL = 'qwen3:8b';
|
|
@@ -46,7 +47,7 @@ export class LocalJudgeClient {
|
|
|
46
47
|
model;
|
|
47
48
|
enabled;
|
|
48
49
|
constructor(opts) {
|
|
49
|
-
this.baseUrl = opts?.url ?? process.env['NAGUAL_JUDGE_URL'] ?? DEFAULT_URL;
|
|
50
|
+
this.baseUrl = opts?.url ?? process.env['NAGUAL_JUDGE_URL'] ?? resolveOllamaBaseUrl(DEFAULT_URL);
|
|
50
51
|
this.model = opts?.model ?? process.env['NAGUAL_JUDGE_MODEL'] ?? DEFAULT_MODEL;
|
|
51
52
|
// Only active when explicitly configured via env or constructor options
|
|
52
53
|
this.enabled = Boolean(opts?.url ?? opts?.model ??
|