agentic-qe 3.14.6 → 3.14.8

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 (467) hide show
  1. package/.claude/helpers/.helpers-version +1 -1
  2. package/.claude/helpers/auto-memory-hook.mjs +18 -9
  3. package/.claude/helpers/helpers.manifest.json +6 -5
  4. package/.claude/helpers/hook-handler.cjs +40 -12
  5. package/.claude/helpers/memory.cjs +86 -0
  6. package/.claude/helpers/router.cjs +105 -0
  7. package/.claude/helpers/session.cjs +166 -0
  8. package/.claude/helpers/statusline.cjs +73 -621
  9. package/.claude/skills/skills-manifest.json +1 -1
  10. package/CHANGELOG.md +204 -0
  11. package/assets/skills/skills-manifest.json +1 -1
  12. package/dist/adapters/a2a/notifications/retry-queue.js +5 -0
  13. package/dist/adapters/claude-flow/pretrain-bridge.js +3 -2
  14. package/dist/agents/claim-verifier/verifiers/file-verifier.js +3 -2
  15. package/dist/cli/bundle.js +8 -8
  16. package/dist/cli/chunks/adapter-XYCOXQCC.js +2 -0
  17. package/dist/cli/chunks/{agent-booster-wasm-2YGML6OU.js → agent-booster-wasm-67OKGDGZ.js} +2 -2
  18. package/dist/cli/chunks/{agent-handler-D5SSQYNU.js → agent-handler-4HZEQ3WQ.js} +2 -2
  19. package/dist/cli/chunks/{agent-memory-branch-YHPLTITV.js → agent-memory-branch-IBHZQSRN.js} +2 -2
  20. package/dist/cli/chunks/aqe-learning-engine-DTJCROTG.js +2 -0
  21. package/dist/cli/chunks/{arena-7BGOXGXO.js → arena-EJBIGSF4.js} +2 -2
  22. package/dist/cli/chunks/{arena-MCE6EU7K.js → arena-LCLRGUIK.js} +4 -4
  23. package/dist/cli/chunks/{audit-BMWTQECB.js → audit-PY4JNDQQ.js} +3 -3
  24. package/dist/cli/chunks/base-5TQ34GMD.js +2 -0
  25. package/dist/cli/chunks/{better-sqlite3-PMUNGASU.js → better-sqlite3-2JG5K6XT.js} +2 -2
  26. package/dist/cli/chunks/{brain-handler-QPUFYX7F.js → brain-handler-3UYK55GA.js} +4 -4
  27. package/dist/cli/chunks/{branch-enumerator-WKFDGRN4.js → branch-enumerator-GOSWOX46.js} +2 -2
  28. package/dist/cli/chunks/{browser-VY5HKH5X.js → browser-DC2JV47Z.js} +2 -2
  29. package/dist/cli/chunks/browser-workflow-KWX4ESTJ.js +2 -0
  30. package/dist/cli/chunks/{chunk-FWASDOT2.js → chunk-25EEIAHS.js} +2 -2
  31. package/dist/cli/chunks/{chunk-P6OYS755.js → chunk-3576QGPP.js} +1 -1
  32. package/dist/cli/chunks/{chunk-2TMWAQQ3.js → chunk-3EKG7HFV.js} +4 -4
  33. package/dist/cli/chunks/{chunk-QZANMBIT.js → chunk-3FCHH4VP.js} +1 -1
  34. package/dist/cli/chunks/{chunk-CD542DNJ.js → chunk-3S5IIK32.js} +1 -1
  35. package/dist/cli/chunks/{chunk-5VFPCSK7.js → chunk-3X2JSW3R.js} +1 -1
  36. package/dist/cli/chunks/{chunk-D45SG6CP.js → chunk-4HXFPBAA.js} +1 -1
  37. package/dist/cli/chunks/{chunk-JVNTSNWU.js → chunk-4PY44TKH.js} +2 -2
  38. package/dist/cli/chunks/{chunk-DZ3AUAAB.js → chunk-4RNCVSVN.js} +2 -2
  39. package/dist/cli/chunks/{chunk-JBTPOIAC.js → chunk-56M4QNXU.js} +2 -2
  40. package/dist/cli/chunks/{chunk-H52HZ67P.js → chunk-5X4HDW5W.js} +2 -2
  41. package/dist/cli/chunks/{chunk-UNFFDHER.js → chunk-673XJBGW.js} +10 -32
  42. package/dist/cli/chunks/{chunk-RTFO5UQH.js → chunk-6F7MFHTY.js} +2 -2
  43. package/dist/cli/chunks/{chunk-Y3LZ35OG.js → chunk-6GJWT2OY.js} +2 -2
  44. package/dist/cli/chunks/{chunk-JXGFRBUO.js → chunk-6GNWVPMR.js} +2 -2
  45. package/dist/cli/chunks/{chunk-3EA536JF.js → chunk-6VTC3OHD.js} +2 -2
  46. package/dist/cli/chunks/{chunk-W6HXLH5G.js → chunk-775WGWLL.js} +3 -3
  47. package/dist/cli/chunks/{chunk-TVYY3OCX.js → chunk-77WL5HQW.js} +1 -1
  48. package/dist/cli/chunks/chunk-7STWD4KJ.js +3 -0
  49. package/dist/cli/chunks/{chunk-YSLL6VSL.js → chunk-7TNCEVWX.js} +2 -2
  50. package/dist/cli/chunks/{chunk-Z7WODOTH.js → chunk-7X3LMTRA.js} +2 -2
  51. package/dist/cli/chunks/{chunk-RZZCUIAI.js → chunk-A53MMSGC.js} +2 -2
  52. package/dist/cli/chunks/{chunk-QW6VMTBR.js → chunk-A5CLVZC3.js} +2 -2
  53. package/dist/cli/chunks/{chunk-IG5GNEC6.js → chunk-AEYJ4ZLA.js} +1 -1
  54. package/dist/cli/chunks/{chunk-NMAIY4PX.js → chunk-AJ5PCJQ2.js} +11 -11
  55. package/dist/cli/chunks/{chunk-WO4QMXIG.js → chunk-AJMAKUS3.js} +2 -2
  56. package/dist/cli/chunks/{chunk-2NPKIBAZ.js → chunk-AOD2ES44.js} +2 -2
  57. package/dist/cli/chunks/chunk-AR2S4DOB.js +2 -0
  58. package/dist/cli/chunks/{chunk-257E2A5M.js → chunk-AUFV2G2J.js} +5 -5
  59. package/dist/cli/chunks/{chunk-BVR7RMC5.js → chunk-B2QKBQYD.js} +1 -1
  60. package/dist/cli/chunks/{chunk-B6D2CHEH.js → chunk-BCCSV3RH.js} +1 -1
  61. package/dist/cli/chunks/{chunk-2YXGBZWV.js → chunk-BFIXUKOR.js} +1 -1
  62. package/dist/cli/chunks/chunk-BHPTHC5O.js +4 -0
  63. package/dist/cli/chunks/{chunk-AIRGNL55.js → chunk-BITFGVZ4.js} +2 -2
  64. package/dist/cli/chunks/{chunk-MBRHSU6W.js → chunk-BL6273KR.js} +10 -10
  65. package/dist/cli/chunks/{chunk-SMDN3BQZ.js → chunk-BOIUENWW.js} +1 -1
  66. package/dist/cli/chunks/{chunk-YS4FCTWF.js → chunk-BT3MI2BW.js} +1 -1
  67. package/dist/cli/chunks/{chunk-JZOS5FCX.js → chunk-BTBJ2NLH.js} +2 -2
  68. package/dist/cli/chunks/{chunk-CCK4BF76.js → chunk-BUVJIVFG.js} +1 -1
  69. package/dist/cli/chunks/{chunk-2JVWITNK.js → chunk-BZIPW2PA.js} +56 -80
  70. package/dist/cli/chunks/{chunk-BPEDWS6O.js → chunk-C647D42G.js} +2 -2
  71. package/dist/cli/chunks/{chunk-6U7LNMWZ.js → chunk-CBWM5NOO.js} +3 -3
  72. package/dist/cli/chunks/{chunk-72KXSMWI.js → chunk-CIEXUYY7.js} +1 -1
  73. package/dist/cli/chunks/{chunk-SE4WIB26.js → chunk-CLUHGBLN.js} +4 -4
  74. package/dist/cli/chunks/{chunk-JIXUMYKZ.js → chunk-CQEWL32R.js} +1 -1
  75. package/dist/cli/chunks/{chunk-CM7U6TAX.js → chunk-CXUC7YKA.js} +2 -2
  76. package/dist/cli/chunks/{chunk-7LPR6HJG.js → chunk-D2Y36V5J.js} +2 -2
  77. package/dist/cli/chunks/{chunk-BJTJLJRZ.js → chunk-DSJJHPPS.js} +4 -4
  78. package/dist/cli/chunks/{chunk-ZVWVV4EX.js → chunk-DZHXCOSK.js} +1 -1
  79. package/dist/cli/chunks/{chunk-7Z5LHRC3.js → chunk-EBV3WFIR.js} +2 -2
  80. package/dist/cli/chunks/{chunk-KNNISEDY.js → chunk-EKO5QL2B.js} +1 -1
  81. package/dist/cli/chunks/{chunk-XAS3XRYM.js → chunk-EMOZ5O5S.js} +1 -1
  82. package/dist/cli/chunks/{chunk-62N4NUJH.js → chunk-ES7TAJRJ.js} +2 -2
  83. package/dist/cli/chunks/chunk-EXQGHTPD.js +65 -0
  84. package/dist/cli/chunks/{chunk-Q7EAGKAE.js → chunk-F2WAB4WK.js} +2 -2
  85. package/dist/cli/chunks/{chunk-L4RUBPLR.js → chunk-F57FTFWS.js} +2 -2
  86. package/dist/cli/chunks/{chunk-GGRHV6D7.js → chunk-F6JJNBE5.js} +1 -1
  87. package/dist/cli/chunks/{chunk-3EZOZN25.js → chunk-FRC7AFB4.js} +2 -2
  88. package/dist/cli/chunks/{chunk-RSXXCL4A.js → chunk-G36RZF2Y.js} +1 -1
  89. package/dist/cli/chunks/{chunk-ZSPU4MOS.js → chunk-G3C7Z6FO.js} +2 -2
  90. package/dist/cli/chunks/{chunk-SNOBH4AZ.js → chunk-GA63ESNT.js} +2 -2
  91. package/dist/cli/chunks/{chunk-HNFVJP4I.js → chunk-GHMJFICO.js} +2 -2
  92. package/dist/cli/chunks/{chunk-7D3V65N5.js → chunk-GK5WLUX3.js} +1 -1
  93. package/dist/cli/chunks/{chunk-RETBYIAC.js → chunk-GQJ4QDEN.js} +6 -6
  94. package/dist/cli/chunks/chunk-GVLRE3BV.js +12 -0
  95. package/dist/cli/chunks/{chunk-MW2GGZZ5.js → chunk-H5UH234L.js} +1 -1
  96. package/dist/cli/chunks/{chunk-HM6ZSCPI.js → chunk-HBAFXWSO.js} +1 -1
  97. package/dist/cli/chunks/{chunk-DHVX5UB2.js → chunk-HE3BDBAO.js} +2 -2
  98. package/dist/cli/chunks/{chunk-YFBSPLJG.js → chunk-HHANMCD2.js} +1 -1
  99. package/dist/cli/chunks/chunk-HPVYJ6JH.js +2 -0
  100. package/dist/cli/chunks/{chunk-PX5YDCRH.js → chunk-I6NZFBT3.js} +3 -3
  101. package/dist/cli/chunks/{chunk-5J6W7SIA.js → chunk-ISBOHF6Y.js} +1 -1
  102. package/dist/cli/chunks/{chunk-UCFQALXO.js → chunk-J24AJEDE.js} +2 -2
  103. package/dist/cli/chunks/{chunk-FBMN7B46.js → chunk-J5HTQHJK.js} +2 -2
  104. package/dist/cli/chunks/{chunk-GPYVDFB3.js → chunk-JDOVO4E4.js} +205 -195
  105. package/dist/cli/chunks/chunk-JQAJUXRE.js +2 -0
  106. package/dist/cli/chunks/{chunk-RG52OKAM.js → chunk-JRK5GX56.js} +1 -1
  107. package/dist/cli/chunks/{chunk-I33ERSGB.js → chunk-JRLZ7LZ3.js} +2 -2
  108. package/dist/cli/chunks/{chunk-NQZ5AR3D.js → chunk-JTOFLDU7.js} +2 -2
  109. package/dist/cli/chunks/{chunk-NHWGMJAP.js → chunk-K6EOHGKS.js} +2 -2
  110. package/dist/cli/chunks/{chunk-5QQSIGUA.js → chunk-KKXH25IH.js} +2 -2
  111. package/dist/cli/chunks/{chunk-VGFFFKGK.js → chunk-KNSQWM2E.js} +2 -2
  112. package/dist/cli/chunks/{chunk-B6MOJC3X.js → chunk-L5T32SRF.js} +1 -1
  113. package/dist/cli/chunks/{chunk-WGM35YWL.js → chunk-LKFBW2QM.js} +2 -2
  114. package/dist/cli/chunks/{chunk-AJRUJAAK.js → chunk-LMAI74EP.js} +1 -1
  115. package/dist/cli/chunks/{chunk-C6KWXUFJ.js → chunk-LQVS5IWH.js} +2 -2
  116. package/dist/cli/chunks/{chunk-H5BS5VH7.js → chunk-LRGTPUJA.js} +2 -2
  117. package/dist/cli/chunks/{chunk-3HZS4M3O.js → chunk-LTHV4PIG.js} +2 -2
  118. package/dist/cli/chunks/{chunk-7CUQCCMD.js → chunk-M7QKCHLQ.js} +2 -2
  119. package/dist/cli/chunks/{chunk-CF2ISEOJ.js → chunk-N3ASALOL.js} +2 -2
  120. package/dist/cli/chunks/{chunk-ZCRTRYXK.js → chunk-NEXBTLN6.js} +2 -2
  121. package/dist/cli/chunks/{chunk-VMNWDJIZ.js → chunk-NJEEKYEP.js} +3 -3
  122. package/dist/cli/chunks/{chunk-ZEV3YTO7.js → chunk-NWUFTLSF.js} +2 -2
  123. package/dist/cli/chunks/{chunk-MQROI74N.js → chunk-O4QB2GFL.js} +2 -2
  124. package/dist/cli/chunks/{chunk-GDSXITFH.js → chunk-OA75C4HY.js} +2 -2
  125. package/dist/cli/chunks/{chunk-SESK3ARK.js → chunk-OVMG6EEF.js} +2 -2
  126. package/dist/cli/chunks/{chunk-MUOG6QXR.js → chunk-OX7MJFLC.js} +2 -2
  127. package/dist/cli/chunks/{chunk-ELLBS5RP.js → chunk-OZJQN7YE.js} +2 -2
  128. package/dist/cli/chunks/{chunk-D6CJIGRU.js → chunk-PFXCRRR6.js} +55 -55
  129. package/dist/cli/chunks/{chunk-ZL6SYKUK.js → chunk-PVJLQ2YZ.js} +1 -1
  130. package/dist/cli/chunks/{chunk-6LIHFV7O.js → chunk-QDRFLM77.js} +2 -2
  131. package/dist/cli/chunks/{chunk-H6ZM3PUT.js → chunk-QH7C4PTX.js} +1 -1
  132. package/dist/cli/chunks/chunk-QKM4XT2F.js +2 -0
  133. package/dist/cli/chunks/{chunk-V4DM6ELU.js → chunk-QP7EKLWU.js} +2 -2
  134. package/dist/cli/chunks/{chunk-BAMN2CHI.js → chunk-QPACHVDI.js} +1 -1
  135. package/dist/cli/chunks/{chunk-QDFTT3RF.js → chunk-QQVE65ER.js} +2 -2
  136. package/dist/cli/chunks/{chunk-LL3IGZBI.js → chunk-QYCZYJH7.js} +2 -2
  137. package/dist/cli/chunks/{chunk-DUYOVM5I.js → chunk-R6I5I724.js} +2 -2
  138. package/dist/cli/chunks/{chunk-ENGZ4D5V.js → chunk-RJJIPTVH.js} +2 -2
  139. package/dist/cli/chunks/{chunk-7NITCZWD.js → chunk-RM6OC35G.js} +1 -1
  140. package/dist/cli/chunks/{chunk-Q5XTSMWR.js → chunk-RTD4U7IW.js} +2 -2
  141. package/dist/cli/chunks/{chunk-DBDPRORT.js → chunk-SKJQKOFJ.js} +2 -2
  142. package/dist/cli/chunks/{chunk-ICTXTNQZ.js → chunk-SMBGK7XI.js} +1 -1
  143. package/dist/cli/chunks/{chunk-PI7TJS62.js → chunk-SPS472C5.js} +2 -2
  144. package/dist/cli/chunks/{chunk-IV5UZOHH.js → chunk-SUNXA2UR.js} +2 -2
  145. package/dist/cli/chunks/{chunk-IB27QACC.js → chunk-SVP3BP52.js} +2 -2
  146. package/dist/cli/chunks/{chunk-5OOMJGFN.js → chunk-T4WQPE77.js} +1 -1
  147. package/dist/cli/chunks/{chunk-66VWCR67.js → chunk-T53ZN4NO.js} +2 -2
  148. package/dist/cli/chunks/chunk-T6W2EYHC.js +2 -0
  149. package/dist/cli/chunks/{chunk-EAY2JMZG.js → chunk-T7YCNOW5.js} +2 -2
  150. package/dist/cli/chunks/{chunk-FZOBD67M.js → chunk-TCQWVVSR.js} +1 -1
  151. package/dist/cli/chunks/{chunk-SJUXE4IC.js → chunk-TGRHO4ES.js} +2 -2
  152. package/dist/cli/chunks/{chunk-6RE3X4V5.js → chunk-TP7L4EX6.js} +2 -2
  153. package/dist/cli/chunks/{chunk-6SQM2MUX.js → chunk-TT45RCLN.js} +2 -2
  154. package/dist/cli/chunks/{chunk-AVBJYI5I.js → chunk-TUZNWRYC.js} +1 -1
  155. package/dist/cli/chunks/{chunk-YHKEDEAA.js → chunk-U2QTL5T2.js} +3 -3
  156. package/dist/cli/chunks/chunk-U64QORFO.js +2 -0
  157. package/dist/cli/chunks/{chunk-BBT64TII.js → chunk-UHLZKH6B.js} +4 -4
  158. package/dist/cli/chunks/{chunk-GSF6MB64.js → chunk-UIWXKRTK.js} +2 -2
  159. package/dist/cli/chunks/{chunk-JMONHE4B.js → chunk-UNFE4RPV.js} +1 -1
  160. package/dist/cli/chunks/{chunk-DPYSUDAO.js → chunk-UQGIC5OX.js} +1 -1
  161. package/dist/cli/chunks/{chunk-IAF6T27S.js → chunk-VAXTPLO3.js} +2 -2
  162. package/dist/cli/chunks/{chunk-6SH5VZUD.js → chunk-VCSNNLWL.js} +2 -2
  163. package/dist/cli/chunks/chunk-VSPNIDQK.js +21 -0
  164. package/dist/cli/chunks/{chunk-6OS76PHI.js → chunk-VV2JVYOI.js} +2 -2
  165. package/dist/cli/chunks/{chunk-IQO7UCFR.js → chunk-VW7AXJQS.js} +2 -2
  166. package/dist/cli/chunks/{chunk-UQ32JHES.js → chunk-W7JUD4EZ.js} +2 -2
  167. package/dist/cli/chunks/chunk-WFKE7NZ5.js +12 -0
  168. package/dist/cli/chunks/{chunk-RFNPJK6N.js → chunk-WVEHKAIH.js} +3 -3
  169. package/dist/cli/chunks/{chunk-64VGZQLB.js → chunk-XAESN54Q.js} +1 -1
  170. package/dist/cli/chunks/{chunk-BMAPORJ7.js → chunk-XECZYQT5.js} +2 -2
  171. package/dist/cli/chunks/chunk-XFT4FYTC.js +2 -0
  172. package/dist/cli/chunks/{chunk-Y3UOUNHM.js → chunk-YHX74M7C.js} +2 -2
  173. package/dist/cli/chunks/chunk-YIWBJ637.js +2 -0
  174. package/dist/cli/chunks/{chunk-SDRHUMJB.js → chunk-Z5UZOYQS.js} +2 -2
  175. package/dist/cli/chunks/{chunk-7J6QC567.js → chunk-Z6G3QVZ4.js} +12 -12
  176. package/dist/cli/chunks/ci-5LIV2HW5.js +82 -0
  177. package/dist/cli/chunks/{ci-output-LDT24TS3.js → ci-output-UO5BDFU4.js} +2 -2
  178. package/dist/cli/chunks/{circuit-breaker-F5V4KITU.js → circuit-breaker-UQDPXYRD.js} +2 -2
  179. package/dist/cli/chunks/{claude-flow-setup-DT6WQQVD.js → claude-flow-setup-62QES3QX.js} +2 -2
  180. package/dist/cli/chunks/client-AJZKCP4I.js +2 -0
  181. package/dist/cli/chunks/{cline-installer-G7TJOAEX.js → cline-installer-X7VZTSZG.js} +2 -2
  182. package/dist/cli/chunks/{code-PGE6A42V.js → code-H3BF4L4H.js} +3 -3
  183. package/dist/cli/chunks/{code-index-extractor-RNITH372.js → code-index-extractor-BJGFZGGL.js} +2 -2
  184. package/dist/cli/chunks/{codex-installer-LBX77AI3.js → codex-installer-KVZWKU6S.js} +2 -2
  185. package/dist/cli/chunks/{completions-4AWLAARX.js → completions-YMILE6V7.js} +2 -2
  186. package/dist/cli/chunks/{complexity-analyzer-ZPNSS476.js → complexity-analyzer-J26N2PWG.js} +2 -2
  187. package/dist/cli/chunks/{continuedev-installer-UAPWX6OA.js → continuedev-installer-MAR42OV7.js} +2 -2
  188. package/dist/cli/chunks/{copilot-installer-BJN2YJGI.js → copilot-installer-CVOJF6OT.js} +2 -2
  189. package/dist/cli/chunks/core-handlers-MQHEMGDV.js +2 -0
  190. package/dist/cli/chunks/{cost-tracker-MHP2VJ63.js → cost-tracker-SXLWXE55.js} +2 -2
  191. package/dist/cli/chunks/{coverage-PQB4IEFG.js → coverage-D7HCHFP3.js} +3 -3
  192. package/dist/cli/chunks/cross-domain-router-3QNMZV5R.js +2 -0
  193. package/dist/cli/chunks/{cursor-installer-ZXBWYAS3.js → cursor-installer-X37VHIKW.js} +2 -2
  194. package/dist/cli/chunks/{daemon-64C7R6OJ.js → daemon-JN7SOH6F.js} +4 -4
  195. package/dist/cli/chunks/{daemon-N2BEGEFY.js → daemon-LIW47IDM.js} +4 -4
  196. package/dist/cli/chunks/{dag-attention-scheduler-SPZDAPNL.js → dag-attention-scheduler-QCHHIZBT.js} +2 -2
  197. package/dist/cli/chunks/{detect-LXJBSSZW.js → detect-WRFCWAX5.js} +2 -2
  198. package/dist/cli/chunks/{dist-node-U3TKZ2IZ.js → dist-node-6FWT4XZO.js} +2 -2
  199. package/dist/cli/chunks/{domain-handler-3DDWUVSR.js → domain-handler-SNFPNMRT.js} +2 -2
  200. package/dist/cli/chunks/{domain-plugins-JJVWI4OQ.js → domain-plugins-MXKHH62P.js} +2 -2
  201. package/dist/cli/chunks/domain-transfer-47UJNERX.js +2 -0
  202. package/dist/cli/chunks/dream-OSWAITPT.js +2 -0
  203. package/dist/cli/chunks/{embed-and-insert-pattern-JPAR7TXX.js → embed-and-insert-pattern-LZFAUNBQ.js} +2 -2
  204. package/dist/cli/chunks/{eval-SOLG23EA.js → eval-AMUXTMJB.js} +2 -2
  205. package/dist/cli/chunks/{experience-capture-middleware-T7G2VOOD.js → experience-capture-middleware-3D65TR2C.js} +4 -4
  206. package/dist/cli/chunks/{fast-paths-32N3ELI4.js → fast-paths-Y7BBMM56.js} +2 -2
  207. package/dist/cli/chunks/{feature-flags-APJDQ4N7.js → feature-flags-JMQQ7JW4.js} +2 -2
  208. package/dist/cli/chunks/{feature-flags-NAHKLDRN.js → feature-flags-VESRRQ6V.js} +2 -2
  209. package/dist/cli/chunks/{file-discovery-YKVM3MDB.js → file-discovery-JJKQQUV6.js} +2 -2
  210. package/dist/cli/chunks/{fleet-55M5CJS4.js → fleet-WIGHICJF.js} +4 -4
  211. package/dist/cli/chunks/{gnn-wrapper-UD6E6S6Z.js → gnn-wrapper-BFNPETTT.js} +2 -2
  212. package/dist/cli/chunks/{heartbeat-handler-OYVW3VSC.js → heartbeat-handler-HDXKTGUI.js} +4 -4
  213. package/dist/cli/chunks/heartbeat-scheduler-BVRVVIE2.js +2 -0
  214. package/dist/cli/chunks/hnsw-adapter-MZTHXULS.js +2 -0
  215. package/dist/cli/chunks/hnsw-index-KHEX4VDG.js +2 -0
  216. package/dist/cli/chunks/{hnsw-legacy-bridge-HBYIS3ZW.js → hnsw-legacy-bridge-6A7OTAPT.js} +2 -2
  217. package/dist/cli/chunks/{hnswlib-node-EQPM42OU.js → hnswlib-node-LKV2H47B.js} +2 -2
  218. package/dist/cli/chunks/{hooks-5ZSSJWO6.js → hooks-KDSFYQQG.js} +10 -10
  219. package/dist/cli/chunks/hybrid-backend-2B3LCLR4.js +2 -0
  220. package/dist/cli/chunks/{hypergraph-engine-XBGVQ4PD.js → hypergraph-engine-GDLPEPUC.js} +2 -2
  221. package/dist/cli/chunks/{hypergraph-handler-CAWAQ673.js → hypergraph-handler-4UMFA2EW.js} +3 -3
  222. package/dist/cli/chunks/impact-analyzer-4R4VWOGQ.js +2 -0
  223. package/dist/cli/chunks/{init-handler-PRHXSARK.js → init-handler-4GCHPQHD.js} +16 -14
  224. package/dist/cli/chunks/init-wizard-TAOPXHHD.js +2 -0
  225. package/dist/cli/chunks/kernel-6I6VZUWY.js +2 -0
  226. package/dist/cli/chunks/{kilocode-installer-F7LXBM7I.js → kilocode-installer-HJZMT2G5.js} +2 -2
  227. package/dist/cli/chunks/{kiro-installer-NM723ZRG.js → kiro-installer-WUPY67HG.js} +2 -2
  228. package/dist/cli/chunks/knowledge-graph-KFMTTUR5.js +2 -0
  229. package/dist/cli/chunks/{learning-5QYIDHH3.js → learning-AXKIS7IG.js} +4 -4
  230. package/dist/cli/chunks/{llm-router-43HKWPSX.js → llm-router-HUDPNZLJ.js} +4 -4
  231. package/dist/cli/chunks/llm-router-service-2D74XVM3.js +2 -0
  232. package/dist/cli/chunks/{load-5YDBWSCS.js → load-RM44POD7.js} +2 -2
  233. package/dist/cli/chunks/load-test-53FWOWNS.js +2 -0
  234. package/dist/cli/chunks/{mcp-UMAPMNMY.js → mcp-5JVQRBOP.js} +2 -2
  235. package/dist/cli/chunks/{memory-FWCPCQFP.js → memory-VGZ2V6PL.js} +5 -5
  236. package/dist/cli/chunks/memory-backend-KFJDDPEZ.js +2 -0
  237. package/dist/cli/chunks/memory-handlers-EI537Z32.js +2 -0
  238. package/dist/cli/chunks/{multi-model-executor-2XTBGLE4.js → multi-model-executor-WPRKCSCM.js} +2 -2
  239. package/dist/cli/chunks/{opencode-installer-GIXOJ6NS.js → opencode-installer-YAJMRCQO.js} +2 -2
  240. package/dist/cli/chunks/{orchestrator-VW6BKHLI.js → orchestrator-MUGWBUYP.js} +17 -17
  241. package/dist/cli/chunks/pattern-null-store-7DMU5CJ4.js +2 -0
  242. package/dist/cli/chunks/{pattern-usage-recorder-7CEUC3J7.js → pattern-usage-recorder-ZQJJ2YNG.js} +2 -2
  243. package/dist/cli/chunks/{pipeline-IGUQPPPO.js → pipeline-F4DXDUDC.js} +2 -2
  244. package/dist/cli/chunks/{platform-2P636I7B.js → platform-HI3A3OWF.js} +2 -2
  245. package/dist/cli/chunks/{plugin-NY6SWDPE.js → plugin-XRITPTR7.js} +2 -2
  246. package/dist/cli/chunks/{prime-radiant-advanced-wasm-2UUDTIO2.js → prime-radiant-advanced-wasm-HHNJP7CQ.js} +2 -2
  247. package/dist/cli/chunks/{project-root-IOISG5KX.js → project-root-2VN4WO2A.js} +2 -2
  248. package/dist/cli/chunks/protocol-executor-2EMTBTMG.js +2 -0
  249. package/dist/cli/chunks/{protocol-handler-ZTPCRQ5W.js → protocol-handler-ZEVHSEBG.js} +2 -2
  250. package/dist/cli/chunks/{prove-SQX5A3IG.js → prove-C4BLZWBS.js} +2 -2
  251. package/dist/cli/chunks/qe-reasoning-bank-VZHZZPHE.js +2 -0
  252. package/dist/cli/chunks/{quality-DROILKRY.js → quality-M3DTE4KK.js} +2 -2
  253. package/dist/cli/chunks/quality-gate-V6KS7ML3.js +7 -0
  254. package/dist/cli/chunks/queen-coordinator-7MYTTUHI.js +2 -0
  255. package/dist/cli/chunks/{real-embeddings-P5U3MGYC.js → real-embeddings-YWSE3IRT.js} +2 -2
  256. package/dist/cli/chunks/{ref-validation-KY73NQXD.js → ref-validation-ZWOTFA3T.js} +2 -2
  257. package/dist/cli/chunks/{roocode-installer-6JPPRB3W.js → roocode-installer-GJBIWETD.js} +2 -2
  258. package/dist/cli/chunks/router-ZD4LXAWA.js +2 -0
  259. package/dist/cli/chunks/routing-feedback-FSLMDVGD.js +2 -0
  260. package/dist/cli/chunks/{routing-handler-VTJIVFUO.js → routing-handler-CFYLGNAR.js} +2 -2
  261. package/dist/cli/chunks/{ruvector-commands-C6RPSJJO.js → ruvector-commands-EDKG456B.js} +2 -2
  262. package/dist/cli/chunks/rvf-dual-writer-LTKTDRFS.js +2 -0
  263. package/dist/cli/chunks/rvf-migration-adapter-IF24EVC5.js +2 -0
  264. package/dist/cli/chunks/{rvf-migration-coordinator-R53URRIO.js → rvf-migration-coordinator-ZMEYMAI6.js} +2 -2
  265. package/dist/cli/chunks/rvf-native-adapter-E6JNBKMZ.js +2 -0
  266. package/dist/cli/chunks/{rvf-store-integrity-MMXN5TEJ.js → rvf-store-integrity-AH6PNJP6.js} +2 -2
  267. package/dist/cli/chunks/safe-db-F6TRB5KZ.js +2 -0
  268. package/dist/cli/chunks/schedule-HBD4BYTE.js +2 -0
  269. package/dist/cli/chunks/scheduler-6FYWPMQC.js +2 -0
  270. package/dist/cli/chunks/{security-3B3R2NL4.js → security-ZU2GW3ZM.js} +3 -3
  271. package/dist/cli/chunks/{shared-rvf-adapter-VIJB7JUS.js → shared-rvf-adapter-5FOVSL3T.js} +2 -2
  272. package/dist/cli/chunks/{shared-rvf-dual-writer-UVWGDUWC.js → shared-rvf-dual-writer-IO4DC4XV.js} +2 -2
  273. package/dist/cli/chunks/sqlite-persistence-DOU72F5Z.js +2 -0
  274. package/dist/cli/chunks/{standalone-memory-M4LWAAYZ.js → standalone-memory-3UXDZ7HI.js} +2 -2
  275. package/dist/cli/chunks/{status-handler-YYFV6OZL.js → status-handler-264CHTWS.js} +2 -2
  276. package/dist/cli/chunks/{structural-health-27E6LLKB.js → structural-health-E2QPUOZE.js} +2 -2
  277. package/dist/cli/chunks/{sync-J3LJ56WN.js → sync-2ACMWM7D.js} +2 -2
  278. package/dist/cli/chunks/sync-N2L2OST4.js +2 -0
  279. package/dist/cli/chunks/{task-handler-4MCEBQZL.js → task-handler-IB5CVOTY.js} +2 -2
  280. package/dist/cli/chunks/task-handlers-QBMYNJHE.js +9 -0
  281. package/dist/cli/chunks/test-7RGLRDSP.js +33 -0
  282. package/dist/cli/chunks/{test-scheduling-ZJBFRZ3J.js → test-scheduling-RJABJT2W.js} +3 -3
  283. package/dist/cli/chunks/token-bootstrap-JVHMHB72.js +2 -0
  284. package/dist/cli/chunks/{token-usage-3X5WMTG2.js → token-usage-3ECHQVCY.js} +2 -2
  285. package/dist/cli/chunks/{transformers-MVL4C5IX.js → transformers-KJH3IJWI.js} +2 -2
  286. package/dist/cli/chunks/{tree-sitter-wasm-parser-SLW65ZFO.js → tree-sitter-wasm-parser-XN6PFI32.js} +2 -2
  287. package/dist/cli/chunks/{types-TG5P3CRS.js → types-5BAPXOLS.js} +2 -2
  288. package/dist/cli/chunks/unified-memory-GHAYAXWZ.js +2 -0
  289. package/dist/cli/chunks/unified-memory-hnsw-CCC63YXT.js +2 -0
  290. package/dist/cli/chunks/unified-persistence-HKRHI5PG.js +2 -0
  291. package/dist/cli/chunks/{upgrade-ETBHDEPY.js → upgrade-S5NFQZID.js} +2 -2
  292. package/dist/cli/chunks/{validate-C2A73LZK.js → validate-BIBWOLJD.js} +2 -2
  293. package/dist/cli/chunks/{validate-swarm-67XN42ML.js → validate-swarm-WAA3LBHH.js} +2 -2
  294. package/dist/cli/chunks/visual-security-APOXJ3Q3.js +2 -0
  295. package/dist/cli/chunks/{web-tree-sitter-USJN77P4.js → web-tree-sitter-OTBQTHAV.js} +2 -2
  296. package/dist/cli/chunks/{windsurf-installer-5GGZXGJW.js → windsurf-installer-NNQ22EW6.js} +2 -2
  297. package/dist/cli/chunks/witness-chain-7IP5IJGT.js +2 -0
  298. package/dist/cli/chunks/{witness-chain-IWS5ZHHL.js → witness-chain-E7MUBOJW.js} +2 -2
  299. package/dist/cli/chunks/witness-chain-repair-FW4QSN4C.js +2 -0
  300. package/dist/cli/chunks/{witness-chain-verifier-3GEADWPE.js → witness-chain-verifier-YMROEBVL.js} +2 -2
  301. package/dist/cli/chunks/{witness-key-manager-ZWEIK3VJ.js → witness-key-manager-4CGRNDMJ.js} +2 -2
  302. package/dist/cli/chunks/{workflow-KHMVVBBA.js → workflow-4VRSTRAN.js} +4 -4
  303. package/dist/cli/chunks/workflow-orchestrator-2HNW5ZMQ.js +2 -0
  304. package/dist/cli/chunks/wrappers-4M4UTGEU.js +2 -0
  305. package/dist/cli/commands/ci.js +18 -7
  306. package/dist/cli/commands/quality-gate.js +6 -1
  307. package/dist/cli/commands/test.js +18 -3
  308. package/dist/cli/handlers/init-handler.d.ts +2 -0
  309. package/dist/cli/handlers/init-handler.js +8 -2
  310. package/dist/cli/index.js +15 -2
  311. package/dist/cli/process-store-cleanup.d.ts +7 -0
  312. package/dist/cli/process-store-cleanup.js +27 -0
  313. package/dist/cli/utils/ci-config.d.ts +3 -3
  314. package/dist/cli/utils/ci-config.js +202 -68
  315. package/dist/coordination/handlers/test-execution-handlers.js +13 -8
  316. package/dist/coordination/index.d.ts +1 -1
  317. package/dist/coordination/queen-event-handlers.js +9 -6
  318. package/dist/coordination/result-saver.js +1 -1
  319. package/dist/coordination/services/index.d.ts +1 -1
  320. package/dist/coordination/services/task-audit-logger.d.ts +38 -13
  321. package/dist/coordination/services/task-audit-logger.js +33 -5
  322. package/dist/coordination/task-executor.d.ts +5 -0
  323. package/dist/coordination/task-executor.js +10 -5
  324. package/dist/domains/quality-assessment/quality-evidence.d.ts +3 -1
  325. package/dist/domains/quality-assessment/quality-evidence.js +7 -2
  326. package/dist/domains/test-execution/services/retry-handler.js +32 -13
  327. package/dist/domains/test-execution/services/test-executor.d.ts +3 -3
  328. package/dist/domains/test-execution/services/test-executor.js +66 -22
  329. package/dist/domains/test-generation/coordinator.js +6 -5
  330. package/dist/domains/test-generation/interfaces.d.ts +11 -1
  331. package/dist/domains/test-generation/services/behavior-example-validation.d.ts +36 -0
  332. package/dist/domains/test-generation/services/behavior-example-validation.js +89 -0
  333. package/dist/domains/test-generation/services/behavior-examples.d.ts +8 -0
  334. package/dist/domains/test-generation/services/behavior-examples.js +65 -0
  335. package/dist/domains/test-generation/services/test-generator.d.ts +1 -1
  336. package/dist/domains/test-generation/services/test-generator.js +59 -30
  337. package/dist/domains/visual-accessibility/services/axe-core-audit.d.ts +0 -15
  338. package/dist/domains/visual-accessibility/services/axe-core-audit.js +12 -10
  339. package/dist/init/browser-engine-installer.d.ts +5 -5
  340. package/dist/init/browser-engine-installer.js +28 -6
  341. package/dist/init/fleet-integration.js +3 -2
  342. package/dist/init/init-wizard-steps.js +3 -2
  343. package/dist/init/init-wizard.d.ts +2 -0
  344. package/dist/init/orchestrator.js +1 -0
  345. package/dist/init/phases/06-code-intelligence.js +6 -4
  346. package/dist/init/phases/09-assets.js +8 -18
  347. package/dist/init/phases/phase-interface.d.ts +2 -0
  348. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +2 -5
  349. package/dist/integrations/ruvector/sona-persistence.d.ts +1 -0
  350. package/dist/integrations/ruvector/sona-persistence.js +74 -20
  351. package/dist/integrations/ruvector/sona-wrapper.d.ts +2 -0
  352. package/dist/integrations/ruvector/sona-wrapper.js +13 -0
  353. package/dist/integrations/vibium/client.d.ts +1 -0
  354. package/dist/integrations/vibium/client.js +24 -11
  355. package/dist/integrations/vibium/runtime.d.ts +14 -0
  356. package/dist/integrations/vibium/runtime.js +94 -0
  357. package/dist/kernel/memory-backend.js +5 -4
  358. package/dist/kernel/pattern-fts-self-heal.d.ts +63 -0
  359. package/dist/kernel/pattern-fts-self-heal.js +193 -0
  360. package/dist/kernel/process-lifecycle.d.ts +60 -0
  361. package/dist/kernel/process-lifecycle.js +91 -0
  362. package/dist/kernel/unified-memory-schemas.d.ts +15 -1
  363. package/dist/kernel/unified-memory-schemas.js +53 -25
  364. package/dist/kernel/unified-memory.js +34 -36
  365. package/dist/kernel/unified-persistence.js +12 -6
  366. package/dist/learning/aqe-learning-engine.js +3 -2
  367. package/dist/learning/experience-capture.d.ts +2 -1
  368. package/dist/learning/experience-capture.js +23 -8
  369. package/dist/learning/pattern-store.d.ts +1 -1
  370. package/dist/learning/pattern-store.js +27 -30
  371. package/dist/learning/qe-patterns.d.ts +6 -0
  372. package/dist/learning/qe-reasoning-bank.d.ts +1 -0
  373. package/dist/learning/qe-reasoning-bank.js +14 -4
  374. package/dist/learning/real-qe-reasoning-bank.d.ts +9 -4
  375. package/dist/learning/real-qe-reasoning-bank.js +28 -4
  376. package/dist/learning/rvf-pattern-store.js +19 -19
  377. package/dist/learning/sqlite-persistence.js +9 -24
  378. package/dist/mcp/bundle.js +545 -581
  379. package/dist/mcp/connection-pool.d.ts +2 -0
  380. package/dist/mcp/connection-pool.js +13 -2
  381. package/dist/mcp/entry.js +52 -6
  382. package/dist/mcp/handlers/domain-handler-configs.js +12 -4
  383. package/dist/mcp/handlers/memory-handlers.d.ts +1 -0
  384. package/dist/mcp/handlers/memory-handlers.js +16 -6
  385. package/dist/mcp/handlers/task-handlers.js +11 -7
  386. package/dist/mcp/protocol-server.js +47 -11
  387. package/dist/mcp/services/reasoning-bank-service.d.ts +6 -1
  388. package/dist/mcp/services/reasoning-bank-service.js +5 -1
  389. package/dist/mcp/tools/test-execution/e2e-execute.js +9 -1
  390. package/dist/mcp/tools/test-generation/generate.d.ts +6 -1
  391. package/dist/mcp/tools/test-generation/generate.js +8 -0
  392. package/dist/mcp/types.d.ts +8 -2
  393. package/dist/optimization/session-cache.js +13 -11
  394. package/dist/plugins/cache.js +10 -3
  395. package/dist/shared/embeddings/embedding-cache.js +4 -4
  396. package/dist/shared/error-utils.d.ts +15 -0
  397. package/dist/shared/error-utils.js +21 -0
  398. package/dist/shared/events/domain-events.d.ts +2 -1
  399. package/dist/shared/llm/cache.js +7 -10
  400. package/dist/shared/retry-engine.js +4 -0
  401. package/dist/shared/test-runner-process.d.ts +10 -0
  402. package/dist/shared/test-runner-process.js +210 -0
  403. package/dist/validation/quality-verdict.js +3 -2
  404. package/dist/workers/quality-daemon/priority-queue.js +4 -1
  405. package/package.json +10 -6
  406. package/dist/cli/chunks/adapter-UYOJPTOX.js +0 -2
  407. package/dist/cli/chunks/aqe-learning-engine-JR5AVQXR.js +0 -2
  408. package/dist/cli/chunks/base-DRZ2LS6X.js +0 -2
  409. package/dist/cli/chunks/browser-workflow-CJ7T3MXF.js +0 -2
  410. package/dist/cli/chunks/chunk-3NIG7S5W.js +0 -2
  411. package/dist/cli/chunks/chunk-4N23RFDU.js +0 -2
  412. package/dist/cli/chunks/chunk-AHKELLIO.js +0 -12
  413. package/dist/cli/chunks/chunk-DK4XN4CU.js +0 -2
  414. package/dist/cli/chunks/chunk-E6G2RD5H.js +0 -4
  415. package/dist/cli/chunks/chunk-MJS53PRX.js +0 -2
  416. package/dist/cli/chunks/chunk-PZPWRQ2M.js +0 -21
  417. package/dist/cli/chunks/chunk-QGA55PFM.js +0 -12
  418. package/dist/cli/chunks/chunk-SPV2VKC5.js +0 -3
  419. package/dist/cli/chunks/chunk-TCHGOB2N.js +0 -2
  420. package/dist/cli/chunks/chunk-UKA2KOXE.js +0 -2
  421. package/dist/cli/chunks/chunk-WCJBU2KI.js +0 -2
  422. package/dist/cli/chunks/chunk-Z6GGIRQQ.js +0 -65
  423. package/dist/cli/chunks/ci-W6K6G2KZ.js +0 -81
  424. package/dist/cli/chunks/client-KHWJT6FB.js +0 -2
  425. package/dist/cli/chunks/core-handlers-HING5RRG.js +0 -2
  426. package/dist/cli/chunks/cross-domain-router-PQTD6AZN.js +0 -2
  427. package/dist/cli/chunks/domain-transfer-M36KUJ2U.js +0 -2
  428. package/dist/cli/chunks/dream-WUGRSNCV.js +0 -2
  429. package/dist/cli/chunks/heartbeat-scheduler-33XX5XNQ.js +0 -2
  430. package/dist/cli/chunks/hnsw-adapter-XQPERX3H.js +0 -2
  431. package/dist/cli/chunks/hnsw-index-2GNXTWHH.js +0 -2
  432. package/dist/cli/chunks/hybrid-backend-CCF7URKI.js +0 -2
  433. package/dist/cli/chunks/impact-analyzer-HGKAZWIG.js +0 -2
  434. package/dist/cli/chunks/init-wizard-72MFBI3G.js +0 -2
  435. package/dist/cli/chunks/kernel-BRCBVMSK.js +0 -2
  436. package/dist/cli/chunks/knowledge-graph-DG44IPEI.js +0 -2
  437. package/dist/cli/chunks/llm-router-service-24KXFX32.js +0 -2
  438. package/dist/cli/chunks/load-test-N4TAYJY3.js +0 -2
  439. package/dist/cli/chunks/memory-backend-NVYFYVAU.js +0 -2
  440. package/dist/cli/chunks/memory-handlers-UTWCNCHL.js +0 -2
  441. package/dist/cli/chunks/pattern-null-store-SBPNYDBR.js +0 -2
  442. package/dist/cli/chunks/protocol-executor-IBYEII5Q.js +0 -2
  443. package/dist/cli/chunks/qe-reasoning-bank-7IETWW6W.js +0 -2
  444. package/dist/cli/chunks/quality-gate-PWKWDJY2.js +0 -7
  445. package/dist/cli/chunks/queen-coordinator-NHUK2MWJ.js +0 -2
  446. package/dist/cli/chunks/router-SRSO3IHF.js +0 -2
  447. package/dist/cli/chunks/routing-feedback-PASRE5HY.js +0 -2
  448. package/dist/cli/chunks/rvf-dual-writer-4M4J67OU.js +0 -2
  449. package/dist/cli/chunks/rvf-migration-adapter-TSXGT5LF.js +0 -2
  450. package/dist/cli/chunks/rvf-native-adapter-MOF3E7BR.js +0 -2
  451. package/dist/cli/chunks/safe-db-QJLFO33B.js +0 -2
  452. package/dist/cli/chunks/schedule-YIVXW5O2.js +0 -2
  453. package/dist/cli/chunks/scheduler-AON7DWSJ.js +0 -2
  454. package/dist/cli/chunks/sqlite-persistence-75VHKKQB.js +0 -2
  455. package/dist/cli/chunks/sync-26CEGSTC.js +0 -2
  456. package/dist/cli/chunks/task-handlers-GYBAWKE2.js +0 -9
  457. package/dist/cli/chunks/test-MPC5HRH5.js +0 -33
  458. package/dist/cli/chunks/token-bootstrap-2Y2XITBX.js +0 -2
  459. package/dist/cli/chunks/unified-memory-UCQ6AB32.js +0 -2
  460. package/dist/cli/chunks/unified-memory-hnsw-IXYUMKRR.js +0 -2
  461. package/dist/cli/chunks/unified-persistence-7E6JQ4FZ.js +0 -2
  462. package/dist/cli/chunks/vibium-NILGKHLN.js +0 -2
  463. package/dist/cli/chunks/visual-security-4VZXPEVG.js +0 -2
  464. package/dist/cli/chunks/witness-chain-JQA2VPZI.js +0 -2
  465. package/dist/cli/chunks/witness-chain-repair-4UA7IPS3.js +0 -2
  466. package/dist/cli/chunks/workflow-orchestrator-GI5NQH7C.js +0 -2
  467. package/dist/cli/chunks/wrappers-N6XIK5PT.js +0 -2
