agentic-qe 3.9.30 → 3.9.31

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 (326) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +120 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/bridge/captured-experience-bridge.js +31 -2
  5. package/dist/cli/bundle.js +5 -5
  6. package/dist/cli/chunks/adapter-CI2GZYME.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-TOSXWTUQ.js → agent-booster-wasm-AQXZYWZY.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-2BU6TYZZ.js → agent-handler-7N4ZPXCY.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-JFG3BXZY.js → agent-memory-branch-FLKF2JVX.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-KNQKALLI.js +2 -0
  11. package/dist/cli/chunks/{audit-4IGZZKUW.js → audit-B4V4IKTA.js} +2 -2
  12. package/dist/cli/chunks/base-P7PRMQWY.js +2 -0
  13. package/dist/cli/chunks/{hnswlib-node-STKRZIU3.js → better-sqlite3-NYOVLWBG.js} +2 -2
  14. package/dist/cli/chunks/{brain-handler-RIDW27HH.js → brain-handler-OOXJ2KYY.js} +4 -4
  15. package/dist/cli/chunks/{branch-enumerator-GMYHLLWD.js → branch-enumerator-LFKFW3A4.js} +2 -2
  16. package/dist/cli/chunks/{browser-N76A3I2P.js → browser-F72IES2I.js} +2 -2
  17. package/dist/cli/chunks/browser-workflow-QUP4A763.js +2 -0
  18. package/dist/cli/chunks/{chunk-JCDEMPJS.js → chunk-2NLZXG6V.js} +1 -1
  19. package/dist/cli/chunks/{chunk-ETEHVG76.js → chunk-35SFAIXE.js} +2 -2
  20. package/dist/cli/chunks/{chunk-FG5GL26L.js → chunk-3VKB4HVT.js} +2 -2
  21. package/dist/cli/chunks/{chunk-XKH4E2IQ.js → chunk-462MZLJB.js} +1 -1
  22. package/dist/cli/chunks/{chunk-MZ7M2CDV.js → chunk-47QIAHUJ.js} +2 -2
  23. package/dist/cli/chunks/{chunk-IP6ZTXNJ.js → chunk-4N736EES.js} +2 -2
  24. package/dist/cli/chunks/{chunk-YXR5RYRE.js → chunk-52D3CYE5.js} +2 -2
  25. package/dist/cli/chunks/{chunk-C6TNYLD7.js → chunk-5AMAJCZS.js} +3 -3
  26. package/dist/cli/chunks/{chunk-ZKZTSYPU.js → chunk-5G2L4XRU.js} +2 -2
  27. package/dist/cli/chunks/{chunk-2MKSEL6F.js → chunk-5M4F3PAL.js} +1 -1
  28. package/dist/cli/chunks/{chunk-37I6K7QO.js → chunk-5WWQLPB4.js} +2 -2
  29. package/dist/cli/chunks/chunk-5Z6PYYWK.js +2 -0
  30. package/dist/cli/chunks/{chunk-MHPK4ZPK.js → chunk-62KYX5NH.js} +2 -2
  31. package/dist/cli/chunks/{chunk-TYZGEVP6.js → chunk-7MXQV7RB.js} +12 -6
  32. package/dist/cli/chunks/{chunk-XVTZXCHI.js → chunk-7OVVBBOZ.js} +2 -2
  33. package/dist/cli/chunks/{chunk-MOLOWMON.js → chunk-7RPEBKQZ.js} +2 -2
  34. package/dist/cli/chunks/{chunk-5F26LSG2.js → chunk-7UHRT5AX.js} +2 -2
  35. package/dist/cli/chunks/{chunk-MV3NUANS.js → chunk-7V7TP242.js} +1 -1
  36. package/dist/cli/chunks/{chunk-WTXRPYNN.js → chunk-A424Z7LA.js} +1 -1
  37. package/dist/cli/chunks/{chunk-UYLHIGNC.js → chunk-AKFRM4IO.js} +2 -2
  38. package/dist/cli/chunks/{chunk-OEGFOMXP.js → chunk-AKJWBJDK.js} +2 -2
  39. package/dist/cli/chunks/{chunk-2GBBZLXT.js → chunk-AQN6PDHI.js} +1 -1
  40. package/dist/cli/chunks/{chunk-ITBPDVK5.js → chunk-BMS7WFDB.js} +1 -1
  41. package/dist/cli/chunks/{chunk-2O5TT3UT.js → chunk-BYHUGO73.js} +3 -3
  42. package/dist/cli/chunks/{chunk-CNNVL5W4.js → chunk-CFLA2GBS.js} +2 -2
  43. package/dist/cli/chunks/{chunk-Y57V4FDT.js → chunk-CNKOIHF6.js} +2 -2
  44. package/dist/cli/chunks/{chunk-3EP2YZSY.js → chunk-CQWZNVIM.js} +2 -2
  45. package/dist/cli/chunks/{chunk-GEXVUFK4.js → chunk-CUSLB7MB.js} +2 -2
  46. package/dist/cli/chunks/chunk-CYUGE5ZQ.js +2 -0
  47. package/dist/cli/chunks/{chunk-QNSUPXUU.js → chunk-DMF4Z2M6.js} +2 -2
  48. package/dist/cli/chunks/{chunk-Z3TXQOS7.js → chunk-DUF733Z7.js} +1 -1
  49. package/dist/cli/chunks/{chunk-XK6YXCS7.js → chunk-EAIPJSKH.js} +2 -2
  50. package/dist/cli/chunks/{chunk-TULNR2AH.js → chunk-EJXRBAQF.js} +2 -2
  51. package/dist/cli/chunks/{chunk-XDYTQPJM.js → chunk-EKYPQ5DX.js} +1 -1
  52. package/dist/cli/chunks/{chunk-QBDXUI2H.js → chunk-ENCFLC44.js} +2 -2
  53. package/dist/cli/chunks/{chunk-SAVITYEX.js → chunk-FOAWHNOP.js} +2 -2
  54. package/dist/cli/chunks/{chunk-QOJ7EAF5.js → chunk-FUHPLXJX.js} +1 -1
  55. package/dist/cli/chunks/{chunk-KR2PGNXX.js → chunk-G2U7Q6V6.js} +2 -2
  56. package/dist/cli/chunks/{chunk-DDMFTEJP.js → chunk-G3YKCZWQ.js} +3 -3
  57. package/dist/cli/chunks/{chunk-YETPSL6H.js → chunk-GJSH4UZ3.js} +3 -3
  58. package/dist/cli/chunks/{chunk-BQLFOJ5G.js → chunk-GN7FUCJH.js} +1 -1
  59. package/dist/cli/chunks/{chunk-GY4EGQO3.js → chunk-GQFAVT2I.js} +1 -1
  60. package/dist/cli/chunks/{chunk-IHRFR5SV.js → chunk-HHEIQHLQ.js} +2 -2
  61. package/dist/cli/chunks/{chunk-YKFURJNP.js → chunk-I3TFGMOQ.js} +1 -1
  62. package/dist/cli/chunks/{chunk-LDGNVPBZ.js → chunk-IRRGUXAU.js} +1 -1
  63. package/dist/cli/chunks/{chunk-IWC6GR24.js → chunk-IY4P35N3.js} +2 -2
  64. package/dist/cli/chunks/{chunk-AWWD3EI3.js → chunk-JF3U456G.js} +2 -2
  65. package/dist/cli/chunks/{chunk-5E3YCZC5.js → chunk-JJRZOLDY.js} +2 -2
  66. package/dist/cli/chunks/{chunk-Q53UMLLC.js → chunk-JKKV5KKS.js} +2 -2
  67. package/dist/cli/chunks/{chunk-MYF7F3ZP.js → chunk-JMLOEW7Y.js} +2 -2
  68. package/dist/cli/chunks/chunk-JRIDPOEZ.js +95 -0
  69. package/dist/cli/chunks/{chunk-T2DIMSQF.js → chunk-K37CNLQZ.js} +1 -1
  70. package/dist/cli/chunks/{chunk-RNO6CE7I.js → chunk-K6MFAVXK.js} +2 -2
  71. package/dist/cli/chunks/{chunk-UWWX4RK7.js → chunk-KJAIE7SL.js} +4 -4
  72. package/dist/cli/chunks/{chunk-ND6VCNN5.js → chunk-KXRDQQGN.js} +2 -2
  73. package/dist/cli/chunks/{chunk-GRPEDIYG.js → chunk-L4JTTPU7.js} +2 -2
  74. package/dist/cli/chunks/{chunk-BM73MJLE.js → chunk-L63KB63A.js} +2 -2
  75. package/dist/cli/chunks/{chunk-R57J3O6I.js → chunk-L7DNPOAQ.js} +2 -2
  76. package/dist/cli/chunks/{chunk-SJCEPKZO.js → chunk-LF5RO6WO.js} +1 -1
  77. package/dist/cli/chunks/{chunk-GZ3U2QT2.js → chunk-LRWRFKQH.js} +1 -1
  78. package/dist/cli/chunks/{chunk-QTS2DS42.js → chunk-M6RVKGIP.js} +2 -2
  79. package/dist/cli/chunks/{chunk-ECX6VXMW.js → chunk-MAJ5QFVY.js} +1 -1
  80. package/dist/cli/chunks/chunk-MYCVU3D3.js +14 -0
  81. package/dist/cli/chunks/{chunk-3AICELMQ.js → chunk-N6P7ENG7.js} +2 -2
  82. package/dist/cli/chunks/{chunk-7D2DM23U.js → chunk-N6SIKSCO.js} +2 -2
  83. package/dist/cli/chunks/{chunk-FI4HRS2G.js → chunk-NBKM7NKX.js} +2 -2
  84. package/dist/cli/chunks/{chunk-QSV4ROZD.js → chunk-NLUBN642.js} +2 -2
  85. package/dist/cli/chunks/{chunk-FGDEM4HU.js → chunk-NNF3GCGF.js} +2 -2
  86. package/dist/cli/chunks/{chunk-5DJAJPBG.js → chunk-NTVJKQ5S.js} +2 -2
  87. package/dist/cli/chunks/{chunk-3WIU2E2Y.js → chunk-NZQYNUGM.js} +2 -2
  88. package/dist/cli/chunks/{chunk-52TRKIAQ.js → chunk-ONMJJ2C3.js} +1 -1
  89. package/dist/cli/chunks/{chunk-JNRRDG7O.js → chunk-OXOXNAEZ.js} +2 -2
  90. package/dist/cli/chunks/chunk-PSF6YQQM.js +180 -0
  91. package/dist/cli/chunks/{chunk-WP6X67YI.js → chunk-PTOTOBOU.js} +1 -1
  92. package/dist/cli/chunks/{chunk-UEXOMDRS.js → chunk-PUSZ4NBY.js} +2 -2
  93. package/dist/cli/chunks/chunk-PYYNY7RJ.js +2 -0
  94. package/dist/cli/chunks/{chunk-L7X3A36M.js → chunk-QEJBJST4.js} +1 -1
  95. package/dist/cli/chunks/{chunk-TA3QYAZ6.js → chunk-QGLWFZVQ.js} +2 -2
  96. package/dist/cli/chunks/{chunk-HB52S6IV.js → chunk-QITO7E7Y.js} +1 -1
  97. package/dist/cli/chunks/{chunk-KJZXBZQR.js → chunk-QMSDKKYG.js} +1 -1
  98. package/dist/cli/chunks/{chunk-AQJ6XS34.js → chunk-RBDAHW2M.js} +2 -2
  99. package/dist/cli/chunks/{chunk-VOBNJWZF.js → chunk-RDJWUKIR.js} +2 -2
  100. package/dist/cli/chunks/{chunk-EWNJ6OAT.js → chunk-REJEFTWX.js} +1 -1
  101. package/dist/cli/chunks/{chunk-H27XUYWZ.js → chunk-ROEIR3OD.js} +1 -1
  102. package/dist/cli/chunks/{chunk-JCWHX4XV.js → chunk-RTGNWRQI.js} +2 -2
  103. package/dist/cli/chunks/{chunk-FU74OETU.js → chunk-SL4TAJOE.js} +2 -2
  104. package/dist/cli/chunks/{chunk-3PZDXE5E.js → chunk-T4DDCMKG.js} +113 -113
  105. package/dist/cli/chunks/{chunk-UROPIIB2.js → chunk-TJGIIGKL.js} +2 -2
  106. package/dist/cli/chunks/{chunk-BFJLKG3D.js → chunk-TLCCM2AF.js} +1 -1
  107. package/dist/cli/chunks/{chunk-HJDHQBMJ.js → chunk-TVHWI77X.js} +1 -1
  108. package/dist/cli/chunks/{chunk-ER6BT4GS.js → chunk-TYUIQSSF.js} +2 -2
  109. package/dist/cli/chunks/{chunk-R5IW5ARI.js → chunk-UIIEZMSM.js} +1 -1
  110. package/dist/cli/chunks/{chunk-NMBHF7ZD.js → chunk-UIRTXM7C.js} +15 -15
  111. package/dist/cli/chunks/{chunk-RYMHYTOK.js → chunk-UNXUSYRL.js} +3 -3
  112. package/dist/cli/chunks/chunk-VA45HLBF.js +2 -0
  113. package/dist/cli/chunks/{chunk-DEDFPHJL.js → chunk-VAIOZDG5.js} +1 -1
  114. package/dist/cli/chunks/{chunk-IEGAEXQX.js → chunk-VLAGWLHF.js} +2 -2
  115. package/dist/cli/chunks/{chunk-WVODEWH5.js → chunk-VOOJDHLI.js} +14 -8
  116. package/dist/cli/chunks/{chunk-IOINZWNA.js → chunk-VSKABN3B.js} +29 -17
  117. package/dist/cli/chunks/{chunk-HQIWLMDS.js → chunk-VUL5HIKR.js} +2 -2
  118. package/dist/cli/chunks/{chunk-OOFWYDG6.js → chunk-W7XVEWKQ.js} +1 -1
  119. package/dist/cli/chunks/{chunk-Q4HJRYQB.js → chunk-WB6TI6Q3.js} +2 -2
  120. package/dist/cli/chunks/{chunk-DJRWVNHK.js → chunk-X2FLWV5C.js} +2 -2
  121. package/dist/cli/chunks/{chunk-QLNS6DGB.js → chunk-XE4YKDIM.js} +2 -2
  122. package/dist/cli/chunks/{chunk-6EP3GHED.js → chunk-XGBIXRKD.js} +2 -2
  123. package/dist/cli/chunks/{chunk-AUNNGKLN.js → chunk-XMMWYQJK.js} +2 -2
  124. package/dist/cli/chunks/{chunk-FGMHVSLV.js → chunk-XNJ6DIEW.js} +2 -2
  125. package/dist/cli/chunks/{chunk-4UZQSPR4.js → chunk-XTWYCMAM.js} +2 -2
  126. package/dist/cli/chunks/{chunk-2NFGUFYU.js → chunk-XY3WUGD3.js} +2 -2
  127. package/dist/cli/chunks/{chunk-VRP4GB4Y.js → chunk-YEZJE2ZW.js} +4 -4
  128. package/dist/cli/chunks/{chunk-MCXRS2TZ.js → chunk-YLEMSN46.js} +1 -1
  129. package/dist/cli/chunks/{chunk-Q26GG6WO.js → chunk-YMN4C32S.js} +3 -3
  130. package/dist/cli/chunks/{chunk-HA7N45KB.js → chunk-YN7HCVUP.js} +2 -2
  131. package/dist/cli/chunks/{chunk-E7UHOKKL.js → chunk-YQJBE6NX.js} +2 -2
  132. package/dist/cli/chunks/{chunk-OTFJCZNY.js → chunk-ZBJRNCWX.js} +2 -2
  133. package/dist/cli/chunks/{chunk-QHKK2H4H.js → chunk-ZG4EKPGV.js} +1 -1
  134. package/dist/cli/chunks/{chunk-USN2JKUW.js → chunk-ZWSRIJ2T.js} +2 -2
  135. package/dist/cli/chunks/{ci-BYCH3NPL.js → ci-LRTJSZHT.js} +2 -2
  136. package/dist/cli/chunks/{ci-output-P7P4XH6F.js → ci-output-LISCHUKD.js} +2 -2
  137. package/dist/cli/chunks/{circuit-breaker-VLX556ZI.js → circuit-breaker-7PMP25KZ.js} +2 -2
  138. package/dist/cli/chunks/{claude-flow-setup-JPR425PL.js → claude-flow-setup-DOW4QVMC.js} +2 -2
  139. package/dist/cli/chunks/client-XF6SJO2C.js +2 -0
  140. package/dist/cli/chunks/{cline-installer-FOY47NSH.js → cline-installer-2NXQGW73.js} +2 -2
  141. package/dist/cli/chunks/{code-57SN4ZDY.js → code-3X6RWAS7.js} +2 -2
  142. package/dist/cli/chunks/{code-index-extractor-GT7UFRYU.js → code-index-extractor-4ABP5WCP.js} +2 -2
  143. package/dist/cli/chunks/{codex-installer-JAGWONAV.js → codex-installer-V7PII6GL.js} +2 -2
  144. package/dist/cli/chunks/{completions-7YLHPGSV.js → completions-Y7LNQ63I.js} +2 -2
  145. package/dist/cli/chunks/{complexity-analyzer-TQUF6BEI.js → complexity-analyzer-XLYMAM6I.js} +2 -2
  146. package/dist/cli/chunks/{continuedev-installer-TICV6IGT.js → continuedev-installer-GOT4TKNT.js} +2 -2
  147. package/dist/cli/chunks/{copilot-installer-A6PDMI52.js → copilot-installer-D6BAQVIO.js} +2 -2
  148. package/dist/cli/chunks/{cost-tracker-NZPNHNV2.js → cost-tracker-VT7C5Q52.js} +2 -2
  149. package/dist/cli/chunks/{coverage-HBEB2LKS.js → coverage-C62MRP4M.js} +3 -3
  150. package/dist/cli/chunks/cross-domain-router-J2OFPM6R.js +2 -0
  151. package/dist/cli/chunks/{cursor-installer-R4FM7MGN.js → cursor-installer-WAWSS2K2.js} +2 -2
  152. package/dist/cli/chunks/{daemon-PHIZPZIE.js → daemon-CP2ETHRF.js} +3 -3
  153. package/dist/cli/chunks/{dag-attention-scheduler-2L7VCYZ3.js → dag-attention-scheduler-SZIZWPV7.js} +2 -2
  154. package/dist/cli/chunks/{detect-EEWB4IYE.js → detect-AJX6NJEP.js} +2 -2
  155. package/dist/cli/chunks/{dist-node-7RM6BB2X.js → dist-node-E5X47QTY.js} +2 -2
  156. package/dist/cli/chunks/{domain-handler-RVGHBDUJ.js → domain-handler-FN3PIP45.js} +2 -2
  157. package/dist/cli/chunks/{domain-transfer-M5MERQG5.js → domain-transfer-N3TOJEMT.js} +2 -2
  158. package/dist/cli/chunks/dream-D5LD5SOZ.js +2 -0
  159. package/dist/cli/chunks/{embed-and-insert-pattern-MS55QS73.js → embed-and-insert-pattern-PJI5TZKR.js} +2 -2
  160. package/dist/cli/chunks/{eval-MBTMI7KN.js → eval-OS54TDQU.js} +2 -2
  161. package/dist/cli/chunks/{experience-capture-middleware-Z5XB7D6A.js → experience-capture-middleware-FBM4ANZW.js} +3 -3
  162. package/dist/cli/chunks/{fast-paths-FSWLHI4I.js → fast-paths-2CVAAPQO.js} +2 -2
  163. package/dist/cli/chunks/{feature-flags-QUPNH2J5.js → feature-flags-A5KFWVFC.js} +2 -2
  164. package/dist/cli/chunks/{feature-flags-ATYOPR5D.js → feature-flags-GEXTW6OT.js} +2 -2
  165. package/dist/cli/chunks/{file-discovery-SOJJEQ2E.js → file-discovery-KWLVC7KN.js} +2 -2
  166. package/dist/cli/chunks/{fleet-PWBTDWVG.js → fleet-MNKH356S.js} +3 -3
  167. package/dist/cli/chunks/{gnn-wrapper-2N67VQOQ.js → gnn-wrapper-ALTWYFVZ.js} +2 -2
  168. package/dist/cli/chunks/{heartbeat-handler-5PSG2UPO.js → heartbeat-handler-MBMEPEGW.js} +4 -4
  169. package/dist/cli/chunks/{heartbeat-scheduler-CNJBAO5C.js → heartbeat-scheduler-OH3SS7MH.js} +2 -2
  170. package/dist/cli/chunks/hnsw-adapter-M2MMM3N6.js +2 -0
  171. package/dist/cli/chunks/hnsw-index-JO7KNF7M.js +2 -0
  172. package/dist/cli/chunks/{hnsw-legacy-bridge-YIXH5T4U.js → hnsw-legacy-bridge-WTD5PR5V.js} +2 -2
  173. package/dist/cli/chunks/{better-sqlite3-3U2AVWQ3.js → hnswlib-node-WENGW3YX.js} +2 -2
  174. package/dist/cli/chunks/hooks-ELHGEBFK.js +248 -0
  175. package/dist/cli/chunks/{hybrid-router-RL47S47Z.js → hybrid-router-D6ZMIZCE.js} +2 -2
  176. package/dist/cli/chunks/{hypergraph-engine-XW2IHFWW.js → hypergraph-engine-JOQ6TERZ.js} +2 -2
  177. package/dist/cli/chunks/{hypergraph-handler-AQXKY4UF.js → hypergraph-handler-HX45YWWN.js} +3 -3
  178. package/dist/cli/chunks/impact-analyzer-ROQL4J7P.js +2 -0
  179. package/dist/cli/chunks/{init-handler-KXYGJQI5.js → init-handler-TNVU6NQ6.js} +6 -6
  180. package/dist/cli/chunks/init-wizard-4BDFZX4M.js +2 -0
  181. package/dist/cli/chunks/kernel-37Y63WKR.js +2 -0
  182. package/dist/cli/chunks/{kilocode-installer-VSULDGRO.js → kilocode-installer-YC5RJIY4.js} +2 -2
  183. package/dist/cli/chunks/{kiro-installer-SH4D2UXW.js → kiro-installer-EAB26M55.js} +2 -2
  184. package/dist/cli/chunks/knowledge-graph-V3DX6ZCX.js +2 -0
  185. package/dist/cli/chunks/learning-A2OB7D2B.js +117 -0
  186. package/dist/cli/chunks/{llm-router-YXXSQX5K.js → llm-router-KEG6PA7C.js} +4 -4
  187. package/dist/cli/chunks/{load-S52R2SLL.js → load-D6ZDLVA3.js} +2 -2
  188. package/dist/cli/chunks/load-test-HPBA2CMT.js +2 -0
  189. package/dist/cli/chunks/{mcp-ZWMAJIU7.js → mcp-ERJHZ6FN.js} +2 -2
  190. package/dist/cli/chunks/{memory-4YTWWDK7.js → memory-GSRIJIVR.js} +5 -5
  191. package/dist/cli/chunks/memory-backend-DODDBB46.js +2 -0
  192. package/dist/cli/chunks/memory-handlers-MFLCRS7V.js +2 -0
  193. package/dist/cli/chunks/{multi-model-executor-F3VEM2UF.js → multi-model-executor-GK3V7ERC.js} +2 -2
  194. package/dist/cli/chunks/{opencode-installer-Z2CUJQ6D.js → opencode-installer-6TTN26RG.js} +2 -2
  195. package/dist/cli/chunks/{orchestrator-UPXR2XOF.js → orchestrator-YVTSM6QW.js} +37 -18
  196. package/dist/cli/chunks/{pipeline-6MEMAIXM.js → pipeline-EWLJCY5G.js} +2 -2
  197. package/dist/cli/chunks/{platform-H72FLOM7.js → platform-2ULHQQME.js} +2 -2
  198. package/dist/cli/chunks/{plugin-GIMQFDVR.js → plugin-PYN2KOXA.js} +2 -2
  199. package/dist/cli/chunks/{prime-radiant-advanced-wasm-DM5FR5SV.js → prime-radiant-advanced-wasm-IULCTOGZ.js} +2 -2
  200. package/dist/cli/chunks/protocol-executor-D56OYMCJ.js +2 -0
  201. package/dist/cli/chunks/{protocol-handler-YW3N333B.js → protocol-handler-FZYI2SBP.js} +2 -2
  202. package/dist/cli/chunks/{prove-IJY524KK.js → prove-DN7S74SP.js} +2 -2
  203. package/dist/cli/chunks/{provider-manager-FNG6YR2V.js → provider-manager-FT3MCROB.js} +2 -2
  204. package/dist/cli/chunks/qe-reasoning-bank-KXROIEK7.js +2 -0
  205. package/dist/cli/chunks/{quality-EZLAMSCP.js → quality-ITBU6LGC.js} +2 -2
  206. package/dist/cli/chunks/queen-coordinator-XOGATERL.js +2 -0
  207. package/dist/cli/chunks/{real-embeddings-MFRCC6GH.js → real-embeddings-PZUZ5RXJ.js} +2 -2
  208. package/dist/cli/chunks/{roocode-installer-H3ZIRGWU.js → roocode-installer-2LMVZOUZ.js} +2 -2
  209. package/dist/cli/chunks/router-3EHNUCOM.js +2 -0
  210. package/dist/cli/chunks/routing-feedback-ZHKGET22.js +2 -0
  211. package/dist/cli/chunks/{routing-handler-T2A7FYHW.js → routing-handler-5RB73UCF.js} +2 -2
  212. package/dist/cli/chunks/{ruvector-commands-TCLWBP2M.js → ruvector-commands-VBN4APMG.js} +2 -2
  213. package/dist/cli/chunks/{rvf-dual-writer-BE3JCPYC.js → rvf-dual-writer-BNY4AUWT.js} +2 -2
  214. package/dist/cli/chunks/{rvf-migration-adapter-MLUX5YGR.js → rvf-migration-adapter-73MKPBGV.js} +2 -2
  215. package/dist/cli/chunks/{rvf-migration-coordinator-OAQXTASZ.js → rvf-migration-coordinator-SGVB7ZAZ.js} +2 -2
  216. package/dist/cli/chunks/rvf-native-adapter-4YC5IQUW.js +2 -0
  217. package/dist/cli/chunks/safe-db-PLJRHQIC.js +2 -0
  218. package/dist/cli/chunks/schedule-7DGELVJE.js +2 -0
  219. package/dist/cli/chunks/scheduler-VWASEC2J.js +2 -0
  220. package/dist/cli/chunks/{security-SHWJWJ4M.js → security-XUH4H7R3.js} +3 -3
  221. package/dist/cli/chunks/shared-rvf-adapter-DCVDY2XW.js +2 -0
  222. package/dist/cli/chunks/{shared-rvf-dual-writer-BKSR2FFK.js → shared-rvf-dual-writer-GML4EDYF.js} +2 -2
  223. package/dist/cli/chunks/sqlite-persistence-CTEBGVOW.js +2 -0
  224. package/dist/cli/chunks/{status-handler-QK5KMKYC.js → status-handler-XI7GJF6Z.js} +2 -2
  225. package/dist/cli/chunks/{structural-health-3BRNCAYQ.js → structural-health-WPCYKOXV.js} +2 -2
  226. package/dist/cli/chunks/{sync-5CDYOT3H.js → sync-SFKTCRZC.js} +2 -2
  227. package/dist/cli/chunks/{task-handler-VH2CLUIA.js → task-handler-FZB55IEG.js} +2 -2
  228. package/dist/cli/chunks/{task-handlers-BUZNV2VX.js → task-handlers-EXZGFH7F.js} +3 -3
  229. package/dist/cli/chunks/{test-K24JQQZ2.js → test-XYRN4OVU.js} +4 -4
  230. package/dist/cli/chunks/{test-scheduling-MHXRV5VI.js → test-scheduling-FLVOPGOT.js} +3 -3
  231. package/dist/cli/chunks/{token-bootstrap-3NZDLG52.js → token-bootstrap-FDCFVRHM.js} +2 -2
  232. package/dist/cli/chunks/{token-usage-C4BGA2O7.js → token-usage-MHNZF3DM.js} +2 -2
  233. package/dist/cli/chunks/{transformers-ZIIFB2V4.js → transformers-4CRVTMWY.js} +2 -2
  234. package/dist/cli/chunks/{tree-sitter-wasm-parser-GES2AV7A.js → tree-sitter-wasm-parser-CI3V4AND.js} +2 -2
  235. package/dist/cli/chunks/{types-L3MO5VNC.js → types-RKCD4BNL.js} +2 -2
  236. package/dist/cli/chunks/unified-memory-YDKXKW3D.js +2 -0
  237. package/dist/cli/chunks/unified-memory-hnsw-6N7YZCLR.js +2 -0
  238. package/dist/cli/chunks/unified-persistence-UTWLPUQI.js +2 -0
  239. package/dist/cli/chunks/{upgrade-EKJYS5S5.js → upgrade-463W7VKH.js} +2 -2
  240. package/dist/cli/chunks/{validate-WYWWB5PQ.js → validate-LENSMEAY.js} +2 -2
  241. package/dist/cli/chunks/{validate-swarm-SBSWKJ3H.js → validate-swarm-4FEBNAWA.js} +2 -2
  242. package/dist/cli/chunks/{vibium-VEMTLNFV.js → vibium-TXNVIVWJ.js} +2 -2
  243. package/dist/cli/chunks/visual-security-DGXSOFKD.js +2 -0
  244. package/dist/cli/chunks/{web-tree-sitter-STW2WR2J.js → web-tree-sitter-BZEGWID4.js} +2 -2
  245. package/dist/cli/chunks/{windsurf-installer-6ZXMJASZ.js → windsurf-installer-7AFXJTPU.js} +2 -2
  246. package/dist/cli/chunks/{witness-chain-PTULB4MR.js → witness-chain-G6SUZOZG.js} +2 -2
  247. package/dist/cli/chunks/witness-chain-VP4MF6EU.js +2 -0
  248. package/dist/cli/chunks/{workflow-TEBAAHNR.js → workflow-EVQPO6FH.js} +4 -4
  249. package/dist/cli/chunks/workflow-orchestrator-VXSYAKQY.js +2 -0
  250. package/dist/cli/chunks/{wrappers-DVMVRKXK.js → wrappers-HR6RUDI2.js} +2 -2
  251. package/dist/cli/commands/hooks-handlers/editing-hooks.js +9 -3
  252. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +16 -24
  253. package/dist/cli/commands/hooks-handlers/hooks-shared.d.ts +1 -1
  254. package/dist/cli/commands/hooks-handlers/hooks-shared.js +8 -1
  255. package/dist/cli/commands/hooks-handlers/routing-hooks.js +15 -3
  256. package/dist/cli/commands/hooks-handlers/task-hooks.js +37 -46
  257. package/dist/cli/commands/learning.js +194 -0
  258. package/dist/init/phases/10-workers.js +20 -1
  259. package/dist/kernel/interfaces.d.ts +12 -0
  260. package/dist/kernel/kernel.d.ts +1 -0
  261. package/dist/kernel/kernel.js +57 -0
  262. package/dist/kernel/unified-memory-schemas.d.ts +1 -1
  263. package/dist/kernel/unified-memory-schemas.js +7 -1
  264. package/dist/learning/agent-routing.d.ts +134 -1
  265. package/dist/learning/agent-routing.js +185 -2
  266. package/dist/learning/dream/dream-insights-pruner.d.ts +49 -0
  267. package/dist/learning/dream/dream-insights-pruner.js +53 -0
  268. package/dist/learning/dream/dream-scheduler.js +17 -0
  269. package/dist/learning/loop-health.d.ts +84 -0
  270. package/dist/learning/loop-health.js +91 -0
  271. package/dist/learning/pattern-usage-recorder.d.ts +58 -0
  272. package/dist/learning/pattern-usage-recorder.js +72 -0
  273. package/dist/learning/qe-reasoning-bank-types.d.ts +11 -0
  274. package/dist/learning/qe-reasoning-bank.d.ts +11 -0
  275. package/dist/learning/qe-reasoning-bank.js +86 -3
  276. package/dist/learning/routing-topology-gate.d.ts +40 -0
  277. package/dist/learning/routing-topology-gate.js +55 -0
  278. package/dist/learning/sqlite-persistence.d.ts +6 -1
  279. package/dist/learning/sqlite-persistence.js +14 -20
  280. package/dist/mcp/bundle.js +3831 -3805
  281. package/dist/routing/routing-feedback.js +7 -3
  282. package/dist/routing/routing-outcomes-migration.d.ts +31 -0
  283. package/dist/routing/routing-outcomes-migration.js +60 -0
  284. package/dist/workers/workers/learning-consolidation.d.ts +28 -0
  285. package/dist/workers/workers/learning-consolidation.js +204 -0
  286. package/package.json +1 -1
  287. package/dist/cli/chunks/adapter-HV42JOZD.js +0 -2
  288. package/dist/cli/chunks/aqe-learning-engine-GL22PE2V.js +0 -2
  289. package/dist/cli/chunks/base-4KQ2FGUX.js +0 -2
  290. package/dist/cli/chunks/browser-workflow-CTE7BDM4.js +0 -2
  291. package/dist/cli/chunks/chunk-3NGNSKL3.js +0 -14
  292. package/dist/cli/chunks/chunk-6HSFZ6SL.js +0 -180
  293. package/dist/cli/chunks/chunk-7Z3GBQNV.js +0 -2
  294. package/dist/cli/chunks/chunk-H2IMXQCJ.js +0 -2
  295. package/dist/cli/chunks/chunk-SPCANEJY.js +0 -95
  296. package/dist/cli/chunks/client-FRVNMXQO.js +0 -2
  297. package/dist/cli/chunks/cross-domain-router-BVCPAWG2.js +0 -2
  298. package/dist/cli/chunks/dream-77ODIFIF.js +0 -2
  299. package/dist/cli/chunks/hnsw-adapter-CQGQS3V7.js +0 -2
  300. package/dist/cli/chunks/hnsw-index-2ACF6FOJ.js +0 -2
  301. package/dist/cli/chunks/hooks-YROFO6PE.js +0 -259
  302. package/dist/cli/chunks/impact-analyzer-LWEGK23B.js +0 -2
  303. package/dist/cli/chunks/init-wizard-7BS3QMWR.js +0 -2
  304. package/dist/cli/chunks/kernel-TX67WXSI.js +0 -2
  305. package/dist/cli/chunks/knowledge-graph-TDSP2UE2.js +0 -2
  306. package/dist/cli/chunks/learning-RRWV3SEL.js +0 -107
  307. package/dist/cli/chunks/load-test-GEBBBUMV.js +0 -2
  308. package/dist/cli/chunks/memory-backend-WQS2MLW2.js +0 -2
  309. package/dist/cli/chunks/memory-handlers-RTY5MBA5.js +0 -2
  310. package/dist/cli/chunks/protocol-executor-DT7XHMLL.js +0 -2
  311. package/dist/cli/chunks/qe-reasoning-bank-LDNETZVA.js +0 -2
  312. package/dist/cli/chunks/queen-coordinator-AF7HCQSM.js +0 -2
  313. package/dist/cli/chunks/router-OWQ5EI72.js +0 -2
  314. package/dist/cli/chunks/routing-feedback-B43DEQMK.js +0 -2
  315. package/dist/cli/chunks/rvf-native-adapter-XBJDXHNI.js +0 -2
  316. package/dist/cli/chunks/safe-db-RT3LEDUG.js +0 -2
  317. package/dist/cli/chunks/schedule-EHUDCKS2.js +0 -2
  318. package/dist/cli/chunks/scheduler-GEGZ4J3C.js +0 -2
  319. package/dist/cli/chunks/shared-rvf-adapter-LNBUNRAM.js +0 -2
  320. package/dist/cli/chunks/sqlite-persistence-3DGRJH3K.js +0 -2
  321. package/dist/cli/chunks/unified-memory-ZSBX4LYU.js +0 -2
  322. package/dist/cli/chunks/unified-memory-hnsw-Y6EKAMRP.js +0 -2
  323. package/dist/cli/chunks/unified-persistence-2PDVU2U5.js +0 -2
  324. package/dist/cli/chunks/visual-security-RHMFLKVQ.js +0 -2
  325. package/dist/cli/chunks/witness-chain-QO237QOF.js +0 -2
  326. package/dist/cli/chunks/workflow-orchestrator-RHM5MIGE.js +0 -2
