agentic-qe 3.9.31 → 3.9.32

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 (306) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +88 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +5 -5
  5. package/dist/cli/chunks/adapter-CDQOF5TF.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-AQXZYWZY.js → agent-booster-wasm-WKS3E6KT.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-7N4ZPXCY.js → agent-handler-LYCAWE7S.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-FLKF2JVX.js → agent-memory-branch-XF7IOMRK.js} +2 -2
  9. package/dist/cli/chunks/aqe-learning-engine-RZK22CJB.js +2 -0
  10. package/dist/cli/chunks/{audit-B4V4IKTA.js → audit-D2AY3HFP.js} +2 -2
  11. package/dist/cli/chunks/base-UGH6TVO4.js +2 -0
  12. package/dist/cli/chunks/{hnswlib-node-WENGW3YX.js → better-sqlite3-K2VWFDKT.js} +2 -2
  13. package/dist/cli/chunks/{brain-handler-OOXJ2KYY.js → brain-handler-NNW4TAO2.js} +3 -3
  14. package/dist/cli/chunks/{branch-enumerator-LFKFW3A4.js → branch-enumerator-OM5HNZKV.js} +2 -2
  15. package/dist/cli/chunks/{browser-F72IES2I.js → browser-Y2FU2NV4.js} +2 -2
  16. package/dist/cli/chunks/browser-workflow-SGOL3FCJ.js +2 -0
  17. package/dist/cli/chunks/{chunk-35SFAIXE.js → chunk-2L5GAOST.js} +2 -2
  18. package/dist/cli/chunks/{chunk-MAJ5QFVY.js → chunk-2XC4XVCI.js} +1 -1
  19. package/dist/cli/chunks/{chunk-QEJBJST4.js → chunk-2Z2IQBIJ.js} +1 -1
  20. package/dist/cli/chunks/{chunk-AKFRM4IO.js → chunk-33PGBYTC.js} +2 -2
  21. package/dist/cli/chunks/{chunk-W7XVEWKQ.js → chunk-3MHWBCSC.js} +1 -1
  22. package/dist/cli/chunks/{chunk-NBKM7NKX.js → chunk-3R4CMTWF.js} +2 -2
  23. package/dist/cli/chunks/{chunk-4N736EES.js → chunk-45N22VAB.js} +2 -2
  24. package/dist/cli/chunks/{chunk-3VKB4HVT.js → chunk-4H4PEZUX.js} +2 -2
  25. package/dist/cli/chunks/{chunk-CFLA2GBS.js → chunk-4VAZSCTZ.js} +2 -2
  26. package/dist/cli/chunks/{chunk-JF3U456G.js → chunk-5A6LBGRU.js} +2 -2
  27. package/dist/cli/chunks/{chunk-TYUIQSSF.js → chunk-5DSANX6S.js} +2 -2
  28. package/dist/cli/chunks/chunk-5R5WOLZM.js +5 -0
  29. package/dist/cli/chunks/{chunk-K6MFAVXK.js → chunk-5WR42V5O.js} +2 -2
  30. package/dist/cli/chunks/{chunk-PUSZ4NBY.js → chunk-5XY6SULI.js} +2 -2
  31. package/dist/cli/chunks/{chunk-VOOJDHLI.js → chunk-62UXGD5J.js} +3 -3
  32. package/dist/cli/chunks/{chunk-REJEFTWX.js → chunk-667I4RTC.js} +1 -1
  33. package/dist/cli/chunks/{chunk-KXRDQQGN.js → chunk-6EKXBWJD.js} +2 -2
  34. package/dist/cli/chunks/{chunk-CNKOIHF6.js → chunk-6R6QCGNU.js} +2 -2
  35. package/dist/cli/chunks/{chunk-YEZJE2ZW.js → chunk-6SYP7QX6.js} +4 -4
  36. package/dist/cli/chunks/{chunk-TLCCM2AF.js → chunk-6YGFAJ3X.js} +1 -1
  37. package/dist/cli/chunks/{chunk-KJAIE7SL.js → chunk-6ZG6TBWF.js} +4 -4
  38. package/dist/cli/chunks/{chunk-NLUBN642.js → chunk-7AISRWBS.js} +2 -2
  39. package/dist/cli/chunks/{chunk-LF5RO6WO.js → chunk-7IDPVSTF.js} +1 -1
  40. package/dist/cli/chunks/{chunk-VUL5HIKR.js → chunk-7PTW3M67.js} +2 -2
  41. package/dist/cli/chunks/{chunk-QGLWFZVQ.js → chunk-A4UNK5SY.js} +2 -2
  42. package/dist/cli/chunks/{chunk-JRIDPOEZ.js → chunk-A6VI5BZU.js} +4 -4
  43. package/dist/cli/chunks/{chunk-7OVVBBOZ.js → chunk-BBPOTFIY.js} +2 -2
  44. package/dist/cli/chunks/{chunk-AKJWBJDK.js → chunk-BDXEL3GM.js} +2 -2
  45. package/dist/cli/chunks/{chunk-GJSH4UZ3.js → chunk-BGRC4676.js} +3 -3
  46. package/dist/cli/chunks/{chunk-PSF6YQQM.js → chunk-BQML7B4W.js} +3 -3
  47. package/dist/cli/chunks/{chunk-VAIOZDG5.js → chunk-BV3SGEV7.js} +1 -1
  48. package/dist/cli/chunks/{chunk-XNJ6DIEW.js → chunk-DBE2LIYG.js} +2 -2
  49. package/dist/cli/chunks/{chunk-AQN6PDHI.js → chunk-DFY7F4TE.js} +1 -1
  50. package/dist/cli/chunks/{chunk-IRRGUXAU.js → chunk-EFEJLZDN.js} +1 -1
  51. package/dist/cli/chunks/{chunk-5G2L4XRU.js → chunk-ESNBKAT6.js} +2 -2
  52. package/dist/cli/chunks/{chunk-7UHRT5AX.js → chunk-EVSUZKD5.js} +2 -2
  53. package/dist/cli/chunks/{chunk-FUHPLXJX.js → chunk-FFBF5BLQ.js} +1 -1
  54. package/dist/cli/chunks/{chunk-N6P7ENG7.js → chunk-FIONYUVH.js} +2 -2
  55. package/dist/cli/chunks/{chunk-TJGIIGKL.js → chunk-FNQCWEVJ.js} +2 -2
  56. package/dist/cli/chunks/{chunk-NTVJKQ5S.js → chunk-FV2MU6CY.js} +2 -2
  57. package/dist/cli/chunks/{chunk-M6RVKGIP.js → chunk-FWEYOD3S.js} +2 -2
  58. package/dist/cli/chunks/{chunk-EAIPJSKH.js → chunk-G6AJMFWL.js} +3 -3
  59. package/dist/cli/chunks/{chunk-L7DNPOAQ.js → chunk-G6VVOUUF.js} +2 -2
  60. package/dist/cli/chunks/{chunk-BYHUGO73.js → chunk-G77CYF7H.js} +3 -3
  61. package/dist/cli/chunks/{chunk-EJXRBAQF.js → chunk-H7YKTJMY.js} +2 -2
  62. package/dist/cli/chunks/{chunk-CUSLB7MB.js → chunk-HGWQC7PR.js} +2 -2
  63. package/dist/cli/chunks/{chunk-XE4YKDIM.js → chunk-HHBFI3YA.js} +2 -2
  64. package/dist/cli/chunks/{chunk-PTOTOBOU.js → chunk-HPQZSXED.js} +1 -1
  65. package/dist/cli/chunks/{chunk-YN7HCVUP.js → chunk-HR6NX6DW.js} +2 -2
  66. package/dist/cli/chunks/{chunk-QITO7E7Y.js → chunk-I6Q6BPVH.js} +1 -1
  67. package/dist/cli/chunks/{chunk-L63KB63A.js → chunk-IGEZVFOM.js} +2 -2
  68. package/dist/cli/chunks/{chunk-ENCFLC44.js → chunk-IGQPGXP7.js} +2 -2
  69. package/dist/cli/chunks/{chunk-YMN4C32S.js → chunk-IJQJV7BC.js} +3 -3
  70. package/dist/cli/chunks/chunk-JDW6GN3A.js +2 -0
  71. package/dist/cli/chunks/{chunk-LRWRFKQH.js → chunk-JRYNHFZA.js} +1 -1
  72. package/dist/cli/chunks/{chunk-7V7TP242.js → chunk-KHZRNJ3A.js} +1 -1
  73. package/dist/cli/chunks/{chunk-PYYNY7RJ.js → chunk-LHDTXTS7.js} +1 -1
  74. package/dist/cli/chunks/{chunk-ONMJJ2C3.js → chunk-LI2IOJMM.js} +1 -1
  75. package/dist/cli/chunks/{heartbeat-scheduler-OH3SS7MH.js → chunk-LR5VW3OS.js} +2 -2
  76. package/dist/cli/chunks/{chunk-XY3WUGD3.js → chunk-LTSNDM5N.js} +2 -2
  77. package/dist/cli/chunks/{chunk-CQWZNVIM.js → chunk-M5PYPGBC.js} +2 -2
  78. package/dist/cli/chunks/{chunk-RTGNWRQI.js → chunk-MEHNT37H.js} +2 -2
  79. package/dist/cli/chunks/{chunk-ZG4EKPGV.js → chunk-MERMCKPG.js} +1 -1
  80. package/dist/cli/chunks/{chunk-JKKV5KKS.js → chunk-MIHQIAVK.js} +2 -2
  81. package/dist/cli/chunks/{chunk-RDJWUKIR.js → chunk-MMVSERJQ.js} +2 -2
  82. package/dist/cli/chunks/{chunk-5WWQLPB4.js → chunk-MQQANXFS.js} +2 -2
  83. package/dist/cli/chunks/{chunk-I3TFGMOQ.js → chunk-MTOHV22P.js} +1 -1
  84. package/dist/cli/chunks/{chunk-7RPEBKQZ.js → chunk-NVZHCAEB.js} +2 -2
  85. package/dist/cli/chunks/{chunk-52D3CYE5.js → chunk-NW5FYGDE.js} +2 -2
  86. package/dist/cli/chunks/{chunk-UIRTXM7C.js → chunk-NZRJWK5H.js} +61 -121
  87. package/dist/cli/chunks/chunk-O5NEZCTB.js +2 -0
  88. package/dist/cli/chunks/{chunk-YQJBE6NX.js → chunk-O5UGJ3OI.js} +2 -2
  89. package/dist/cli/chunks/{chunk-WB6TI6Q3.js → chunk-OK2TFTXP.js} +2 -2
  90. package/dist/cli/chunks/{chunk-NNF3GCGF.js → chunk-OKEHGXIS.js} +2 -2
  91. package/dist/cli/chunks/{chunk-5AMAJCZS.js → chunk-OKRY4LNE.js} +3 -3
  92. package/dist/cli/chunks/{chunk-NZQYNUGM.js → chunk-OMOGD2NN.js} +2 -2
  93. package/dist/cli/chunks/{chunk-X2FLWV5C.js → chunk-ONNTJXU7.js} +2 -2
  94. package/dist/cli/chunks/{chunk-MYCVU3D3.js → chunk-OPOGZAN5.js} +2 -2
  95. package/dist/cli/chunks/{chunk-ZBJRNCWX.js → chunk-PG5F2VHA.js} +2 -2
  96. package/dist/cli/chunks/{chunk-JMLOEW7Y.js → chunk-PHRMWRXA.js} +2 -2
  97. package/dist/cli/chunks/{chunk-N6SIKSCO.js → chunk-PIXUX2NR.js} +2 -2
  98. package/dist/cli/chunks/{chunk-IY4P35N3.js → chunk-PLGMPG7S.js} +2 -2
  99. package/dist/cli/chunks/{chunk-K37CNLQZ.js → chunk-PPS6VN24.js} +1 -1
  100. package/dist/cli/chunks/{chunk-XMMWYQJK.js → chunk-PQAYCK2U.js} +2 -2
  101. package/dist/cli/chunks/{chunk-SL4TAJOE.js → chunk-PS6ISBED.js} +2 -2
  102. package/dist/cli/chunks/{chunk-OXOXNAEZ.js → chunk-QPYNQSWD.js} +2 -2
  103. package/dist/cli/chunks/{chunk-62KYX5NH.js → chunk-QRTZ67BC.js} +2 -2
  104. package/dist/cli/chunks/{chunk-DUF733Z7.js → chunk-REW3W3ZW.js} +1 -1
  105. package/dist/cli/chunks/{chunk-T4DDCMKG.js → chunk-RHXYZ6AZ.js} +127 -127
  106. package/dist/cli/chunks/{chunk-VLAGWLHF.js → chunk-RZXAXWBD.js} +2 -2
  107. package/dist/cli/chunks/{chunk-XTWYCMAM.js → chunk-S4M7U6CZ.js} +2 -2
  108. package/dist/cli/chunks/{chunk-ROEIR3OD.js → chunk-SJETAUZA.js} +1 -1
  109. package/dist/cli/chunks/{chunk-47QIAHUJ.js → chunk-SLH7LFVY.js} +2 -2
  110. package/dist/cli/chunks/{chunk-XGBIXRKD.js → chunk-SRJ5N7LD.js} +2 -2
  111. package/dist/cli/chunks/{chunk-EKYPQ5DX.js → chunk-T5ADVYPH.js} +1 -1
  112. package/dist/cli/chunks/{chunk-7MXQV7RB.js → chunk-THYGFSTA.js} +2 -2
  113. package/dist/cli/chunks/{chunk-462MZLJB.js → chunk-TX2DBLTL.js} +1 -1
  114. package/dist/cli/chunks/{chunk-TVHWI77X.js → chunk-UJMGNO6L.js} +1 -1
  115. package/dist/cli/chunks/{chunk-YLEMSN46.js → chunk-UUQ3SOKM.js} +1 -1
  116. package/dist/cli/chunks/{chunk-ZWSRIJ2T.js → chunk-V5RLGPEW.js} +2 -2
  117. package/dist/cli/chunks/{chunk-CYUGE5ZQ.js → chunk-V6HM2BKJ.js} +1 -1
  118. package/dist/cli/chunks/{chunk-UIIEZMSM.js → chunk-V7I6FTLG.js} +1 -1
  119. package/dist/cli/chunks/{chunk-5M4F3PAL.js → chunk-V7ZBPSVG.js} +1 -1
  120. package/dist/cli/chunks/{chunk-VSKABN3B.js → chunk-VJL7DNUU.js} +2 -2
  121. package/dist/cli/chunks/{chunk-2NLZXG6V.js → chunk-VKCWWR6C.js} +1 -1
  122. package/dist/cli/chunks/chunk-VKNCMGOJ.js +29 -0
  123. package/dist/cli/chunks/{chunk-L4JTTPU7.js → chunk-W2VTHUDK.js} +2 -2
  124. package/dist/cli/chunks/{chunk-FOAWHNOP.js → chunk-W3JB3G7C.js} +2 -2
  125. package/dist/cli/chunks/{chunk-A424Z7LA.js → chunk-WQ4MT74X.js} +1 -1
  126. package/dist/cli/chunks/{chunk-GQFAVT2I.js → chunk-WTNM7NA4.js} +1 -1
  127. package/dist/cli/chunks/chunk-XB3SIYGU.js +62 -0
  128. package/dist/cli/chunks/{chunk-HHEIQHLQ.js → chunk-XCUNQ3FK.js} +2 -2
  129. package/dist/cli/chunks/{chunk-BMS7WFDB.js → chunk-XHQFVTFD.js} +1 -1
  130. package/dist/cli/chunks/{chunk-QMSDKKYG.js → chunk-YBUUAFKR.js} +1 -1
  131. package/dist/cli/chunks/{chunk-G2U7Q6V6.js → chunk-YJV6TTCW.js} +2 -2
  132. package/dist/cli/chunks/{chunk-GN7FUCJH.js → chunk-YUSGT2CU.js} +1 -1
  133. package/dist/cli/chunks/{chunk-JJRZOLDY.js → chunk-YUTSN5BK.js} +2 -2
  134. package/dist/cli/chunks/{chunk-G3YKCZWQ.js → chunk-YVMJTBXB.js} +3 -3
  135. package/dist/cli/chunks/chunk-YVQ4PR4H.js +2 -0
  136. package/dist/cli/chunks/{chunk-UNXUSYRL.js → chunk-Z2EDNMCQ.js} +2 -2
  137. package/dist/cli/chunks/{chunk-DMF4Z2M6.js → chunk-ZESMMAKZ.js} +2 -2
  138. package/dist/cli/chunks/{chunk-VA45HLBF.js → chunk-ZIVOT3B7.js} +2 -2
  139. package/dist/cli/chunks/{ci-LRTJSZHT.js → ci-NSF6OHB4.js} +2 -2
  140. package/dist/cli/chunks/{ci-output-LISCHUKD.js → ci-output-ZPDJ42U3.js} +2 -2
  141. package/dist/cli/chunks/{circuit-breaker-7PMP25KZ.js → circuit-breaker-Y2RUJDYG.js} +2 -2
  142. package/dist/cli/chunks/{claude-flow-setup-DOW4QVMC.js → claude-flow-setup-OH6G6KM2.js} +2 -2
  143. package/dist/cli/chunks/client-QQGRKAY7.js +2 -0
  144. package/dist/cli/chunks/{cline-installer-2NXQGW73.js → cline-installer-IHH4F27G.js} +2 -2
  145. package/dist/cli/chunks/{code-3X6RWAS7.js → code-SFAHWFTX.js} +2 -2
  146. package/dist/cli/chunks/{code-index-extractor-4ABP5WCP.js → code-index-extractor-GXECMOM2.js} +2 -2
  147. package/dist/cli/chunks/{codex-installer-V7PII6GL.js → codex-installer-UPMSAFCQ.js} +2 -2
  148. package/dist/cli/chunks/{completions-Y7LNQ63I.js → completions-5TX6LDHY.js} +2 -2
  149. package/dist/cli/chunks/{complexity-analyzer-XLYMAM6I.js → complexity-analyzer-J2ZR3XZB.js} +2 -2
  150. package/dist/cli/chunks/{continuedev-installer-GOT4TKNT.js → continuedev-installer-GWYZKB5A.js} +2 -2
  151. package/dist/cli/chunks/{copilot-installer-D6BAQVIO.js → copilot-installer-DQZMQWI7.js} +2 -2
  152. package/dist/cli/chunks/{cost-tracker-VT7C5Q52.js → cost-tracker-V7KIGCLZ.js} +2 -2
  153. package/dist/cli/chunks/{coverage-C62MRP4M.js → coverage-3X6LA2GZ.js} +3 -3
  154. package/dist/cli/chunks/cross-domain-router-3SHAGRVP.js +2 -0
  155. package/dist/cli/chunks/{cursor-installer-WAWSS2K2.js → cursor-installer-ENDG4JIU.js} +2 -2
  156. package/dist/cli/chunks/daemon-4XVAO7GT.js +16 -0
  157. package/dist/cli/chunks/daemon-TC65CQFK.js +10 -0
  158. package/dist/cli/chunks/{dag-attention-scheduler-SZIZWPV7.js → dag-attention-scheduler-JOSCDRZC.js} +2 -2
  159. package/dist/cli/chunks/{detect-AJX6NJEP.js → detect-KWZX3OMK.js} +2 -2
  160. package/dist/cli/chunks/{dist-node-E5X47QTY.js → dist-node-R4U2PJ47.js} +2 -2
  161. package/dist/cli/chunks/{domain-handler-FN3PIP45.js → domain-handler-BMYYZO2L.js} +2 -2
  162. package/dist/cli/chunks/{domain-transfer-N3TOJEMT.js → domain-transfer-MSDBBDLC.js} +2 -2
  163. package/dist/cli/chunks/dream-OCZK42FM.js +2 -0
  164. package/dist/cli/chunks/{embed-and-insert-pattern-PJI5TZKR.js → embed-and-insert-pattern-MFINPOLS.js} +2 -2
  165. package/dist/cli/chunks/{eval-OS54TDQU.js → eval-OER6UNUY.js} +2 -2
  166. package/dist/cli/chunks/{experience-capture-middleware-FBM4ANZW.js → experience-capture-middleware-F5I77ECG.js} +3 -3
  167. package/dist/cli/chunks/{fast-paths-2CVAAPQO.js → fast-paths-P3KT5DUQ.js} +2 -2
  168. package/dist/cli/chunks/{feature-flags-A5KFWVFC.js → feature-flags-5EBWQ5WU.js} +2 -2
  169. package/dist/cli/chunks/{feature-flags-GEXTW6OT.js → feature-flags-DYFZSQLV.js} +2 -2
  170. package/dist/cli/chunks/{file-discovery-KWLVC7KN.js → file-discovery-MOBVABSM.js} +2 -2
  171. package/dist/cli/chunks/{fleet-MNKH356S.js → fleet-J3R3NQNC.js} +3 -3
  172. package/dist/cli/chunks/{gnn-wrapper-ALTWYFVZ.js → gnn-wrapper-QD76SULF.js} +2 -2
  173. package/dist/cli/chunks/{heartbeat-handler-MBMEPEGW.js → heartbeat-handler-AJEWTPZ4.js} +4 -4
  174. package/dist/cli/chunks/heartbeat-scheduler-EAVZR6TJ.js +2 -0
  175. package/dist/cli/chunks/hnsw-adapter-BY4XB7FB.js +2 -0
  176. package/dist/cli/chunks/hnsw-index-657CZRG7.js +2 -0
  177. package/dist/cli/chunks/{hnsw-legacy-bridge-WTD5PR5V.js → hnsw-legacy-bridge-5VRM5N7K.js} +2 -2
  178. package/dist/cli/chunks/{better-sqlite3-NYOVLWBG.js → hnswlib-node-BWUH4OQT.js} +2 -2
  179. package/dist/cli/chunks/{hooks-ELHGEBFK.js → hooks-7PMVKQOE.js} +10 -10
  180. package/dist/cli/chunks/{hybrid-router-D6ZMIZCE.js → hybrid-router-2K2LW45J.js} +2 -2
  181. package/dist/cli/chunks/{hypergraph-engine-JOQ6TERZ.js → hypergraph-engine-2CQ735JO.js} +2 -2
  182. package/dist/cli/chunks/{hypergraph-handler-HX45YWWN.js → hypergraph-handler-AQ53GVIW.js} +3 -3
  183. package/dist/cli/chunks/impact-analyzer-GI6UVAMT.js +2 -0
  184. package/dist/cli/chunks/{init-handler-TNVU6NQ6.js → init-handler-ZOVJPAWO.js} +6 -6
  185. package/dist/cli/chunks/init-wizard-HOH577MH.js +2 -0
  186. package/dist/cli/chunks/kernel-JDYBG5GE.js +2 -0
  187. package/dist/cli/chunks/{kilocode-installer-YC5RJIY4.js → kilocode-installer-GWQCNLKI.js} +2 -2
  188. package/dist/cli/chunks/{kiro-installer-EAB26M55.js → kiro-installer-6KVES4MO.js} +2 -2
  189. package/dist/cli/chunks/knowledge-graph-RAQOWLG3.js +2 -0
  190. package/dist/cli/chunks/{learning-A2OB7D2B.js → learning-6XMNWXRT.js} +3 -3
  191. package/dist/cli/chunks/{llm-router-KEG6PA7C.js → llm-router-GS4AZJJC.js} +4 -4
  192. package/dist/cli/chunks/{load-D6ZDLVA3.js → load-FEMEQNE6.js} +2 -2
  193. package/dist/cli/chunks/load-test-3MEJ43U2.js +2 -0
  194. package/dist/cli/chunks/{mcp-ERJHZ6FN.js → mcp-6V2H7EXU.js} +2 -2
  195. package/dist/cli/chunks/{memory-GSRIJIVR.js → memory-YLGPOB2H.js} +5 -5
  196. package/dist/cli/chunks/memory-backend-2A47ZRGO.js +2 -0
  197. package/dist/cli/chunks/memory-handlers-UBTBC7D2.js +2 -0
  198. package/dist/cli/chunks/{multi-model-executor-GK3V7ERC.js → multi-model-executor-SL2EKAH2.js} +2 -2
  199. package/dist/cli/chunks/{opencode-installer-6TTN26RG.js → opencode-installer-ADOJVGNA.js} +2 -2
  200. package/dist/cli/chunks/{orchestrator-YVTSM6QW.js → orchestrator-O4IWW2VU.js} +5 -5
  201. package/dist/cli/chunks/{pipeline-EWLJCY5G.js → pipeline-5BD5YQNQ.js} +2 -2
  202. package/dist/cli/chunks/{platform-2ULHQQME.js → platform-HXSUOOJH.js} +2 -2
  203. package/dist/cli/chunks/{plugin-PYN2KOXA.js → plugin-HOLH5CUH.js} +2 -2
  204. package/dist/cli/chunks/{prime-radiant-advanced-wasm-IULCTOGZ.js → prime-radiant-advanced-wasm-PJTL7OLS.js} +2 -2
  205. package/dist/cli/chunks/protocol-executor-3FR7FBVM.js +2 -0
  206. package/dist/cli/chunks/{protocol-handler-FZYI2SBP.js → protocol-handler-K27YGLC7.js} +2 -2
  207. package/dist/cli/chunks/{prove-DN7S74SP.js → prove-MHCLHQQ6.js} +2 -2
  208. package/dist/cli/chunks/{provider-manager-FT3MCROB.js → provider-manager-3645PPXX.js} +2 -2
  209. package/dist/cli/chunks/qe-reasoning-bank-CHNYPYQW.js +2 -0
  210. package/dist/cli/chunks/{quality-ITBU6LGC.js → quality-NDE6EDOY.js} +2 -2
  211. package/dist/cli/chunks/queen-coordinator-J6ZRYTBX.js +2 -0
  212. package/dist/cli/chunks/{real-embeddings-PZUZ5RXJ.js → real-embeddings-VD3EVV3U.js} +2 -2
  213. package/dist/cli/chunks/{roocode-installer-2LMVZOUZ.js → roocode-installer-63Y45UUG.js} +2 -2
  214. package/dist/cli/chunks/router-23HRN2Z6.js +2 -0
  215. package/dist/cli/chunks/routing-feedback-R6A4B6ZG.js +2 -0
  216. package/dist/cli/chunks/{routing-handler-5RB73UCF.js → routing-handler-76XISU2E.js} +2 -2
  217. package/dist/cli/chunks/{ruvector-commands-VBN4APMG.js → ruvector-commands-AEKOZZHZ.js} +2 -2
  218. package/dist/cli/chunks/{rvf-dual-writer-BNY4AUWT.js → rvf-dual-writer-4DMUIZQF.js} +2 -2
  219. package/dist/cli/chunks/{rvf-migration-adapter-73MKPBGV.js → rvf-migration-adapter-YUTXFOZ3.js} +2 -2
  220. package/dist/cli/chunks/{rvf-migration-coordinator-SGVB7ZAZ.js → rvf-migration-coordinator-XJ5N2W37.js} +2 -2
  221. package/dist/cli/chunks/rvf-native-adapter-QINEJZM7.js +2 -0
  222. package/dist/cli/chunks/safe-db-YXMCSKFH.js +2 -0
  223. package/dist/cli/chunks/schedule-XVFD27P5.js +2 -0
  224. package/dist/cli/chunks/scheduler-NWH2IDEU.js +2 -0
  225. package/dist/cli/chunks/{security-XUH4H7R3.js → security-6YS6GQGO.js} +3 -3
  226. package/dist/cli/chunks/shared-rvf-adapter-FTZY35WI.js +2 -0
  227. package/dist/cli/chunks/{shared-rvf-dual-writer-GML4EDYF.js → shared-rvf-dual-writer-MH2Y65HA.js} +2 -2
  228. package/dist/cli/chunks/sqlite-persistence-BR6YJF5P.js +2 -0
  229. package/dist/cli/chunks/{status-handler-XI7GJF6Z.js → status-handler-57JQMPY5.js} +2 -2
  230. package/dist/cli/chunks/{structural-health-WPCYKOXV.js → structural-health-34D5VWRD.js} +2 -2
  231. package/dist/cli/chunks/sync-HJD2US5P.js +2 -0
  232. package/dist/cli/chunks/sync-TTQ6ZB5D.js +17 -0
  233. package/dist/cli/chunks/{task-handler-FZB55IEG.js → task-handler-4RF57637.js} +2 -2
  234. package/dist/cli/chunks/{task-handlers-EXZGFH7F.js → task-handlers-BRSK7HDE.js} +3 -3
  235. package/dist/cli/chunks/{test-XYRN4OVU.js → test-GMUW2VR3.js} +4 -4
  236. package/dist/cli/chunks/{test-scheduling-FLVOPGOT.js → test-scheduling-7LF24IFV.js} +3 -3
  237. package/dist/cli/chunks/{token-bootstrap-FDCFVRHM.js → token-bootstrap-VYT4RTHU.js} +2 -2
  238. package/dist/cli/chunks/{token-usage-MHNZF3DM.js → token-usage-NFNCPQGW.js} +2 -2
  239. package/dist/cli/chunks/{transformers-4CRVTMWY.js → transformers-GGD5GIEY.js} +2 -2
  240. package/dist/cli/chunks/{tree-sitter-wasm-parser-CI3V4AND.js → tree-sitter-wasm-parser-GKYG6NKT.js} +2 -2
  241. package/dist/cli/chunks/{types-RKCD4BNL.js → types-WJ3ZTRD5.js} +2 -2
  242. package/dist/cli/chunks/unified-memory-AT3Z4CY7.js +2 -0
  243. package/dist/cli/chunks/unified-memory-hnsw-6FOIGINN.js +2 -0
  244. package/dist/cli/chunks/unified-persistence-TCJB7MQS.js +2 -0
  245. package/dist/cli/chunks/{upgrade-463W7VKH.js → upgrade-IMBT4F6K.js} +2 -2
  246. package/dist/cli/chunks/{validate-LENSMEAY.js → validate-76OVF45Z.js} +2 -2
  247. package/dist/cli/chunks/{validate-swarm-4FEBNAWA.js → validate-swarm-HH2ZYWXA.js} +2 -2
  248. package/dist/cli/chunks/{vibium-TXNVIVWJ.js → vibium-74WQNDBX.js} +2 -2
  249. package/dist/cli/chunks/visual-security-IBAUX2K5.js +2 -0
  250. package/dist/cli/chunks/{web-tree-sitter-BZEGWID4.js → web-tree-sitter-W6RGE4SL.js} +2 -2
  251. package/dist/cli/chunks/{windsurf-installer-7AFXJTPU.js → windsurf-installer-7DMSFCA2.js} +2 -2
  252. package/dist/cli/chunks/{witness-chain-G6SUZOZG.js → witness-chain-BLZ4ZKAD.js} +2 -2
  253. package/dist/cli/chunks/witness-chain-GNNF23XU.js +2 -0
  254. package/dist/cli/chunks/{workflow-EVQPO6FH.js → workflow-RNSDKRZ4.js} +4 -4
  255. package/dist/cli/chunks/workflow-orchestrator-S2YONHGM.js +2 -0
  256. package/dist/cli/chunks/{wrappers-HR6RUDI2.js → wrappers-J7RXMIOY.js} +2 -2
  257. package/dist/domains/learning-optimization/services/learning-coordinator.js +37 -17
  258. package/dist/kernel/hybrid-backend.d.ts +17 -7
  259. package/dist/kernel/hybrid-backend.js +24 -10
  260. package/dist/kernel/interfaces.d.ts +21 -6
  261. package/dist/kernel/memory-backend.d.ts +5 -5
  262. package/dist/kernel/memory-backend.js +14 -7
  263. package/dist/mcp/bundle.js +447 -447
  264. package/dist/mcp/handlers/core-handlers.js +21 -0
  265. package/dist/workers/interfaces.d.ts +26 -0
  266. package/dist/workers/worker-manager.d.ts +15 -12
  267. package/dist/workers/worker-manager.js +11 -0
  268. package/dist/workers/workers/learning-consolidation.js +116 -89
  269. package/package.json +3 -1
  270. package/dist/cli/chunks/adapter-CI2GZYME.js +0 -2
  271. package/dist/cli/chunks/aqe-learning-engine-KNQKALLI.js +0 -2
  272. package/dist/cli/chunks/base-P7PRMQWY.js +0 -2
  273. package/dist/cli/chunks/browser-workflow-QUP4A763.js +0 -2
  274. package/dist/cli/chunks/chunk-5Z6PYYWK.js +0 -2
  275. package/dist/cli/chunks/chunk-RBDAHW2M.js +0 -2
  276. package/dist/cli/chunks/client-XF6SJO2C.js +0 -2
  277. package/dist/cli/chunks/cross-domain-router-J2OFPM6R.js +0 -2
  278. package/dist/cli/chunks/daemon-CP2ETHRF.js +0 -19
  279. package/dist/cli/chunks/dream-D5LD5SOZ.js +0 -2
  280. package/dist/cli/chunks/hnsw-adapter-M2MMM3N6.js +0 -2
  281. package/dist/cli/chunks/hnsw-index-JO7KNF7M.js +0 -2
  282. package/dist/cli/chunks/impact-analyzer-ROQL4J7P.js +0 -2
  283. package/dist/cli/chunks/init-wizard-4BDFZX4M.js +0 -2
  284. package/dist/cli/chunks/kernel-37Y63WKR.js +0 -2
  285. package/dist/cli/chunks/knowledge-graph-V3DX6ZCX.js +0 -2
  286. package/dist/cli/chunks/load-test-HPBA2CMT.js +0 -2
  287. package/dist/cli/chunks/memory-backend-DODDBB46.js +0 -2
  288. package/dist/cli/chunks/memory-handlers-MFLCRS7V.js +0 -2
  289. package/dist/cli/chunks/protocol-executor-D56OYMCJ.js +0 -2
  290. package/dist/cli/chunks/qe-reasoning-bank-KXROIEK7.js +0 -2
  291. package/dist/cli/chunks/queen-coordinator-XOGATERL.js +0 -2
  292. package/dist/cli/chunks/router-3EHNUCOM.js +0 -2
  293. package/dist/cli/chunks/routing-feedback-ZHKGET22.js +0 -2
  294. package/dist/cli/chunks/rvf-native-adapter-4YC5IQUW.js +0 -2
  295. package/dist/cli/chunks/safe-db-PLJRHQIC.js +0 -2
  296. package/dist/cli/chunks/schedule-7DGELVJE.js +0 -2
  297. package/dist/cli/chunks/scheduler-VWASEC2J.js +0 -2
  298. package/dist/cli/chunks/shared-rvf-adapter-DCVDY2XW.js +0 -2
  299. package/dist/cli/chunks/sqlite-persistence-CTEBGVOW.js +0 -2
  300. package/dist/cli/chunks/sync-SFKTCRZC.js +0 -23
  301. package/dist/cli/chunks/unified-memory-YDKXKW3D.js +0 -2
  302. package/dist/cli/chunks/unified-memory-hnsw-6N7YZCLR.js +0 -2
  303. package/dist/cli/chunks/unified-persistence-UTWLPUQI.js +0 -2
  304. package/dist/cli/chunks/visual-security-DGXSOFKD.js +0 -2
  305. package/dist/cli/chunks/witness-chain-VP4MF6EU.js +0 -2
  306. package/dist/cli/chunks/workflow-orchestrator-VXSYAKQY.js +0 -2
