agentic-qe 3.11.2 → 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/.validation/templates/eval.template.yaml +36 -0
- package/.claude/skills/qe-quality-assessment/SKILL.md +25 -0
- package/.claude/skills/qe-test-generation/SKILL.md +58 -20
- package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +37 -0
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +84 -0
- package/assets/skills/.validation/templates/eval.template.yaml +36 -0
- package/assets/skills/enterprise-integration-testing/SKILL.md +1 -1
- package/assets/skills/pentest-validation/SKILL.md +1 -1
- package/assets/skills/qcsd-development-swarm/SKILL.md +27 -6
- package/assets/skills/qe-quality-assessment/SKILL.md +25 -0
- package/assets/skills/qe-test-generation/SKILL.md +58 -20
- package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +37 -0
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-2HMUXHWY.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-FNCVODUJ.js → agent-booster-wasm-62I6ZNRW.js} +2 -2
- package/dist/cli/chunks/{agent-handler-JK7VK37B.js → agent-handler-E2TZKKBS.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-EPVVJNNA.js → agent-memory-branch-JHAHC2NH.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-M2NKRVRE.js +2 -0
- package/dist/cli/chunks/{arena-EH2IMSRW.js → arena-72ZV65BR.js} +4 -4
- package/dist/cli/chunks/{arena-NTHVDZTJ.js → arena-KLG3YSSR.js} +2 -2
- package/dist/cli/chunks/{audit-ODZV2T2B.js → audit-EPB7ETMT.js} +2 -2
- package/dist/cli/chunks/base-CCHC2DAC.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-2KL54YUA.js → better-sqlite3-URULPKRF.js} +2 -2
- package/dist/cli/chunks/{brain-handler-NVB6OJ25.js → brain-handler-FBMYEERK.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-BIXSELMY.js → branch-enumerator-C7MPNYT7.js} +2 -2
- package/dist/cli/chunks/{browser-S2Y2W33Z.js → browser-UUDUDYLR.js} +2 -2
- package/dist/cli/chunks/browser-workflow-4DGHFYY3.js +2 -0
- package/dist/cli/chunks/{chunk-XXCSJMSR.js → chunk-2KNFS3L5.js} +1 -1
- package/dist/cli/chunks/{chunk-I7UWFV6N.js → chunk-2WPSMQIL.js} +1 -1
- package/dist/cli/chunks/chunk-37ZDGJ3H.js +2 -0
- package/dist/cli/chunks/{chunk-JELN5XTK.js → chunk-3E7D3A35.js} +1 -1
- package/dist/cli/chunks/{chunk-ZBJMVWQR.js → chunk-3FJZMQJ7.js} +2 -2
- package/dist/cli/chunks/chunk-3SBUL72V.js +2 -0
- package/dist/cli/chunks/{chunk-O3IIAIXB.js → chunk-3SKIZDKL.js} +1 -1
- package/dist/cli/chunks/{chunk-LAY35POY.js → chunk-3SRPFBU7.js} +3 -3
- package/dist/cli/chunks/{chunk-6VAFRS5N.js → chunk-4BFCLSDN.js} +2 -2
- package/dist/cli/chunks/{chunk-NZNXEEZR.js → chunk-4JFH3MVA.js} +1 -1
- package/dist/cli/chunks/{chunk-C6UTRG66.js → chunk-4RHNPRAP.js} +2 -2
- package/dist/cli/chunks/{chunk-3NCVUFAL.js → chunk-4YT5YN5G.js} +2 -2
- package/dist/cli/chunks/{chunk-P3VRXQ3H.js → chunk-54B6P2WS.js} +3 -3
- package/dist/cli/chunks/{chunk-H5TM4KIB.js → chunk-5AQ7FXYG.js} +2 -2
- package/dist/cli/chunks/{chunk-WARFZ626.js → chunk-5P7Q5YNC.js} +1 -1
- package/dist/cli/chunks/{chunk-ARUXFZDY.js → chunk-5U2WHPXL.js} +1 -1
- package/dist/cli/chunks/{chunk-MAXOIEUG.js → chunk-5VSQAGA2.js} +1 -1
- package/dist/cli/chunks/{chunk-CEMROADY.js → chunk-5Z4FBCBK.js} +1 -1
- package/dist/cli/chunks/{chunk-I3AD523O.js → chunk-63QUN3JK.js} +1 -1
- package/dist/cli/chunks/{chunk-4FTVTAMN.js → chunk-6545AS2J.js} +2 -2
- package/dist/cli/chunks/{chunk-5BDVFFYF.js → chunk-6GYGAW53.js} +2 -2
- package/dist/cli/chunks/{chunk-OC2W7KIW.js → chunk-6JUOH6L4.js} +2 -2
- package/dist/cli/chunks/{chunk-YDPBCN7H.js → chunk-6W3QHS45.js} +2 -2
- package/dist/cli/chunks/{chunk-WKIYYF3G.js → chunk-7ADD2ZQL.js} +2 -2
- package/dist/cli/chunks/{chunk-7MKF52GT.js → chunk-7AWK43JN.js} +2 -2
- package/dist/cli/chunks/{chunk-FV53RMVB.js → chunk-7IKWF2AD.js} +1 -1
- package/dist/cli/chunks/{chunk-UCXW24HY.js → chunk-7QTB5XIQ.js} +2 -2
- package/dist/cli/chunks/{chunk-HDBJORV7.js → chunk-A4OMK3FO.js} +2 -2
- package/dist/cli/chunks/{chunk-DMUQV2YU.js → chunk-ADFKY3X2.js} +2 -2
- package/dist/cli/chunks/{chunk-SE4S23C7.js → chunk-AE6HXMOG.js} +1 -1
- package/dist/cli/chunks/{chunk-ZH6HYT7C.js → chunk-AJXGGTX7.js} +1 -1
- package/dist/cli/chunks/{chunk-CMVNYVKL.js → chunk-AQIEK4SY.js} +2 -2
- package/dist/cli/chunks/{chunk-H4ZPPHOI.js → chunk-ARPBG6FQ.js} +2 -2
- package/dist/cli/chunks/{chunk-X36TZXDK.js → chunk-AYGEWPN4.js} +1 -1
- package/dist/cli/chunks/{chunk-JSZNI3AO.js → chunk-B5XUWHKQ.js} +1 -1
- package/dist/cli/chunks/{chunk-76RO2RHG.js → chunk-BMQDELPA.js} +1 -1
- package/dist/cli/chunks/{chunk-26ZMIYSK.js → chunk-BRLUNIR4.js} +2 -2
- package/dist/cli/chunks/{chunk-H6MBRYA7.js → chunk-CNF3ZWLM.js} +2 -2
- package/dist/cli/chunks/{chunk-XRDPGJNW.js → chunk-D5S47YUS.js} +2 -2
- package/dist/cli/chunks/{chunk-S6BWEZKK.js → chunk-D6CKKNYC.js} +2 -2
- package/dist/cli/chunks/{chunk-K6IQBVD7.js → chunk-DNOU2HVQ.js} +2 -2
- package/dist/cli/chunks/{chunk-DPFLJMEI.js → chunk-DRMHVY4T.js} +4 -4
- package/dist/cli/chunks/{chunk-3ATEYGVD.js → chunk-EONKMHKO.js} +2 -2
- package/dist/cli/chunks/{chunk-6LQIVIZB.js → chunk-EZRHSHOQ.js} +2 -2
- package/dist/cli/chunks/{chunk-WEBHFIWS.js → chunk-FRFVN6AA.js} +2 -2
- package/dist/cli/chunks/{chunk-YJUJCLXV.js → chunk-FSGMRQFC.js} +2 -2
- package/dist/cli/chunks/{chunk-OFUF3APC.js → chunk-G3TFNY4T.js} +2 -2
- package/dist/cli/chunks/{chunk-PPD5ZLNA.js → chunk-GOQ4P2PB.js} +2 -2
- package/dist/cli/chunks/chunk-GRQ36XUH.js +24 -0
- package/dist/cli/chunks/{chunk-LI3T5YNC.js → chunk-HH6NCBSP.js} +3 -3
- package/dist/cli/chunks/{chunk-NPT7BYGF.js → chunk-HJ24KMC2.js} +1 -1
- package/dist/cli/chunks/{chunk-AK5Q2WCJ.js → chunk-HJO4RNOW.js} +2 -2
- package/dist/cli/chunks/{chunk-VNFL2TPU.js → chunk-HT6WAYIR.js} +1 -1
- package/dist/cli/chunks/{chunk-IO7ZUP2G.js → chunk-HWBMYR5W.js} +3 -3
- package/dist/cli/chunks/{chunk-AKZK46TQ.js → chunk-IB3ZPLFA.js} +2 -2
- package/dist/cli/chunks/{chunk-EDH4H55B.js → chunk-ICCTQ5LO.js} +2 -2
- package/dist/cli/chunks/{chunk-P7MIOTVP.js → chunk-IF3HPQNV.js} +1 -1
- package/dist/cli/chunks/{chunk-DU4GQKTH.js → chunk-IQBZBUP5.js} +2 -2
- package/dist/cli/chunks/{chunk-LFXXA325.js → chunk-JCTCM6IR.js} +1 -1
- package/dist/cli/chunks/{chunk-K426HTEQ.js → chunk-JDFPAJGB.js} +10 -10
- package/dist/cli/chunks/{chunk-CAVBEZV4.js → chunk-JFLSQH2X.js} +2 -2
- package/dist/cli/chunks/{chunk-P5SGBQLY.js → chunk-JNQN5DNS.js} +1 -1
- package/dist/cli/chunks/{chunk-A4ZDKF5F.js → chunk-JPENUVCI.js} +1 -1
- package/dist/cli/chunks/{chunk-5AFO7ZZG.js → chunk-KUZMVH6N.js} +3 -3
- package/dist/cli/chunks/{chunk-KFE6LB4I.js → chunk-KYTFIP6R.js} +2 -2
- package/dist/cli/chunks/{chunk-OU52V67H.js → chunk-LKURMUBU.js} +4 -4
- package/dist/cli/chunks/{chunk-JCH2FHJ7.js → chunk-LLUPRGOR.js} +2 -2
- package/dist/cli/chunks/{chunk-5KMGG3QW.js → chunk-LMJUMUQJ.js} +4 -4
- package/dist/cli/chunks/{chunk-Y4M2HMPR.js → chunk-LW5DHT3Z.js} +2 -2
- package/dist/cli/chunks/{chunk-JC4Z2ADP.js → chunk-MALOUGSF.js} +2 -2
- package/dist/cli/chunks/{chunk-7VM4ZUHT.js → chunk-MCT4CD5M.js} +2 -2
- package/dist/cli/chunks/{chunk-FPZLOVEF.js → chunk-MWFJC5HR.js} +1 -1
- package/dist/cli/chunks/{chunk-7KHZZVF2.js → chunk-MYMIEQSZ.js} +4 -4
- package/dist/cli/chunks/{chunk-EIWZDVMT.js → chunk-N2BJN6AO.js} +3 -3
- package/dist/cli/chunks/{chunk-3J3QXLWP.js → chunk-NBBLPDJX.js} +2 -2
- package/dist/cli/chunks/{chunk-PFDILSVO.js → chunk-NFJT7XXR.js} +1 -1
- package/dist/cli/chunks/{chunk-IXYF5BZY.js → chunk-NSPCZPTB.js} +2 -2
- package/dist/cli/chunks/{chunk-YWG4LHFU.js → chunk-NV3TXXOW.js} +2 -2
- package/dist/cli/chunks/{chunk-ZU3V4CJ4.js → chunk-O5NEJIHB.js} +2 -2
- package/dist/cli/chunks/{chunk-QZLTIGLB.js → chunk-O7PVZ32A.js} +1 -1
- package/dist/cli/chunks/{chunk-42DCMEUM.js → chunk-ODZSQVEW.js} +1 -1
- package/dist/cli/chunks/{chunk-G6LIQFT2.js → chunk-P6S6ZVB5.js} +1 -1
- package/dist/cli/chunks/{chunk-FYY7OJ6Y.js → chunk-PEIQDQXN.js} +2 -2
- package/dist/cli/chunks/{chunk-WZC4HKGZ.js → chunk-PFWJQPUC.js} +2 -2
- package/dist/cli/chunks/{chunk-6SOGYNJG.js → chunk-PQUXFSN6.js} +2 -2
- package/dist/cli/chunks/{chunk-P2RR4SW5.js → chunk-Q7ORVHJB.js} +3 -3
- package/dist/cli/chunks/{chunk-2Q65LTJN.js → chunk-QEVX4GWF.js} +2 -2
- package/dist/cli/chunks/{chunk-AINAWVGD.js → chunk-QJ5NCYJ3.js} +2 -2
- package/dist/cli/chunks/{chunk-75C5GX7D.js → chunk-QMC5MTBV.js} +2 -2
- package/dist/cli/chunks/{chunk-H3LGBH4Y.js → chunk-QSDIY3E2.js} +1 -1
- package/dist/cli/chunks/chunk-RCPD6F4R.js +2 -0
- package/dist/cli/chunks/{chunk-XNREA3FG.js → chunk-RFQBDMAP.js} +1 -1
- package/dist/cli/chunks/{chunk-KO3WB4SU.js → chunk-SFDUT5WM.js} +2 -2
- package/dist/cli/chunks/{chunk-YGR54EAA.js → chunk-SL3SNOO2.js} +2 -2
- package/dist/cli/chunks/{chunk-QFJDR4HC.js → chunk-SRVTNG6L.js} +2 -2
- package/dist/cli/chunks/{chunk-TOGZ37RL.js → chunk-T76RFXQX.js} +2 -2
- package/dist/cli/chunks/{chunk-AAVUZVM6.js → chunk-TCVEKRPI.js} +2 -2
- package/dist/cli/chunks/{chunk-AZQ6HDPM.js → chunk-TCWR6TDN.js} +2 -2
- package/dist/cli/chunks/{chunk-ZP2GE6DM.js → chunk-THKZVOZV.js} +1 -1
- package/dist/cli/chunks/{chunk-4PYJCIRO.js → chunk-TPMBFARK.js} +31 -26
- package/dist/cli/chunks/{chunk-NIW4CLN2.js → chunk-TQ373GGI.js} +2 -2
- package/dist/cli/chunks/{chunk-CUDGKSFX.js → chunk-TSWF3AGQ.js} +2 -2
- package/dist/cli/chunks/{chunk-MN6W7ZNL.js → chunk-TU6YN43Q.js} +1 -1
- package/dist/cli/chunks/{chunk-CAUTOCLZ.js → chunk-U34OZXD6.js} +2 -2
- package/dist/cli/chunks/{chunk-AYXRT2ND.js → chunk-U3AVZGQA.js} +1 -1
- package/dist/cli/chunks/{chunk-NGE5YNKC.js → chunk-UCYTY4LG.js} +2 -2
- package/dist/cli/chunks/{chunk-LRJWKFGY.js → chunk-UJMTKXPI.js} +2 -2
- package/dist/cli/chunks/{chunk-BGVEBYV4.js → chunk-UQ72K44T.js} +2 -2
- package/dist/cli/chunks/{chunk-XY2B2BEJ.js → chunk-VCUCD3B5.js} +2 -2
- package/dist/cli/chunks/{chunk-LY6PTRVL.js → chunk-VJGHRWMH.js} +2 -2
- package/dist/cli/chunks/{chunk-ZRU3OZEU.js → chunk-VKJQAKYG.js} +2 -2
- package/dist/cli/chunks/{chunk-XY4JS3IZ.js → chunk-VO6YJGB4.js} +2 -2
- package/dist/cli/chunks/{chunk-RHSUXQNF.js → chunk-VQU7DMEY.js} +2 -2
- package/dist/cli/chunks/{chunk-27KNLVOY.js → chunk-WMIRAD3J.js} +2 -2
- package/dist/cli/chunks/{chunk-3KTOM7NN.js → chunk-WNMDWP5A.js} +2 -2
- package/dist/cli/chunks/{chunk-G4CQBQBV.js → chunk-WQZ2WRO4.js} +1 -1
- package/dist/cli/chunks/{chunk-UQBGA4UA.js → chunk-WZYNY3VF.js} +1 -1
- package/dist/cli/chunks/{chunk-KEJEZY2R.js → chunk-X64BEXUY.js} +173 -173
- package/dist/cli/chunks/{chunk-7XIQR6VU.js → chunk-XHRLBJTM.js} +2 -2
- package/dist/cli/chunks/{chunk-UQ6WB4N2.js → chunk-XQ6DW5FV.js} +2 -2
- package/dist/cli/chunks/chunk-XXRTWG7O.js +2 -0
- package/dist/cli/chunks/{chunk-LIEA5EON.js → chunk-Y4AXOHW4.js} +1 -1
- package/dist/cli/chunks/{chunk-ZWMXF6AX.js → chunk-YKSWC7I4.js} +2 -2
- package/dist/cli/chunks/{chunk-IMPSB5WW.js → chunk-YNK6SUPU.js} +2 -2
- package/dist/cli/chunks/{chunk-Z2QNTRUX.js → chunk-YUHM72VQ.js} +2 -2
- package/dist/cli/chunks/{chunk-QZ2GQGJX.js → chunk-YZ5EQR37.js} +2 -2
- package/dist/cli/chunks/{chunk-YGRY2TVI.js → chunk-Z2REKBD6.js} +2 -2
- package/dist/cli/chunks/{chunk-ZQYEBLTL.js → chunk-ZFCVT43J.js} +2 -2
- package/dist/cli/chunks/{chunk-XN4G3SRU.js → chunk-ZKCKOQJI.js} +2 -2
- package/dist/cli/chunks/{chunk-CZYSCUJ4.js → chunk-ZSA6V5FH.js} +2 -2
- package/dist/cli/chunks/{chunk-IQOCTGA2.js → chunk-ZSBJNE35.js} +2 -2
- package/dist/cli/chunks/{chunk-JDFF2QMZ.js → chunk-ZYZT2CDX.js} +1 -1
- package/dist/cli/chunks/{ci-SM3EVLZ4.js → ci-HQCRSCC7.js} +2 -2
- package/dist/cli/chunks/{ci-output-YYXICZBC.js → ci-output-YBVXLA6O.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-CV5UGKXT.js → circuit-breaker-ULGMF2QN.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-BSBUZ4B7.js → claude-flow-setup-MKZ2LJXK.js} +2 -2
- package/dist/cli/chunks/client-2OVEDWGU.js +2 -0
- package/dist/cli/chunks/{cline-installer-P2O6STIC.js → cline-installer-WZQ6XBWN.js} +2 -2
- package/dist/cli/chunks/{code-M7DDLBGS.js → code-H3KGH45S.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-3QZIUYOG.js → code-index-extractor-NUVEAJ7C.js} +2 -2
- package/dist/cli/chunks/{codex-installer-5JVZCCTC.js → codex-installer-JQI6E6CV.js} +2 -2
- package/dist/cli/chunks/{completions-EM7IL2BJ.js → completions-NDF4PFE7.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-VJXVB2CV.js → complexity-analyzer-XCZH66HG.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-RCKJIAEC.js → continuedev-installer-Z4AJGZ7S.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-DZ7LTDOZ.js → copilot-installer-K4IPAL7C.js} +2 -2
- package/dist/cli/chunks/core-handlers-UXRRYP52.js +2 -0
- package/dist/cli/chunks/{cost-tracker-QLOLXVAM.js → cost-tracker-35KXAB23.js} +2 -2
- package/dist/cli/chunks/{coverage-LYHTLWRV.js → coverage-QW5I4TYZ.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-PV3VQVLO.js +2 -0
- package/dist/cli/chunks/{cursor-installer-PSIZ3Y53.js → cursor-installer-P4Z7RMIZ.js} +2 -2
- package/dist/cli/chunks/{daemon-IYDTMA5M.js → daemon-ESUEM6VB.js} +4 -4
- package/dist/cli/chunks/{daemon-YLOAXM4X.js → daemon-WQWTCYBM.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-I2UIO3Z7.js → dag-attention-scheduler-7XD2VGON.js} +2 -2
- package/dist/cli/chunks/{detect-ZXQ7X7GZ.js → detect-GZ3P4DI7.js} +2 -2
- package/dist/cli/chunks/{dist-node-GK6OZX4H.js → dist-node-6WWAW7OP.js} +2 -2
- package/dist/cli/chunks/{domain-handler-NS3IBLRQ.js → domain-handler-3GTLWARQ.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-5G4RZEWF.js → domain-transfer-TQYO3SVG.js} +2 -2
- package/dist/cli/chunks/dream-UFUXVJQC.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-V4JJUFR6.js → embed-and-insert-pattern-BGIMA77V.js} +2 -2
- package/dist/cli/chunks/{eval-7Q6PPYKR.js → eval-SXV6DRDD.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-DUBKSYFM.js → experience-capture-middleware-TT6WCT2S.js} +3 -3
- package/dist/cli/chunks/{fast-paths-IDPPMBUW.js → fast-paths-HTAZHEQP.js} +2 -2
- package/dist/cli/chunks/{feature-flags-EPTMAAKA.js → feature-flags-DIE3Z2B4.js} +2 -2
- package/dist/cli/chunks/{feature-flags-KXI6FDY7.js → feature-flags-WBUKU54W.js} +2 -2
- package/dist/cli/chunks/{file-discovery-EDX2OJO7.js → file-discovery-SKDETFS3.js} +2 -2
- package/dist/cli/chunks/{fleet-67BO3LJ4.js → fleet-WCWEPAVU.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-YARORYT7.js → gnn-wrapper-KWZOWBYS.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-K3JGPBYR.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-CDDRSV5E.js → hnsw-legacy-bridge-6OJJDZHL.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-5JTP47LA.js → hnswlib-node-LAFK5QZ4.js} +2 -2
- package/dist/cli/chunks/{hooks-6SCAE6LC.js → hooks-OXEBTLXV.js} +10 -10
- package/dist/cli/chunks/hybrid-router-NQRIE2GG.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-I3LUMO7I.js → hypergraph-engine-NL74PRHD.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-YAKAIVCN.js → hypergraph-handler-KZ54AEEL.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-46347ZDV.js +2 -0
- package/dist/cli/chunks/{init-handler-NBKCZD7Q.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-YGPJCPU3.js → kilocode-installer-WISQMJK7.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-JV3ONVMN.js → kiro-installer-O7TBB3GM.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-KM3JDBGR.js +2 -0
- package/dist/cli/chunks/{learning-2FEZJ5CX.js → learning-6IZBGVRU.js} +3 -3
- package/dist/cli/chunks/{llm-router-SILI4KLU.js → llm-router-QDMQPPQ7.js} +4 -4
- package/dist/cli/chunks/llm-router-service-IFO6GRRO.js +2 -0
- package/dist/cli/chunks/{load-EGXLQVR3.js → load-KLAJJGL5.js} +2 -2
- package/dist/cli/chunks/load-test-TTKCYAPB.js +2 -0
- package/dist/cli/chunks/{mcp-OJH775TL.js → mcp-SZOPQZIZ.js} +2 -2
- package/dist/cli/chunks/{memory-FNEOK4FW.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-ORTFWLLE.js → multi-model-executor-TDNQGTOT.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-UAQLW6XX.js → opencode-installer-NGYGEDMV.js} +2 -2
- package/dist/cli/chunks/{orchestrator-VE5KJ2V4.js → orchestrator-KPI5DY2C.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-TMXAYD43.js +2 -0
- package/dist/cli/chunks/{pipeline-FNMDRWTU.js → pipeline-CSDCC675.js} +2 -2
- package/dist/cli/chunks/{platform-MGAKRUQN.js → platform-Q5XKEVKH.js} +2 -2
- package/dist/cli/chunks/{plugin-YX7THX3I.js → plugin-XKKR3GVL.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-XJV4RLMK.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-QFET442Y.js → protocol-handler-REQKTJGG.js} +2 -2
- package/dist/cli/chunks/{prove-QBAESCOC.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-ZTNRL6EG.js → quality-3DQ2H5TK.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-NBZZ4MGC.js +2 -0
- package/dist/cli/chunks/{real-embeddings-ZFFDV6HC.js → real-embeddings-FCGNYWLL.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-J4LFL4AE.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-A5QG2TP2.js → routing-handler-YRZ2LDCR.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-J5JL5WX5.js → ruvector-commands-GCQVBJ4E.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-H7442GMO.js → rvf-dual-writer-B562P3ZC.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-PTFQUYKC.js → rvf-migration-adapter-NAGFKCMD.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-RSNROYRX.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-LHHLMCBA.js → security-IFOYTD75.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-NPSHVUTM.js → shared-rvf-adapter-TYD5TQ35.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-INQDY5WE.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-R2KIAMAE.js → status-handler-HFPWSCBY.js} +2 -2
- package/dist/cli/chunks/{structural-health-2VPPIOZX.js → structural-health-KZI6YMKV.js} +2 -2
- package/dist/cli/chunks/{sync-NLASP7AK.js → sync-ABZNNYRC.js} +2 -2
- package/dist/cli/chunks/{sync-ASZ3T5GT.js → sync-Z5BDDBMK.js} +2 -2
- package/dist/cli/chunks/{task-handler-UV5R6LJG.js → task-handler-5ACZEPJ7.js} +2 -2
- package/dist/cli/chunks/{task-handlers-I6YJXPYP.js → task-handlers-UZWDPL6A.js} +3 -3
- package/dist/cli/chunks/{test-TE43TNTI.js → test-APO3MCVV.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-WWWWF2TZ.js → test-scheduling-EFZA5G5C.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-HEWP7KKS.js → token-bootstrap-J2OPLNUK.js} +2 -2
- package/dist/cli/chunks/{token-usage-3FVHUAW6.js → token-usage-VHWVNN4R.js} +2 -2
- package/dist/cli/chunks/{transformers-O5OFM4XM.js → transformers-PX4HPO75.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-YOYWFW63.js → tree-sitter-wasm-parser-44HA2Z3F.js} +2 -2
- package/dist/cli/chunks/{types-42GR6PLO.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-BU6DJ4LT.js → upgrade-OZ3O6ZZI.js} +2 -2
- package/dist/cli/chunks/{validate-MPTBARGN.js → validate-DRY5BMWX.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-5LUQYHPP.js → validate-swarm-QD3LYPUF.js} +2 -2
- package/dist/cli/chunks/{vibium-MJJDANDL.js → vibium-2J3H2ITD.js} +2 -2
- package/dist/cli/chunks/visual-security-MPUG5HPI.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-5TF4UGB3.js → web-tree-sitter-KRNUOGKI.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-NQAOSVCN.js → windsurf-installer-PQIPH3WP.js} +2 -2
- package/dist/cli/chunks/{witness-chain-23UWK2JT.js → witness-chain-HPLOYPS7.js} +2 -2
- package/dist/cli/chunks/witness-chain-Q4BZHPDF.js +2 -0
- package/dist/cli/chunks/{workflow-3QOLXRJC.js → workflow-OAQ3FWCY.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-4NDWECYK.js +2 -0
- package/dist/cli/chunks/{wrappers-S6EUZBCX.js → wrappers-UPIU6S5S.js} +2 -2
- package/dist/coordination/consensus/providers/ollama-provider.js +3 -2
- package/dist/feedback/regenerability-gate.d.ts +70 -0
- package/dist/feedback/regenerability-gate.js +91 -0
- 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 +383 -378
- 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/gemini.js +16 -10
- 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/providers/openrouter.js +20 -20
- package/dist/shared/llm/router/hybrid-router.js +18 -1
- package/dist/validation/conservation-guard.d.ts +39 -0
- package/dist/validation/conservation-guard.js +54 -0
- package/dist/validation/oracle-eval.d.ts +46 -0
- package/dist/validation/oracle-eval.js +108 -0
- package/dist/validation/skill-parity.d.ts +58 -0
- package/dist/validation/skill-parity.js +94 -0
- package/dist/validation/test-gen-prompt.d.ts +10 -0
- package/dist/validation/test-gen-prompt.js +26 -0
- package/package.json +12 -1
- package/dist/cli/chunks/adapter-LDNYC4GH.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-CA4CT5Q7.js +0 -2
- package/dist/cli/chunks/base-TSDAEMT4.js +0 -2
- package/dist/cli/chunks/browser-workflow-3HCTJBLR.js +0 -2
- package/dist/cli/chunks/chunk-527U4AHC.js +0 -24
- package/dist/cli/chunks/chunk-72VVTMEL.js +0 -2
- package/dist/cli/chunks/chunk-7HYO76F2.js +0 -2
- package/dist/cli/chunks/chunk-K3YM2Z3E.js +0 -2
- package/dist/cli/chunks/client-WRDYZGM2.js +0 -2
- package/dist/cli/chunks/core-handlers-O6E5DNHT.js +0 -2
- package/dist/cli/chunks/cross-domain-router-EV7LQMDO.js +0 -2
- package/dist/cli/chunks/dream-E4C236UL.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-WMADLDKT.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-STRDGJ65.js +0 -2
- package/dist/cli/chunks/hnsw-index-DBHX3TSC.js +0 -2
- package/dist/cli/chunks/hybrid-router-L2K55I4T.js +0 -2
- package/dist/cli/chunks/impact-analyzer-WMO7ZGS7.js +0 -2
- package/dist/cli/chunks/init-wizard-ZAB7UZZS.js +0 -2
- package/dist/cli/chunks/kernel-4MUFDEQI.js +0 -2
- package/dist/cli/chunks/knowledge-graph-GZRFGXLX.js +0 -2
- package/dist/cli/chunks/llm-router-service-5ODLU5U5.js +0 -2
- package/dist/cli/chunks/load-test-ZDQFS5XS.js +0 -2
- package/dist/cli/chunks/memory-backend-UK7SQ6ZM.js +0 -2
- package/dist/cli/chunks/memory-handlers-6LDUH3JZ.js +0 -2
- package/dist/cli/chunks/pattern-null-store-LO2QTIBU.js +0 -2
- package/dist/cli/chunks/protocol-executor-JWMYQEOI.js +0 -2
- package/dist/cli/chunks/provider-manager-PEXOHGNB.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-7B2G4UGQ.js +0 -2
- package/dist/cli/chunks/queen-coordinator-6OF4HT3S.js +0 -2
- package/dist/cli/chunks/router-GMWRF6DU.js +0 -2
- package/dist/cli/chunks/routing-feedback-XKJSQK3I.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-YEA6TMXB.js +0 -2
- package/dist/cli/chunks/safe-db-5DOP2J3V.js +0 -2
- package/dist/cli/chunks/schedule-SUWTOBHP.js +0 -2
- package/dist/cli/chunks/scheduler-P4VTC5SQ.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-5Z2RAXH7.js +0 -2
- package/dist/cli/chunks/unified-memory-HCKOPFAY.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-6NQPYA5C.js +0 -2
- package/dist/cli/chunks/unified-persistence-NIMKNAFR.js +0 -2
- package/dist/cli/chunks/visual-security-HFGHA57Z.js +0 -2
- package/dist/cli/chunks/witness-chain-VZGGJ7TJ.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-45L7D4SN.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,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regenerability Gate (ADR-113)
|
|
3
|
+
*
|
|
4
|
+
* Answers the Deletion Test per module: "if I deleted this module and
|
|
5
|
+
* regenerated it, how confident am I that a wrong rebuild would be caught?"
|
|
6
|
+
* Confidence comes from the oracle tier backing the module (durable > live >
|
|
7
|
+
* ephemeral > none) scaled by its mutation kill rate. The gate is warn-by-default
|
|
8
|
+
* and opt-in blocking so it never breaks an existing pipeline on adoption.
|
|
9
|
+
*
|
|
10
|
+
* Pure functions only — no I/O. Inputs (tier presence + mutation score) are
|
|
11
|
+
* produced upstream by the oracle eval runner and test-tier tagging.
|
|
12
|
+
*/
|
|
13
|
+
/** Which durability tier of test backs a module (see qe-test-generation SKILL.md). */
|
|
14
|
+
export type RegenerabilityTier = 'durable' | 'live' | 'ephemeral' | 'none';
|
|
15
|
+
export interface ModuleTestProfile {
|
|
16
|
+
module: string;
|
|
17
|
+
/** Mutation kill rate of the module's tests, 0..1. */
|
|
18
|
+
mutationScore: number;
|
|
19
|
+
/** Has >=1 durable test (invariant / contract / property at the boundary). */
|
|
20
|
+
hasDurable: boolean;
|
|
21
|
+
/** Has live checks (monitoring / drift / cost assertions). */
|
|
22
|
+
hasLive?: boolean;
|
|
23
|
+
/** Has ephemeral tests (example-based / mock-call). */
|
|
24
|
+
hasEphemeral?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface RegenerabilityResult {
|
|
27
|
+
module: string;
|
|
28
|
+
tier: RegenerabilityTier;
|
|
29
|
+
/** 0..1 confidence that deleting + regenerating this module is safe. */
|
|
30
|
+
score: number;
|
|
31
|
+
reason: string;
|
|
32
|
+
}
|
|
33
|
+
export interface RegenerabilityGateConfig {
|
|
34
|
+
/** Minimum mutation kill rate per module. */
|
|
35
|
+
mutationScoreMin: number;
|
|
36
|
+
/** Minimum regenerability score per module. */
|
|
37
|
+
regenerabilityMin: number;
|
|
38
|
+
/** 'warn' reports but never fails CI; 'block' fails CI when thresholds are unmet. */
|
|
39
|
+
mode: 'warn' | 'block';
|
|
40
|
+
}
|
|
41
|
+
/** Non-blocking by default — adoption must not break existing pipelines. */
|
|
42
|
+
export declare const DEFAULT_REGENERABILITY_GATE: RegenerabilityGateConfig;
|
|
43
|
+
export interface RegenerabilityGateVerdict {
|
|
44
|
+
/** True when every module meets both thresholds. */
|
|
45
|
+
passed: boolean;
|
|
46
|
+
/** True only when the gate should fail CI: mode === 'block' AND not passed. */
|
|
47
|
+
blocking: boolean;
|
|
48
|
+
mode: 'warn' | 'block';
|
|
49
|
+
results: RegenerabilityResult[];
|
|
50
|
+
failures: Array<{
|
|
51
|
+
module: string;
|
|
52
|
+
reasons: string[];
|
|
53
|
+
}>;
|
|
54
|
+
summary: string;
|
|
55
|
+
}
|
|
56
|
+
/** Highest tier of test present on the module. Durable wins because it survives a rewrite. */
|
|
57
|
+
export declare function classifyTier(profile: ModuleTestProfile): RegenerabilityTier;
|
|
58
|
+
/**
|
|
59
|
+
* Regenerability = fault-detection (mutation score) discounted by how well the
|
|
60
|
+
* backing tests survive a reimplementation. Ephemeral tests are coupled to the
|
|
61
|
+
* current code, so even a high mutation score earns limited regeneration
|
|
62
|
+
* confidence; durable tests earn full confidence for their kill rate.
|
|
63
|
+
*/
|
|
64
|
+
export declare function regenerabilityScore(profile: ModuleTestProfile): RegenerabilityResult;
|
|
65
|
+
/**
|
|
66
|
+
* Evaluate the regenerability gate over a set of modules.
|
|
67
|
+
* `passed` reflects thresholds; `blocking` reflects whether CI should fail.
|
|
68
|
+
*/
|
|
69
|
+
export declare function evaluateRegenerabilityGate(profiles: ModuleTestProfile[], config?: RegenerabilityGateConfig): RegenerabilityGateVerdict;
|
|
70
|
+
//# sourceMappingURL=regenerability-gate.d.ts.map
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regenerability Gate (ADR-113)
|
|
3
|
+
*
|
|
4
|
+
* Answers the Deletion Test per module: "if I deleted this module and
|
|
5
|
+
* regenerated it, how confident am I that a wrong rebuild would be caught?"
|
|
6
|
+
* Confidence comes from the oracle tier backing the module (durable > live >
|
|
7
|
+
* ephemeral > none) scaled by its mutation kill rate. The gate is warn-by-default
|
|
8
|
+
* and opt-in blocking so it never breaks an existing pipeline on adoption.
|
|
9
|
+
*
|
|
10
|
+
* Pure functions only — no I/O. Inputs (tier presence + mutation score) are
|
|
11
|
+
* produced upstream by the oracle eval runner and test-tier tagging.
|
|
12
|
+
*/
|
|
13
|
+
/** Non-blocking by default — adoption must not break existing pipelines. */
|
|
14
|
+
export const DEFAULT_REGENERABILITY_GATE = {
|
|
15
|
+
mutationScoreMin: 0.6,
|
|
16
|
+
regenerabilityMin: 0.5,
|
|
17
|
+
mode: 'warn',
|
|
18
|
+
};
|
|
19
|
+
const round = (n) => Math.round(n * 10000) / 10000;
|
|
20
|
+
const clamp01 = (n) => Math.max(0, Math.min(1, n));
|
|
21
|
+
/** Highest tier of test present on the module. Durable wins because it survives a rewrite. */
|
|
22
|
+
export function classifyTier(profile) {
|
|
23
|
+
if (profile.hasDurable)
|
|
24
|
+
return 'durable';
|
|
25
|
+
if (profile.hasLive)
|
|
26
|
+
return 'live';
|
|
27
|
+
if (profile.hasEphemeral)
|
|
28
|
+
return 'ephemeral';
|
|
29
|
+
return 'none';
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Regenerability = fault-detection (mutation score) discounted by how well the
|
|
33
|
+
* backing tests survive a reimplementation. Ephemeral tests are coupled to the
|
|
34
|
+
* current code, so even a high mutation score earns limited regeneration
|
|
35
|
+
* confidence; durable tests earn full confidence for their kill rate.
|
|
36
|
+
*/
|
|
37
|
+
export function regenerabilityScore(profile) {
|
|
38
|
+
const tier = classifyTier(profile);
|
|
39
|
+
const mutation = clamp01(profile.mutationScore);
|
|
40
|
+
let score;
|
|
41
|
+
let reason;
|
|
42
|
+
switch (tier) {
|
|
43
|
+
case 'durable':
|
|
44
|
+
score = mutation;
|
|
45
|
+
reason = `durable tests kill ${(mutation * 100).toFixed(0)}% of mutants and survive a reimplementation`;
|
|
46
|
+
break;
|
|
47
|
+
case 'live':
|
|
48
|
+
score = mutation * 0.7;
|
|
49
|
+
reason = `live checks only; ${(mutation * 100).toFixed(0)}% mutation — add durable boundary tests for full confidence`;
|
|
50
|
+
break;
|
|
51
|
+
case 'ephemeral':
|
|
52
|
+
score = mutation * 0.4;
|
|
53
|
+
reason = `only ephemeral (example/mock) tests — coupled to the current implementation, would not survive a rewrite`;
|
|
54
|
+
break;
|
|
55
|
+
case 'none':
|
|
56
|
+
default:
|
|
57
|
+
score = 0;
|
|
58
|
+
reason = `no tests — deleting this module is unrecoverable (fails the Deletion Test)`;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
return { module: profile.module, tier, score: round(score), reason };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Evaluate the regenerability gate over a set of modules.
|
|
65
|
+
* `passed` reflects thresholds; `blocking` reflects whether CI should fail.
|
|
66
|
+
*/
|
|
67
|
+
export function evaluateRegenerabilityGate(profiles, config = DEFAULT_REGENERABILITY_GATE) {
|
|
68
|
+
const results = profiles.map(regenerabilityScore);
|
|
69
|
+
const failures = [];
|
|
70
|
+
for (let i = 0; i < profiles.length; i++) {
|
|
71
|
+
const p = profiles[i];
|
|
72
|
+
const r = results[i];
|
|
73
|
+
const reasons = [];
|
|
74
|
+
if (clamp01(p.mutationScore) < config.mutationScoreMin) {
|
|
75
|
+
reasons.push(`mutation score ${(clamp01(p.mutationScore) * 100).toFixed(0)}% < ${(config.mutationScoreMin * 100).toFixed(0)}%`);
|
|
76
|
+
}
|
|
77
|
+
if (r.score < config.regenerabilityMin) {
|
|
78
|
+
reasons.push(`regenerability ${(r.score * 100).toFixed(0)}% < ${(config.regenerabilityMin * 100).toFixed(0)}% (${r.tier})`);
|
|
79
|
+
}
|
|
80
|
+
if (reasons.length > 0)
|
|
81
|
+
failures.push({ module: p.module, reasons });
|
|
82
|
+
}
|
|
83
|
+
const passed = failures.length === 0;
|
|
84
|
+
const blocking = config.mode === 'block' && !passed;
|
|
85
|
+
const verb = passed ? 'PASS' : config.mode === 'block' ? 'FAIL (blocking)' : 'WARN (non-blocking)';
|
|
86
|
+
const summary = profiles.length === 0
|
|
87
|
+
? 'regenerability gate: no modules evaluated'
|
|
88
|
+
: `regenerability gate: ${verb} — ${profiles.length - failures.length}/${profiles.length} modules meet thresholds`;
|
|
89
|
+
return { passed, blocking, mode: config.mode, results, failures, summary };
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=regenerability-gate.js.map
|
|
@@ -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[];
|