@@ -79,6 +79,17 @@ export interface QERoutingResult {
79
79
  guidance: string[];
80
80
  /** Reasoning for the recommendation */
81
81
  reasoning: string;
82
+ /**
83
+ * ADR-095 telemetry — all optional, populated by routeTask when the
84
+ * exploration / Q-value path runs. Callers persist these into
85
+ * routing_outcomes for retrospective analysis.
86
+ */
87
+ /** True if ε-greedy promoted an alternative over the greedy winner. */
88
+ exploration?: boolean;
89
+ /** Mincut safety multiplier in effect (1.0 = full rate, 0.2 = dampened). */
90
+ criticality?: number;
91
+ /** Average qWeight across the scored agents — proxy for Q-table maturity. */
92
+ qWeight?: number;
82
93
  }
83
94
  /**
84
95
  * Pattern learning outcome
@@ -118,6 +118,17 @@ export declare class QEReasoningBank implements IQEReasoningBank {
118
118
  * Route a task to optimal agent
119
119
  */
120
120
  routeTask(request: QERoutingRequest): Promise<Result<QERoutingResult>>;
121
+ /**
122
+ * ADR-095: Build a per-agent Q-value lookup closure for the current
123
+ * routing decision. The closure executes a prepared-statement query
124
+ * against `rl_q_values` for each agent considered.
125
+ *
126
+ * Returns a no-op lookup when the unified memory backend is unavailable
127
+ * (e.g. during early boot or in tests that don't initialize SQLite).
128
+ * The no-op causes `calculateAgentScores` to fall back to pure-static
129
+ * scoring — identical to pre-ADR-095 behavior.
130
+ */
131
+ private buildQValueLookup;
121
132
  /**
122
133
  * Get guidance for a domain
123
134
  */
