agentic-qe 3.9.22 → 3.9.24

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.
Files changed (288) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +51 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +5 -5
  5. package/dist/cli/chunks/adapter-KIGGXGP6.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-GUS4CPIF.js → agent-booster-wasm-YYKCGP5I.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-X3JM3LAL.js → agent-handler-SDRMLJNW.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-DZVV32I2.js → agent-memory-branch-AD5E4475.js} +2 -2
  9. package/dist/cli/chunks/aqe-learning-engine-L3OD7COO.js +2 -0
  10. package/dist/cli/chunks/{audit-LO2I2D4V.js → audit-6CXDBP5N.js} +2 -2
  11. package/dist/cli/chunks/base-D55R3AAK.js +2 -0
  12. package/dist/cli/chunks/{hnswlib-node-VHJGVLVU.js → better-sqlite3-X4MDD7D3.js} +2 -2
  13. package/dist/cli/chunks/{brain-handler-SW6BDUVF.js → brain-handler-QPMGPK4J.js} +3 -3
  14. package/dist/cli/chunks/{branch-enumerator-COUIEIXT.js → branch-enumerator-RNVAQ47F.js} +2 -2
  15. package/dist/cli/chunks/{browser-I3KE2PKR.js → browser-GCXX35IY.js} +2 -2
  16. package/dist/cli/chunks/browser-workflow-GVOTUSBY.js +2 -0
  17. package/dist/cli/chunks/{chunk-XNLRBJLS.js → chunk-25AL3RPA.js} +1 -1
  18. package/dist/cli/chunks/{chunk-SEFMGIDM.js → chunk-2NJO73YD.js} +2 -2
  19. package/dist/cli/chunks/{chunk-AKBYBOUV.js → chunk-3LHP7G6U.js} +1 -1
  20. package/dist/cli/chunks/{chunk-QBQHA2PQ.js → chunk-3NZ7IVRI.js} +2 -2
  21. package/dist/cli/chunks/{chunk-5HUFNSCO.js → chunk-3Y5C4SE3.js} +2 -2
  22. package/dist/cli/chunks/{chunk-7TWDEXR4.js → chunk-3ZNIACXR.js} +1 -1
  23. package/dist/cli/chunks/{chunk-6EBWEMJJ.js → chunk-42CCJFXZ.js} +2 -2
  24. package/dist/cli/chunks/{chunk-J4DENED7.js → chunk-4AUGLQOE.js} +2 -2
  25. package/dist/cli/chunks/{chunk-75EXWLL2.js → chunk-4FCCQJQA.js} +1 -1
  26. package/dist/cli/chunks/{chunk-75EZBOLF.js → chunk-4LA24G33.js} +1 -1
  27. package/dist/cli/chunks/{chunk-7BKQTKKO.js → chunk-4SDQZI7D.js} +1 -1
  28. package/dist/cli/chunks/{chunk-QBY4LMKC.js → chunk-54RVQDTB.js} +1 -1
  29. package/dist/cli/chunks/{chunk-JTTEDSP5.js → chunk-5OBSLVXI.js} +2 -2
  30. package/dist/cli/chunks/{chunk-LVW2AMCE.js → chunk-6FCVDWPR.js} +1 -1
  31. package/dist/cli/chunks/{chunk-PJQVLSZL.js → chunk-6SWRLJ3I.js} +2 -2
  32. package/dist/cli/chunks/{chunk-SZXKDWNU.js → chunk-6XXHK6NL.js} +2 -2
  33. package/dist/cli/chunks/{chunk-C32ZD3IM.js → chunk-73JTRGIQ.js} +2 -2
  34. package/dist/cli/chunks/{chunk-34V7MJEC.js → chunk-73K34C4S.js} +4 -4
  35. package/dist/cli/chunks/{chunk-WXM3QRV3.js → chunk-7H36CVZ6.js} +2 -2
  36. package/dist/cli/chunks/{chunk-YT45LRYT.js → chunk-7I6ULQRI.js} +1 -1
  37. package/dist/cli/chunks/{chunk-ZIRSR3CR.js → chunk-7LIRKYB6.js} +2 -2
  38. package/dist/cli/chunks/{chunk-5Q4HS3PB.js → chunk-7ODDJI3P.js} +2 -2
  39. package/dist/cli/chunks/{chunk-3UPELJAD.js → chunk-7TC7HNSA.js} +2 -2
  40. package/dist/cli/chunks/{chunk-V6FH47RF.js → chunk-7XK73L6C.js} +4 -4
  41. package/dist/cli/chunks/{chunk-QH5PMTYD.js → chunk-A4CHQJEO.js} +2 -2
  42. package/dist/cli/chunks/{chunk-DLOY6QOK.js → chunk-AJ45BRKK.js} +2 -2
  43. package/dist/cli/chunks/{chunk-N7LNGYUI.js → chunk-BDGKN7GC.js} +1 -1
  44. package/dist/cli/chunks/{chunk-EBFG55L3.js → chunk-BWCSNSXR.js} +2 -2
  45. package/dist/cli/chunks/{chunk-G35AFB22.js → chunk-C4ST4NP4.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ASJWT2HO.js → chunk-CTSTHKH4.js} +1 -1
  47. package/dist/cli/chunks/{chunk-XZLXDSDH.js → chunk-DFG3KX7E.js} +2 -2
  48. package/dist/cli/chunks/chunk-DWNKD2AQ.js +2 -0
  49. package/dist/cli/chunks/{chunk-QYUA3QRO.js → chunk-DZHAXSOZ.js} +1 -1
  50. package/dist/cli/chunks/{chunk-Q6NM3PHP.js → chunk-DZPKBTP3.js} +2 -2
  51. package/dist/cli/chunks/{chunk-PUBADXN6.js → chunk-EAC3PZGH.js} +2 -2
  52. package/dist/cli/chunks/{chunk-GE4ABLTW.js → chunk-EALLOFGD.js} +1 -1
  53. package/dist/cli/chunks/{chunk-BVFRL52U.js → chunk-EHA2BZ47.js} +2 -2
  54. package/dist/cli/chunks/{chunk-KA22YYYW.js → chunk-ERDCTBUC.js} +2 -2
  55. package/dist/cli/chunks/{chunk-VBNVPKPJ.js → chunk-F4GZAQR2.js} +2 -2
  56. package/dist/cli/chunks/{chunk-MHV7VXPW.js → chunk-FHRUSW2V.js} +2 -2
  57. package/dist/cli/chunks/{chunk-YJ3KKNS5.js → chunk-FPBCG7CX.js} +3 -3
  58. package/dist/cli/chunks/{chunk-LSPQUQZQ.js → chunk-G73FWR34.js} +3 -3
  59. package/dist/cli/chunks/{chunk-QUASI6T7.js → chunk-HFPQVO4O.js} +2 -2
  60. package/dist/cli/chunks/{chunk-EAEF52EW.js → chunk-HGOTTQQK.js} +2 -2
  61. package/dist/cli/chunks/{chunk-TF33AXXK.js → chunk-HH3ENF7B.js} +1 -1
  62. package/dist/cli/chunks/{chunk-76JSNSX5.js → chunk-HQY2BNJT.js} +2 -2
  63. package/dist/cli/chunks/{chunk-C2ROCY2Y.js → chunk-HYX3LWLA.js} +2 -2
  64. package/dist/cli/chunks/{chunk-YCG6NXTH.js → chunk-I3VTEYYF.js} +3 -3
  65. package/dist/cli/chunks/{chunk-5VE5R2B4.js → chunk-IFCUBSI2.js} +1 -1
  66. package/dist/cli/chunks/{chunk-SBXMNI7G.js → chunk-INPP5RW4.js} +2 -2
  67. package/dist/cli/chunks/{chunk-NDBSIHGC.js → chunk-IQRLMOTN.js} +1 -1
  68. package/dist/cli/chunks/{chunk-EIOC2ZBV.js → chunk-JDJ6VEXU.js} +2 -2
  69. package/dist/cli/chunks/{chunk-BAIQZTBO.js → chunk-JVN5TS5E.js} +2 -2
  70. package/dist/cli/chunks/{chunk-LCOVR5PF.js → chunk-JYMDWMEJ.js} +6 -6
  71. package/dist/cli/chunks/{chunk-F5PYXTN6.js → chunk-K2M6UBGI.js} +1 -1
  72. package/dist/cli/chunks/{chunk-ZYVFF2GF.js → chunk-KQRJXVMO.js} +1 -1
  73. package/dist/cli/chunks/{chunk-F6S2BURJ.js → chunk-KSN6QUCR.js} +2 -2
  74. package/dist/cli/chunks/{chunk-ZYLONMC3.js → chunk-L4JUOVBW.js} +2 -2
  75. package/dist/cli/chunks/{chunk-4KIDHFF3.js → chunk-L5JJKGKJ.js} +1 -1
  76. package/dist/cli/chunks/{chunk-IPWO26NP.js → chunk-L5Y2BVYX.js} +2 -2
  77. package/dist/cli/chunks/{chunk-KBWJRXYS.js → chunk-L7EDWT5P.js} +2 -2
  78. package/dist/cli/chunks/{chunk-MGTHNWDX.js → chunk-LOFQAI7V.js} +2 -2
  79. package/dist/cli/chunks/{chunk-D4RS57YM.js → chunk-LQHWPAQP.js} +2 -2
  80. package/dist/cli/chunks/{chunk-5D6UQZG6.js → chunk-LVR47OZA.js} +2 -2
  81. package/dist/cli/chunks/{chunk-RHJXNBT5.js → chunk-LX6XRBJ2.js} +2 -2
  82. package/dist/cli/chunks/{chunk-6KHLLAFS.js → chunk-M7MA7R2X.js} +1 -1
  83. package/dist/cli/chunks/{chunk-UJQ4APLZ.js → chunk-MDSCVTJZ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-ZTVYRPXO.js → chunk-MG52OB2J.js} +1 -1
  85. package/dist/cli/chunks/{chunk-X3UEZQIH.js → chunk-MUH2YGNO.js} +2 -2
  86. package/dist/cli/chunks/{chunk-Q4Q4ZPEO.js → chunk-MXXRESCK.js} +2 -2
  87. package/dist/cli/chunks/{chunk-TFEEZPAV.js → chunk-N643IL63.js} +2 -2
  88. package/dist/cli/chunks/{chunk-2OQVDOCP.js → chunk-NOUDTI2R.js} +2 -2
  89. package/dist/cli/chunks/{chunk-UG4NLJ6S.js → chunk-NYEVQB5R.js} +2 -2
  90. package/dist/cli/chunks/{chunk-T6SZZ6GL.js → chunk-O3ADCWEC.js} +2 -2
  91. package/dist/cli/chunks/{chunk-PC3NYFID.js → chunk-O4CTWG4B.js} +2 -2
  92. package/dist/cli/chunks/{chunk-O2RWRFY2.js → chunk-OJPKAWKD.js} +1 -1
  93. package/dist/cli/chunks/{chunk-5QP4OPZM.js → chunk-OOU4VQ2T.js} +2 -2
  94. package/dist/cli/chunks/{chunk-P3CE2OST.js → chunk-OPHVJUZK.js} +2 -2
  95. package/dist/cli/chunks/{chunk-KXVCKQ2O.js → chunk-PEKULOY4.js} +1 -1
  96. package/dist/cli/chunks/{chunk-CWINAMA7.js → chunk-PSJJNJLE.js} +1 -1
  97. package/dist/cli/chunks/{chunk-N242BGZS.js → chunk-PTIPWMXS.js} +1 -1
  98. package/dist/cli/chunks/{chunk-HHTTDWS2.js → chunk-PU3MT7SE.js} +7 -7
  99. package/dist/cli/chunks/{chunk-OLDHOXH5.js → chunk-Q5OLVIKK.js} +2 -2
  100. package/dist/cli/chunks/{chunk-FN33YLS4.js → chunk-QDUV7TDQ.js} +2 -2
  101. package/dist/cli/chunks/{chunk-QXFPR4ND.js → chunk-QG63KW2J.js} +2 -2
  102. package/dist/cli/chunks/{chunk-EP65OKY3.js → chunk-QLPGWGJT.js} +1 -1
  103. package/dist/cli/chunks/{chunk-RDFBNLOP.js → chunk-QNMIY45G.js} +3 -3
  104. package/dist/cli/chunks/{chunk-JNRUY2BU.js → chunk-QUN5QEW5.js} +2 -2
  105. package/dist/cli/chunks/{chunk-QKDYDDO6.js → chunk-RGOJFKIY.js} +2 -2
  106. package/dist/cli/chunks/{chunk-2ABN34GT.js → chunk-RHFNFYIL.js} +2 -2
  107. package/dist/cli/chunks/{chunk-77CR3VJL.js → chunk-RMTPAEZO.js} +2 -2
  108. package/dist/cli/chunks/{chunk-L2D56OS2.js → chunk-ROBKPGX5.js} +3 -3
  109. package/dist/cli/chunks/{chunk-3M7EAXED.js → chunk-RSED3U2F.js} +1 -1
  110. package/dist/cli/chunks/{chunk-LFUJSR5V.js → chunk-SE572JWE.js} +3 -3
  111. package/dist/cli/chunks/{chunk-U33MB6BS.js → chunk-SNTRKHVH.js} +4 -4
  112. package/dist/cli/chunks/{chunk-NKHHOJBJ.js → chunk-TQGEZV6M.js} +2 -2
  113. package/dist/cli/chunks/{chunk-ELYTUR3K.js → chunk-TS5YIHJH.js} +1 -1
  114. package/dist/cli/chunks/{chunk-KEXERBH2.js → chunk-TUY3BOQM.js} +2 -2
  115. package/dist/cli/chunks/{chunk-7TASYE2O.js → chunk-U6V6R2EF.js} +2 -2
  116. package/dist/cli/chunks/{chunk-7V2KGOFN.js → chunk-UGR3JJD7.js} +2 -2
  117. package/dist/cli/chunks/{chunk-F76YPLIC.js → chunk-V7IDAZKZ.js} +1 -1
  118. package/dist/cli/chunks/{chunk-T62S7PHC.js → chunk-VUKMN54Z.js} +1 -1
  119. package/dist/cli/chunks/{chunk-46X57677.js → chunk-W7HIJ5DV.js} +8 -8
  120. package/dist/cli/chunks/{chunk-CYHVGDGJ.js → chunk-WB3GQ7X7.js} +2 -2
  121. package/dist/cli/chunks/{chunk-6I6LXONA.js → chunk-WGEX22Z4.js} +2 -2
  122. package/dist/cli/chunks/{chunk-XRTQMK2J.js → chunk-WH75EHSK.js} +2 -2
  123. package/dist/cli/chunks/{chunk-J47LS6JI.js → chunk-XD6XAYKA.js} +9 -9
  124. package/dist/cli/chunks/{chunk-ZHJL5MGV.js → chunk-YEVQOQVZ.js} +1 -1
  125. package/dist/cli/chunks/{chunk-ZZD2O63H.js → chunk-YFWVVYZX.js} +1 -1
  126. package/dist/cli/chunks/{chunk-VEQZARRH.js → chunk-YLC6QGNW.js} +2 -2
  127. package/dist/cli/chunks/{chunk-EHIS2X2O.js → chunk-YRKY76JZ.js} +2 -2
  128. package/dist/cli/chunks/{chunk-5WE7JRVM.js → chunk-Z2CO6ZI5.js} +1 -1
  129. package/dist/cli/chunks/{chunk-UZ5D7CNQ.js → chunk-ZHVORPKM.js} +2 -2
  130. package/dist/cli/chunks/{chunk-H2CDS62D.js → chunk-ZJNZ5SDG.js} +2 -2
  131. package/dist/cli/chunks/{chunk-YBPODHK5.js → chunk-ZSVCK7B2.js} +2 -2
  132. package/dist/cli/chunks/{ci-KE7FOGU7.js → ci-F4VZKYED.js} +2 -2
  133. package/dist/cli/chunks/{ci-output-22E7MB4A.js → ci-output-LLKTJAKA.js} +2 -2
  134. package/dist/cli/chunks/{circuit-breaker-AVTSU65L.js → circuit-breaker-ZQ4747J4.js} +2 -2
  135. package/dist/cli/chunks/{claude-flow-setup-UWD5DRUE.js → claude-flow-setup-LHM5WAJN.js} +2 -2
  136. package/dist/cli/chunks/client-LZ4J7CB2.js +2 -0
  137. package/dist/cli/chunks/{cline-installer-H3MJDJKK.js → cline-installer-YZOPUVED.js} +2 -2
  138. package/dist/cli/chunks/{code-3G4FPMSZ.js → code-7WPHN4PO.js} +2 -2
  139. package/dist/cli/chunks/{code-index-extractor-PBZIQOI5.js → code-index-extractor-N25SYDBV.js} +2 -2
  140. package/dist/cli/chunks/{codex-installer-M4P7K7LO.js → codex-installer-53WXU6E4.js} +2 -2
  141. package/dist/cli/chunks/{completions-WWUW6CX4.js → completions-WPB73WPI.js} +2 -2
  142. package/dist/cli/chunks/{complexity-analyzer-H2F37PAW.js → complexity-analyzer-OLOYWXN5.js} +2 -2
  143. package/dist/cli/chunks/{continuedev-installer-NSUF5Y6W.js → continuedev-installer-5QXNYNJG.js} +2 -2
  144. package/dist/cli/chunks/{copilot-installer-BHFKNSU4.js → copilot-installer-POWDJ5TF.js} +2 -2
  145. package/dist/cli/chunks/{cost-tracker-QTQ32PGG.js → cost-tracker-NCRSKECA.js} +2 -2
  146. package/dist/cli/chunks/{coverage-LCBTTMUE.js → coverage-ZOWE75NF.js} +3 -3
  147. package/dist/cli/chunks/cross-domain-router-RQJLKTPC.js +2 -0
  148. package/dist/cli/chunks/{cursor-installer-KBWXMRRA.js → cursor-installer-W5U432Q4.js} +2 -2
  149. package/dist/cli/chunks/{daemon-UYTVWZOZ.js → daemon-JHXPBUL3.js} +3 -3
  150. package/dist/cli/chunks/{dag-attention-scheduler-3WVICTLD.js → dag-attention-scheduler-JKYKYDLZ.js} +2 -2
  151. package/dist/cli/chunks/{detect-R3CMY3ZB.js → detect-MNW7EGOS.js} +2 -2
  152. package/dist/cli/chunks/{dist-node-OALHZZ67.js → dist-node-33BRM2EM.js} +2 -2
  153. package/dist/cli/chunks/{domain-handler-QWZEBRVB.js → domain-handler-PRTXYKNX.js} +2 -2
  154. package/dist/cli/chunks/{domain-transfer-BO2XBDRA.js → domain-transfer-FJVNUH6Y.js} +2 -2
  155. package/dist/cli/chunks/dream-LLY2GYI7.js +2 -0
  156. package/dist/cli/chunks/{embed-and-insert-pattern-YJJ5MHIV.js → embed-and-insert-pattern-XST4CYRL.js} +2 -2
  157. package/dist/cli/chunks/{eval-BIDGZOD7.js → eval-SLBS3MDW.js} +2 -2
  158. package/dist/cli/chunks/{experience-capture-middleware-SBZNJVIN.js → experience-capture-middleware-MZ4VBCGB.js} +3 -3
  159. package/dist/cli/chunks/{fast-paths-W6FORZ7G.js → fast-paths-H6Z4TAE7.js} +2 -2
  160. package/dist/cli/chunks/{feature-flags-25T4IUQL.js → feature-flags-7UYNPXYB.js} +2 -2
  161. package/dist/cli/chunks/{feature-flags-A4YTFMSI.js → feature-flags-RF44J4FC.js} +2 -2
  162. package/dist/cli/chunks/{file-discovery-S4GNW5SS.js → file-discovery-2RZS7M6Q.js} +2 -2
  163. package/dist/cli/chunks/{fleet-QTXBVBXM.js → fleet-XVVAC32S.js} +3 -3
  164. package/dist/cli/chunks/{gnn-wrapper-S3HPS6UZ.js → gnn-wrapper-XAJR4F5W.js} +2 -2
  165. package/dist/cli/chunks/{heartbeat-handler-Z536VVQ4.js → heartbeat-handler-PAPNBHL5.js} +4 -4
  166. package/dist/cli/chunks/{heartbeat-scheduler-ECHKRR2V.js → heartbeat-scheduler-PNGMQ5A2.js} +2 -2
  167. package/dist/cli/chunks/hnsw-adapter-5KZG2W4N.js +2 -0
  168. package/dist/cli/chunks/hnsw-index-RVENHJNC.js +2 -0
  169. package/dist/cli/chunks/{hnsw-legacy-bridge-NR2LB4MK.js → hnsw-legacy-bridge-EK67OOYT.js} +2 -2
  170. package/dist/cli/chunks/{better-sqlite3-MQACUCZV.js → hnswlib-node-PIFTVXNO.js} +2 -2
  171. package/dist/cli/chunks/{hooks-K6B7FOWK.js → hooks-FXUZIAAW.js} +13 -13
  172. package/dist/cli/chunks/{hybrid-router-PWEAUPDI.js → hybrid-router-FA6Q25KJ.js} +2 -2
  173. package/dist/cli/chunks/{hypergraph-engine-2GMPZADI.js → hypergraph-engine-PT6AI5VE.js} +2 -2
  174. package/dist/cli/chunks/{hypergraph-handler-7EZBLA7J.js → hypergraph-handler-TTP3AY5E.js} +3 -3
  175. package/dist/cli/chunks/impact-analyzer-NXT3TDYG.js +2 -0
  176. package/dist/cli/chunks/{init-handler-IC2REBTQ.js → init-handler-GV4RMNLA.js} +6 -6
  177. package/dist/cli/chunks/init-wizard-WWYKBF4D.js +2 -0
  178. package/dist/cli/chunks/kernel-HGEE2UL6.js +2 -0
  179. package/dist/cli/chunks/{kilocode-installer-O7CW3AWL.js → kilocode-installer-MUK6H6PQ.js} +2 -2
  180. package/dist/cli/chunks/{kiro-installer-PCUKTCMG.js → kiro-installer-VHOG37LV.js} +2 -2
  181. package/dist/cli/chunks/knowledge-graph-EOJCWCZL.js +2 -0
  182. package/dist/cli/chunks/{learning-X6GZCD2J.js → learning-N5NUW6SR.js} +3 -3
  183. package/dist/cli/chunks/{llm-router-K7S7VYA3.js → llm-router-6D3JJ5MX.js} +4 -4
  184. package/dist/cli/chunks/{load-RHLRH7M5.js → load-3ZM66OKE.js} +2 -2
  185. package/dist/cli/chunks/load-test-HRB2KH2Y.js +2 -0
  186. package/dist/cli/chunks/{mcp-RGHX7REI.js → mcp-W2JSXQ32.js} +2 -2
  187. package/dist/cli/chunks/{memory-BDEEXPIV.js → memory-J4W4HRUH.js} +5 -5
  188. package/dist/cli/chunks/memory-backend-DPAKTNVV.js +2 -0
  189. package/dist/cli/chunks/{memory-handlers-PR5ZSN5E.js → memory-handlers-ZBNFDKP4.js} +2 -2
  190. package/dist/cli/chunks/{multi-model-executor-SGVRJWI5.js → multi-model-executor-MVEFZZSV.js} +2 -2
  191. package/dist/cli/chunks/{opencode-installer-3ZWQ7Q5S.js → opencode-installer-DGRDAJFV.js} +2 -2
  192. package/dist/cli/chunks/{orchestrator-O5EZXLG6.js → orchestrator-LPXK5JF7.js} +5 -5
  193. package/dist/cli/chunks/{pipeline-LW7SFRRB.js → pipeline-7GABQFX4.js} +2 -2
  194. package/dist/cli/chunks/{platform-DIISFS5U.js → platform-FNGEQTDL.js} +2 -2
  195. package/dist/cli/chunks/{plugin-B563LDGV.js → plugin-T4YRNESL.js} +2 -2
  196. package/dist/cli/chunks/{prime-radiant-advanced-wasm-FJBQPN3U.js → prime-radiant-advanced-wasm-I25PHLYB.js} +2 -2
  197. package/dist/cli/chunks/protocol-executor-XQX2GJVA.js +2 -0
  198. package/dist/cli/chunks/{protocol-handler-PVZNJNNP.js → protocol-handler-6KWLEBZJ.js} +2 -2
  199. package/dist/cli/chunks/{prove-MYKQTKZM.js → prove-B5XQ3SY4.js} +2 -2
  200. package/dist/cli/chunks/{provider-manager-RDOMJIKC.js → provider-manager-WTZ3FGAH.js} +2 -2
  201. package/dist/cli/chunks/qe-reasoning-bank-FYUB2RJT.js +2 -0
  202. package/dist/cli/chunks/{quality-OOXFIM76.js → quality-JQ3M7ENY.js} +2 -2
  203. package/dist/cli/chunks/queen-coordinator-J52B6O53.js +2 -0
  204. package/dist/cli/chunks/{real-embeddings-JQVUQQKL.js → real-embeddings-EH4WUKDJ.js} +2 -2
  205. package/dist/cli/chunks/{roocode-installer-G7ZV5Z3V.js → roocode-installer-6GLCDHDJ.js} +2 -2
  206. package/dist/cli/chunks/router-WFPO4XXI.js +2 -0
  207. package/dist/cli/chunks/routing-feedback-2RL7OC36.js +2 -0
  208. package/dist/cli/chunks/{routing-handler-W5XOGRVI.js → routing-handler-4N2XJFNM.js} +2 -2
  209. package/dist/cli/chunks/{ruvector-commands-YBR64EE3.js → ruvector-commands-MGWMR2WN.js} +2 -2
  210. package/dist/cli/chunks/{rvf-dual-writer-XIDYK3CA.js → rvf-dual-writer-6LN3WQEK.js} +2 -2
  211. package/dist/cli/chunks/{rvf-migration-adapter-6FJ7XRBL.js → rvf-migration-adapter-LAZ5EDQG.js} +2 -2
  212. package/dist/cli/chunks/{rvf-migration-coordinator-7GD7BGUG.js → rvf-migration-coordinator-LRXFWTDN.js} +2 -2
  213. package/dist/cli/chunks/rvf-native-adapter-SA4QDDO3.js +2 -0
  214. package/dist/cli/chunks/safe-db-E5KUJFP2.js +2 -0
  215. package/dist/cli/chunks/schedule-BF4MDQ4Z.js +2 -0
  216. package/dist/cli/chunks/scheduler-QG2JMZVB.js +2 -0
  217. package/dist/cli/chunks/{security-5RH45PGS.js → security-JMEQUSTV.js} +3 -3
  218. package/dist/cli/chunks/shared-rvf-adapter-S4KZM33F.js +2 -0
  219. package/dist/cli/chunks/{shared-rvf-dual-writer-A7T5EJ3W.js → shared-rvf-dual-writer-W3KUF2Z5.js} +2 -2
  220. package/dist/cli/chunks/sqlite-persistence-BXM2XX7R.js +2 -0
  221. package/dist/cli/chunks/{status-handler-LNNNK2AK.js → status-handler-T3MU7LJC.js} +2 -2
  222. package/dist/cli/chunks/{structural-health-7I7G6LFO.js → structural-health-DKLLSKB7.js} +2 -2
  223. package/dist/cli/chunks/{sync-QPWRLTD6.js → sync-YV4JLAYR.js} +2 -2
  224. package/dist/cli/chunks/{task-handler-BMKDHVBD.js → task-handler-WFMLTZFA.js} +2 -2
  225. package/dist/cli/chunks/{task-handlers-ECOL3VV6.js → task-handlers-XPRO67IJ.js} +3 -3
  226. package/dist/cli/chunks/{test-FY33BVTJ.js → test-6LD3KVOS.js} +4 -4
  227. package/dist/cli/chunks/{test-scheduling-4NHGC3EB.js → test-scheduling-E5CSY4SE.js} +3 -3
  228. package/dist/cli/chunks/{token-bootstrap-MAOYJSZN.js → token-bootstrap-TLPEXH6S.js} +2 -2
  229. package/dist/cli/chunks/{token-usage-TJPP4UFG.js → token-usage-2MDI65YN.js} +2 -2
  230. package/dist/cli/chunks/{transformers-QIGZ7SE7.js → transformers-CMZ3QD3F.js} +2 -2
  231. package/dist/cli/chunks/{tree-sitter-wasm-parser-CVKNF5NP.js → tree-sitter-wasm-parser-IXDHBBYF.js} +2 -2
  232. package/dist/cli/chunks/{types-FCGVB2IX.js → types-GAK4Q24M.js} +2 -2
  233. package/dist/cli/chunks/unified-memory-WPVYK4Q5.js +2 -0
  234. package/dist/cli/chunks/unified-memory-hnsw-G3PRXB4L.js +2 -0
  235. package/dist/cli/chunks/unified-persistence-WZ5XANS4.js +2 -0
  236. package/dist/cli/chunks/{upgrade-HWJRLW6H.js → upgrade-TFUW4SLZ.js} +2 -2
  237. package/dist/cli/chunks/{validate-Z45LLWQQ.js → validate-J4GGNKLW.js} +2 -2
  238. package/dist/cli/chunks/{validate-swarm-VAEKMIJB.js → validate-swarm-KCQX46PY.js} +2 -2
  239. package/dist/cli/chunks/{vibium-O7MMGI45.js → vibium-WKIFKIZW.js} +2 -2
  240. package/dist/cli/chunks/visual-security-ZVQG2EY4.js +2 -0
  241. package/dist/cli/chunks/{web-tree-sitter-G3TTBGKP.js → web-tree-sitter-OQSGWVGY.js} +2 -2
  242. package/dist/cli/chunks/{windsurf-installer-II3ZTH55.js → windsurf-installer-D6PIM3JO.js} +2 -2
  243. package/dist/cli/chunks/witness-chain-F3PHT6MB.js +2 -0
  244. package/dist/cli/chunks/{witness-chain-KYMMCOIV.js → witness-chain-NRVX76IB.js} +2 -2
  245. package/dist/cli/chunks/{workflow-P4GQ3NJK.js → workflow-3X2UQG7E.js} +4 -4
  246. package/dist/cli/chunks/workflow-orchestrator-VQVQKILY.js +2 -0
  247. package/dist/cli/chunks/{wrappers-7MWZ6R6U.js → wrappers-UXKMHCHX.js} +2 -2
  248. package/dist/cli/commands/hooks-handlers/task-hooks.js +24 -7
  249. package/dist/learning/pattern-store.d.ts +3 -0
  250. package/dist/learning/qe-hooks.js +12 -2
  251. package/dist/learning/qe-reasoning-bank.js +33 -2
  252. package/dist/learning/rvf-pattern-store.js +12 -2
  253. package/dist/learning/sqlite-persistence.js +8 -1
  254. package/dist/mcp/bundle.js +114 -114
  255. package/package.json +2 -2
  256. package/dist/cli/chunks/adapter-4RFY4QQP.js +0 -2
  257. package/dist/cli/chunks/aqe-learning-engine-CJ5UDPJ6.js +0 -2
  258. package/dist/cli/chunks/base-EEBZKFSN.js +0 -2
  259. package/dist/cli/chunks/browser-workflow-KDNXNC7W.js +0 -2
  260. package/dist/cli/chunks/chunk-D4GHYV5T.js +0 -2
  261. package/dist/cli/chunks/client-GNL46JU5.js +0 -2
  262. package/dist/cli/chunks/cross-domain-router-2JHRNGD7.js +0 -2
  263. package/dist/cli/chunks/dream-XDWOQVNR.js +0 -2
  264. package/dist/cli/chunks/hnsw-adapter-ELKAHTIH.js +0 -2
  265. package/dist/cli/chunks/hnsw-index-3VJYUSOM.js +0 -2
  266. package/dist/cli/chunks/impact-analyzer-4BLPFGDS.js +0 -2
  267. package/dist/cli/chunks/init-wizard-UR23AJFX.js +0 -2
  268. package/dist/cli/chunks/kernel-BTP323I5.js +0 -2
  269. package/dist/cli/chunks/knowledge-graph-JH3O5ZMS.js +0 -2
  270. package/dist/cli/chunks/load-test-E6GTBB2W.js +0 -2
  271. package/dist/cli/chunks/memory-backend-FAOO6R3B.js +0 -2
  272. package/dist/cli/chunks/protocol-executor-AYBNZNRK.js +0 -2
  273. package/dist/cli/chunks/qe-reasoning-bank-LFMZCMKB.js +0 -2
  274. package/dist/cli/chunks/queen-coordinator-JEGURMXS.js +0 -2
  275. package/dist/cli/chunks/router-LMESYCAS.js +0 -2
  276. package/dist/cli/chunks/routing-feedback-3GOMFT5Q.js +0 -2
  277. package/dist/cli/chunks/rvf-native-adapter-MEKCU4HV.js +0 -2
  278. package/dist/cli/chunks/safe-db-PZBRYCSI.js +0 -2
  279. package/dist/cli/chunks/schedule-NXQZQIBV.js +0 -2
  280. package/dist/cli/chunks/scheduler-I3HGTMNU.js +0 -2
  281. package/dist/cli/chunks/shared-rvf-adapter-5QLSVTXS.js +0 -2
  282. package/dist/cli/chunks/sqlite-persistence-3MEKZAPX.js +0 -2
  283. package/dist/cli/chunks/unified-memory-U4CPBW5V.js +0 -2
  284. package/dist/cli/chunks/unified-memory-hnsw-BYBD2V33.js +0 -2
  285. package/dist/cli/chunks/unified-persistence-LAUTFWNC.js +0 -2
  286. package/dist/cli/chunks/visual-security-XVWGWA4J.js +0 -2
  287. package/dist/cli/chunks/witness-chain-CTIZD4GL.js +0 -2
  288. package/dist/cli/chunks/workflow-orchestrator-NG3KLTLJ.js +0 -2
