agentic-qe 3.14.7 → 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 (393) 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 +130 -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 +6 -6
  16. package/dist/cli/chunks/adapter-XYCOXQCC.js +2 -0
  17. package/dist/cli/chunks/{agent-booster-wasm-AK2W76RG.js → agent-booster-wasm-67OKGDGZ.js} +2 -2
  18. package/dist/cli/chunks/{agent-handler-MGZCWHIY.js → agent-handler-4HZEQ3WQ.js} +2 -2
  19. package/dist/cli/chunks/{agent-memory-branch-JZ54MCSP.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-CUVH3V7H.js → arena-EJBIGSF4.js} +2 -2
  22. package/dist/cli/chunks/{arena-YSWTKBCL.js → arena-LCLRGUIK.js} +4 -4
  23. package/dist/cli/chunks/{audit-LVU76QGA.js → audit-PY4JNDQQ.js} +3 -3
  24. package/dist/cli/chunks/base-5TQ34GMD.js +2 -0
  25. package/dist/cli/chunks/{better-sqlite3-DB3LOJQU.js → better-sqlite3-2JG5K6XT.js} +2 -2
  26. package/dist/cli/chunks/{brain-handler-SD63KOQ6.js → brain-handler-3UYK55GA.js} +4 -4
  27. package/dist/cli/chunks/{branch-enumerator-4MNOPUC7.js → branch-enumerator-GOSWOX46.js} +2 -2
  28. package/dist/cli/chunks/{browser-OLPNTWQE.js → browser-DC2JV47Z.js} +2 -2
  29. package/dist/cli/chunks/browser-workflow-KWX4ESTJ.js +2 -0
  30. package/dist/cli/chunks/{chunk-QQFQDEUE.js → chunk-25EEIAHS.js} +2 -2
  31. package/dist/cli/chunks/{chunk-DOBKEXMJ.js → chunk-3576QGPP.js} +1 -1
  32. package/dist/cli/chunks/{chunk-3M7J4U74.js → chunk-3EKG7HFV.js} +4 -4
  33. package/dist/cli/chunks/{chunk-DYTQHRUS.js → chunk-3FCHH4VP.js} +1 -1
  34. package/dist/cli/chunks/{chunk-EJ6MMYLK.js → chunk-3S5IIK32.js} +1 -1
  35. package/dist/cli/chunks/{chunk-NOHWJOBS.js → chunk-3X2JSW3R.js} +1 -1
  36. package/dist/cli/chunks/{chunk-7EZ2Z2CK.js → chunk-4HXFPBAA.js} +1 -1
  37. package/dist/cli/chunks/{chunk-XBYQ2BS4.js → chunk-4PY44TKH.js} +2 -2
  38. package/dist/cli/chunks/{chunk-5FSLMYAC.js → chunk-4RNCVSVN.js} +2 -2
  39. package/dist/cli/chunks/{chunk-X7ADKL7T.js → chunk-56M4QNXU.js} +2 -2
  40. package/dist/cli/chunks/{chunk-JHJUSSAU.js → chunk-5X4HDW5W.js} +2 -2
  41. package/dist/cli/chunks/{chunk-7MIOK72I.js → chunk-673XJBGW.js} +7 -7
  42. package/dist/cli/chunks/{chunk-77QZHIVX.js → chunk-6F7MFHTY.js} +2 -2
  43. package/dist/cli/chunks/{chunk-Q6NTEICT.js → chunk-6GJWT2OY.js} +2 -2
  44. package/dist/cli/chunks/{chunk-GV4DYPJP.js → chunk-6GNWVPMR.js} +2 -2
  45. package/dist/cli/chunks/{chunk-V5AK56DA.js → chunk-6VTC3OHD.js} +2 -2
  46. package/dist/cli/chunks/{chunk-MM56VPNE.js → chunk-775WGWLL.js} +3 -3
  47. package/dist/cli/chunks/{chunk-A3DK3XNZ.js → chunk-77WL5HQW.js} +1 -1
  48. package/dist/cli/chunks/chunk-7STWD4KJ.js +3 -0
  49. package/dist/cli/chunks/{chunk-RC2A4JZ5.js → chunk-7TNCEVWX.js} +2 -2
  50. package/dist/cli/chunks/{chunk-XL5KIYE3.js → chunk-7X3LMTRA.js} +2 -2
  51. package/dist/cli/chunks/{chunk-VW6FRMLW.js → chunk-A53MMSGC.js} +2 -2
  52. package/dist/cli/chunks/{chunk-UFSVUBTR.js → chunk-A5CLVZC3.js} +2 -2
  53. package/dist/cli/chunks/{chunk-4INST4ZL.js → chunk-AEYJ4ZLA.js} +1 -1
  54. package/dist/cli/chunks/{chunk-5U6N4V5M.js → chunk-AJ5PCJQ2.js} +4 -4
  55. package/dist/cli/chunks/{chunk-OAZX6WFU.js → chunk-AJMAKUS3.js} +2 -2
  56. package/dist/cli/chunks/{chunk-74IOEOMH.js → chunk-AOD2ES44.js} +2 -2
  57. package/dist/cli/chunks/chunk-AR2S4DOB.js +2 -0
  58. package/dist/cli/chunks/{chunk-PYKY22GC.js → chunk-AUFV2G2J.js} +5 -5
  59. package/dist/cli/chunks/{chunk-KD2BLA5Y.js → chunk-B2QKBQYD.js} +1 -1
  60. package/dist/cli/chunks/{chunk-6EGS77BB.js → chunk-BCCSV3RH.js} +1 -1
  61. package/dist/cli/chunks/{chunk-JOZ47MV6.js → chunk-BFIXUKOR.js} +1 -1
  62. package/dist/cli/chunks/chunk-BHPTHC5O.js +4 -0
  63. package/dist/cli/chunks/{chunk-OIDWDGLG.js → chunk-BITFGVZ4.js} +2 -2
  64. package/dist/cli/chunks/{chunk-ONR2NXXD.js → chunk-BL6273KR.js} +3 -3
  65. package/dist/cli/chunks/{chunk-BLG7SH4A.js → chunk-BOIUENWW.js} +1 -1
  66. package/dist/cli/chunks/{chunk-T77GZF4B.js → chunk-BT3MI2BW.js} +1 -1
  67. package/dist/cli/chunks/{chunk-UYUJT6QO.js → chunk-BTBJ2NLH.js} +2 -2
  68. package/dist/cli/chunks/{chunk-YMW57PEL.js → chunk-BUVJIVFG.js} +1 -1
  69. package/dist/cli/chunks/{chunk-QUORH2MG.js → chunk-BZIPW2PA.js} +8 -8
  70. package/dist/cli/chunks/{chunk-GVVFTFMB.js → chunk-C647D42G.js} +2 -2
  71. package/dist/cli/chunks/{chunk-AJUBT4NP.js → chunk-CBWM5NOO.js} +3 -3
  72. package/dist/cli/chunks/{chunk-F2OPFVQH.js → chunk-CIEXUYY7.js} +1 -1
  73. package/dist/cli/chunks/{chunk-QGOWNVVG.js → chunk-CLUHGBLN.js} +4 -4
  74. package/dist/cli/chunks/{chunk-WOV6XI3A.js → chunk-CQEWL32R.js} +1 -1
  75. package/dist/cli/chunks/{chunk-3QJU4Q4R.js → chunk-CXUC7YKA.js} +2 -2
  76. package/dist/cli/chunks/{chunk-HZY42OVU.js → chunk-D2Y36V5J.js} +2 -2
  77. package/dist/cli/chunks/{chunk-WF6UISKW.js → chunk-DSJJHPPS.js} +4 -4
  78. package/dist/cli/chunks/{chunk-FYPX5WBJ.js → chunk-DZHXCOSK.js} +1 -1
  79. package/dist/cli/chunks/{chunk-TXSPBLBT.js → chunk-EBV3WFIR.js} +2 -2
  80. package/dist/cli/chunks/{chunk-Y6AKKQIQ.js → chunk-EKO5QL2B.js} +1 -1
  81. package/dist/cli/chunks/{chunk-MZB2UV2O.js → chunk-EMOZ5O5S.js} +1 -1
  82. package/dist/cli/chunks/{chunk-23CX7JNL.js → chunk-ES7TAJRJ.js} +2 -2
  83. package/dist/cli/chunks/{chunk-Z4Q5PCRZ.js → chunk-EXQGHTPD.js} +4 -4
  84. package/dist/cli/chunks/{chunk-A2VUCUTT.js → chunk-F2WAB4WK.js} +2 -2
  85. package/dist/cli/chunks/{chunk-CQNMGK6Y.js → chunk-F57FTFWS.js} +2 -2
  86. package/dist/cli/chunks/{chunk-OEPNNLR4.js → chunk-F6JJNBE5.js} +1 -1
  87. package/dist/cli/chunks/{chunk-UBJG3IHT.js → chunk-FRC7AFB4.js} +2 -2
  88. package/dist/cli/chunks/{chunk-2G63VIJE.js → chunk-G36RZF2Y.js} +1 -1
  89. package/dist/cli/chunks/{chunk-YRHTQZU4.js → chunk-G3C7Z6FO.js} +2 -2
  90. package/dist/cli/chunks/{chunk-B4I43GE2.js → chunk-GA63ESNT.js} +2 -2
  91. package/dist/cli/chunks/{chunk-7QYOTUOX.js → chunk-GHMJFICO.js} +2 -2
  92. package/dist/cli/chunks/{chunk-HYOPJHHW.js → chunk-GK5WLUX3.js} +1 -1
  93. package/dist/cli/chunks/{chunk-A5MA7A23.js → chunk-GQJ4QDEN.js} +6 -6
  94. package/dist/cli/chunks/{chunk-UA7TDVL7.js → chunk-GVLRE3BV.js} +4 -4
  95. package/dist/cli/chunks/{chunk-25P6JA6V.js → chunk-H5UH234L.js} +1 -1
  96. package/dist/cli/chunks/{chunk-BE4KALTE.js → chunk-HBAFXWSO.js} +1 -1
  97. package/dist/cli/chunks/{chunk-EGOIIUBD.js → chunk-HE3BDBAO.js} +2 -2
  98. package/dist/cli/chunks/{chunk-P2UPYSDJ.js → chunk-HHANMCD2.js} +1 -1
  99. package/dist/cli/chunks/{chunk-ZUOVNFXK.js → chunk-HPVYJ6JH.js} +2 -2
  100. package/dist/cli/chunks/{chunk-RKI3IQKQ.js → chunk-I6NZFBT3.js} +3 -3
  101. package/dist/cli/chunks/{chunk-QVH5Y7AP.js → chunk-ISBOHF6Y.js} +1 -1
  102. package/dist/cli/chunks/{chunk-IWFFO6VT.js → chunk-J24AJEDE.js} +2 -2
  103. package/dist/cli/chunks/{chunk-5GFKTJ65.js → chunk-J5HTQHJK.js} +2 -2
  104. package/dist/cli/chunks/{chunk-LY7MFGBD.js → chunk-JDOVO4E4.js} +150 -149
  105. package/dist/cli/chunks/chunk-JQAJUXRE.js +2 -0
  106. package/dist/cli/chunks/{chunk-HXXHMLJ5.js → chunk-JRK5GX56.js} +1 -1
  107. package/dist/cli/chunks/{chunk-36VKMAMN.js → chunk-JRLZ7LZ3.js} +2 -2
  108. package/dist/cli/chunks/{chunk-6PJPQGF4.js → chunk-JTOFLDU7.js} +2 -2
  109. package/dist/cli/chunks/{chunk-CVOQ6ESD.js → chunk-K6EOHGKS.js} +2 -2
  110. package/dist/cli/chunks/{chunk-LU2EDWQK.js → chunk-KKXH25IH.js} +2 -2
  111. package/dist/cli/chunks/{chunk-EYXE2XKP.js → chunk-KNSQWM2E.js} +2 -2
  112. package/dist/cli/chunks/{chunk-IEJ7ZV3M.js → chunk-L5T32SRF.js} +1 -1
  113. package/dist/cli/chunks/{chunk-BEFTQVEW.js → chunk-LKFBW2QM.js} +2 -2
  114. package/dist/cli/chunks/{chunk-C3FXFU2T.js → chunk-LMAI74EP.js} +1 -1
  115. package/dist/cli/chunks/{chunk-P7XSPP5D.js → chunk-LQVS5IWH.js} +2 -2
  116. package/dist/cli/chunks/{chunk-4EKV7PHB.js → chunk-LRGTPUJA.js} +2 -2
  117. package/dist/cli/chunks/{chunk-MT7UNBZ7.js → chunk-LTHV4PIG.js} +2 -2
  118. package/dist/cli/chunks/{chunk-B2YGVSOP.js → chunk-M7QKCHLQ.js} +2 -2
  119. package/dist/cli/chunks/{chunk-H5RQPO3X.js → chunk-N3ASALOL.js} +2 -2
  120. package/dist/cli/chunks/{chunk-MQZ53OR3.js → chunk-NEXBTLN6.js} +2 -2
  121. package/dist/cli/chunks/{chunk-BD7FEUN3.js → chunk-NJEEKYEP.js} +3 -3
  122. package/dist/cli/chunks/{chunk-UOI6ULCH.js → chunk-NWUFTLSF.js} +2 -2
  123. package/dist/cli/chunks/{chunk-RT6O2HW2.js → chunk-O4QB2GFL.js} +2 -2
  124. package/dist/cli/chunks/{chunk-MZMG6CUJ.js → chunk-OA75C4HY.js} +2 -2
  125. package/dist/cli/chunks/{chunk-HYFQUWNB.js → chunk-OVMG6EEF.js} +2 -2
  126. package/dist/cli/chunks/{chunk-FSSR6WBE.js → chunk-OX7MJFLC.js} +2 -2
  127. package/dist/cli/chunks/{chunk-ENK44A6Q.js → chunk-OZJQN7YE.js} +2 -2
  128. package/dist/cli/chunks/{chunk-LXZMP3VX.js → chunk-PFXCRRR6.js} +25 -25
  129. package/dist/cli/chunks/{chunk-WIH522AP.js → chunk-PVJLQ2YZ.js} +1 -1
  130. package/dist/cli/chunks/{chunk-ZUB5YOCM.js → chunk-QDRFLM77.js} +2 -2
  131. package/dist/cli/chunks/{chunk-NHUGHAY6.js → chunk-QH7C4PTX.js} +1 -1
  132. package/dist/cli/chunks/{chunk-VXKWNRGA.js → chunk-QKM4XT2F.js} +2 -2
  133. package/dist/cli/chunks/{chunk-ON2UTP2U.js → chunk-QP7EKLWU.js} +2 -2
  134. package/dist/cli/chunks/{chunk-KUHLTVWC.js → chunk-QPACHVDI.js} +1 -1
  135. package/dist/cli/chunks/{chunk-PCJQCEBA.js → chunk-QQVE65ER.js} +2 -2
  136. package/dist/cli/chunks/{chunk-Q3NSU24F.js → chunk-QYCZYJH7.js} +2 -2
  137. package/dist/cli/chunks/{chunk-AEUEMVJK.js → chunk-R6I5I724.js} +2 -2
  138. package/dist/cli/chunks/{chunk-5D7ZFWDS.js → chunk-RJJIPTVH.js} +2 -2
  139. package/dist/cli/chunks/{chunk-ZWEKAEEV.js → chunk-RM6OC35G.js} +1 -1
  140. package/dist/cli/chunks/{chunk-ZELWDJXT.js → chunk-RTD4U7IW.js} +2 -2
  141. package/dist/cli/chunks/{chunk-O5V7RHVG.js → chunk-SKJQKOFJ.js} +2 -2
  142. package/dist/cli/chunks/{chunk-6RD44SCE.js → chunk-SMBGK7XI.js} +1 -1
  143. package/dist/cli/chunks/{chunk-ND4QTZOL.js → chunk-SPS472C5.js} +2 -2
  144. package/dist/cli/chunks/{chunk-TFK2AYIN.js → chunk-SUNXA2UR.js} +2 -2
  145. package/dist/cli/chunks/{chunk-RDGPXENG.js → chunk-SVP3BP52.js} +2 -2
  146. package/dist/cli/chunks/{chunk-NBLDBVAW.js → chunk-T4WQPE77.js} +1 -1
  147. package/dist/cli/chunks/{chunk-ZS4XVJGV.js → chunk-T53ZN4NO.js} +2 -2
  148. package/dist/cli/chunks/chunk-T6W2EYHC.js +2 -0
  149. package/dist/cli/chunks/{chunk-JZT7BU44.js → chunk-T7YCNOW5.js} +2 -2
  150. package/dist/cli/chunks/{chunk-EADSQN5T.js → chunk-TCQWVVSR.js} +1 -1
  151. package/dist/cli/chunks/{chunk-XYLQZWF6.js → chunk-TGRHO4ES.js} +2 -2
  152. package/dist/cli/chunks/{chunk-QPLSYEWJ.js → chunk-TP7L4EX6.js} +2 -2
  153. package/dist/cli/chunks/{chunk-N5XOXPHZ.js → chunk-TT45RCLN.js} +2 -2
  154. package/dist/cli/chunks/{chunk-OZGIOKEA.js → chunk-TUZNWRYC.js} +1 -1
  155. package/dist/cli/chunks/{chunk-53BXTTRO.js → chunk-U2QTL5T2.js} +3 -3
  156. package/dist/cli/chunks/chunk-U64QORFO.js +2 -0
  157. package/dist/cli/chunks/{chunk-SRPLERER.js → chunk-UHLZKH6B.js} +4 -4
  158. package/dist/cli/chunks/{chunk-HPWWYT67.js → chunk-UIWXKRTK.js} +2 -2
  159. package/dist/cli/chunks/{chunk-XWYELBZS.js → chunk-UNFE4RPV.js} +1 -1
  160. package/dist/cli/chunks/{chunk-FW4DJ4FJ.js → chunk-UQGIC5OX.js} +1 -1
  161. package/dist/cli/chunks/{chunk-GLGKQX2V.js → chunk-VAXTPLO3.js} +2 -2
  162. package/dist/cli/chunks/{chunk-VYDVI6FZ.js → chunk-VCSNNLWL.js} +2 -2
  163. package/dist/cli/chunks/{chunk-J7AQZLIH.js → chunk-VSPNIDQK.js} +4 -4
  164. package/dist/cli/chunks/{chunk-EIGRV3J6.js → chunk-VV2JVYOI.js} +2 -2
  165. package/dist/cli/chunks/{chunk-CBONQM5D.js → chunk-VW7AXJQS.js} +2 -2
  166. package/dist/cli/chunks/{chunk-O6MO5KMR.js → chunk-W7JUD4EZ.js} +2 -2
  167. package/dist/cli/chunks/{chunk-QFETNCNN.js → chunk-WFKE7NZ5.js} +2 -2
  168. package/dist/cli/chunks/{chunk-ROVZSZCS.js → chunk-WVEHKAIH.js} +3 -3
  169. package/dist/cli/chunks/{chunk-YO4ESCB4.js → chunk-XAESN54Q.js} +1 -1
  170. package/dist/cli/chunks/{chunk-RKUAWQOF.js → chunk-XECZYQT5.js} +2 -2
  171. package/dist/cli/chunks/{chunk-RLW25X66.js → chunk-XFT4FYTC.js} +2 -2
  172. package/dist/cli/chunks/{chunk-SM2YJ2AL.js → chunk-YHX74M7C.js} +2 -2
  173. package/dist/cli/chunks/chunk-YIWBJ637.js +2 -0
  174. package/dist/cli/chunks/{chunk-IAENZ2DR.js → chunk-Z5UZOYQS.js} +2 -2
  175. package/dist/cli/chunks/{chunk-G367W7XR.js → chunk-Z6G3QVZ4.js} +12 -12
  176. package/dist/cli/chunks/ci-5LIV2HW5.js +82 -0
  177. package/dist/cli/chunks/{ci-output-RLS32FUY.js → ci-output-UO5BDFU4.js} +2 -2
  178. package/dist/cli/chunks/{circuit-breaker-MRCC7WCM.js → circuit-breaker-UQDPXYRD.js} +2 -2
  179. package/dist/cli/chunks/{claude-flow-setup-LIZCEKDF.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-T7H6R2RC.js → cline-installer-X7VZTSZG.js} +2 -2
  182. package/dist/cli/chunks/{code-XMBLI7OF.js → code-H3BF4L4H.js} +3 -3
  183. package/dist/cli/chunks/{code-index-extractor-QS7BYLEX.js → code-index-extractor-BJGFZGGL.js} +2 -2
  184. package/dist/cli/chunks/{codex-installer-6PGT5FM6.js → codex-installer-KVZWKU6S.js} +2 -2
  185. package/dist/cli/chunks/{completions-2A3WRXY2.js → completions-YMILE6V7.js} +2 -2
  186. package/dist/cli/chunks/{complexity-analyzer-23HOOGJ7.js → complexity-analyzer-J26N2PWG.js} +2 -2
  187. package/dist/cli/chunks/{continuedev-installer-4FSF7B3N.js → continuedev-installer-MAR42OV7.js} +2 -2
  188. package/dist/cli/chunks/{copilot-installer-A5GRQQUU.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-Z4STQ5VB.js → cost-tracker-SXLWXE55.js} +2 -2
  191. package/dist/cli/chunks/{coverage-NUPP6KZZ.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-FVJ7ROPJ.js → cursor-installer-X37VHIKW.js} +2 -2
  194. package/dist/cli/chunks/{daemon-D662EX5N.js → daemon-JN7SOH6F.js} +4 -4
  195. package/dist/cli/chunks/{daemon-7ZZA2MMN.js → daemon-LIW47IDM.js} +4 -4
  196. package/dist/cli/chunks/{dag-attention-scheduler-IB4TQ2KA.js → dag-attention-scheduler-QCHHIZBT.js} +2 -2
  197. package/dist/cli/chunks/{detect-LGLBZN4I.js → detect-WRFCWAX5.js} +2 -2
  198. package/dist/cli/chunks/{dist-node-Z3OL42YE.js → dist-node-6FWT4XZO.js} +2 -2
  199. package/dist/cli/chunks/{domain-handler-L3CLNL7U.js → domain-handler-SNFPNMRT.js} +2 -2
  200. package/dist/cli/chunks/{domain-plugins-GQ3V5X6L.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-UGD6USYH.js → embed-and-insert-pattern-LZFAUNBQ.js} +2 -2
  204. package/dist/cli/chunks/{eval-3B7UIYGY.js → eval-AMUXTMJB.js} +2 -2
  205. package/dist/cli/chunks/{experience-capture-middleware-3RQ4NYY3.js → experience-capture-middleware-3D65TR2C.js} +4 -4
  206. package/dist/cli/chunks/{fast-paths-QOSAEPYD.js → fast-paths-Y7BBMM56.js} +2 -2
  207. package/dist/cli/chunks/{feature-flags-TLF4NKOH.js → feature-flags-JMQQ7JW4.js} +2 -2
  208. package/dist/cli/chunks/{feature-flags-3S5TH6P4.js → feature-flags-VESRRQ6V.js} +2 -2
  209. package/dist/cli/chunks/{file-discovery-AEVMJRNB.js → file-discovery-JJKQQUV6.js} +2 -2
  210. package/dist/cli/chunks/{fleet-E6WTXWFL.js → fleet-WIGHICJF.js} +4 -4
  211. package/dist/cli/chunks/{gnn-wrapper-MCKH3AUU.js → gnn-wrapper-BFNPETTT.js} +2 -2
  212. package/dist/cli/chunks/{heartbeat-handler-U7XENHRR.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-5GW4SAEI.js → hnsw-legacy-bridge-6A7OTAPT.js} +2 -2
  217. package/dist/cli/chunks/{hnswlib-node-7BLZBK5T.js → hnswlib-node-LKV2H47B.js} +2 -2
  218. package/dist/cli/chunks/{hooks-F3O2SB6H.js → hooks-KDSFYQQG.js} +10 -10
  219. package/dist/cli/chunks/hybrid-backend-2B3LCLR4.js +2 -0
  220. package/dist/cli/chunks/{hypergraph-engine-PV4EKXHB.js → hypergraph-engine-GDLPEPUC.js} +2 -2
  221. package/dist/cli/chunks/{hypergraph-handler-VOWO5ZTW.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-ENJ5ONJX.js → init-handler-4GCHPQHD.js} +6 -6
  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-HNNJOOPE.js → kilocode-installer-HJZMT2G5.js} +2 -2
  227. package/dist/cli/chunks/{kiro-installer-UZBIQ3IC.js → kiro-installer-WUPY67HG.js} +2 -2
  228. package/dist/cli/chunks/knowledge-graph-KFMTTUR5.js +2 -0
  229. package/dist/cli/chunks/{learning-YMLCVFUT.js → learning-AXKIS7IG.js} +4 -4
  230. package/dist/cli/chunks/{llm-router-YWTARCCT.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-DKE3F3IP.js → load-RM44POD7.js} +2 -2
  233. package/dist/cli/chunks/load-test-53FWOWNS.js +2 -0
  234. package/dist/cli/chunks/{mcp-5PSGIUCW.js → mcp-5JVQRBOP.js} +2 -2
  235. package/dist/cli/chunks/{memory-3L3O6JMM.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-AEEO7IA4.js → multi-model-executor-WPRKCSCM.js} +2 -2
  239. package/dist/cli/chunks/{opencode-installer-ABBO355U.js → opencode-installer-YAJMRCQO.js} +2 -2
  240. package/dist/cli/chunks/{orchestrator-E36Q7MKE.js → orchestrator-MUGWBUYP.js} +6 -6
  241. package/dist/cli/chunks/pattern-null-store-7DMU5CJ4.js +2 -0
  242. package/dist/cli/chunks/{pattern-usage-recorder-H4XKSID4.js → pattern-usage-recorder-ZQJJ2YNG.js} +2 -2
  243. package/dist/cli/chunks/{pipeline-BGFEHXIN.js → pipeline-F4DXDUDC.js} +2 -2
  244. package/dist/cli/chunks/{platform-GK7ZVDJI.js → platform-HI3A3OWF.js} +2 -2
  245. package/dist/cli/chunks/{plugin-CAH2CKI6.js → plugin-XRITPTR7.js} +2 -2
  246. package/dist/cli/chunks/{prime-radiant-advanced-wasm-M5EYRONA.js → prime-radiant-advanced-wasm-HHNJP7CQ.js} +2 -2
  247. package/dist/cli/chunks/{project-root-BSNZC243.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-JDSSC2SF.js → protocol-handler-ZEVHSEBG.js} +2 -2
  250. package/dist/cli/chunks/{prove-ANPTOZJE.js → prove-C4BLZWBS.js} +2 -2
  251. package/dist/cli/chunks/qe-reasoning-bank-VZHZZPHE.js +2 -0
  252. package/dist/cli/chunks/{quality-SXWGYRQR.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-WSRYAOZM.js → real-embeddings-YWSE3IRT.js} +2 -2
  256. package/dist/cli/chunks/{ref-validation-AZ3LRWEK.js → ref-validation-ZWOTFA3T.js} +2 -2
  257. package/dist/cli/chunks/{roocode-installer-2QKGFIEU.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-UYDC5MMD.js → routing-handler-CFYLGNAR.js} +2 -2
  261. package/dist/cli/chunks/{ruvector-commands-QXADPVEY.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-GD4NBFKT.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-7SXG66IL.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-YKB622PK.js → security-ZU2GW3ZM.js} +3 -3
  271. package/dist/cli/chunks/{shared-rvf-adapter-KMLAV7JK.js → shared-rvf-adapter-5FOVSL3T.js} +2 -2
  272. package/dist/cli/chunks/{shared-rvf-dual-writer-OYY27DFV.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-2DOABVLC.js → standalone-memory-3UXDZ7HI.js} +2 -2
  275. package/dist/cli/chunks/{status-handler-EXRKETV7.js → status-handler-264CHTWS.js} +2 -2
  276. package/dist/cli/chunks/{structural-health-2SKK6DU6.js → structural-health-E2QPUOZE.js} +2 -2
  277. package/dist/cli/chunks/{sync-UW7SX7GO.js → sync-2ACMWM7D.js} +2 -2
  278. package/dist/cli/chunks/{sync-DQ2YUNI6.js → sync-N2L2OST4.js} +2 -2
  279. package/dist/cli/chunks/{task-handler-LYQ6WYUY.js → task-handler-IB5CVOTY.js} +2 -2
  280. package/dist/cli/chunks/{task-handlers-DIJO232S.js → task-handlers-QBMYNJHE.js} +3 -3
  281. package/dist/cli/chunks/{test-WRHZMUCW.js → test-7RGLRDSP.js} +6 -6
  282. package/dist/cli/chunks/{test-scheduling-HI23RXFK.js → test-scheduling-RJABJT2W.js} +3 -3
  283. package/dist/cli/chunks/{token-bootstrap-23SA6SWZ.js → token-bootstrap-JVHMHB72.js} +2 -2
  284. package/dist/cli/chunks/{token-usage-M7RRDPXO.js → token-usage-3ECHQVCY.js} +2 -2
  285. package/dist/cli/chunks/{transformers-4TC35KKS.js → transformers-KJH3IJWI.js} +2 -2
  286. package/dist/cli/chunks/{tree-sitter-wasm-parser-F4LTKAWD.js → tree-sitter-wasm-parser-XN6PFI32.js} +2 -2
  287. package/dist/cli/chunks/{types-NBXV6LXQ.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-4BGOU5RM.js → upgrade-S5NFQZID.js} +2 -2
  292. package/dist/cli/chunks/{validate-EDWAR63H.js → validate-BIBWOLJD.js} +2 -2
  293. package/dist/cli/chunks/{validate-swarm-VI72CPR7.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-Y5XBRQXF.js → web-tree-sitter-OTBQTHAV.js} +2 -2
  296. package/dist/cli/chunks/{windsurf-installer-VEX23WAF.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-3YNL6YGY.js → witness-chain-E7MUBOJW.js} +2 -2
  299. package/dist/cli/chunks/{witness-chain-repair-MJZGZRWT.js → witness-chain-repair-FW4QSN4C.js} +2 -2
  300. package/dist/cli/chunks/{witness-chain-verifier-TTJYXTBE.js → witness-chain-verifier-YMROEBVL.js} +2 -2
  301. package/dist/cli/chunks/{witness-key-manager-EM6YXYOY.js → witness-key-manager-4CGRNDMJ.js} +2 -2
  302. package/dist/cli/chunks/{workflow-2RBDOM7V.js → workflow-4VRSTRAN.js} +4 -4
  303. package/dist/cli/chunks/workflow-orchestrator-2HNW5ZMQ.js +2 -0
  304. package/dist/cli/chunks/{wrappers-5OTAVVOV.js → wrappers-4M4UTGEU.js} +2 -2
  305. package/dist/cli/commands/ci.js +17 -6
  306. package/dist/cli/commands/quality-gate.js +6 -1
  307. package/dist/cli/index.js +7 -2
  308. package/dist/cli/process-store-cleanup.d.ts +7 -0
  309. package/dist/cli/process-store-cleanup.js +27 -0
  310. package/dist/cli/utils/ci-config.d.ts +3 -3
  311. package/dist/cli/utils/ci-config.js +202 -68
  312. package/dist/domains/quality-assessment/quality-evidence.d.ts +3 -1
  313. package/dist/domains/quality-assessment/quality-evidence.js +7 -2
  314. package/dist/domains/test-execution/services/retry-handler.js +32 -13
  315. package/dist/domains/test-execution/services/test-executor.d.ts +3 -3
  316. package/dist/domains/test-execution/services/test-executor.js +66 -22
  317. package/dist/init/fleet-integration.js +3 -2
  318. package/dist/init/init-wizard-steps.js +3 -2
  319. package/dist/init/phases/06-code-intelligence.js +6 -4
  320. package/dist/integrations/ruvector/sona-persistence.d.ts +1 -0
  321. package/dist/integrations/ruvector/sona-persistence.js +74 -20
  322. package/dist/integrations/ruvector/sona-wrapper.d.ts +2 -0
  323. package/dist/integrations/ruvector/sona-wrapper.js +13 -0
  324. package/dist/kernel/memory-backend.js +5 -4
  325. package/dist/kernel/unified-memory.js +3 -2
  326. package/dist/learning/aqe-learning-engine.js +3 -2
  327. package/dist/mcp/bundle.js +440 -439
  328. package/dist/mcp/connection-pool.d.ts +2 -0
  329. package/dist/mcp/connection-pool.js +13 -2
  330. package/dist/mcp/handlers/memory-handlers.d.ts +1 -0
  331. package/dist/mcp/handlers/memory-handlers.js +16 -6
  332. package/dist/mcp/protocol-server.js +29 -8
  333. package/dist/mcp/types.d.ts +2 -0
  334. package/dist/optimization/session-cache.js +13 -11
  335. package/dist/plugins/cache.js +10 -3
  336. package/dist/shared/embeddings/embedding-cache.js +4 -4
  337. package/dist/shared/llm/cache.js +7 -10
  338. package/dist/shared/retry-engine.js +4 -0
  339. package/dist/shared/test-runner-process.d.ts +10 -0
  340. package/dist/shared/test-runner-process.js +210 -0
  341. package/dist/validation/quality-verdict.js +3 -2
  342. package/dist/workers/quality-daemon/priority-queue.js +4 -1
  343. package/package.json +4 -4
  344. package/dist/cli/chunks/adapter-TVQKH65T.js +0 -2
  345. package/dist/cli/chunks/aqe-learning-engine-ULGTVVWE.js +0 -2
  346. package/dist/cli/chunks/base-W42BURDL.js +0 -2
  347. package/dist/cli/chunks/browser-workflow-HKGHFFFT.js +0 -2
  348. package/dist/cli/chunks/chunk-2IMSJ7IO.js +0 -2
  349. package/dist/cli/chunks/chunk-FBZC4IGB.js +0 -2
  350. package/dist/cli/chunks/chunk-MNQN7UZX.js +0 -4
  351. package/dist/cli/chunks/chunk-OXHF3L2T.js +0 -2
  352. package/dist/cli/chunks/chunk-PELENDDQ.js +0 -2
  353. package/dist/cli/chunks/chunk-TW3SR4TS.js +0 -2
  354. package/dist/cli/chunks/chunk-V6RE4YRQ.js +0 -2
  355. package/dist/cli/chunks/chunk-ZQZD55MN.js +0 -3
  356. package/dist/cli/chunks/ci-J3TDK5RA.js +0 -81
  357. package/dist/cli/chunks/client-3BD2DI4N.js +0 -2
  358. package/dist/cli/chunks/core-handlers-C3H2ZCS2.js +0 -2
  359. package/dist/cli/chunks/cross-domain-router-JCQ7SWDP.js +0 -2
  360. package/dist/cli/chunks/domain-transfer-MFCI76IY.js +0 -2
  361. package/dist/cli/chunks/dream-FTP33IJB.js +0 -2
  362. package/dist/cli/chunks/heartbeat-scheduler-HXBJVJL2.js +0 -2
  363. package/dist/cli/chunks/hnsw-adapter-TU6WG2ME.js +0 -2
  364. package/dist/cli/chunks/hnsw-index-MS5KODD7.js +0 -2
  365. package/dist/cli/chunks/hybrid-backend-HT45LBHC.js +0 -2
  366. package/dist/cli/chunks/impact-analyzer-AP4AGTG5.js +0 -2
  367. package/dist/cli/chunks/init-wizard-I5DFZUQL.js +0 -2
  368. package/dist/cli/chunks/kernel-MISPSPPA.js +0 -2
  369. package/dist/cli/chunks/knowledge-graph-L26JESGE.js +0 -2
  370. package/dist/cli/chunks/llm-router-service-MWGC43ZA.js +0 -2
  371. package/dist/cli/chunks/load-test-H5ISNNM5.js +0 -2
  372. package/dist/cli/chunks/memory-backend-HWDNOBKW.js +0 -2
  373. package/dist/cli/chunks/memory-handlers-ZFDVQZM5.js +0 -2
  374. package/dist/cli/chunks/pattern-null-store-GQP6ICWK.js +0 -2
  375. package/dist/cli/chunks/protocol-executor-AD5A4DAI.js +0 -2
  376. package/dist/cli/chunks/qe-reasoning-bank-W3Z2PKTR.js +0 -2
  377. package/dist/cli/chunks/quality-gate-GYNCA4ZY.js +0 -7
  378. package/dist/cli/chunks/queen-coordinator-HQRHLIJX.js +0 -2
  379. package/dist/cli/chunks/router-MTP5LH4H.js +0 -2
  380. package/dist/cli/chunks/routing-feedback-GWETVB4L.js +0 -2
  381. package/dist/cli/chunks/rvf-dual-writer-4UE5S7WP.js +0 -2
  382. package/dist/cli/chunks/rvf-migration-adapter-PHH3HF4Q.js +0 -2
  383. package/dist/cli/chunks/rvf-native-adapter-KTLZBUWV.js +0 -2
  384. package/dist/cli/chunks/safe-db-FWWGAPVE.js +0 -2
  385. package/dist/cli/chunks/schedule-TPA4V4D5.js +0 -2
  386. package/dist/cli/chunks/scheduler-5ZTEPNDD.js +0 -2
  387. package/dist/cli/chunks/sqlite-persistence-HPTT624C.js +0 -2
  388. package/dist/cli/chunks/unified-memory-OVFEPRPS.js +0 -2
  389. package/dist/cli/chunks/unified-memory-hnsw-KKRSCZHR.js +0 -2
  390. package/dist/cli/chunks/unified-persistence-7GLR4RI3.js +0 -2
  391. package/dist/cli/chunks/visual-security-2FUM5GLI.js +0 -2
  392. package/dist/cli/chunks/witness-chain-MH6GA5L6.js +0 -2
  393. package/dist/cli/chunks/workflow-orchestrator-H6G65YKU.js +0 -2