@@ -25,7 +25,9 @@ import { getWitnessChain } from '../audit/witness-chain.js';
25
25
  // Import extracted modules
26
26
  import { DEFAULT_QE_REASONING_BANK_CONFIG } from './qe-reasoning-bank-types.js';
27
27
  import { PRETRAINED_PATTERNS } from './pretrained-patterns.js';
28
- import { AGENT_CAPABILITIES, calculateAgentScores, } from './agent-routing.js';
28
+ import { AGENT_CAPABILITIES, calculateAgentScores, applyExplorationPolicy, resolveExplorationRate, deriveTaskType, buildRoutingStateKey, deriveComplexityBucket, } from './agent-routing.js';
29
+ import { resolveTopologyCriticalFromSharedMincut } from './routing-topology-gate.js';
30
+ import { getUnifiedMemory } from '../kernel/unified-memory.js';
29
31
  import { resizeEmbedding, hashEmbedding } from './embedding-utils.js';
30
32
  import { checkPatternPromotionWithCoherence, promotePattern as promotePatternFn, seedCrossDomainPatterns as seedCrossDomainPatternsFn, } from './pattern-promotion.js';
31
33
  // ============================================================================
@@ -395,8 +397,35 @@ export class QEReasoningBank {
395
397
  agentDomainPatternCounts.set(agentType, count);
396
398
  }