@@ -200,12 +200,13 @@ export async function runCodeIntelligenceScan(projectPath) {
200
200
  namespace: 'code-intelligence:kg',
201
201
  enableVectorEmbeddings: true,
202
202
  });
203
- const glob = await import('fast-glob');
204
- const files = await glob.default([
203
+ const { glob } = await import('tinyglobby');
204
+ const files = await glob([
205
205
  '**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx', '**/*.py'
206
206
  ], {
207
207
  cwd: projectPath,
208
208
  ignore: ['node_modules/**', 'dist/**', 'coverage/**', '.agentic-qe/**'],
209
+ expandDirectories: false,
209
210
  });
210
211
  const result = await kgService.index({
211
212
  paths: files.map(f => join(projectPath, f)),
@@ -16,6 +16,8 @@ export interface InitOrchestratorOptions {
16
16
  autoMode?: boolean;
17
17
  /** Skip pattern loading */
18
18
  skipPatterns?: boolean;
19
+ /** Explicitly install the optional browser engine and browser payload. */
20
+ browserEngine?: boolean;
19
21
  /** Minimal configuration */
20
22
  minimal?: boolean;
21
23
  /** Pre-trained patterns library */
@@ -33,6 +33,7 @@ export class ModularInitOrchestrator {
33
33
  skipPatterns: options.skipPatterns,
34
34
  skipCodeIndex: options.skipCodeIndex,
35
35
  minimal: options.minimal,
36
+ browserEngine: options.browserEngine,
36
37
  withN8n: options.withN8n,
37
38
  withOpenCode: options.withOpenCode,
38
39
  withKiro: options.withKiro,
@@ -230,12 +230,13 @@ export class CodeIntelligencePhase extends BasePhase {
230
230
  filesToIndex = changedFiles;
231
231
  }
232
232
  else {
233
- const glob = await import('fast-glob');
234
- const files = await glob.default([
233
+ const { glob } = await import('tinyglobby');
234
+ const files = await glob([
235
235
  '**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx', '**/*.py'
236
236
  ], {
237
237
  cwd: projectRoot,
238
238
  ignore: SCAN_IGNORE_PATTERNS,
239
+ expandDirectories: false,
239
240
  });
240
241
  filesToIndex = files.map(f => join(projectRoot, f));
241
242
  }
@@ -439,12 +440,13 @@ export class CodeIntelligencePhase extends BasePhase {
439
440
  * Find files modified since the given date
440
441
  */
441
442
  async findChangedFiles(projectRoot, since) {
442
- const glob = await import('fast-glob');
443
- const files = await glob.default([
443
+ const { glob } = await import('tinyglobby');
444
+ const files = await glob([
444
445
  '**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx', '**/*.py'
445
446
  ], {
446
447
  cwd: projectRoot,
447
448
  ignore: SCAN_IGNORE_PATTERNS,
449
+ expandDirectories: false,
448
450
  });
449
451
  const sinceMs = since.getTime();
450
452
  const changed = [];
@@ -79,19 +79,9 @@ export class AssetsPhase extends BasePhase {
79
79
  // Initialize overlay configs in agent registry for runtime use
80
80
  initializeOverlays(projectRoot);
81
81
  }
82
- // Install Vibium browser engine for the qe-browser fleet skill.
83
- // Graceful — never fails init if Vibium cannot be installed.
84
- // Skipped in --minimal mode per ADR-086 minimal-footprint guidance.
85
- //
86
- // H6 (devil's-advocate finding): the install can take up to 3 minutes
87
- // on cold caches because npm downloads Vibium AND lazily downloads a
88
- // Chrome for Testing binary. spawnSync blocks the event loop, so the
89
- // user sees no output for the entire duration. We log a clear pre-spawn
90
- // message so users don't Ctrl-C thinking init hung. Future work: move
91
- // this to a lazy/on-first-use install path so non-browser users never
92
- // pay the cost.
82
+ // Browser setup is explicitly requested; normal init never downloads a browser.
93
83
  let browserEngine;
94
- if (!options.minimal) {
84
+ if (options.browserEngine === true && !options.minimal) {
95
85
  try {
96
86
  // Pre-flight check: if vibium is already on PATH, skip the loud
97
87
  // banner so we don't scare users on the common path.
@@ -108,7 +98,7 @@ export class AssetsPhase extends BasePhase {
108
98
  else {
109
99
  // Not installed → we're about to spawn `npm install -g vibium`
110
100
  // which can take 1–3 minutes on a cold cache. Tell the user.
111
- context.services.log(' Browser engine: installing vibium via npm (this can take 1–3 minutes on first run; downloads Chrome for Testing lazily)…');
101
+ context.services.log(' Browser engine: installing vibium via npm (this can take 1–3 minutes on first run; downloads Chrome for Testing)…');
112
102
  browserEngine = installBrowserEngine({ skip: false });
113
103
  switch (browserEngine.status) {
114
104
  case 'installed':
@@ -118,10 +108,10 @@ export class AssetsPhase extends BasePhase {
118
108
  context.services.log(' Browser engine: skipped');
119
109
  break;
120
110
  case 'install-failed':
121
- context.services.warn(`Browser engine install failed (qe-browser skill will be unavailable until you run \`npm install -g vibium\`): ${browserEngine.message || 'unknown'}`);
111
+ context.services.warn(`Browser engine install failed (qe-browser skill will be unavailable until you run \`aqe init --browser-engine\`): ${browserEngine.message || 'unknown'}`);
122
112
  break;
123
113
  case 'npm-unavailable':
124
- context.services.warn('Browser engine: npm not on PATH — install Node.js + npm, then `npm install -g vibium` to enable qe-browser');
114
+ context.services.warn('Browser engine: npm not on PATH — install Node.js + npm, then `aqe init --browser-engine` to enable qe-browser');
125
115
  break;
126
116
  // 'already-installed' handled by the pre-flight branch above
127
117
  }
@@ -141,12 +131,12 @@ export class AssetsPhase extends BasePhase {
141
131
  const msg = error instanceof Error ? error.message : String(error);
142
132
  context.services.warn(`Browser engine install error: ${msg}\n` +
143
133
  ` qe-browser fleet skill will be unavailable until you run:\n` +
144
- ` npm install -g vibium\n` +
145
- ` Then re-run \`aqe init\` to verify. The rest of the AQE install will continue.`);
134
+ ` npm install -g ${DEFAULT_VIBIUM_SPEC}\n` +
135
+ ` Then re-run \`aqe init --browser-engine\` to verify. The rest of the AQE install will continue.`);
146
136
  }
147
137
  }
148
138
  else {
149
- browserEngine = { status: 'skipped', packageSpec: DEFAULT_VIBIUM_SPEC, message: 'minimal mode' };
139
+ browserEngine = { status: 'skipped', packageSpec: DEFAULT_VIBIUM_SPEC, message: options.minimal ? 'minimal mode' : 'browser setup not requested; run aqe init --browser-engine' };
150
140
  }
151
141
  // Install n8n platform (optional)
152
142
  if (options.withN8n) {
@@ -92,6 +92,8 @@ export interface InitOptions {
92
92
  */
93
93
  skipCodeIndex?: boolean;
94
94
  /** Minimal configuration (no skills, patterns, workers) */
95
+ /** Explicitly install the optional browser engine and browser payload. */
96
+ browserEngine?: boolean;
95
97
  minimal?: boolean;
96
98
  /** Automatically migrate from v2 if detected */
97
99
  /** Install n8n workflow testing platform */
@@ -15,7 +15,7 @@
15
15
  * - Automatic strategy recommendations
16
16
  * - Pattern quality improvement over time
17
17
  */
18
- import { RealQEReasoningBank, type RealQEReasoningBankConfig, type RealQERoutingRequest, type RealQERoutingResult, type LearningOutcome } from '../../../learning/real-qe-reasoning-bank.js';
18
+ import { RealQEReasoningBank, type RealQEReasoningBankConfig, type RealQEPatternSearchResult, type RealQERoutingRequest, type RealQERoutingResult, type LearningOutcome } from '../../../learning/real-qe-reasoning-bank.js';
19
19
  import { TrajectoryTracker, type Trajectory, type TrajectoryStep, type TrajectoryOptions, type TrajectoryTrackerConfig } from './trajectory-tracker.js';
20
20
  import { ExperienceReplay, type ExperienceGuidance, type ExperienceReplayConfig } from './experience-replay.js';
21
21
  import { PatternEvolution, type PatternVersion, type DriftDetectionResult, type MergeCandidate, type PatternEvolutionConfig } from './pattern-evolution.js';
@@ -182,10 +182,7 @@ export declare class EnhancedReasoningBankAdapter {
182
182
  limit?: number;
183
183
  domain?: QEDomain;
184
184
  minSimilarity?: number;
185
- }): Promise<Result<Array<{
186
- pattern: QEPattern;
187
- similarity: number;
188
- }>>>;
185
+ }): Promise<Result<RealQEPatternSearchResult[]>>;
189
186
  /**
190
187
  * Record a pattern outcome with evolution tracking
191
188
  */
@@ -95,6 +95,7 @@ export declare class PersistentSONAEngine {
95
95
  private initPromise;
96
96
  private pendingSaves;
97
97
  private saveTimer;
98
+ private consecutiveSaveFailures;
98
99
  private serverClient;
99
100
  constructor(config: PersistentSONAConfig);
100
101
  /**
@@ -112,6 +112,7 @@ export class PersistentSONAEngine {
112
112
  initPromise = null;
113
113
  pendingSaves = new Map();
114
114
  saveTimer = null;
115
+ consecutiveSaveFailures = 0;
115
116
  serverClient = null;
116
117
  constructor(config) {
117
118
  this.config = {
@@ -270,8 +271,6 @@ export class PersistentSONAEngine {
270
271
  ON CONFLICT(id) DO UPDATE SET
271
272
  confidence = excluded.confidence,
272
273
  usage_count = excluded.usage_count,
273
- success_count = excluded.success_count,
274
- failure_count = excluded.failure_count,
275
274
  metadata = excluded.metadata,
276
275
  updated_at = datetime('now'),
277
276
  last_used_at = excluded.last_used_at
@@ -288,6 +287,8 @@ export class PersistentSONAEngine {
288
287
  SET confidence = ?,
289
288
  success_count = success_count + ?,
290
289
  failure_count = failure_count + ?,
290
+ usage_count = usage_count + 1,
291
+ last_used_at = datetime('now'),
291
292
  updated_at = datetime('now')
292
293
  WHERE id = ?
293
294
  `));
@@ -432,6 +433,13 @@ export class PersistentSONAEngine {
432
433
  // Get updated pattern and persist confidence change
433
434
  const pattern = this.getPattern(patternId);
434
435
  if (pattern) {
436
+ // Feedback needs a durable row before incrementing its counters.
437
+ // Remove the queued snapshot only after its write succeeds.
438
+ const pending = this.pendingSaves.get(patternId);
439
+ if (pending) {
440
+ this.savePatternToDb(pending);
441
+ this.pendingSaves.delete(patternId);
442
+ }
435
443
  this.persistPatternConfidenceUpdate(patternId, pattern.confidence, success ? 1 : 0, success ? 0 : 1);
436
444
  }
437
445
  }
@@ -548,19 +556,27 @@ export class PersistentSONAEngine {
548
556
  if (!stmt)
549
557
  throw new Error('Statement not prepared');
550
558
  const result = stmt.run(patternId);
551
- return result.changes > 0;
559
+ // Delete queued writes too: otherwise the next batch or sync restores it.
560
+ const pending = this.pendingSaves.delete(patternId);
561
+ const cached = this.baseEngine.deletePattern(patternId);
562
+ return result.changes > 0 || pending || cached;
552
563
  }
553
564
  /**
554
565
  * Clear all patterns for this domain
555
566
  */
556
567
  clearDomainPatterns() {
557
568
  this.ensureInitialized();
558
- // Clear in base engine
559
- this.baseEngine.clear();
560
- // Clear in SQLite for this domain
569
+ // Finish the durable delete first so a failed statement preserves memory.
561
570
  const stmt = this.prepared.get('deleteByDomain');
562
- if (stmt) {
563
- stmt.run(this.config.domain);
571
+ if (!stmt)
572
+ throw new Error('Statement not prepared');
573
+ stmt.run(this.config.domain);
574
+ for (const pattern of this.baseEngine.getPatternsByDomain(this.config.domain)) {
575
+ this.baseEngine.deletePattern(pattern.id);
576
+ }
577
+ for (const [id, pattern] of this.pendingSaves) {
578
+ if (pattern.domain === this.config.domain)
579
+ this.pendingSaves.delete(id);
564
580
  }
565
581
  }
566
582
  /**
@@ -791,10 +807,19 @@ export class PersistentSONAEngine {
791
807
  this.saveTimer = null;
792
808
  }
793
809
  if (this.pendingSaves.size > 0) {
810
+ const failures = [];
794
811
  for (const pattern of this.pendingSaves.values()) {
795
- this.savePatternToDb(pattern);
812
+ try {
813
+ this.savePatternToDb(pattern);
814
+ this.pendingSaves.delete(pattern.id);
815
+ }
816
+ catch (error) {
817
+ failures.push(new Error(toErrorMessage(error)));
818
+ }
819
+ }
820
+ if (failures.length > 0) {
821
+ throw new AggregateError(failures, `Deferred SONA saves failed: ${failures.map(error => error.message).join('; ')}`);
796
822
  }
797
- this.pendingSaves.clear();
798
823
  }
799
824
  // A10 fix: checkpoint the request counter once per process lifetime
800
825
  // (cheap — not on the instantAdapt hot path) so short-lived CLI/MCP
@@ -813,6 +838,8 @@ export class PersistentSONAEngine {
813
838
  this.db = null;
814
839
  this.persistence = null;
815
840
  this.initialized = false;
841
+ // A completed initialization promise belongs to the closed lifecycle.
842
+ this.initPromise = null;
816
843
  console.log(`[PersistentSONAEngine] Closed: domain=${this.config.domain}`);
817
844
  }
818
845
  // ==========================================================================
@@ -1018,6 +1045,8 @@ export class PersistentSONAEngine {
1018
1045
  else {
1019
1046
  // Batch saves
1020
1047
  this.pendingSaves.set(pattern.id, pattern);
1048
+ // New explicit work starts a fresh, bounded recovery cycle.
1049
+ this.consecutiveSaveFailures = 0;
1021
1050
  this.scheduleSave();
1022
1051
  }
1023
1052
  }
@@ -1034,11 +1063,12 @@ export class PersistentSONAEngine {
1034
1063
  const actionEmbedding = pattern.action?.value && Array.isArray(pattern.action.value)
1035
1064
  ? this.floatArrayToBuffer(pattern.action.value)
1036
1065
  : null;
1037
- const actionValue = typeof pattern.action?.value === 'string'
1038
- ? pattern.action.value
1039
- : pattern.action?.value !== undefined
1040
- ? JSON.stringify(pattern.action.value)
1041
- : null;
1066
+ // Encode strings too: the reader parses JSON, so raw "123"/"false"
1067
+ // would otherwise change the action type after restarting. Legacy raw
1068
+ // non-JSON strings remain readable through rowToPattern's fallback.
1069
+ const actionValue = pattern.action?.value !== undefined
1070
+ ? JSON.stringify(pattern.action.value)
1071
+ : null;
1042
1072
  stmt.run(pattern.id, pattern.type, pattern.domain, stateEmbedding, actionEmbedding, pattern.action?.type ?? 'unknown', actionValue, pattern.outcome?.reward ?? 0, pattern.outcome?.success ? 1 : 0, pattern.outcome?.quality ?? 0, pattern.confidence, pattern.usageCount, 0, // success_count (tracked separately from usageCount)
1043
1073
  0, // failure_count
1044
1074
  pattern.metadata ? JSON.stringify(pattern.metadata) : null, pattern.createdAt?.toISOString() ?? new Date().toISOString(), pattern.lastUsedAt?.toISOString() ?? null);
@@ -1046,17 +1076,41 @@ export class PersistentSONAEngine {
1046
1076
  /**
1047
1077
  * Schedule batched save
1048
1078
  */
1049
- scheduleSave() {
1050
- if (this.saveTimer)
1079
+ scheduleSave(delayMs = this.config.autoSaveInterval) {
1080
+ if (this.saveTimer) {
1081
+ // New explicit work must survive natural exit, even during a retry delay.
1082
+ if (this.consecutiveSaveFailures === 0)
1083
+ this.saveTimer.ref();
1051
1084
  return;
1085
+ }
1052
1086
  this.saveTimer = setTimeout(() => {
1053
1087
  this.saveTimer = null;
1054
1088
  const patterns = Array.from(this.pendingSaves.values());
1055
- this.pendingSaves.clear();
1056
1089
  for (const pattern of patterns) {
1057
- this.savePatternToDb(pattern);
1090
+ try {
1091
+ this.savePatternToDb(pattern);
1092
+ this.pendingSaves.delete(pattern.id);
1093
+ }
1094
+ catch (error) {
1095
+ logger.warn('Deferred SONA save failed; retaining pending pattern', {
1096
+ patternId: pattern.id, error: toErrorMessage(error),
1097
+ });
1098
+ }
1099
+ }
1100
+ if (this.pendingSaves.size > 0) {
1101
+ this.consecutiveSaveFailures++;
1102
+ // Stop after five failed batches; close() can still flush retained rows.
1103
+ if (this.consecutiveSaveFailures < 5 && this.db?.open) {
1104
+ this.scheduleSave(Math.min(60000, Math.max(1000, this.config.autoSaveInterval) * 2 ** (this.consecutiveSaveFailures - 1)));
1105
+ }
1106
+ }
1107
+ else {
1108
+ this.consecutiveSaveFailures = 0;
1058
1109
  }
1059
- }, this.config.autoSaveInterval);
1110
+ }, delayMs);
1111
+ // The initial batch must flush on natural exit; only failure retries are optional.
1112
+ if (this.consecutiveSaveFailures > 0)
1113
+ this.saveTimer.unref();
1060
1114
  }
1061
1115
  /**
1062
1116
  * Update pattern usage in SQLite
@@ -199,6 +199,8 @@ export declare class QESONA {
199
199
  * Get statistics
200
200
  */
201
201
  getStats(): QESONAStats;
202
+ /** Stop recalling a pattern without resetting learned model weights. */
203
+ deletePattern(patternId: string): boolean;
202
204
  /**
203
205
  * Clear all patterns
204
206
  */
@@ -108,6 +108,15 @@ class QESONAPatternRegistry {
108
108
  getByDomain(domain) {
109
109
  return Array.from(this.patterns.values()).filter(p => p.domain === domain);
110
110
  }
111
+ /** Remove a pattern and its trajectory associations from the registry. */
112
+ delete(id) {
113
+ const removed = this.patterns.delete(id);
114
+ for (const [trajectoryId, patternId] of this.trajectoryMap) {
115
+ if (patternId === id)
116
+ this.trajectoryMap.delete(trajectoryId);
117
+ }
118
+ return removed;
119
+ }
111
120
  /**
112
121
  * Clear all patterns
113
122
  */
@@ -380,6 +389,10 @@ export class QESONA {
380
389
  engineStats,
381
390
  };
382
391
  }
392
+ /** Stop recalling a pattern without resetting learned model weights. */
393
+ deletePattern(patternId) {
394
+ return this.registry.delete(patternId);
395
+ }
383
396
  /**
384
397
  * Clear all patterns
385
398
  */
@@ -41,6 +41,7 @@ export declare class VibiumClientImpl implements VibiumClient {
41
41
  private _initialized;
42
42
  private _available;
43
43
  private vibeInstance;
44
+ private browserInstance;
44
45
  /**
45
46
  * Create a new Vibium client
46
47
  *
@@ -7,6 +7,7 @@
7
7
  * @module integrations/vibium/client
8
8
  */
9
9
  import { randomUUID } from 'crypto';
10
+ import { loadVibium, isVibiumReady, VIBIUM_SETUP } from './runtime.js';
10
11
  import { DEFAULT_VIBIUM_CONFIG } from './types.js';
11
12
  import { VibiumError, VibiumUnavailableError, VibiumTimeoutError, VibiumElementNotFoundError, VibiumConnectionError, VibiumNavigationError, VibiumScreenshotError, VibiumInteractionError, createVibiumError, } from './errors.js';
12
13
  import { toError } from '../../shared/error-utils.js';
@@ -24,7 +25,7 @@ async function getVibiumBrowser() {
24
25
  return vibiumBrowser;
25
26
  }
26
27
  try {
27
- const vibium = await import('vibium');
28
+ const vibium = await loadVibium();
28
29
  vibiumBrowser = vibium.browser;
29
30
  vibiumAvailable = true;
30
31
  return vibiumBrowser;
@@ -112,6 +113,7 @@ export class VibiumClientImpl {
112
113
  _available = null;
113
114
  // Real Vibium browser instance
114
115
  vibeInstance = null;
116
+ browserInstance = null;
115
117
  /**
116
118
  * Create a new Vibium client
117
119
  *
@@ -133,7 +135,7 @@ export class VibiumClientImpl {
133
135
  try {
134
136
  // Check if Vibium package is available
135
137
  const browser = await getVibiumBrowser();
136
- this._available = browser !== null;
138
+ this._available = browser !== null && isVibiumReady();
137
139
  return this._available;
138
140
  }
139
141
  catch {
@@ -157,7 +159,7 @@ export class VibiumClientImpl {
157
159
  if (isAvailable) {
158
160
  this.lastHealthCheck = {
159
161
  status: this.vibeInstance ? 'connected' : 'disconnected',
160
- version: '0.1.2', // From package.json
162
+ // Runtime availability is checked against the installed payload.
161
163
  browserType: this.config.browserType,
162
164
  features: [
163
165
  'browser-launch',
@@ -177,7 +179,7 @@ export class VibiumClientImpl {
177
179
  status: 'unavailable',
178
180
  features: ['fallback-only'],
179
181
  lastChecked,
180
- error: 'Vibium package not available - install with: npm install vibium',
182
+ error: `Vibium runtime or browser payload unavailable; run ${VIBIUM_SETUP}`,
181
183
  sessionActive: false,
182
184
  };
183
185
  }
@@ -209,13 +211,22 @@ export class VibiumClientImpl {
209
211
  const operation = async () => {
210
212
  const browser = await getVibiumBrowser();
211
213
  if (!browser) {
212
- throw new VibiumUnavailableError('Vibium package not available. Install with: npm install vibium');
214
+ throw new VibiumUnavailableError(`Vibium runtime unavailable; run ${VIBIUM_SETUP}`);
213
215
  }
214
216
  // Launch REAL browser using Vibium
215
217
  const headless = options?.headless ?? this.config.headless;
216
- this.vibeInstance = await browser.launch({
217
- headless,
218
- });
218
+ if (!isVibiumReady()) {
219
+ throw new VibiumUnavailableError(`Vibium browser payload unavailable; run ${VIBIUM_SETUP}`);
220
+ }
221
+ const instance = await browser.start({ headless });
222
+ try {
223
+ this.vibeInstance = await instance.page();
224
+ this.browserInstance = instance;
225
+ }
226
+ catch (error) {
227
+ await instance.stop();
228
+ throw error;
229
+ }
219
230
  const session = {
220
231
  id: this.generateSessionId(),
221
232
  browserType: this.config.browserType,
@@ -247,8 +258,9 @@ export class VibiumClientImpl {
247
258
  }
248
259
  const operation = async () => {
249
260
  if (this.vibeInstance) {
250
- await this.vibeInstance.quit();
261
+ await this.browserInstance?.stop();
251
262
  this.vibeInstance = null;
263
+ this.browserInstance = null;
252
264
  }
253
265
  this.currentSession = null;
254
266
  };
@@ -575,7 +587,7 @@ export class VibiumClientImpl {
575
587
  this.ensureSession();
576
588
  try {
577
589
  // Use real Vibium evaluate method
578
- const result = await this.vibeInstance.evaluate(script);
590
+ const result = await this.vibeInstance.evaluate(`(async () => { ${script} })()`);
579
591
  return { success: true, value: result };
580
592
  }
581
593
  catch (error) {
@@ -608,13 +620,14 @@ export class VibiumClientImpl {
608
620
  async dispose() {
609
621
  if (this.vibeInstance) {
610
622
  try {
611
- await this.vibeInstance.quit();
623
+ await this.browserInstance?.stop();
612
624
  }
613
625
  catch (error) {
614
626
  // Non-critical: Vibium disposal errors
615
627
  console.debug('[VibiumClient] Disposal error:', error instanceof Error ? error.message : error);
616
628
  }
617
629
  this.vibeInstance = null;
630
+ this.browserInstance = null;
618
631
  }
619
632
  this.currentSession = null;
620
633
  this._initialized = false;
@@ -0,0 +1,14 @@
1
+ export declare const VIBIUM_SETUP = "aqe init --browser-engine (or npm install vibium@^26.8.21)";
2
+ type Runtime = typeof import('vibium');
3
+ /**
4
+ * How to run npm without a shell. On Windows `npm` is an `npm.cmd` shim, which
5
+ * execFile cannot start without `shell: true` (EINVAL/ENOENT since the
6
+ * CVE-2024-27980 fix), so run the npm CLI bundled next to node.exe instead.
7
+ * Falls back to plain `npm` when that layout is absent.
8
+ */
9
+ export declare function npmInvocation(platform?: NodeJS.Platform, execPath?: string, exists?: (path: string) => boolean): [string, string[]];
10
+ export declare function loadVibium(): Promise<Runtime>;
11
+ /** Check the payload belonging to the resolved library, not a different PATH CLI. */
12
+ export declare function isVibiumReady(): boolean;
13
+ export {};
14
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1,94 @@
1
+ /** Resolve the opt-in Vibium runtime for both local and global AQE installs. */
2
+ import { createRequire } from 'node:module';
3
+ import { execFileSync } from 'node:child_process';
4
+ import { existsSync } from 'node:fs';
5
+ import { dirname, join } from 'node:path';
6
+ export const VIBIUM_SETUP = 'aqe init --browser-engine (or npm install vibium@^26.8.21)';
7
+ const requireFromHere = createRequire(import.meta.url);
8
+ /**
9
+ * How to run npm without a shell. On Windows `npm` is an `npm.cmd` shim, which
10
+ * execFile cannot start without `shell: true` (EINVAL/ENOENT since the
11
+ * CVE-2024-27980 fix), so run the npm CLI bundled next to node.exe instead.
12
+ * Falls back to plain `npm` when that layout is absent.
13
+ */
14
+ export function npmInvocation(platform = process.platform, execPath = process.execPath, exists = existsSync) {
15
+ if (platform === 'win32') {
16
+ const npmCli = join(dirname(execPath), 'node_modules', 'npm', 'bin', 'npm-cli.js');
17
+ if (exists(npmCli))
18
+ return [execPath, [npmCli]];
19
+ }
20
+ return ['npm', []];
21
+ }
22
+ /** Never install or download anything while probing availability. */
23
+ function resolveRuntime() {
24
+ try {
25
+ return requireFromHere.resolve('vibium');
26
+ }
27
+ catch {
28
+ try {
29
+ return createRequire(join(process.cwd(), 'package.json')).resolve('vibium');
30
+ }
31
+ catch { /* No project-local opt-in runtime. Try global setup below. */ }
32
+ // A global CLI installation is not on Node's normal module search path.
33
+ // npm root is read-only and honors the same npm prefix as explicit setup.
34
+ const [npmBin, npmPrefixArgs] = npmInvocation();
35
+ const root = execFileSync(npmBin, [...npmPrefixArgs, 'root', '-g'], {
36
+ encoding: 'utf8', timeout: 5000, stdio: ['ignore', 'pipe', 'pipe'],
37
+ }).trim();
38
+ return requireFromHere.resolve(join(root, 'vibium'));
39
+ }
40
+ }
41
+ /**
42
+ * Accept the modern API from the namespace itself or from its `default`
43
+ * export. CJS interop and bundler createRequire shims expose the package
44
+ * object only as `default`, so checking the namespace alone rejects a
45
+ * correctly installed runtime.
46
+ */
47
+ function selectBrowserApi(loaded) {
48
+ if (typeof loaded?.browser?.start === 'function')
49
+ return loaded;
50
+ if (typeof loaded?.default?.browser?.start === 'function')
51
+ return loaded.default;
52
+ return null;
53
+ }
54
+ export async function loadVibium() {
55
+ let loaded;
56
+ try {
57
+ loaded = await import('vibium');
58
+ }
59
+ catch (error) {
60
+ // Only a missing local package permits global resolution. A broken local
61
+ // installation must not be silently replaced by an unrelated runtime.
62
+ if (error.code !== 'ERR_MODULE_NOT_FOUND' &&
63
+ error.code !== 'MODULE_NOT_FOUND')
64
+ throw error;
65
+ let entry;
66
+ try {
67
+ entry = resolveRuntime();
68
+ }
69
+ catch (cause) {
70
+ throw new Error(`Vibium is not installed; run ${VIBIUM_SETUP}`, { cause });
71
+ }
72
+ loaded = requireFromHere(entry);
73
+ }
74
+ const runtime = selectBrowserApi(loaded);
75
+ if (!runtime) {
76
+ throw new Error('Unsupported Vibium API: the installed package exposes no browser.start() ' +
77
+ `(neither as a named nor a default export); run ${VIBIUM_SETUP}`);
78
+ }
79
+ return runtime;
80
+ }
81
+ /** Check the payload belonging to the resolved library, not a different PATH CLI. */
82
+ export function isVibiumReady() {
83
+ try {
84
+ const cli = join(dirname(resolveRuntime()), '..', 'bin', 'cli.js');
85
+ execFileSync(process.execPath, [cli, 'is-installed'], {
86
+ timeout: 5000, stdio: 'ignore',
87
+ });
88
+ return true;
89
+ }
90
+ catch {
91
+ return false;
92
+ }
93
+ }
94
+ //# sourceMappingURL=runtime.js.map
@@ -56,9 +56,9 @@ export class InMemoryBackend {
56
56
  return value !== undefined;
57
57
  }
58
58
  async search(pattern, limit = MEMORY_CONSTANTS.DEFAULT_SEARCH_LIMIT, options) {
59
- // Escape regex-special chars first, then convert glob wildcards to regex
60
- const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
61
- const regex = new RegExp(escaped.replace(/\*/g, '.*'));
59
+ // Match the same whole-key glob contract as persistent memory.
60
+ const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
61
+ const regex = new RegExp(`^${escaped.replace(/\*/g, '.*').replace(/\?/g, '.')}$`, 'su');
62
62
  const results = [];
63
63
  // When a namespace is supplied, scope the scan to that prefix. Matches
64
64
  // HybridBackend's namespace-aware search and lets LearningCoordinator's
@@ -68,7 +68,8 @@ export class InMemoryBackend {
68
68
  for (const key of this.store.keys()) {
69
69
  if (nsPrefix && !key.startsWith(nsPrefix))
70
70
  continue;
71
- if (regex.test(key)) {
71
+ const searchableKey = nsPrefix ? key.slice(nsPrefix.length) : key;
72
+ if (regex.test(searchableKey)) {
72
73
  results.push(key);
73
74
  if (results.length >= limit)
74
75
  break;