@@ -56,6 +56,7 @@ declare class ConnectionPoolImpl {
56
56
  private readonly config;
57
57
  private healthCheckInterval;
58
58
  private initialized;
59
+ private initializationPromise;
59
60
  private totalRequests;
60
61
  private cacheHits;
61
62
  private acquisitionTimes;
@@ -67,6 +68,7 @@ declare class ConnectionPoolImpl {
67
68
  * Initialize the connection pool with minConnections
68
69
  */
69
70
  initialize(): Promise<void>;
71
+ private initializeOnce;
70
72
  /**
71
73
  * Acquire a connection from the pool (O(1) operation)
72
74
  * Uses semaphore pattern to prevent race conditions
@@ -27,6 +27,7 @@ class ConnectionPoolImpl {
27
27
  config;
28
28
  healthCheckInterval = null;
29
29
  initialized = false;
30
+ initializationPromise = null;
30
31
  // Performance tracking
31
32
  totalRequests = 0;
32
33
  cacheHits = 0;
@@ -45,6 +46,14 @@ class ConnectionPoolImpl {
45
46
  if (this.initialized) {
46
47
  return;
47
48
  }
49
+ if (!this.initializationPromise) {
50
+ this.initializationPromise = this.initializeOnce().finally(() => {
51
+ this.initializationPromise = null;
52
+ });
53
+ }
54
+ return this.initializationPromise;
55
+ }
56
+ async initializeOnce() {
48
57
  // Pre-warm minimum connections
49
58
  const warmupPromises = [];
50
59
  for (let i = 0; i < this.config.minConnections; i++) {
@@ -115,7 +124,7 @@ class ConnectionPoolImpl {
115
124
  // O(1) acquisition from idle set
116
125
  for (const connId of this.idleConnections) {
117
126
  const conn = this.connections.get(connId);
118
- if (conn && conn.isHealthy) {
127
+ if (conn && conn.isHealthy && !conn.inUse) {
119
128
  // Mark as in use and remove from idle set
120
129
  conn.inUse = true;
121
130
  conn.lastUsedAt = Date.now();
@@ -134,6 +143,7 @@ class ConnectionPoolImpl {
134
143
  const newConn = this.createConnectionSync();
135
144
  if (newConn) {
136
145
  newConn.inUse = true;
146
+ this.idleConnections.delete(newConn.id);
137
147
  this.cacheHits++;
138
148
  const elapsed = performance.now() - startTime;
139
149
  this.trackAcquisitionTime(elapsed);
@@ -224,7 +234,7 @@ class ConnectionPoolImpl {
224
234
  const pruned = [];
225
235
  for (const [id, conn] of this.connections.entries()) {
226
236
  // Prune if unhealthy or idle for too long
227
- if (!conn.isHealthy || (now - conn.lastUsedAt > this.config.idleTimeoutMs)) {
237
+ if (!conn.inUse && (!conn.isHealthy || (now - conn.lastUsedAt > this.config.idleTimeoutMs))) {
228
238
  pruned.push(id);
229
239
  }
230
240
  }
@@ -252,6 +262,7 @@ class ConnectionPoolImpl {
252
262
  * Shutdown the pool
253
263
  */
254
264
  async shutdown() {
265
+ await this.initializationPromise;
255
266
  if (this.healthCheckInterval) {
256
267
  clearInterval(this.healthCheckInterval);
257
268
  this.healthCheckInterval = null;
@@ -21,6 +21,7 @@ interface MemoryQueryResult {
21
21
  score?: number;
22
22
  timestamp?: string;
23
23
  }>;
24
+ /** Matching candidates fetched, including the look-ahead; not a corpus-wide count. */
24
25
  total: number;
25
26
  hasMore: boolean;
26
27
  searchType: 'pattern' | 'semantic';
@@ -5,6 +5,7 @@
5
5
  * ADR-058: Integrated with MemoryWriteGate for contradiction detection
6
6
  * and ComplianceReporter for violation tracking.
7
7
  */
8
+ import { randomUUID } from 'node:crypto';
8
9
  import { getFleetState, isFleetInitialized } from './core-handlers.js';
9
10
  // ADR-058: Governance integration for memory writes
10
11
  import { toErrorMessage } from '../../shared/error-utils.js';
@@ -199,8 +200,15 @@ export async function handleMemoryQuery(params) {
199
200
  }
200
201
  try {
201
202
  const namespace = params.namespace || 'default';
202
- const limit = params.limit || 100;
203
- const offset = params.offset || 0;
203
+ const limit = params.limit ?? 100;
204
+ const offset = params.offset ?? 0;
205
+ if (!Number.isSafeInteger(limit) || limit < 0 ||
206
+ !Number.isSafeInteger(offset) || offset < 0 ||
207
+ !Number.isSafeInteger(limit + offset + 1)) {
208
+ return { success: false, error: 'Memory query limit and offset must be non-negative safe integers with a safe combined page size.' };
209
+ }
210
+ // One extra candidate proves whether another page exists without scanning all memory.
211
+ const fetchLimit = limit + offset + 1;
204
212
  // Determine if we should use semantic (HNSW vector) search
205
213
  const useSemantic = params.semantic === true ||
206
214
  (params.semantic !== false && params.pattern && isNaturalLanguageQuery(params.pattern));
@@ -209,8 +217,9 @@ export async function handleMemoryQuery(params) {
209
217
  try {
210
218
  // Generate real 384-dim transformer embedding for accurate cosine similarity search
211
219
  const embedding = await computeRealEmbedding(params.pattern);
212
- const keyPrefix = namespace !== 'default' ? `${namespace}:` : undefined;
213
- const filtered = await memory.vectorSearch(embedding, limit + offset, keyPrefix);
220
+ // Semantic queries have the same namespace boundary as pattern queries.
221
+ const keyPrefix = `${namespace}:`;
222
+ const filtered = await memory.vectorSearch(embedding, fetchLimit, keyPrefix);
214
223
  const paginatedResults = filtered.slice(offset, offset + limit);
215
224
  const entries = paginatedResults.map(r => {
216
225
  const parts = r.key.split(':');
@@ -240,7 +249,7 @@ export async function handleMemoryQuery(params) {
240
249
  const pattern = params.pattern
241
250
  ? `${namespace}:${params.pattern}`
242
251
  : `${namespace}:*`;
243
- const keys = await memory.search(pattern, limit + offset);
252
+ const keys = await memory.search(pattern, fetchLimit);
244
253
  // Apply pagination
245
254
  const paginatedKeys = keys.slice(offset, offset + limit);
246
255
  const entries = paginatedKeys.map((key) => {
@@ -353,7 +362,8 @@ export async function handleMemoryShare(params) {
353
362
  }
354
363
  try {
355
364
  // Store shared knowledge for each target agent
356
- const sharedKey = `shared:${params.knowledgeDomain}:${Date.now()}`;
365
+ // Concurrent agents can publish several findings within the same millisecond.
366
+ const sharedKey = `shared:${params.knowledgeDomain}:${Date.now()}:${randomUUID()}`;
357
367
  const sharedContent = {
358
368
  source: params.sourceAgentId,
359
369
  targets: params.targetAgentIds,
@@ -417,6 +417,7 @@ export class MCPProtocolServer {
417
417
  const startTime = performance.now();
418
418
  let success = false;
419
419
  let cacheable;
420
+ let invalidatesCache = false;
420
421
  // Emit AG-UI progress event for tool start
421
422
  const stepId = `${name}-${Date.now()}`;
422
423
  this.eventAdapter.adapt({
@@ -461,14 +462,13 @@ export class MCPProtocolServer {
461
462
  // IMP-00: Execute pre-tool-call middleware
462
463
  const processedCtx = await this.middlewareChain.executePreHooks(ctx);
463
464
  // Issue #473: Session-cache lookup for read-only tools.
464
- // Concurrency-safe tools are idempotent in practice — same input yields
465
- // the same output, so we can short-circuit repeated calls with an O(1)
466
- // fingerprint lookup. Tools without isConcurrencySafe (writes, scans,
467
- // executions) always re-run.
468
- // Explicit quality gates depend on current measured evidence and its age,
469
- // not just arguments. A cached approval can outlive or contradict evidence.
465
+ // Concurrency safety does not imply stable output: status and metrics
466
+ // can change in the background without another MCP mutation. Live reads
467
+ // opt out of reuse while retaining their concurrency-safe scheduling hint.
468
+ // Explicit quality gates also depend on current measured evidence/age.
470
469
  const measuredQualityGate = name === 'quality_assess' && processedCtx.params?.runGate === true;
471
- cacheable = tool.definition.isConcurrencySafe === true && !measuredQualityGate;
470
+ invalidatesCache = tool.definition.isConcurrencySafe !== true || measuredQualityGate;
471
+ cacheable = !invalidatesCache && tool.definition.isCacheable !== false;
472
472
  let cacheFingerprint = null;
473
473
  let cacheGeneration = null;
474
474
  if (cacheable && process.env.AQE_SESSION_CACHE !== 'off') {
@@ -592,7 +592,7 @@ export class MCPProtocolServer {
592
592
  // Tool names and success flags do not prove whether state changed.
593
593
  // Unknown cross-domain effects require a global flush, including after
594
594
  // a handler throws or reports failure following a partial effect.
595
- if (cacheable === false && process.env.AQE_SESSION_CACHE !== 'off') {
595
+ if (invalidatesCache && process.env.AQE_SESSION_CACHE !== 'off') {
596
596
  try {
597
597
  const { getSessionCache } = await import('../optimization/session-cache.js');
598
598
  getSessionCache().invalidateAll();
@@ -631,6 +631,7 @@ export class MCPProtocolServer {
631
631
  description: 'Get fleet status: agents, tasks, health, and learning stats. Example: fleet_status({ verbose: true })',
632
632
  category: 'core',
633
633
  isConcurrencySafe: true,
634
+ isCacheable: false,
634
635
  parameters: [
635
636
  { name: 'verbose', type: 'boolean', description: 'Include detailed information', default: false },
636
637
  ],
@@ -643,6 +644,7 @@ export class MCPProtocolServer {
643
644
  description: 'Check fleet and per-domain health status with load metrics. Example: fleet_health({ domain: "test-generation" })',
644
645
  category: 'core',
645
646
  isConcurrencySafe: true,
647
+ isCacheable: false,
646
648
  parameters: [
647
649
  { name: 'domain', type: 'string', description: 'Specific domain to check' },
648
650
  ],
@@ -670,6 +672,7 @@ export class MCPProtocolServer {
670
672
  description: 'List tasks with optional status/limit filtering. Example: task_list({ status: "running", limit: 10 })',
671
673
  category: 'task',
672
674
  isConcurrencySafe: true,
675
+ isCacheable: false,
673
676
  parameters: [
674
677
  { name: 'status', type: 'string', description: 'Filter by status' },
675
678
  { name: 'limit', type: 'number', description: 'Maximum results', default: 50 },
@@ -683,6 +686,7 @@ export class MCPProtocolServer {
683
686
  description: 'Get detailed status, progress, and result of a specific task. Example: task_status({ taskId: "abc-123" })',
684
687
  category: 'task',
685
688
  isConcurrencySafe: true,
689
+ isCacheable: false,
686
690
  parameters: [
687
691
  { name: 'taskId', type: 'string', description: 'Task ID', required: true },
688
692
  ],
@@ -719,6 +723,7 @@ export class MCPProtocolServer {
719
723
  description: 'List all active agents, optionally filtered by domain. Example: agent_list({ domain: "test-generation" })',
720
724
  category: 'agent',
721
725
  isConcurrencySafe: true,
726
+ isCacheable: false,
722
727
  parameters: [
723
728
  { name: 'domain', type: 'string', description: 'Filter by domain' },
724
729
  ],
@@ -743,6 +748,7 @@ export class MCPProtocolServer {
743
748
  description: 'Get CPU, memory, and task performance metrics for agents. Example: agent_metrics({ agentId: "agent-1" })',
744
749
  category: 'agent',
745
750
  isConcurrencySafe: true,
751
+ isCacheable: false,
746
752
  parameters: [
747
753
  { name: 'agentId', type: 'string', description: 'Specific agent ID', required: true },
748
754
  ],
@@ -755,6 +761,7 @@ export class MCPProtocolServer {
755
761
  description: 'Get detailed status and current task of a specific agent. Example: agent_status({ agentId: "agent-1" })',
756
762
  category: 'agent',
757
763
  isConcurrencySafe: true,
764
+ isCacheable: false,
758
765
  parameters: [
759
766
  { name: 'agentId', type: 'string', description: 'Agent ID', required: true },
760
767
  ],
@@ -768,6 +775,7 @@ export class MCPProtocolServer {
768
775
  description: 'List all active domain teams and their agent counts. Example: team_list({ domain: "coverage-analysis" })',
769
776
  category: 'agent',
770
777
  isConcurrencySafe: true,
778
+ isCacheable: false,
771
779
  parameters: [
772
780
  { name: 'domain', type: 'string', description: 'Filter by domain' },
773
781
  ],
@@ -780,6 +788,7 @@ export class MCPProtocolServer {
780
788
  description: 'Get team health, agent utilization, and consensus status for a domain. Example: team_health({ domain: "security-compliance" })',
781
789
  category: 'agent',
782
790
  isConcurrencySafe: true,
791
+ isCacheable: false,
783
792
  parameters: [
784
793
  { name: 'domain', type: 'string', description: 'Domain to check', required: true },
785
794
  ],
@@ -1024,6 +1033,8 @@ export class MCPProtocolServer {
1024
1033
  { name: 'pattern', type: 'string', description: 'Key pattern (glob) or natural language query (for semantic search)' },
1025
1034
  { name: 'namespace', type: 'string', description: 'Memory namespace' },
1026
1035
  { name: 'semantic', type: 'boolean', description: 'Use HNSW vector search instead of pattern matching. Auto-detected when pattern contains spaces and no wildcards.' },
1036
+ { name: 'limit', type: 'number', description: 'Maximum entries in the page (non-negative safe integer)', default: 100 },
1037
+ { name: 'offset', type: 'number', description: 'Number of entries to skip (non-negative safe integer)', default: 0 },
1027
1038
  ],
1028
1039
  },
1029
1040
  handler: (params) => handleMemoryQuery(params),
@@ -1046,6 +1057,7 @@ export class MCPProtocolServer {
1046
1057
  description: 'Get memory usage statistics: entry counts, namespaces, and storage size. Example: memory_usage({})',
1047
1058
  category: 'memory',
1048
1059
  isConcurrencySafe: true,
1060
+ isCacheable: false,
1049
1061
  parameters: [],
1050
1062
  },
1051
1063
  handler: () => handleMemoryUsage(),
@@ -1089,6 +1101,7 @@ export class MCPProtocolServer {
1089
1101
  description: 'Get model routing statistics: tier distribution, cost savings, and routing log. Example: routing_metrics({ includeLog: true, logLimit: 20 })',
1090
1102
  category: 'routing',
1091
1103
  isConcurrencySafe: true,
1104
+ isCacheable: false,
1092
1105
  parameters: [
1093
1106
  { name: 'includeLog', type: 'boolean', description: 'Include routing log entries', default: false },
1094
1107
  { name: 'logLimit', type: 'number', description: 'Max log entries to return', default: 100 },
@@ -1102,6 +1115,7 @@ export class MCPProtocolServer {
1102
1115
  description: 'Get economic routing report: tier efficiency, budget status, cost-per-quality analysis, and savings opportunities. Example: routing_economics({ taskComplexity: 0.5 })',
1103
1116
  category: 'routing',
1104
1117
  isConcurrencySafe: true,
1118
+ isCacheable: false,
1105
1119
  parameters: [
1106
1120
  { name: 'taskComplexity', type: 'number', description: 'Task complexity score 0-1 for tier scoring (default: 0.5)', default: 0.5 },
1107
1121
  ],
@@ -1115,6 +1129,7 @@ export class MCPProtocolServer {
1115
1129
  description: 'Get infrastructure self-healing status: detected failures, recovery stats, and failing services. Example: infra_healing_status({ verbose: true })',
1116
1130
  category: 'infra-healing',
1117
1131
  isConcurrencySafe: true,
1132
+ isCacheable: false,
1118
1133
  parameters: [
1119
1134
  { name: 'verbose', type: 'boolean', description: 'Include detailed observation data', default: false },
1120
1135
  ],
@@ -1215,6 +1230,7 @@ export class MCPProtocolServer {
1215
1230
  description: 'Get cross-phase memory statistics (total signals, by loop, by namespace)',
1216
1231
  category: 'cross-phase',
1217
1232
  isConcurrencySafe: true,
1233
+ isCacheable: false,
1218
1234
  parameters: [],
1219
1235
  },
1220
1236
  handler: () => handleCrossPhaseStats(),
@@ -1307,6 +1323,7 @@ export class MCPProtocolServer {
1307
1323
  description: 'List all loaded YAML pipelines. Example: pipeline_list({})',
1308
1324
  category: 'coordination',
1309
1325
  isConcurrencySafe: true,
1326
+ isCacheable: false,
1310
1327
  parameters: [],
1311
1328
  },
1312
1329
  handler: (params) => handlePipelineList(params),
@@ -1346,6 +1363,7 @@ export class MCPProtocolServer {
1346
1363
  description: 'Get session operation cache statistics: hit rate, cache size, tokens saved via O(1) fingerprint reuse. Example: session_cache_stats({})',
1347
1364
  category: 'learning',
1348
1365
  isConcurrencySafe: true,
1366
+ isCacheable: false,
1349
1367
  parameters: [],
1350
1368
  },
1351
1369
  handler: async () => {
@@ -1380,6 +1398,7 @@ export class MCPProtocolServer {
1380
1398
  description: 'Check AQE server health: returns status, loaded domains, memory stats, HNSW index status, and pattern count. Example: aqe_health({})',
1381
1399
  category: 'core',
1382
1400
  isConcurrencySafe: true,
1401
+ isCacheable: false,
1383
1402
  parameters: [],
1384
1403
  },
1385
1404
  handler: () => handleAQEHealth(),
@@ -1391,6 +1410,7 @@ export class MCPProtocolServer {
1391
1410
  description: 'Get RVF migration status: current stage, metrics, consistency, and gate evaluation. Example: migration_status({})',
1392
1411
  category: 'persistence',
1393
1412
  isConcurrencySafe: true,
1413
+ isCacheable: false,
1394
1414
  parameters: [],
1395
1415
  },
1396
1416
  handler: () => handleMigrationStatus(),
@@ -1401,6 +1421,7 @@ export class MCPProtocolServer {
1401
1421
  description: 'Run a consistency check comparing SQLite and RVF search results. Samples random patterns and reports divergences. Example: migration_check({})',
1402
1422
  category: 'persistence',
1403
1423
  isConcurrencySafe: true,
1424
+ isCacheable: false,
1404
1425
  parameters: [],
1405
1426
  },
1406
1427
  handler: () => handleMigrationCheck(),
@@ -42,6 +42,8 @@ export interface ToolDefinition {
42
42
  domain?: DomainName;
43
43
  lazyLoad?: boolean;
44
44
  isConcurrencySafe?: boolean;
45
+ /** False for live reads whose results must not be reused by the session cache. */
46
+ isCacheable?: boolean;
45
47
  annotations?: ToolAnnotations;
46
48
  }
47
49
  /**
@@ -40,17 +40,19 @@ export const DEFAULT_SESSION_CACHE_CONFIG = {
40
40
  * Ensures identical logical objects always produce the same fingerprint.
41
41
  */
42
42
  function canonicalStringify(value) {
43
- if (value === null || value === undefined)
44
- return JSON.stringify(value);
45
- if (typeof value !== 'object')
46
- return JSON.stringify(value);
47
- if (Array.isArray(value)) {
48
- return '[' + value.map(v => canonicalStringify(v)).join(',') + ']';
43
+ // Honor JSON's array holes, undefined fields and toJSON (for example Date)
44
+ // before ordering keys. Hand-built fragments can conflate distinct inputs.
45
+ const normalized = JSON.parse(JSON.stringify(value));
46
+ function encode(item) {
47
+ if (item === null || typeof item !== 'object')
48
+ return JSON.stringify(item);
49
+ if (Array.isArray(item))
50
+ return '[' + item.map(encode).join(',') + ']';
51
+ const obj = item;
52
+ return '{' + Object.keys(obj).sort()
53
+ .map(key => JSON.stringify(key) + ':' + encode(obj[key])).join(',') + '}';
49
54
  }
50
- const obj = value;
51
- const sortedKeys = Object.keys(obj).sort();
52
- const pairs = sortedKeys.map(k => JSON.stringify(k) + ':' + canonicalStringify(obj[k]));
53
- return '{' + pairs.join(',') + '}';
55
+ return encode(normalized);
54
56
  }
55
57
  // ============================================================================
56
58
  // Implementation
@@ -114,7 +116,7 @@ export class SessionOperationCache {
114
116
  if (!this.config.enabled)
115
117
  return;
116
118
  // Evict oldest if at capacity
117
- if (this.cache.size >= this.config.maxEntries) {
119
+ if (!this.cache.has(fingerprint) && this.cache.size >= this.config.maxEntries) {
118
120
  this.evictOldest();
119
121
  }
120
122
  const entry = {
@@ -51,9 +51,16 @@ export class PluginCache {
51
51
  }
52
52
  // Copy source to cache
53
53
  fs.mkdirSync(dir, { recursive: true });
54
- this.copyDir(sourceDir, dir);
55
- // Write the manifest (ensure it's present even if source didn't have it at root)
56
- fs.writeFileSync(path.join(dir, 'qe-plugin.json'), JSON.stringify(manifest, null, 2));
54
+ try {
55
+ this.copyDir(sourceDir, dir);
56
+ // Write the manifest (ensure it's present even if source didn't have it at root)
57
+ fs.writeFileSync(path.join(dir, 'qe-plugin.json'), JSON.stringify(manifest, null, 2));
58
+ }
59
+ catch (error) {
60
+ // A partial directory must not satisfy the immutable-cache fast path on retry.
61
+ fs.rmSync(dir, { recursive: true, force: true });
62
+ throw error;
63
+ }
57
64
  // Cleanup old versions
58
65
  this.pruneOldVersions(manifest.name);
59
66
  return dir;
@@ -36,7 +36,7 @@ export class EmbeddingCache {
36
36
  // Move to end (LRU update)
37
37
  this.cache.delete(key);
38
38
  this.cache.set(key, entry);
39
- return entry.embedding;
39
+ return [...entry.embedding];
40
40
  }
41
41
  this.misses++;
42
42
  return null;
@@ -54,7 +54,7 @@ export class EmbeddingCache {
54
54
  }
55
55
  }
56
56
  const entry = {
57
- embedding,
57
+ embedding: [...embedding],
58
58
  timestamp: Date.now(),
59
59
  model,
60
60
  };
@@ -118,7 +118,7 @@ export class EmbeddingCache {
118
118
  export() {
119
119
  return Array.from(this.cache.entries()).map(([key, entry]) => ({
120
120
  key,
121
- entry,
121
+ entry: { ...entry, embedding: [...entry.embedding] },
122
122
  }));
123
123
  }
124
124
  /**
@@ -128,7 +128,7 @@ export class EmbeddingCache {
128
128
  this.cache.clear();
129
129
  for (const { key, entry } of data) {
130
130
  if (this.cache.size < this.maxSize) {
131
- this.cache.set(key, entry);
131
+ this.cache.set(key, { ...entry, embedding: [...entry.embedding] });
132
132
  }
133
133
  }
134
134
  }
@@ -5,6 +5,7 @@
5
5
  * Provides efficient caching of LLM responses to reduce costs and latency
6
6
  * for repeated queries. Uses LRU (Least Recently Used) eviction policy.
7
7
  */
8
+ import { createHash } from 'node:crypto';
8
9
  /**
9
10
  * Default cache configuration
10
11
  */
@@ -41,15 +42,9 @@ export class LLMCache {
41
42
  options?.systemPrompt ?? '',
42
43
  input,
43
44
  ];
44
- // Simple hash function
45
- const str = parts.join('|');
46
- let hash = 0;
47
- for (let i = 0; i < str.length; i++) {
48
- const char = str.charCodeAt(i);
49
- hash = ((hash << 5) - hash) + char;
50
- hash = hash & hash;
51
- }
52
- return `${type}:${Math.abs(hash).toString(36)}`;
45
+ // Encode field boundaries before hashing: prompt text may contain delimiters.
46
+ const hash = createHash('sha256').update(JSON.stringify(parts)).digest('hex');
47
+ return `${type}:${hash}`;
53
48
  }
54
49
  /**
55
50
  * Get a cached value
@@ -182,7 +177,9 @@ export class LLMCache {
182
177
  entry.createdAt = new Date(entry.createdAt);
183
178
  entry.lastAccessedAt = new Date(entry.lastAccessedAt);
184
179
  this.cache.set(key, entry);
185
- this.accessOrder.push(key);
180
+ if (this.config.enableLRU) {
181
+ this.updateAccessOrder(key);
182
+ }
186
183
  }
187
184
  // Evict if over capacity
188
185
  while (this.cache.size > this.config.maxSize) {
@@ -142,6 +142,10 @@ function delay(ms, signal) {
142
142
  * promise rejects with an `AbortError`.
143
143
  */
144
144
  export async function withRetry(fn, options) {
145
+ // Disabling retries must not bypass the caller's cancellation boundary.
146
+ if (options?.abortSignal?.aborted) {
147
+ throw options.abortSignal.reason ?? new DOMException('The operation was aborted.', 'AbortError');
148
+ }
145
149
  // Kill switch: bypass retry entirely when disabled
146
150
  if (process.env.AQE_RETRY_DISABLED === 'true') {
147
151
  const result = await fn();
@@ -0,0 +1,10 @@
1
+ import { type ChildProcess } from 'node:child_process';
2
+ /** Keep detached runners subject to the CLI's synchronous exit handling. */
3
+ export declare function trackTestRunnerExit(proc: ChildProcess): () => void;
4
+ /**
5
+ * Stop a test runner spawned in its own POSIX process group. The returned
6
+ * promise waits for the group to stop before report files may be removed.
7
+ * Windows uses taskkill's tree operation while the root PID still exists.
8
+ */
9
+ export declare function terminateTestRunner(proc: ChildProcess): Promise<void>;
10
+ //# sourceMappingURL=test-runner-process.d.ts.map