397
399
  }
398
- // 4. Calculate agent scores using extracted function
399
- const agentScores = calculateAgentScores(detectedDomains, request.capabilities, agentDomainPatternCounts, this.config.routingWeights);
400
+ // ADR-095: build the Q-value lookup closure from the task's state_key.
401
+ // The state_key MUST match what `updateHookRouterQValue` writes from
402
+ // post-task — buildRoutingStateKey enforces that.
403
+ const stateKey = buildRoutingStateKey({
404
+ taskType: deriveTaskType(request.task),
405
+ priority: 'normal',
406
+ domain: detectedDomains[0],
407
+ complexityBucket: deriveComplexityBucket(request.task),
408
+ });
409
+ const qValueLookup = this.buildQValueLookup(stateKey);
410
+ // 4. Calculate agent scores (now Q-blended when lookup available)
411
+ const agentScores = calculateAgentScores(detectedDomains, request.capabilities, agentDomainPatternCounts, this.config.routingWeights, AGENT_CAPABILITIES, request.context?.language, qValueLookup);
412
+ // ADR-095: ε-greedy exploration with mincut safety gate.
413
+ // The exploration is best-effort — failures fall through to greedy.
414
+ // Topology check uses `resolveTopologyCriticalFromSharedMincut` —
415
+ // see that module for the empty-graph regression context.
416
+ let safetyMultiplier = 1.0;
417
+ try {
418
+ const topologyCritical = resolveTopologyCriticalFromSharedMincut();
419
+ const rateInfo = resolveExplorationRate({
420
+ envOverride: process.env.AQE_ROUTER_EXPLORATION_RATE,
421
+ topologyCritical,
422
+ });
423
+ safetyMultiplier = rateInfo.safetyMultiplier;
424
+ applyExplorationPolicy(agentScores, rateInfo.epsilon);
425
+ }
426
+ catch {
427
+ // Exploration failures are non-fatal; greedy order stands.
428
+ }
400
429
  const recommended = agentScores[0];