@@ -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.31");process.exit(0)}
2
- import"./chunk-BMS7WFDB.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.32");process.exit(0)}
2
+ import"./chunk-XHQFVTFD.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.31");process.exit(0)}
2
- import{b as u}from"./chunk-LRWRFKQH.js";import{a as f,c as h}from"./chunk-K6MFAVXK.js";import"./chunk-BMS7WFDB.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.32");process.exit(0)}
2
+ import{b as u}from"./chunk-JRYNHFZA.js";import{a as f,c as h}from"./chunk-5WR42V5O.js";import"./chunk-XHQFVTFD.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
  ---
@@ -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.31");process.exit(0)}
2
- import{a,b,c,d,e,f,g}from"./chunk-47QIAHUJ.js";import"./chunk-5Z6PYYWK.js";import"./chunk-NZQYNUGM.js";import"./chunk-AKFRM4IO.js";import"./chunk-BMS7WFDB.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.32");process.exit(0)}
2
+ import{a,b,c,d,e,f,g}from"./chunk-SLH7LFVY.js";import"./chunk-YVQ4PR4H.js";import"./chunk-OMOGD2NN.js";import"./chunk-33PGBYTC.js";import"./chunk-XHQFVTFD.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.32");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h}from"./chunk-FWEYOD3S.js";import"./chunk-THYGFSTA.js";import"./chunk-ONNTJXU7.js";import"./chunk-OK2TFTXP.js";import"./chunk-YVQ4PR4H.js";import"./chunk-OMOGD2NN.js";import"./chunk-5WR42V5O.js";import"./chunk-4VAZSCTZ.js";import"./chunk-H7YKTJMY.js";import"./chunk-PIXUX2NR.js";import"./chunk-MQQANXFS.js";import"./chunk-BBPOTFIY.js";import"./chunk-YJV6TTCW.js";import"./chunk-HGWQC7PR.js";import"./chunk-ZESMMAKZ.js";import"./chunk-33PGBYTC.js";import"./chunk-XHQFVTFD.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,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.31");process.exit(0)}
2
- import"./chunk-VUL5HIKR.js";import{b as $}from"./chunk-K37CNLQZ.js";import{d as R}from"./chunk-XMMWYQJK.js";import{b as k,c as C,d as b}from"./chunk-7RPEBKQZ.js";import{c as W}from"./chunk-WB6TI6Q3.js";import"./chunk-IRRGUXAU.js";import"./chunk-K6MFAVXK.js";import"./chunk-BMS7WFDB.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.32");process.exit(0)}
2
+ import"./chunk-7PTW3M67.js";import{b as $}from"./chunk-PPS6VN24.js";import{d as R}from"./chunk-PQAYCK2U.js";import{b as k,c as C,d as b}from"./chunk-NVZHCAEB.js";import{c as W}from"./chunk-OK2TFTXP.js";import"./chunk-EFEJLZDN.js";import"./chunk-5WR42V5O.js";import"./chunk-XHQFVTFD.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-QUP4A763.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-SGOL3FCJ.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-QUP4A763.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-LISCHUKD.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-SGOL3FCJ.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-ZPDJ42U3.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.32");process.exit(0)}
2
+ import{a,b,c,d}from"./chunk-PG5F2VHA.js";import"./chunk-NW5FYGDE.js";import"./chunk-THYGFSTA.js";import"./chunk-ONNTJXU7.js";import"./chunk-OK2TFTXP.js";import"./chunk-YVQ4PR4H.js";import"./chunk-OMOGD2NN.js";import"./chunk-EFEJLZDN.js";import"./chunk-5WR42V5O.js";import"./chunk-WTNM7NA4.js";import"./chunk-4VAZSCTZ.js";import"./chunk-H7YKTJMY.js";import"./chunk-PIXUX2NR.js";import"./chunk-MQQANXFS.js";import"./chunk-BBPOTFIY.js";import"./chunk-YJV6TTCW.js";import"./chunk-HGWQC7PR.js";import"./chunk-ZESMMAKZ.js";import"./chunk-33PGBYTC.js";import"./chunk-XHQFVTFD.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.31");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-3VKB4HVT.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-NNF3GCGF.js";import"./chunk-7MXQV7RB.js";import"./chunk-X2FLWV5C.js";import"./chunk-WB6TI6Q3.js";import"./chunk-5Z6PYYWK.js";import"./chunk-NZQYNUGM.js";import"./chunk-K6MFAVXK.js";import"./chunk-CFLA2GBS.js";import"./chunk-EJXRBAQF.js";import"./chunk-N6SIKSCO.js";import"./chunk-5WWQLPB4.js";import"./chunk-7OVVBBOZ.js";import"./chunk-G2U7Q6V6.js";import"./chunk-CUSLB7MB.js";import"./chunk-DMF4Z2M6.js";import"./chunk-AKFRM4IO.js";import"./chunk-BMS7WFDB.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.32");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-4H4PEZUX.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-OKEHGXIS.js";import"./chunk-THYGFSTA.js";import"./chunk-ONNTJXU7.js";import"./chunk-OK2TFTXP.js";import"./chunk-YVQ4PR4H.js";import"./chunk-OMOGD2NN.js";import"./chunk-5WR42V5O.js";import"./chunk-4VAZSCTZ.js";import"./chunk-H7YKTJMY.js";import"./chunk-PIXUX2NR.js";import"./chunk-MQQANXFS.js";import"./chunk-BBPOTFIY.js";import"./chunk-YJV6TTCW.js";import"./chunk-HGWQC7PR.js";import"./chunk-ZESMMAKZ.js";import"./chunk-33PGBYTC.js";import"./chunk-XHQFVTFD.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};
@@ -22,6 +22,14 @@ const DEFAULT_CONFIG = {
22
22
  * Implements pattern learning and experience mining capabilities
23
23
  */
24
24
  const logger = LoggerFactory.create('learning-optimization/learning-coordinator');
25
+ /**
26
+ * #491 Bug 2: every read in this file must pass this namespace to match
27
+ * the writes (which already specify `namespace: 'learning-optimization'`).
28
+ * Without it, HybridBackend defaults to `default` and the coordinator
29
+ * cannot read its own data — `mineExperiences` returned 0 for every
30
+ * domain even on installs with hundreds of indexed experiences.
31
+ */
32
+ const LEARNING_NS = { namespace: 'learning-optimization' };
25
33
  export class LearningCoordinatorService {
26
34
  config;
27
35
  memory;
@@ -245,9 +253,9 @@ Provide:
245
253
  async findMatchingPatterns(context, limit = 10) {
246
254
  try {
247
255
  const patterns = [];
248
- const keys = await this.memory.search('learning:pattern:*', 100);
256
+ const keys = await this.memory.search('learning:pattern:*', 100, LEARNING_NS);
249
257
  for (const key of keys) {
250
- const pattern = await this.memory.get(key);
258
+ const pattern = await this.memory.get(key, LEARNING_NS);
251
259
  if (pattern && this.matchesContext(pattern, context)) {
252
260
  patterns.push(pattern);
253
261
  }
@@ -292,7 +300,7 @@ Provide:
292
300
  async updatePatternFeedback(patternId, success) {
293
301
  try {
294
302
  const key = `learning:pattern:${patternId}`;
295
- const pattern = await this.memory.get(key);
303
+ const pattern = await this.memory.get(key, LEARNING_NS);
296
304
  if (!pattern) {
297
305
  return err(new Error(`Pattern ${patternId} not found`));
298
306
  }
@@ -329,7 +337,7 @@ Provide:
329
337
  }
330
338
  const patterns = [];
331
339
  for (const id of patternIds) {
332
- const pattern = await this.memory.get(`learning:pattern:${id}`);
340
+ const pattern = await this.memory.get(`learning:pattern:${id}`, LEARNING_NS);
333
341
  if (pattern) {
334
342
  patterns.push(pattern);
335
343
  }
@@ -377,10 +385,10 @@ Provide:
377
385
  */
378
386
  async getPatternStats(domain) {
379
387
  try {
380
- const keys = await this.memory.search('learning:pattern:*', 500);
388
+ const keys = await this.memory.search('learning:pattern:*', 500, LEARNING_NS);
381
389
  const patterns = [];
382
390
  for (const key of keys) {
383
- const pattern = await this.memory.get(key);
391
+ const pattern = await this.memory.get(key, LEARNING_NS);
384
392
  if (pattern && (!domain || pattern.domain === domain)) {
385
393
  patterns.push(pattern);
386
394
  }
@@ -525,12 +533,12 @@ Provide:
525
533
  */
526
534
  async getReplayBuffer(agentId, limit = 100) {
527
535
  try {
528
- const keys = await this.memory.search(`learning:experience:index:agent:${agentId.value}:*`, limit);
536
+ const keys = await this.memory.search(`learning:experience:index:agent:${agentId.value}:*`, limit, LEARNING_NS);
529
537
  const experiences = [];
530
538
  for (const key of keys) {
531
- const experienceId = await this.memory.get(key);
539
+ const experienceId = await this.memory.get(key, LEARNING_NS);
532
540
  if (experienceId) {
533
- const experience = await this.memory.get(`learning:experience:${experienceId}`);
541
+ const experience = await this.memory.get(`learning:experience:${experienceId}`, LEARNING_NS);
534
542
  if (experience) {
535
543
  experiences.push(experience);
536
544
  }
@@ -601,18 +609,18 @@ Provide:
601
609
  }
602
610
  async archivePattern(patternId) {
603
611
  const key = `learning:pattern:${patternId}`;
604
- const pattern = await this.memory.get(key);
612
+ const pattern = await this.memory.get(key, LEARNING_NS);
605
613
  if (pattern) {
606
614
  await this.memory.set(`learning:pattern:archived:${patternId}`, pattern, {
607
615
  namespace: 'learning-optimization',
608
616
  persist: true,
609
617
  });
610
- await this.memory.delete(key);
618
+ await this.memory.delete(key, LEARNING_NS);
611
619
  }
612
620
  }
613
621
  async updatePatternUsage(patternId) {
614
622
  const key = `learning:pattern:${patternId}`;
615
- const pattern = await this.memory.get(key);
623
+ const pattern = await this.memory.get(key, LEARNING_NS);
616
624
  if (pattern) {
617
625
  const updated = {
618
626
  ...pattern,
@@ -639,14 +647,26 @@ Provide:
639
647
  await this.memory.set(`learning:experience:index:domain:${experience.domain}:${experience.id}`, experience.id, { namespace: 'learning-optimization', ttl: 86400 * 30 });
640
648
  }
641
649
  async getExperiencesByDomainAndTime(domain, timeRange) {
642
- const keys = await this.memory.search(`learning:experience:index:domain:${domain}:*`, 1000);
650
+ const keys = await this.memory.search(`learning:experience:index:domain:${domain}:*`, 1000, LEARNING_NS);
643
651
  const experiences = [];
644
652
  for (const key of keys) {
645
- const experienceId = await this.memory.get(key);
653
+ const experienceId = await this.memory.get(key, LEARNING_NS);
646
654
  if (experienceId) {
647
- const experience = await this.memory.get(`learning:experience:${experienceId}`);
648
- if (experience && timeRange.contains(experience.timestamp)) {
649
- experiences.push(experience);
655
+ const experience = await this.memory.get(`learning:experience:${experienceId}`, LEARNING_NS);
656
+ if (experience) {
657
+ // #491 Bug 3: kv stores Date via JSON.stringify (→ ISO string)
658
+ // but JSON.parse does not re-hydrate. `TimeRange.contains` does
659
+ // `date >= start`; in `string >= Date`, the string coerces to
660
+ // NaN and every comparison is false — so every experience was
661
+ // silently dropped by the time-window filter, leaving
662
+ // `mineExperiences` mining 0 for every domain. Coerce at the
663
+ // boundary; downstream code expects a real Date.
664
+ const ts = experience.timestamp instanceof Date
665
+ ? experience.timestamp
666
+ : new Date(experience.timestamp);
667
+ if (timeRange.contains(ts)) {
668
+ experiences.push({ ...experience, timestamp: ts });
669
+ }
650
670
  }
651
671
  }
652
672
  }
@@ -9,7 +9,7 @@
9
9
  * This is a facade over UnifiedMemoryManager that maintains
10
10
  * backward compatibility with existing MemoryBackend interface.
11
11
  */
12
- import { MemoryBackend, StoreOptions, VectorSearchResult } from './interfaces';
12
+ import { MemoryBackend, StoreOptions, RetrieveOptions, VectorSearchResult } from './interfaces';
13
13
  import { UnifiedMemoryManager } from './unified-memory';
14
14
  /**
15
15
  * SQLite connection configuration (legacy - kept for API compatibility)
@@ -83,21 +83,31 @@ export declare class HybridMemoryBackend implements MemoryBackend {
83
83
  */
84
84
  set<T>(key: string, value: T, options?: StoreOptions): Promise<void>;
85
85
  /**
86
- * Retrieve a value
86
+ * Retrieve a value.
87
+ *
88
+ * #491 Bug 2: previously this method hard-coded `defaultNamespace`, so
89
+ * any caller that wrote with `set(k, v, {namespace:'foo'})` could not
90
+ * read its own data back. The whole LearningCoordinator read path
91
+ * (`getExperiencesByDomainAndTime` etc.) was broken by this — writes
92
+ * landed in `learning-optimization`, reads queried `default`, and
93
+ * `mineExperiences` mined 0 for every domain even on installs with
94
+ * hundreds of indexed experiences. Honor the namespace; default
95
+ * preserves the historical behavior for the many call sites that
96
+ * still pass no option.
87
97
  */
88
- get<T>(key: string): Promise<T | undefined>;
98
+ get<T>(key: string, options?: RetrieveOptions): Promise<T | undefined>;
89
99
  /**
90
100
  * Delete a value
91
101
  */
92
- delete(key: string): Promise<boolean>;
102
+ delete(key: string, options?: RetrieveOptions): Promise<boolean>;
93
103
  /**
94
104
  * Check if key exists
95
105
  */
96
- has(key: string): Promise<boolean>;
106
+ has(key: string, options?: RetrieveOptions): Promise<boolean>;
97
107
  /**
98
- * Search for keys matching pattern
108
+ * Search for keys matching pattern. See `get` for the namespace rationale.
99
109
  */
100
- search(pattern: string, limit?: number): Promise<string[]>;
110
+ search(pattern: string, limit?: number, options?: RetrieveOptions): Promise<string[]>;
101
111
  /**
102
112
  * Vector similarity search
103
113
  * Now uses unified memory's persistent vector storage
@@ -92,19 +92,31 @@ export class HybridMemoryBackend {
92
92
  await this.unifiedMemory.kvSet(key, value, namespace, options?.ttl);
93
93
  }
94
94
  /**
95
- * Retrieve a value
95
+ * Retrieve a value.
96
+ *
97
+ * #491 Bug 2: previously this method hard-coded `defaultNamespace`, so
98
+ * any caller that wrote with `set(k, v, {namespace:'foo'})` could not
99
+ * read its own data back. The whole LearningCoordinator read path
100
+ * (`getExperiencesByDomainAndTime` etc.) was broken by this — writes
101
+ * landed in `learning-optimization`, reads queried `default`, and
102
+ * `mineExperiences` mined 0 for every domain even on installs with
103
+ * hundreds of indexed experiences. Honor the namespace; default
104
+ * preserves the historical behavior for the many call sites that
105
+ * still pass no option.
96
106
  */
97
- async get(key) {
107
+ async get(key, options) {
98
108
  this.ensureInitialized();
99
- return this.unifiedMemory.kvGet(key, this.config.defaultNamespace);
109
+ const namespace = options?.namespace ?? this.config.defaultNamespace;
110
+ return this.unifiedMemory.kvGet(key, namespace);
100
111
  }
101
112
  /**
102
113
  * Delete a value
103
114
  */
104
- async delete(key) {
115
+ async delete(key, options) {
105
116
  this.ensureInitialized();
117
+ const namespace = options?.namespace ?? this.config.defaultNamespace;
106
118
  // Delete from KV store
107
- const kvDeleted = await this.unifiedMemory.kvDelete(key, this.config.defaultNamespace);
119
+ const kvDeleted = await this.unifiedMemory.kvDelete(key, namespace);
108
120
  // Also try to delete from vectors (in case it's a vector key)
109
121
  const vectorDeleted = await this.unifiedMemory.vectorDelete(key);
110
122
  return kvDeleted || vectorDeleted;
@@ -112,16 +124,18 @@ export class HybridMemoryBackend {
112
124
  /**
113
125
  * Check if key exists
114
126
  */
115
- async has(key) {
127
+ async has(key, options) {
116
128
  this.ensureInitialized();
117
- return this.unifiedMemory.kvExists(key, this.config.defaultNamespace);
129
+ const namespace = options?.namespace ?? this.config.defaultNamespace;
130
+ return this.unifiedMemory.kvExists(key, namespace);
118
131
  }
119
132
  /**
120
- * Search for keys matching pattern
133
+ * Search for keys matching pattern. See `get` for the namespace rationale.
121
134
  */
122
- async search(pattern, limit = 100) {
135
+ async search(pattern, limit = 100, options) {
123
136
  this.ensureInitialized();
124
- return this.unifiedMemory.kvSearch(pattern, this.config.defaultNamespace, limit);
137
+ const namespace = options?.namespace ?? this.config.defaultNamespace;
138
+ return this.unifiedMemory.kvSearch(pattern, namespace, limit);
125
139
  }
126
140
  /**
127
141
  * Vector similarity search
@@ -200,14 +200,21 @@ export interface PluginLoader {
200
200
  export interface MemoryBackend extends Initializable, Disposable {
201
201
  /** Store a value */
202
202
  set<T>(key: string, value: T, options?: StoreOptions): Promise<void>;
203
- /** Retrieve a value */
204
- get<T>(key: string): Promise<T | undefined>;
203
+ /**
204
+ * Retrieve a value.
205
+ *
206
+ * `options.namespace` lets callers read from a non-default namespace.
207
+ * Without this, a caller that wrote with `set(k, v, {namespace:'foo'})`
208
+ * could not read its own data back — `get` would silently fall through
209
+ * to the default namespace and return undefined (issue #491 Bug 2).
210
+ */
211
+ get<T>(key: string, options?: RetrieveOptions): Promise<T | undefined>;
205
212
  /** Delete a value */
206
- delete(key: string): Promise<boolean>;
213
+ delete(key: string, options?: RetrieveOptions): Promise<boolean>;
207
214
  /** Check if key exists */
208
- has(key: string): Promise<boolean>;
209
- /** Search by pattern */
210
- search(pattern: string, limit?: number): Promise<string[]>;
215
+ has(key: string, options?: RetrieveOptions): Promise<boolean>;
216
+ /** Search by pattern (`options.namespace` mirrors `get`). */
217
+ search(pattern: string, limit?: number, options?: RetrieveOptions): Promise<string[]>;
211
218
  /** Vector similarity search (HNSW) */
212
219
  vectorSearch(embedding: number[], k: number): Promise<VectorSearchResult[]>;
213
220
  /** Store vector embedding */
@@ -230,6 +237,14 @@ export interface StoreOptions {
230
237
  namespace?: string;
231
238
  persist?: boolean;
232
239
  }
240
+ /**
241
+ * Options for memory read operations. Symmetric with `StoreOptions.namespace`
242
+ * so a caller can read back exactly what it wrote into a non-default
243
+ * namespace (issue #491 Bug 2).
244
+ */
245
+ export interface RetrieveOptions {
246
+ namespace?: string;
247
+ }
233
248
  export interface VectorSearchResult {
234
249
  key: string;
235
250
  score: number;
@@ -2,7 +2,7 @@
2
2
  * Agentic QE v3 - Memory Backend
3
3
  * Hybrid memory implementation (in-memory + optional persistence)
4
4
  */
5
- import { MemoryBackend, StoreOptions, VectorSearchResult } from './interfaces';
5
+ import { MemoryBackend, StoreOptions, RetrieveOptions, VectorSearchResult } from './interfaces';
6
6
  export declare class InMemoryBackend implements MemoryBackend {
7
7
  private store;
8
8
  private vectors;
@@ -10,10 +10,10 @@ export declare class InMemoryBackend implements MemoryBackend {
10
10
  initialize(): Promise<void>;
11
11
  dispose(): Promise<void>;
12
12
  set<T>(key: string, value: T, options?: StoreOptions): Promise<void>;
13
- get<T>(key: string, namespace?: string): Promise<T | undefined>;
14
- delete(key: string, namespace?: string): Promise<boolean>;
15
- has(key: string, namespace?: string): Promise<boolean>;
16
- search(pattern: string, limit?: number): Promise<string[]>;
13
+ get<T>(key: string, options?: RetrieveOptions): Promise<T | undefined>;
14
+ delete(key: string, options?: RetrieveOptions): Promise<boolean>;
15
+ has(key: string, options?: RetrieveOptions): Promise<boolean>;
16
+ search(pattern: string, limit?: number, options?: RetrieveOptions): Promise<string[]>;
17
17
  vectorSearch(embedding: number[], k: number): Promise<VectorSearchResult[]>;
18
18
  storeVector(key: string, embedding: number[], metadata?: unknown): Promise<void>;
19
19
  private buildKey;
@@ -34,8 +34,8 @@ export class InMemoryBackend {
34
34
  const fullKey = this.buildKey(key, options?.namespace);
35
35
  this.store.set(fullKey, entry);
36
36
  }
37
- async get(key, namespace) {
38
- const fullKey = this.buildKey(key, namespace);
37
+ async get(key, options) {
38
+ const fullKey = this.buildKey(key, options?.namespace);
39
39
  const entry = this.store.get(fullKey);
40
40
  if (!entry) {
41
41
  return undefined;
@@ -47,20 +47,27 @@ export class InMemoryBackend {
47
47
  }
48
48
  return entry.value;
49
49
  }
50
- async delete(key, namespace) {
51
- const fullKey = this.buildKey(key, namespace);
50
+ async delete(key, options) {
51
+ const fullKey = this.buildKey(key, options?.namespace);
52
52
  return this.store.delete(fullKey);
53
53
  }
54
- async has(key, namespace) {
55
- const value = await this.get(key, namespace);
54
+ async has(key, options) {
55
+ const value = await this.get(key, options);
56
56
  return value !== undefined;
57
57
  }
58
- async search(pattern, limit = MEMORY_CONSTANTS.DEFAULT_SEARCH_LIMIT) {
58
+ async search(pattern, limit = MEMORY_CONSTANTS.DEFAULT_SEARCH_LIMIT, options) {
59
59
  // Escape regex-special chars first, then convert glob wildcards to regex
60
60
  const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
61
61
  const regex = new RegExp(escaped.replace(/\*/g, '.*'));
62
62
  const results = [];
63
+ // When a namespace is supplied, scope the scan to that prefix. Matches
64
+ // HybridBackend's namespace-aware search and lets LearningCoordinator's
65
+ // namespaced reads behave identically under unit tests that swap in the
66
+ // in-memory backend (#491 Bug 2).
67
+ const nsPrefix = options?.namespace ? `${options.namespace}:` : undefined;
63
68
  for (const key of this.store.keys()) {
69
+ if (nsPrefix && !key.startsWith(nsPrefix))
70
+ continue;
64
71
  if (regex.test(key)) {
65
72
  results.push(key);
66
73
  if (results.length >= limit)