@@ -1,5 +1,5 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.22");process.exit(0)}
2
- import{a as i,b as v,c as d,d as p}from"./chunk-IPWO26NP.js";import{a as h}from"./chunk-BAIQZTBO.js";import"./chunk-5HUFNSCO.js";import{a as k}from"./chunk-QUASI6T7.js";import"./chunk-3M7EAXED.js";import"./chunk-5WE7JRVM.js";import"./chunk-OLDHOXH5.js";import"./chunk-AKBYBOUV.js";import"./chunk-N7LNGYUI.js";import"./chunk-ZYVFF2GF.js";import"./chunk-YJ3KKNS5.js";import"./chunk-SBXMNI7G.js";import"./chunk-QBQHA2PQ.js";import"./chunk-7TASYE2O.js";import"./chunk-G35AFB22.js";import"./chunk-D4GHYV5T.js";import"./chunk-QKDYDDO6.js";import"./chunk-PUBADXN6.js";import"./chunk-ASJWT2HO.js";import"./chunk-C32ZD3IM.js";import"./chunk-7TWDEXR4.js";import"./chunk-CYHVGDGJ.js";import"./chunk-C2ROCY2Y.js";import"./chunk-DLOY6QOK.js";import"./chunk-EBFG55L3.js";import"./chunk-T6SZZ6GL.js";import"./chunk-76JSNSX5.js";import"./chunk-J4DENED7.js";import"./chunk-EAEF52EW.js";import"./chunk-5Q4HS3PB.js";import"./chunk-75EZBOLF.js";import{Command as x}from"commander";import o from"chalk";function _(e,t,a){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 a())try{console.log(o.blue(`
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.24");process.exit(0)}
2
+ import{a as i,b as v,c as d,d as p}from"./chunk-L5Y2BVYX.js";import{a as h}from"./chunk-JVN5TS5E.js";import"./chunk-3Y5C4SE3.js";import{a as k}from"./chunk-HFPQVO4O.js";import"./chunk-RSED3U2F.js";import"./chunk-Z2CO6ZI5.js";import"./chunk-Q5OLVIKK.js";import"./chunk-3LHP7G6U.js";import"./chunk-BDGKN7GC.js";import"./chunk-KQRJXVMO.js";import"./chunk-FPBCG7CX.js";import"./chunk-INPP5RW4.js";import"./chunk-3NZ7IVRI.js";import"./chunk-U6V6R2EF.js";import"./chunk-C4ST4NP4.js";import"./chunk-DWNKD2AQ.js";import"./chunk-RGOJFKIY.js";import"./chunk-EAC3PZGH.js";import"./chunk-CTSTHKH4.js";import"./chunk-73JTRGIQ.js";import"./chunk-3ZNIACXR.js";import"./chunk-WB3GQ7X7.js";import"./chunk-HYX3LWLA.js";import"./chunk-AJ45BRKK.js";import"./chunk-BWCSNSXR.js";import"./chunk-O3ADCWEC.js";import"./chunk-HQY2BNJT.js";import"./chunk-4AUGLQOE.js";import"./chunk-HGOTTQQK.js";import"./chunk-7ODDJI3P.js";import"./chunk-4LA24G33.js";import{Command as x}from"commander";import o from"chalk";function _(e,t,a){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 a())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),n={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: ${n.topology}`)),console.log(o.gray(` Skills: ${r.length}`)),console.log(o.gray(` Models: ${u.length}`)),console.log(o.gray(` Max Concurrent Skills: ${n.maxConcurrentSkills}`)),console.log(o.gray(` Max Concurrent Models: ${n.maxConcurrentModels}`)),console.log(o.gray(` Timeout: ${n.timeout}ms`)),console.log(o.gray(` Retry: ${n.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=k(m),C=v(n,f),w=Date.now();console.log(o.yellow(` Starting parallel validation...
5
5
  `));let $=await C.validateSkillsParallel(r,u),s=C.getSummary($),b=Date.now()-w;l.json?T(s):V(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.9.22");process.exit(0)}
2
- import{c as t}from"./chunk-75EZBOLF.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};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.24");process.exit(0)}
2
+ import{c as t}from"./chunk-4LA24G33.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.9.24");process.exit(0)}
2
+ import{a}from"./chunk-7H36CVZ6.js";import"./chunk-6XXHK6NL.js";import"./chunk-L7EDWT5P.js";import"./chunk-3NZ7IVRI.js";import"./chunk-U6V6R2EF.js";import"./chunk-DWNKD2AQ.js";import"./chunk-RGOJFKIY.js";import"./chunk-EAC3PZGH.js";import"./chunk-73JTRGIQ.js";import"./chunk-3ZNIACXR.js";import"./chunk-WB3GQ7X7.js";import"./chunk-HYX3LWLA.js";import"./chunk-AJ45BRKK.js";import"./chunk-BWCSNSXR.js";import"./chunk-O3ADCWEC.js";import"./chunk-HQY2BNJT.js";import"./chunk-4AUGLQOE.js";import"./chunk-HGOTTQQK.js";import"./chunk-7ODDJI3P.js";import"./chunk-4LA24G33.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.9.22");process.exit(0)}
2
- import"./chunk-75EZBOLF.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
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.24");process.exit(0)}
2
+ import"./chunk-4LA24G33.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.9.22");process.exit(0)}
2
- import{b as u}from"./chunk-KXVCKQ2O.js";import{a as f,c as h}from"./chunk-C32ZD3IM.js";import"./chunk-75EZBOLF.js";h();import{existsSync as i,mkdirSync as d,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf"),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||d(o,{recursive:!0}),i(r)&&this.overwrite){let m=this.mergeExistingConfig(r,t.content);a(r,m)}else a(r,t.content);e.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("windsurf"),s=p(this.projectRoot,n.path);if(e.rulesPath=s,!i(s)||this.overwrite){if(i(s)&&this.overwrite){let o=this.mergeExistingRules(s,n.content);a(s,o)}else a(s,n.content);e.rulesInstalled=!0}}catch(t){e.success=!1,e.errors.push(`Windsurf installation failed: ${f(t)}`)}return e}mergeExistingConfig(e,t){try{let r=JSON.parse(g(e,"utf-8")),n=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,n.mcpServers),JSON.stringify(r,null,2)+`
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.24");process.exit(0)}
2
+ import{b as u}from"./chunk-PEKULOY4.js";import{a as f,c as h}from"./chunk-73JTRGIQ.js";import"./chunk-4LA24G33.js";h();import{existsSync as i,mkdirSync as d,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf"),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||d(o,{recursive:!0}),i(r)&&this.overwrite){let m=this.mergeExistingConfig(r,t.content);a(r,m)}else a(r,t.content);e.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("windsurf"),s=p(this.projectRoot,n.path);if(e.rulesPath=s,!i(s)||this.overwrite){if(i(s)&&this.overwrite){let o=this.mergeExistingRules(s,n.content);a(s,o)}else a(s,n.content);e.rulesInstalled=!0}}catch(t){e.success=!1,e.errors.push(`Windsurf installation failed: ${f(t)}`)}return e}mergeExistingConfig(e,t){try{let r=JSON.parse(g(e,"utf-8")),n=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,n.mcpServers),JSON.stringify(r,null,2)+`
3
3
  `}catch{return t}}mergeExistingRules(e,t){try{let r=g(e,"utf-8");return r.includes("Agentic QE")||r.includes("fleet_init")?r:r.trimEnd()+`
4
4
 
5
5
  ---
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.24");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h}from"./chunk-ZJNZ5SDG.js";import"./chunk-3NZ7IVRI.js";import"./chunk-U6V6R2EF.js";import"./chunk-DWNKD2AQ.js";import"./chunk-RGOJFKIY.js";import"./chunk-EAC3PZGH.js";import"./chunk-73JTRGIQ.js";import"./chunk-WB3GQ7X7.js";import"./chunk-HYX3LWLA.js";import"./chunk-AJ45BRKK.js";import"./chunk-BWCSNSXR.js";import"./chunk-O3ADCWEC.js";import"./chunk-HQY2BNJT.js";import"./chunk-4AUGLQOE.js";import"./chunk-HGOTTQQK.js";import"./chunk-7ODDJI3P.js";import"./chunk-4LA24G33.js";export{a as GENESIS_PREV_HASH,f as WitnessChain,h as createWitnessChain,g as getWitnessChain,d as hashWith,e as serializeEntry,b as sha256,c as shake256};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.22");process.exit(0)}
2
- import{a,b,c,d,e,f,g}from"./chunk-G35AFB22.js";import"./chunk-D4GHYV5T.js";import"./chunk-QKDYDDO6.js";import"./chunk-5Q4HS3PB.js";import"./chunk-75EZBOLF.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.24");process.exit(0)}
2
+ import{a,b,c,d,e,f,g}from"./chunk-C4ST4NP4.js";import"./chunk-DWNKD2AQ.js";import"./chunk-RGOJFKIY.js";import"./chunk-7ODDJI3P.js";import"./chunk-4LA24G33.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
@@ -1,5 +1,5 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.22");process.exit(0)}
2
- import"./chunk-SEFMGIDM.js";import{b as $}from"./chunk-QYUA3QRO.js";import{d as R}from"./chunk-XZLXDSDH.js";import{b as k,c as C,d as b}from"./chunk-PJQVLSZL.js";import{c as W}from"./chunk-PUBADXN6.js";import"./chunk-ASJWT2HO.js";import"./chunk-C32ZD3IM.js";import"./chunk-75EZBOLF.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(`
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.24");process.exit(0)}
2
+ import"./chunk-2NJO73YD.js";import{b as $}from"./chunk-DZHAXSOZ.js";import{d as R}from"./chunk-DFG3KX7E.js";import{b as k,c as C,d as b}from"./chunk-6SWRLJ3I.js";import{c as W}from"./chunk-EAC3PZGH.js";import"./chunk-CTSTHKH4.js";import"./chunk-73JTRGIQ.js";import"./chunk-4LA24G33.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-KDNXNC7W.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
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-GVOTUSBY.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-KDNXNC7W.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-22E7MB4A.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(`
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-GVOTUSBY.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-LLKTJAKA.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
42
42
  File not found: ${p}
43
43
  `)),await a(1)),f.workflowYaml=i.readFileSync(p,"utf-8")}else f.templateName=t;else console.log(o.red(`
44
44
  Provide a template name or --yaml. Use "workflow browser-list" to see templates.
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.24");process.exit(0)}
2
+ import{a,b,c,d}from"./chunk-QDUV7TDQ.js";import"./chunk-LX6XRBJ2.js";import"./chunk-3NZ7IVRI.js";import"./chunk-U6V6R2EF.js";import"./chunk-DWNKD2AQ.js";import"./chunk-RGOJFKIY.js";import"./chunk-EAC3PZGH.js";import"./chunk-CTSTHKH4.js";import"./chunk-73JTRGIQ.js";import"./chunk-3ZNIACXR.js";import"./chunk-WB3GQ7X7.js";import"./chunk-HYX3LWLA.js";import"./chunk-AJ45BRKK.js";import"./chunk-BWCSNSXR.js";import"./chunk-O3ADCWEC.js";import"./chunk-HQY2BNJT.js";import"./chunk-4AUGLQOE.js";import"./chunk-HGOTTQQK.js";import"./chunk-7ODDJI3P.js";import"./chunk-4LA24G33.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.22");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-X3UEZQIH.js";import"./chunk-QBQHA2PQ.js";import"./chunk-7TASYE2O.js";import"./chunk-D4GHYV5T.js";import"./chunk-QKDYDDO6.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-MHV7VXPW.js";import"./chunk-PUBADXN6.js";import"./chunk-C32ZD3IM.js";import"./chunk-CYHVGDGJ.js";import"./chunk-C2ROCY2Y.js";import"./chunk-DLOY6QOK.js";import"./chunk-EBFG55L3.js";import"./chunk-T6SZZ6GL.js";import"./chunk-76JSNSX5.js";import"./chunk-J4DENED7.js";import"./chunk-EAEF52EW.js";import"./chunk-5Q4HS3PB.js";import"./chunk-75EZBOLF.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};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.24");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-MUH2YGNO.js";import"./chunk-3NZ7IVRI.js";import"./chunk-U6V6R2EF.js";import"./chunk-DWNKD2AQ.js";import"./chunk-RGOJFKIY.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-FHRUSW2V.js";import"./chunk-EAC3PZGH.js";import"./chunk-73JTRGIQ.js";import"./chunk-WB3GQ7X7.js";import"./chunk-HYX3LWLA.js";import"./chunk-AJ45BRKK.js";import"./chunk-BWCSNSXR.js";import"./chunk-O3ADCWEC.js";import"./chunk-HQY2BNJT.js";import"./chunk-4AUGLQOE.js";import"./chunk-HGOTTQQK.js";import"./chunk-7ODDJI3P.js";import"./chunk-4LA24G33.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};
@@ -174,8 +174,15 @@ export function registerTaskHooks(hooks) {
174
174
  // Patch 150: write a routing_outcomes sentinel that post-task UPDATEs
175
175
  // with the 6-dim outcome quality. Pre-task cannot know quality yet.
176
176
  // success=0/quality=-1 sentinel pair makes the row easy to find later.
177
- if (routing?.recommendedAgent && options.taskId) {
177
+ //
178
+ // Issue #449: PreToolUse hook command sends --description but no
179
+ // --task-id, so the original `&& options.taskId` clause prevented
180
+ // the sentinel from ever being written. Without the sentinel the
181
+ // post-task UPDATE has no row to fill, breaking Stream D. Use the
182
+ // same `hook-${ts}` fallback as post-task.
183
+ if (routing?.recommendedAgent) {
178
184
  try {
185
+ const effectivePreTaskId = options.taskId || `hook-${Date.now()}`;
179
186
  const outcomeId = `route-${Date.now()}-${randomUUID().slice(0, 8)}`;
180
187
  const lowConfidence = routing.confidence < LOW_CONFIDENCE_THRESHOLD;
181
188
  db.prepare(`
@@ -184,7 +191,7 @@ export function registerTaskHooks(hooks) {
184
191
  followed_recommendation, success, quality_score,
185
192
  duration_ms, error
186
193
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
187
- `).run(outcomeId, JSON.stringify({ description: options.description, taskId: options.taskId }), JSON.stringify({
194
+ `).run(outcomeId, JSON.stringify({ description: options.description, taskId: effectivePreTaskId }), JSON.stringify({
188
195
  recommended: routing.recommendedAgent,
189
196
  confidence: routing.confidence,
190
197
  alternatives: routing.alternatives,
@@ -274,22 +281,32 @@ export function registerTaskHooks(hooks) {
274
281
  timestamp: Date.now(),
275
282
  });
276
283
  patternsLearned = results.reduce((sum, r) => sum + (r.patternsLearned || 0), 0);
277
- // Record as learning experience for every post-task invocation
278
- if (options.taskId) {
284
+ // Record as learning experience for every post-task invocation.
285
+ //
286
+ // Issue #449 / patch 030 (reintroduced in v3.9.23): the PostToolUse
287
+ // hook context for Task/Agent does NOT populate $TOOL_RESULT_agent_id,
288
+ // so the shipped `--task-id "$TOOL_RESULT_agent_id"` arrives empty
289
+ // and `options.taskId` is falsy. The original `if (options.taskId)`
290
+ // gate therefore killed the entire Stream B/D/F learning chain on
291
+ // every real hook invocation (rl_q_values stayed empty forever).
292
+ // Use a synthetic `hook-${ts}` fallback so the pipeline always runs.
293
+ // DO NOT REINTRODUCE the if(options.taskId) gate — see #449.
294
+ {
295
+ const effectiveTaskId = options.taskId || `hook-${Date.now()}`;
279
296
  const agent = options.agent || 'unknown';
280
297
  const durationMs = options.duration ? parseInt(options.duration, 10) : 0;
281
298
  await reasoningBank.recordOutcome({
282
- patternId: `task:${agent}:${options.taskId}`,
299
+ patternId: `task:${agent}:${effectiveTaskId}`,
283
300
  success,
284
301
  metrics: { executionTimeMs: durationMs },
285
- feedback: `Agent: ${agent}, Task: ${options.taskId}`,
302
+ feedback: `Agent: ${agent}, Task: ${effectiveTaskId}`,
286
303
  });
287
304
  // Stream B: full experience pipeline (captured_experiences,
288
305
  // experience_applications + per-pattern fan-out, qe_trajectories
289
306
  // single-step + multi-step stitch, dream_insights.applied bump).
290
307
  // Patches 060/110/120/160/180/300.
291
308
  const outcome = await persistTaskOutcome({
292
- taskId: options.taskId,
309
+ taskId: effectiveTaskId,
293
310
  agent,
294
311
  durationMs,
295
312
  success,
@@ -181,6 +181,9 @@ export interface IPatternStore {
181
181
  }>;
182
182
  /** Dispose the store */
183
183
  dispose(): Promise<void>;
184
+ /** Get the underlying RVF adapter, if any (RvfPatternStore only).
185
+ * Returns null or undefined on non-RVF implementations. */
186
+ getAdapter?(): import('../integrations/ruvector/rvf-native-adapter.js').RvfNativeAdapter | null;
184
187
  }
185
188
  /**
186
189
  * Pattern Store with HNSW indexing
@@ -310,7 +310,11 @@ export function createQEHookHandlers(reasoningBank) {
310
310
  [QE_HOOK_EVENTS.QEAgentCompletion]: async (ctx) => {
311
311
  const { agentType, task, success, duration, patternId, feedback } = ctx.data;
312
312
  let patternsLearned = 0;
313
- const effectivePatternId = patternId;
313
+ // #447: was `const`; must be reassignable so the post-storePattern id
314
+ // can flow into recordOutcome. ON CONFLICT inside SQLite means the
315
+ // auto-created pattern's actual id may differ from the one we passed
316
+ // in, and recordOutcome looks up by id.
317
+ let effectivePatternId = patternId;
314
318
  if (effectivePatternId) {
315
319
  // Auto-create pattern if it doesn't exist yet (e.g. task:agent:taskId from CLI hooks)
316
320
  try {
@@ -318,7 +322,7 @@ export function createQEHookHandlers(reasoningBank) {
318
322
  if (!existing) {
319
323
  const agent = agentType || 'unknown';
320
324
  const domain = detectQEDomain(task || agent) || 'learning-optimization';
321
- await reasoningBank.storePattern({
325
+ const storeResult = await reasoningBank.storePattern({
322
326
  patternType: 'test-template',
323
327
  qeDomain: domain,
324
328
  name: `Auto: ${agent} completion`,
@@ -333,6 +337,12 @@ export function createQEHookHandlers(reasoningBank) {
333
337
  },
334
338
  confidence: 0.5,
335
339
  });
340
+ // #447: align id with what was actually persisted so recordOutcome
341
+ // can find it. Without this, the downstream recordUsage silently
342
+ // fails with "Pattern not found" and qe_pattern_usage stays at 0.
343
+ if (storeResult.success && storeResult.value?.id) {
344
+ effectivePatternId = storeResult.value.id;
345
+ }
336
346
  patternsLearned = 1;
337
347
  }
338
348
  }
@@ -154,12 +154,43 @@ export class QEReasoningBank {
154
154
  const stats = await this.patternStore.getStats();
155
155
  if (stats.totalPatterns > 0) {
156
156
  logger.info('Found existing patterns', { totalPatterns: stats.totalPatterns });
157
+ // Backfill: ingest SQLite embeddings into the HNSW adapter for installations
158
+ // where patterns.rvf was never populated (pre-fix initial seeding path).
159
+ // Uses patternStore.getAdapter() — always available after initialize() —
160
+ // not rvfDualWriter, which is null in the hook invocation path.
161
+ // Guard on totalVectors === 0: adapter.ingest() is not idempotent.
162
+ const adapter = this.patternStore.getAdapter?.();
163
+ if (adapter && (adapter.status()?.totalVectors ?? 0) === 0) {
164
+ try {
165
+ const embeddings = this.getSqliteStore().getAllEmbeddings();
166
+ const vectors = embeddings
167
+ .filter(({ embedding }) => embedding && embedding.length > 0)
168
+ .map(({ patternId, embedding }) => ({
169
+ id: patternId,
170
+ vector: embedding instanceof Float32Array
171
+ ? embedding
172
+ : new Float32Array(embedding),
173
+ }));
174
+ if (vectors.length > 0) {
175
+ const { accepted, rejected } = adapter.ingest(vectors);
176
+ logger.info('Backfilled RVF from SQLite', { count: vectors.length, accepted });
177
+ if (rejected > 0) {
178
+ logger.warn('RVF backfill partially rejected', { accepted, rejected });
179
+ }
180
+ }
181
+ }
182
+ catch (err) {
183
+ logger.warn('RVF backfill failed (non-fatal)', { error: toErrorMessage(err) });
184
+ }
185
+ }
157
186
  return;
158
187
  }
159
- // Add foundational patterns from extracted module
188
+ // Use storePattern() (not patternStore.create() directly) so that:
189
+ // 1. embeddings are computed via this.embed()
190
+ // 2. patternStore.store() calls adapter.ingest() for each pattern
160
191
  for (const options of PRETRAINED_PATTERNS) {
161
192
  try {
162
- await this.patternStore.create(options);
193
+ await this.storePattern(options);
163
194
  }
164
195
  catch (error) {
165
196
  logger.warn('Failed to load pattern', { name: options.name, error });
@@ -112,10 +112,20 @@ export class RvfPatternStore {
112
112
  if (pattern.confidence < this.config.minConfidence) {
113
113
  return err(new Error(`Pattern confidence ${pattern.confidence} below threshold ${this.config.minConfidence}`));
114
114
  }
115
- // Persist metadata to SQLite
115
+ // Persist metadata to SQLite. #447: capture the returned id — ON CONFLICT
116
+ // on (name, qe_domain, pattern_type) preserves the existing row's id, so
117
+ // we must align pattern.id with what's actually stored before ingesting
118
+ // into HNSW or returning to callers (otherwise recordOutcome later fails
119
+ // with "Pattern not found" and qe_pattern_usage stays empty).
116
120
  if (this.sqliteStore) {
117
121
  try {
118
- this.sqliteStore.storePattern(pattern, pattern.embedding);
122
+ const actualId = this.sqliteStore.storePattern(pattern, pattern.embedding);
123
+ if (actualId && actualId !== pattern.id) {
124
+ // QEPattern.id is `readonly` for callers, but inside the store
125
+ // we own the lifecycle and must align it with the persisted row
126
+ // before HNSW ingest (otherwise the index keys diverge from SQLite).
127
+ pattern.id = actualId;
128
+ }
119
129
  }
120
130
  catch (error) {
121
131
  console.warn(`[RvfPatternStore] SQLite persist failed for ${pattern.id}:`, toErrorMessage(error));
@@ -390,7 +390,14 @@ export class SQLitePatternStore {
390
390
  }
391
391
  });
392
392
  transaction();
393
- return id;
393
+ // #447: ON CONFLICT(name, qe_domain, pattern_type) preserves the existing
394
+ // row's id, so the new `id` we just tried to insert may not be what's
395
+ // actually stored. SELECT the actual id back so callers (rvf-pattern-store,
396
+ // qe-hooks) can stay consistent with HNSW and downstream usage tables.
397
+ const actualRow = this.db
398
+ .prepare('SELECT id FROM qe_patterns WHERE name = ? AND qe_domain = ? AND pattern_type = ?')
399
+ .get(pattern.name, pattern.qeDomain ?? '', pattern.patternType ?? '');
400
+ return actualRow ? actualRow.id : id;
394
401
  }
395
402
  /**
396
403
  * Get a pattern by ID