401
430
  const alternatives = agentScores.slice(1, 4);
402
431
  // Generate guidance
@@ -411,6 +440,11 @@ export class QEReasoningBank {
411
440
  }
412
441
  // Update stats
413
442
  this.stats.totalRoutingConfidence += recommended.score;
443
+ // ADR-095 telemetry: average qWeight across the scored agents — a
444
+ // proxy for Q-table maturity. Operators can correlate this with
445
+ // routing_outcomes.quality_score over time to see if learning helps.
446
+ const totalQWeight = agentScores.reduce((acc, a) => acc + (a.qWeight ?? 0), 0);
447
+ const avgQWeight = agentScores.length > 0 ? totalQWeight / agentScores.length : 0;
414
448
  const result = {
415
449
  recommendedAgent: recommended.agent,
416
450
  confidence: recommended.score,
@@ -419,6 +453,9 @@ export class QEReasoningBank {
419
453
  patterns,
420
454
  guidance,
421
455
  reasoning: recommended.reasoning.join('; '),
456
+ exploration: recommended.exploration === true,
457
+ criticality: safetyMultiplier,
458
+ qWeight: avgQWeight,
422
459
  };
423
460
  return ok(result);
424
461
  }
@@ -426,6 +463,52 @@ export class QEReasoningBank {
426
463
  return err(toError(error));
427
464
  }
428
465
  }
466
+ /**
467
+ * ADR-095: Build a per-agent Q-value lookup closure for the current
468
+ * routing decision. The closure executes a prepared-statement query
469
+ * against `rl_q_values` for each agent considered.
470
+ *
471
+ * Returns a no-op lookup when the unified memory backend is unavailable
472
+ * (e.g. during early boot or in tests that don't initialize SQLite).
473
+ * The no-op causes `calculateAgentScores` to fall back to pure-static
474
+ * scoring — identical to pre-ADR-095 behavior.
475
+ */
476
+ buildQValueLookup(stateKey) {
477
+ try {
478
+ const um = getUnifiedMemory();
479
+ if (!um.isInitialized())
480
+ return () => undefined;
481
+ const db = um.getDatabase();
482
+ // Verify the Q-table exists; many CLI commands run without ever
483
+ // initializing the schema and the SELECT below would throw.
484
+ const tableExists = db
485
+ .prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='rl_q_values'")
486
+ .get();
487
+ if (!tableExists)
488
+ return () => undefined;
489
+ const stmt = db.prepare(`
490
+ SELECT q_value, visits FROM rl_q_values
491
+ WHERE algorithm = 'q-learning'
492
+ AND agent_id = 'aqe-hook-router'
493
+ AND state_key = ?
494
+ AND action_key = ?
495
+ `);
496
+ return (agentType) => {
497
+ try {
498
+ const row = stmt.get(stateKey, agentType);
499
+ if (!row)
500
+ return undefined;
501
+ return { qValue: row.q_value, visits: row.visits };
502
+ }
503
+ catch {
504
+ return undefined;
505
+ }
506
+ };
507
+ }
508
+ catch {
509
+ return () => undefined;
510
+ }
511
+ }
429
512
  /**
430
513
  * Get guidance for a domain
431
514
  */
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Routing Topology Safety Gate (ADR-095 — CRITICAL #1 follow-up)
3
+ *
4
+ * Resolves whether the agent dependency graph is in a "critical" topology
5
+ * state for the purpose of dampening exploration in QEReasoningBank.routeTask.
6
+ *
7
+ * Why this lives in its own module:
8
+ *
9
+ * 1. Testability. The reasoning-bank's full init path (real embeddings,
10
+ * HNSW, pretrained patterns) is OOM-heavy in test environments. Putting
11
+ * the topology gate here lets us unit-test it against a fresh
12
+ * SwarmGraph singleton without spinning up the kernel + bank stack.
13
+ *
14
+ * 2. The empty-graph regression. `MinCutCalculator.getMinCutValue` returns
15
+ * 0 on an empty graph; `MinCutHealthMonitor.isCritical()` is defined as
16
+ * `minCutValue < warningThreshold`, so an empty graph reports as
17
+ * critical. CLI hook routing — the only place this gate fires in
18
+ * practice — sees an empty graph because Queen coordinator activity
19
+ * is what populates it. Without the emptiness check, exploration is
20
+ * permanently dampened in the exact deployment case ADR-095 was meant
21
+ * to help.
22
+ *
23
+ * Treat empty/uninitialized graph as "no signal" (full ε rate). Only
24
+ * consult `isCritical()` when the graph has actual vertices.
25
+ */
26
+ /**
27
+ * Returns true ONLY when:
28
+ * 1. The shared monitor + graph are both initialized
29
+ * 2. The graph has at least one vertex (so the mincut value is real,
30
+ * not the degenerate 0 of an empty graph)
31
+ * 3. The monitor's `isCritical()` returns true
32
+ *
33
+ * Any other state returns false (full ε rate / no dampening).
34
+ *
35
+ * All errors are swallowed — the gate is a best-effort signal that must
36
+ * never block routing. Caller defaults safetyMultiplier to 1.0 when this
37
+ * returns false.
38
+ */
39
+ export declare function resolveTopologyCriticalFromSharedMincut(): boolean;
40
+ //# sourceMappingURL=routing-topology-gate.d.ts.map
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Routing Topology Safety Gate (ADR-095 — CRITICAL #1 follow-up)
3
+ *
4
+ * Resolves whether the agent dependency graph is in a "critical" topology
5
+ * state for the purpose of dampening exploration in QEReasoningBank.routeTask.
6
+ *
7
+ * Why this lives in its own module:
8
+ *
9
+ * 1. Testability. The reasoning-bank's full init path (real embeddings,
10
+ * HNSW, pretrained patterns) is OOM-heavy in test environments. Putting
11
+ * the topology gate here lets us unit-test it against a fresh
12
+ * SwarmGraph singleton without spinning up the kernel + bank stack.
13
+ *
14
+ * 2. The empty-graph regression. `MinCutCalculator.getMinCutValue` returns
15
+ * 0 on an empty graph; `MinCutHealthMonitor.isCritical()` is defined as
16
+ * `minCutValue < warningThreshold`, so an empty graph reports as
17
+ * critical. CLI hook routing — the only place this gate fires in
18
+ * practice — sees an empty graph because Queen coordinator activity
19
+ * is what populates it. Without the emptiness check, exploration is
20
+ * permanently dampened in the exact deployment case ADR-095 was meant
21
+ * to help.
22
+ *
23
+ * Treat empty/uninitialized graph as "no signal" (full ε rate). Only
24
+ * consult `isCritical()` when the graph has actual vertices.
25
+ */
26
+ import { getSharedMinCutGraph, getSharedMinCutMonitor, isSharedMinCutGraphInitialized, isSharedMinCutMonitorInitialized, } from '../coordination/mincut/shared-singleton.js';
27
+ /**
28
+ * Returns true ONLY when:
29
+ * 1. The shared monitor + graph are both initialized
30
+ * 2. The graph has at least one vertex (so the mincut value is real,
31
+ * not the degenerate 0 of an empty graph)
32
+ * 3. The monitor's `isCritical()` returns true
33
+ *
34
+ * Any other state returns false (full ε rate / no dampening).
35
+ *
36
+ * All errors are swallowed — the gate is a best-effort signal that must
37
+ * never block routing. Caller defaults safetyMultiplier to 1.0 when this
38
+ * returns false.
39
+ */
40
+ export function resolveTopologyCriticalFromSharedMincut() {
41
+ try {
42
+ if (!isSharedMinCutMonitorInitialized())
43
+ return false;
44
+ if (!isSharedMinCutGraphInitialized())
45
+ return false;
46
+ const graph = getSharedMinCutGraph();
47
+ if (graph.isEmpty())
48
+ return false;
49
+ return getSharedMinCutMonitor().isCritical();
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ }
55
+ //# sourceMappingURL=routing-topology-gate.js.map
@@ -115,7 +115,12 @@ export declare class SQLitePatternStore {
115
115
  embedding: number[];
116
116
  }>;
117
117
  /**
118
- * Record pattern usage
118
+ * Record pattern usage.
119
+ *
120
+ * Delegates to {@link recordPatternUsage} so the hook path
121
+ * (hooks-dream-learning.ts) and the canonical pattern-store path share a
122
+ * single writer — #486 Gap B. Preserves the previous throw-on-missing
123
+ * contract by checking the helper's `updated` flag.
119
124
  */
120
125
  recordUsage(patternId: string, success: boolean, metrics?: Record<string, unknown>, feedback?: string): void;
121
126
  /**
@@ -17,6 +17,7 @@ import { safeJsonParse } from '../shared/safe-json.js';
17
17
  import { toErrorMessage } from '../shared/error-utils.js';
18
18
  import { getUnifiedMemory } from '../kernel/unified-memory.js';
19
19
  import { computeBatchEmbeddings, getEmbeddingDimension } from './real-embeddings.js';
20
+ import { recordPatternUsage } from './pattern-usage-recorder.js';
20
21
  export const DEFAULT_SQLITE_CONFIG = {
21
22
  // LEGACY: Ignored when useUnified=true (the default). All data goes to memory.db
22
23
  dbPath: '.agentic-qe/memory.db',
@@ -518,32 +519,25 @@ export class SQLitePatternStore {
518
519
  }));
519
520
  }
520
521
  /**
521
- * Record pattern usage
522
+ * Record pattern usage.
523
+ *
524
+ * Delegates to {@link recordPatternUsage} so the hook path
525
+ * (hooks-dream-learning.ts) and the canonical pattern-store path share a
526
+ * single writer — #486 Gap B. Preserves the previous throw-on-missing
527
+ * contract by checking the helper's `updated` flag.
522
528
  */
523
529
  recordUsage(patternId, success, metrics, feedback) {
524
530
  if (!this.db)
525
531
  throw new Error('Database not initialized');
526
- const insertUsage = this.prepared.get('insertUsage');
527
- const updatePattern = this.prepared.get('updatePattern');
528
- if (!insertUsage || !updatePattern) {
529
- throw new Error('Prepared statements not ready');
530
- }
531
- // Get current pattern for quality score calculation
532
- const pattern = this.getPattern(patternId);
533
- if (!pattern) {
532
+ const result = recordPatternUsage(this.db, {
533
+ patternId,
534
+ success,
535
+ metrics,
536
+ feedback,
537
+ });
538
+ if (!result.updated) {
534
539
  throw new Error(`Pattern not found: ${patternId}`);
535
540
  }
536
- const newUsageCount = pattern.usageCount + 1;
537
- const newSuccessfulUses = pattern.successfulUses + (success ? 1 : 0);
538
- const newSuccessRate = newSuccessfulUses / newUsageCount;
539
- // Quality score: confidence * 0.3 + usage * 0.2 + success_rate * 0.5
540
- const usageScore = Math.min(1, newUsageCount / 100);
541
- const qualityScore = pattern.confidence * 0.3 + usageScore * 0.2 + newSuccessRate * 0.5;
542
- const transaction = this.db.transaction(() => {
543
- insertUsage.run(patternId, success ? 1 : 0, metrics ? JSON.stringify(metrics) : null, feedback || null);
544
- updatePattern.run(success ? 1 : 0, success ? 1 : 0, qualityScore, patternId);
545
- });
546
- transaction();
547
541
  }
548
542
  /**
549
543
  * Delete a pattern and its related data (embedding, usage history)