agentic-qe 3.15.10 → 3.15.12

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 (536) hide show
  1. package/.claude/hooks/aqe-hook.cjs +38 -2
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +263 -0
  4. package/README.md +8 -0
  5. package/assets/skills/skills-manifest.json +1 -1
  6. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  7. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  8. package/dist/adapters/trajectory-adapter.js +1 -1
  9. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  10. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  11. package/dist/agents/overlay-loader.js +26 -21
  12. package/dist/cli/bundle.js +6 -6
  13. package/dist/cli/chunks/adapter-HL7MOCQN.js +2 -0
  14. package/dist/cli/chunks/{agent-booster-wasm-H7ANGXW4.js → agent-booster-wasm-5VZCKTIJ.js} +2 -2
  15. package/dist/cli/chunks/{agent-handler-SVXSHEET.js → agent-handler-K3C6CQCD.js} +2 -2
  16. package/dist/cli/chunks/{agent-memory-branch-WKQH36XL.js → agent-memory-branch-NVFQ25WS.js} +2 -2
  17. package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +2 -0
  18. package/dist/cli/chunks/{arena-EKOOFVST.js → arena-QGWIJADQ.js} +2 -2
  19. package/dist/cli/chunks/{arena-OPS36NFZ.js → arena-TSZVDSXS.js} +4 -4
  20. package/dist/cli/chunks/{audit-AO5NDZRI.js → audit-KIEE2SHJ.js} +3 -3
  21. package/dist/cli/chunks/base-WIM7G3HC.js +2 -0
  22. package/dist/cli/chunks/{better-sqlite3-TFLVEMMY.js → better-sqlite3-BNB32NW3.js} +2 -2
  23. package/dist/cli/chunks/{brain-handler-ADBBJPYW.js → brain-handler-MPC5SPYI.js} +3 -3
  24. package/dist/cli/chunks/{branch-enumerator-HGHUYYL5.js → branch-enumerator-LZ7UXKAY.js} +2 -2
  25. package/dist/cli/chunks/{browser-5LU6P4SZ.js → browser-VDHAW4RK.js} +2 -2
  26. package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +2 -0
  27. package/dist/cli/chunks/{chunk-5LPYV3TK.js → chunk-23PQF7NN.js} +1 -1
  28. package/dist/cli/chunks/{chunk-2ZMF4NCF.js → chunk-26672ISV.js} +2 -2
  29. package/dist/cli/chunks/{chunk-U53ZB4IX.js → chunk-2ASQRBK2.js} +2 -2
  30. package/dist/cli/chunks/{chunk-7PJIR4ST.js → chunk-2E2QO44T.js} +2 -2
  31. package/dist/cli/chunks/{chunk-2T7RRL6G.js → chunk-2IVE5AR3.js} +1 -1
  32. package/dist/cli/chunks/{chunk-B6LTH6YV.js → chunk-2JYUA27M.js} +1 -1
  33. package/dist/cli/chunks/{chunk-PFG6VQ5Z.js → chunk-2PPSS4JD.js} +2 -2
  34. package/dist/cli/chunks/{chunk-NZYLNXT6.js → chunk-32UTHIY5.js} +5 -5
  35. package/dist/cli/chunks/{chunk-5E6GHSTY.js → chunk-33I2ZP6E.js} +2 -2
  36. package/dist/cli/chunks/{chunk-XLZYRTNO.js → chunk-35MIUSXQ.js} +2 -2
  37. package/dist/cli/chunks/{chunk-7LFZ4CHM.js → chunk-35NW676P.js} +2 -2
  38. package/dist/cli/chunks/{chunk-4G63WT4F.js → chunk-3EWQN37E.js} +2 -2
  39. package/dist/cli/chunks/{chunk-GZLZCZ42.js → chunk-3IU4LDZR.js} +2 -2
  40. package/dist/cli/chunks/{chunk-CESIR27V.js → chunk-47RMGDG4.js} +2 -2
  41. package/dist/cli/chunks/chunk-4A76VPU4.js +3 -0
  42. package/dist/cli/chunks/{chunk-DT7SIJOA.js → chunk-4CB3QPZM.js} +2 -2
  43. package/dist/cli/chunks/{chunk-ERQKYIP7.js → chunk-4HWUECVD.js} +5 -5
  44. package/dist/cli/chunks/{chunk-MA7JIQ6U.js → chunk-4KUOYDY2.js} +5 -5
  45. package/dist/cli/chunks/{chunk-VWNFAW2M.js → chunk-4LWMAAWK.js} +2 -2
  46. package/dist/cli/chunks/{chunk-IKISCIGH.js → chunk-4PU5GTZW.js} +2 -2
  47. package/dist/cli/chunks/{chunk-ZXPY654C.js → chunk-4SA7M34P.js} +1 -1
  48. package/dist/cli/chunks/{chunk-NGKNYIQZ.js → chunk-4Y6OEBJZ.js} +1 -1
  49. package/dist/cli/chunks/{chunk-KOBVYY6H.js → chunk-5A66EGEW.js} +2 -2
  50. package/dist/cli/chunks/{chunk-Z2O2YJAF.js → chunk-5ADXFUMO.js} +2 -2
  51. package/dist/cli/chunks/{chunk-YKMU4LBV.js → chunk-5S4UIDFK.js} +1 -1
  52. package/dist/cli/chunks/{chunk-Z7IYW5U7.js → chunk-5TAEW5OV.js} +1 -1
  53. package/dist/cli/chunks/chunk-5Z23ZMXZ.js +742 -0
  54. package/dist/cli/chunks/{chunk-6TB6YOCZ.js → chunk-65TH6RPD.js} +1 -1
  55. package/dist/cli/chunks/{chunk-3Y7SPD72.js → chunk-66PXR3NI.js} +2 -2
  56. package/dist/cli/chunks/{chunk-3P34JFQH.js → chunk-6E6HB4N4.js} +14 -14
  57. package/dist/cli/chunks/{chunk-6PX4OXQO.js → chunk-6QRI3JVE.js} +2 -2
  58. package/dist/cli/chunks/{chunk-WBM6N6IM.js → chunk-7DNR4KKR.js} +1 -1
  59. package/dist/cli/chunks/{chunk-6XCMKIZN.js → chunk-7JFDLL2F.js} +1 -1
  60. package/dist/cli/chunks/chunk-7OEFBWAG.js +5 -0
  61. package/dist/cli/chunks/{chunk-Y76IAYQD.js → chunk-7QEUHNKO.js} +1 -1
  62. package/dist/cli/chunks/{chunk-WQ4PYWSW.js → chunk-7TA5MUPW.js} +1 -1
  63. package/dist/cli/chunks/{chunk-2XGVTYVX.js → chunk-A2JCRXTK.js} +2 -2
  64. package/dist/cli/chunks/{chunk-ESUO3GTJ.js → chunk-A5Y7DAVQ.js} +2 -2
  65. package/dist/cli/chunks/{chunk-ATHWDAXB.js → chunk-ADUAJIAU.js} +2 -2
  66. package/dist/cli/chunks/{chunk-IU2IV4NE.js → chunk-AJEXPFAB.js} +1 -1
  67. package/dist/cli/chunks/{chunk-YK7JN5N7.js → chunk-BC4T6SCV.js} +4 -4
  68. package/dist/cli/chunks/{chunk-KSIWGGJI.js → chunk-BMG2JLSQ.js} +2 -2
  69. package/dist/cli/chunks/chunk-BOSMELJX.js +180 -0
  70. package/dist/cli/chunks/{chunk-7OZVZIBE.js → chunk-BYRCB5JT.js} +2 -2
  71. package/dist/cli/chunks/{chunk-FAUCT5KR.js → chunk-C3YOVASQ.js} +6 -5
  72. package/dist/cli/chunks/{chunk-DMFTELBS.js → chunk-C74M4WUI.js} +2 -2
  73. package/dist/cli/chunks/{chunk-2SXBBUM6.js → chunk-CA5UNWQF.js} +2 -2
  74. package/dist/cli/chunks/{chunk-UCJMVXO4.js → chunk-CDA5Z74H.js} +2 -2
  75. package/dist/cli/chunks/{chunk-NVYIZCSR.js → chunk-CPIBIR3X.js} +2 -2
  76. package/dist/cli/chunks/{chunk-YK3BVZY6.js → chunk-CU36D7TN.js} +2 -2
  77. package/dist/cli/chunks/{chunk-H32EPIR2.js → chunk-DAUEK66C.js} +1 -1
  78. package/dist/cli/chunks/{chunk-6KIL6CMD.js → chunk-DRCBRUGN.js} +2 -2
  79. package/dist/cli/chunks/{chunk-EWFECZ2U.js → chunk-DZGPUGUG.js} +2 -2
  80. package/dist/cli/chunks/{chunk-YDAQK5UF.js → chunk-EF6OERRR.js} +1 -1
  81. package/dist/cli/chunks/{chunk-KG336OV3.js → chunk-EN7GRVEQ.js} +2 -2
  82. package/dist/cli/chunks/{chunk-DBMNJSBV.js → chunk-ENGL7FIJ.js} +1 -1
  83. package/dist/cli/chunks/{chunk-FKL3R5JQ.js → chunk-FAGKBOX2.js} +2 -2
  84. package/dist/cli/chunks/{chunk-NAXGWDVM.js → chunk-FNUFTWEO.js} +3 -3
  85. package/dist/cli/chunks/{chunk-RWWOHCMG.js → chunk-FZJCBSN4.js} +2 -2
  86. package/dist/cli/chunks/{chunk-ABFFWZPC.js → chunk-G24SWTAX.js} +151 -149
  87. package/dist/cli/chunks/{chunk-ODJNUMV3.js → chunk-G3AABG4Q.js} +2 -2
  88. package/dist/cli/chunks/{chunk-FBXTQNRH.js → chunk-GJKZ7UQO.js} +2 -2
  89. package/dist/cli/chunks/{chunk-DEF34AFL.js → chunk-GKFV6CUD.js} +2 -2
  90. package/dist/cli/chunks/{chunk-SY2IB442.js → chunk-HLGFHHWV.js} +2 -2
  91. package/dist/cli/chunks/{chunk-CZGOSJQ4.js → chunk-HM3LSFTY.js} +2 -2
  92. package/dist/cli/chunks/chunk-HSA5IGGW.js +2 -0
  93. package/dist/cli/chunks/{chunk-GJHWY3ZX.js → chunk-HZBXJFGN.js} +2 -2
  94. package/dist/cli/chunks/chunk-IA55PFLG.js +7 -0
  95. package/dist/cli/chunks/{chunk-MNN5J4GU.js → chunk-ICKUINKD.js} +2 -2
  96. package/dist/cli/chunks/{chunk-XEB3NLJR.js → chunk-IETBWYHW.js} +2 -2
  97. package/dist/cli/chunks/{chunk-A55QKKT2.js → chunk-IL7GQNNE.js} +2 -2
  98. package/dist/cli/chunks/{chunk-LRZY4KS2.js → chunk-INZARYUD.js} +2 -2
  99. package/dist/cli/chunks/{chunk-OBAREPDC.js → chunk-IPA7K556.js} +2 -2
  100. package/dist/cli/chunks/{chunk-CFBEBXLO.js → chunk-IVTQF55W.js} +3 -3
  101. package/dist/cli/chunks/{chunk-FFTPAWM6.js → chunk-J7Y7ZBIT.js} +8 -8
  102. package/dist/cli/chunks/{chunk-I33O4BRQ.js → chunk-JGIJPDGD.js} +2 -2
  103. package/dist/cli/chunks/chunk-JNXK47OL.js +2 -0
  104. package/dist/cli/chunks/{chunk-PCEW6Q2C.js → chunk-JOWUS2X5.js} +1 -1
  105. package/dist/cli/chunks/{chunk-KI73QCR5.js → chunk-JR6CUKAI.js} +2 -2
  106. package/dist/cli/chunks/chunk-JRYWLOBD.js +21 -0
  107. package/dist/cli/chunks/{chunk-SO45NA4D.js → chunk-JW5PDJ5O.js} +11 -11
  108. package/dist/cli/chunks/{chunk-APSRPR4W.js → chunk-K3A3NWT3.js} +2 -2
  109. package/dist/cli/chunks/{chunk-FESZBPUB.js → chunk-KA5SHLMW.js} +2 -2
  110. package/dist/cli/chunks/{chunk-OPFGRS5S.js → chunk-KGA7VAI4.js} +2 -2
  111. package/dist/cli/chunks/chunk-KJDI5CHX.js +2 -0
  112. package/dist/cli/chunks/{chunk-V2RSNVMW.js → chunk-L3PV7VXK.js} +1 -1
  113. package/dist/cli/chunks/{chunk-C522H7XR.js → chunk-L7NGKANW.js} +32 -32
  114. package/dist/cli/chunks/{chunk-DNRWGATA.js → chunk-LFBA735S.js} +7 -7
  115. package/dist/cli/chunks/{chunk-V2M2XCR5.js → chunk-MAJXZYGK.js} +1 -1
  116. package/dist/cli/chunks/{chunk-FZOWULMH.js → chunk-MCPEC6OO.js} +1 -1
  117. package/dist/cli/chunks/{chunk-LMS3Y7JD.js → chunk-MCPXNUDK.js} +2 -2
  118. package/dist/cli/chunks/{chunk-GWZZ7DAO.js → chunk-MMEALJ4D.js} +2 -2
  119. package/dist/cli/chunks/{chunk-G3CZCUPM.js → chunk-MYF5CNGV.js} +2 -2
  120. package/dist/cli/chunks/{chunk-NNFZUTDH.js → chunk-MYUMJ2ZI.js} +1 -1
  121. package/dist/cli/chunks/{chunk-WDQ7IEZY.js → chunk-N7O3PF6Y.js} +2 -2
  122. package/dist/cli/chunks/{chunk-YAKGBHO4.js → chunk-NA3F6FEO.js} +2 -2
  123. package/dist/cli/chunks/chunk-NNBQZR73.js +6 -0
  124. package/dist/cli/chunks/{chunk-6C3II5OM.js → chunk-NV74SICL.js} +2 -2
  125. package/dist/cli/chunks/chunk-NVRYELCY.js +13 -0
  126. package/dist/cli/chunks/{chunk-UHTTW3IT.js → chunk-NX4BCSOZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-EN2QSKFF.js → chunk-O3IM4WRZ.js} +2 -2
  128. package/dist/cli/chunks/{chunk-S75EYIJG.js → chunk-O4QJMANM.js} +1 -1
  129. package/dist/cli/chunks/{chunk-NPPHWFA2.js → chunk-OHVYINGM.js} +18 -18
  130. package/dist/cli/chunks/{chunk-DE4YJQJF.js → chunk-P5E26N2X.js} +2 -2
  131. package/dist/cli/chunks/chunk-P7UFJ6DO.js +14 -0
  132. package/dist/cli/chunks/{chunk-XFVTGAAJ.js → chunk-PGSJBXTD.js} +2 -2
  133. package/dist/cli/chunks/{chunk-CZ2IF6MC.js → chunk-PT2NXS43.js} +1 -1
  134. package/dist/cli/chunks/{chunk-RK73HB2F.js → chunk-PTBOLBM4.js} +2 -2
  135. package/dist/cli/chunks/{chunk-EAU5KDFO.js → chunk-PX5OPXY6.js} +1 -1
  136. package/dist/cli/chunks/chunk-QCPVUNN3.js +2 -0
  137. package/dist/cli/chunks/{chunk-VKRTTFB6.js → chunk-QSGEBCDB.js} +2 -2
  138. package/dist/cli/chunks/{chunk-SKQUUE4F.js → chunk-QUJJYTJH.js} +2 -2
  139. package/dist/cli/chunks/chunk-QWG3SILX.js +59 -0
  140. package/dist/cli/chunks/{chunk-D6DA2KFD.js → chunk-RCOLPF3B.js} +2 -2
  141. package/dist/cli/chunks/{chunk-SU5H66SD.js → chunk-RYHG3I7J.js} +2 -2
  142. package/dist/cli/chunks/chunk-SBHM5X2S.js +4 -0
  143. package/dist/cli/chunks/{chunk-62OAY5KJ.js → chunk-SDRJJUPO.js} +1 -1
  144. package/dist/cli/chunks/{chunk-FB6TI3BH.js → chunk-SG2TX72G.js} +2 -2
  145. package/dist/cli/chunks/{chunk-H2PYU7MN.js → chunk-SITL5YZV.js} +4 -4
  146. package/dist/cli/chunks/{chunk-AI4VYSFS.js → chunk-SPC4RBLF.js} +2 -2
  147. package/dist/cli/chunks/{chunk-BQUAE3CP.js → chunk-SQVZ3TRU.js} +2 -2
  148. package/dist/cli/chunks/{chunk-TBLI254A.js → chunk-SUX5XB2Z.js} +2 -2
  149. package/dist/cli/chunks/{chunk-VFSYMOAL.js → chunk-T4EN5VVK.js} +2 -2
  150. package/dist/cli/chunks/{chunk-KNQ2ERFX.js → chunk-TGMXUZZC.js} +2 -2
  151. package/dist/cli/chunks/{chunk-7TB6FK4B.js → chunk-TLRHAMX5.js} +1 -1
  152. package/dist/cli/chunks/{chunk-V6JBOIMX.js → chunk-TOWOJGEI.js} +1 -1
  153. package/dist/cli/chunks/{chunk-JHIY4VCC.js → chunk-TSOQ2QLT.js} +3 -3
  154. package/dist/cli/chunks/{chunk-YYTGXD3R.js → chunk-TVA5GRIU.js} +2 -2
  155. package/dist/cli/chunks/{chunk-6MVVSSID.js → chunk-TXEUVUMO.js} +1 -1
  156. package/dist/cli/chunks/{chunk-7ZCDZHDB.js → chunk-U6IXYQO4.js} +2 -2
  157. package/dist/cli/chunks/{chunk-NW5JUCCG.js → chunk-U7ZHDGXG.js} +1 -1
  158. package/dist/cli/chunks/{chunk-UARKIZAS.js → chunk-UCSK2RMI.js} +2 -2
  159. package/dist/cli/chunks/{chunk-RPHY2DU6.js → chunk-UIKQPO4Y.js} +2 -2
  160. package/dist/cli/chunks/chunk-UJNGGFGX.js +2 -0
  161. package/dist/cli/chunks/{chunk-EDLFX4ZB.js → chunk-ULCW6IVQ.js} +2 -2
  162. package/dist/cli/chunks/{chunk-M2QV7PT7.js → chunk-UREDS662.js} +2 -2
  163. package/dist/cli/chunks/{chunk-MG27QY4D.js → chunk-URSTP3WI.js} +2 -2
  164. package/dist/cli/chunks/{chunk-2ZI5FKSF.js → chunk-UUZZXHUF.js} +2 -2
  165. package/dist/cli/chunks/{chunk-IPJ7Q3AJ.js → chunk-UZED4YZ5.js} +1 -1
  166. package/dist/cli/chunks/{chunk-VFKF2XO7.js → chunk-VF7FTD64.js} +1 -1
  167. package/dist/cli/chunks/{chunk-YCGP5VFP.js → chunk-VUR5THML.js} +2 -2
  168. package/dist/cli/chunks/{chunk-WDVRE6GN.js → chunk-VXVTFKRA.js} +2 -2
  169. package/dist/cli/chunks/chunk-VZBC6DP7.js +2 -0
  170. package/dist/cli/chunks/{chunk-GHBNRMSJ.js → chunk-W4II6SIH.js} +2 -2
  171. package/dist/cli/chunks/{chunk-TNMBRDCA.js → chunk-W5HQIYQU.js} +3 -3
  172. package/dist/cli/chunks/{chunk-H74Q7TJN.js → chunk-W7H55PY4.js} +1 -1
  173. package/dist/cli/chunks/{chunk-OY2AHLSF.js → chunk-WDEXOLK2.js} +1 -1
  174. package/dist/cli/chunks/{chunk-VJQYDYAJ.js → chunk-WGTEZT7G.js} +2 -2
  175. package/dist/cli/chunks/{chunk-GRCIBCJ2.js → chunk-WLRU6ESI.js} +2 -2
  176. package/dist/cli/chunks/{chunk-ACWFKES2.js → chunk-WTAUF6O4.js} +2 -2
  177. package/dist/cli/chunks/chunk-XCNSGSKV.js +3 -0
  178. package/dist/cli/chunks/{chunk-6S3WJGUV.js → chunk-XZOYKB22.js} +2 -2
  179. package/dist/cli/chunks/chunk-YIDAXOUX.js +8 -0
  180. package/dist/cli/chunks/{chunk-LQEURY7C.js → chunk-YLKIXEPP.js} +1 -1
  181. package/dist/cli/chunks/chunk-YNVEDFPQ.js +2 -0
  182. package/dist/cli/chunks/{chunk-PGYMKGOE.js → chunk-YUA6ZKKY.js} +2 -2
  183. package/dist/cli/chunks/{chunk-GJMLK5UT.js → chunk-YVJEUX3I.js} +2 -2
  184. package/dist/cli/chunks/{chunk-AH3ZD3NJ.js → chunk-YWWMNTBF.js} +2 -2
  185. package/dist/cli/chunks/{chunk-37OWRCUN.js → chunk-ZGROHCOW.js} +2 -2
  186. package/dist/cli/chunks/{chunk-OEKP73MC.js → chunk-ZPVGX4DI.js} +2 -2
  187. package/dist/cli/chunks/{chunk-6GP6W46M.js → chunk-ZROAMFX2.js} +2 -2
  188. package/dist/cli/chunks/{chunk-OY3NJNP2.js → chunk-ZYOYR3UR.js} +1 -1
  189. package/dist/cli/chunks/ci-BZNWW3I3.js +81 -0
  190. package/dist/cli/chunks/{ci-config-7ODMNAUM.js → ci-config-LOHNXOKV.js} +2 -2
  191. package/dist/cli/chunks/{ci-output-FXZ7ZZW3.js → ci-output-LCOQBSJL.js} +2 -2
  192. package/dist/cli/chunks/{circuit-breaker-4VOUEPOX.js → circuit-breaker-7LRXTLFE.js} +2 -2
  193. package/dist/cli/chunks/{claude-flow-setup-7D4SGLM4.js → claude-flow-setup-HBU4VWC3.js} +2 -2
  194. package/dist/cli/chunks/client-4PNYDFYS.js +2 -0
  195. package/dist/cli/chunks/{cline-installer-WRRT7BGQ.js → cline-installer-CO6MLH6X.js} +2 -2
  196. package/dist/cli/chunks/{code-ZDJRIL3S.js → code-SIXBS6JM.js} +3 -3
  197. package/dist/cli/chunks/{code-index-extractor-4S4SHM56.js → code-index-extractor-GWJKZ2IQ.js} +2 -2
  198. package/dist/cli/chunks/{codex-installer-YTRHNDWR.js → codex-installer-6NINVWXJ.js} +2 -2
  199. package/dist/cli/chunks/{completions-6N64JUXJ.js → completions-7VIX3GML.js} +2 -2
  200. package/dist/cli/chunks/{complexity-analyzer-I4A26VCJ.js → complexity-analyzer-FBQR6ZP2.js} +2 -2
  201. package/dist/cli/chunks/{continuedev-installer-IIDR66LB.js → continuedev-installer-VA7RIXW5.js} +2 -2
  202. package/dist/cli/chunks/{copilot-installer-SVVFY3S2.js → copilot-installer-4QEBC4MU.js} +2 -2
  203. package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +2 -0
  204. package/dist/cli/chunks/{cost-tracker-VGFS6IBX.js → cost-tracker-GRYKHPWL.js} +2 -2
  205. package/dist/cli/chunks/coverage-USPMNKOU.js +50 -0
  206. package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +2 -0
  207. package/dist/cli/chunks/{cursor-installer-UPETT57E.js → cursor-installer-ZXIPSZVH.js} +2 -2
  208. package/dist/cli/chunks/{daemon-CQFNZLXU.js → daemon-D7F3RGI5.js} +3 -3
  209. package/dist/cli/chunks/{daemon-7BDJHEIJ.js → daemon-N2VRHPSJ.js} +4 -4
  210. package/dist/cli/chunks/{dag-attention-scheduler-PJVABHON.js → dag-attention-scheduler-NL6BA7BY.js} +2 -2
  211. package/dist/cli/chunks/{detect-56SKAGWX.js → detect-XC2HCIIT.js} +2 -2
  212. package/dist/cli/chunks/{dist-node-UYTYUMLN.js → dist-node-A3Y26MEI.js} +2 -2
  213. package/dist/cli/chunks/{domain-handler-YOYLBYJE.js → domain-handler-WV6SFXRB.js} +2 -2
  214. package/dist/cli/chunks/{domain-plugins-7TARX2XF.js → domain-plugins-KJIF6Z2B.js} +2 -2
  215. package/dist/cli/chunks/{domain-transfer-AKVSBD6E.js → domain-transfer-L3F6AES2.js} +2 -2
  216. package/dist/cli/chunks/dream-QOB3JCOM.js +2 -0
  217. package/dist/cli/chunks/{embed-and-insert-pattern-IS6HSR66.js → embed-and-insert-pattern-PA3Y4KGO.js} +2 -2
  218. package/dist/cli/chunks/{eval-GNB574IM.js → eval-YGEZNUVE.js} +2 -2
  219. package/dist/cli/chunks/{experience-capture-middleware-RCAOCKM7.js → experience-capture-middleware-D4T7NW6B.js} +3 -3
  220. package/dist/cli/chunks/{fast-paths-KTZ5SF54.js → fast-paths-6JYK7RYQ.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-KFHSR5YF.js → feature-flags-DKXMDVPE.js} +2 -2
  222. package/dist/cli/chunks/{feature-flags-ITX5LQ57.js → feature-flags-RBH2GDSR.js} +2 -2
  223. package/dist/cli/chunks/file-discovery-BN76S2PR.js +2 -0
  224. package/dist/cli/chunks/fleet-43YMXACN.js +46 -0
  225. package/dist/cli/chunks/{gnn-wrapper-RLFW3GSX.js → gnn-wrapper-MV54UC4C.js} +2 -2
  226. package/dist/cli/chunks/{heartbeat-handler-EM2URCYZ.js → heartbeat-handler-7DKMVQQH.js} +4 -4
  227. package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +2 -0
  228. package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +2 -0
  229. package/dist/cli/chunks/hnsw-index-HE4AX22U.js +2 -0
  230. package/dist/cli/chunks/{hnsw-legacy-bridge-JMHEOIBH.js → hnsw-legacy-bridge-6IWREDQC.js} +2 -2
  231. package/dist/cli/chunks/{hnswlib-node-CBP73QHY.js → hnswlib-node-5BIESSCK.js} +2 -2
  232. package/dist/cli/chunks/{hooks-IP7XE34Z.js → hooks-3EETRM62.js} +30 -30
  233. package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +2 -0
  234. package/dist/cli/chunks/{hypergraph-engine-ONAYHU25.js → hypergraph-engine-RSWCB2D3.js} +2 -2
  235. package/dist/cli/chunks/{hypergraph-handler-VINJRAID.js → hypergraph-handler-552LXKL3.js} +3 -3
  236. package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +2 -0
  237. package/dist/cli/chunks/{init-guard-RYVV5R3Z.js → init-guard-OTDBJ5HD.js} +2 -2
  238. package/dist/cli/chunks/{init-handler-MPRGWMOE.js → init-handler-3FK3TKEA.js} +26 -25
  239. package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +2 -0
  240. package/dist/cli/chunks/kernel-2WZOQEZS.js +2 -0
  241. package/dist/cli/chunks/{kilocode-installer-OPD7JBRL.js → kilocode-installer-KZ2O4LF3.js} +2 -2
  242. package/dist/cli/chunks/{kiro-installer-M4OPUNK2.js → kiro-installer-MLCCXRF7.js} +2 -2
  243. package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +2 -0
  244. package/dist/cli/chunks/{learning-4UWTQLMF.js → learning-QUCMBD77.js} +3 -3
  245. package/dist/cli/chunks/{llm-router-SQ56FF6Z.js → llm-router-PDEV3UP2.js} +4 -4
  246. package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +2 -0
  247. package/dist/cli/chunks/{load-HPHKDGGL.js → load-XFVVLO7E.js} +2 -2
  248. package/dist/cli/chunks/load-test-BEWEE44J.js +2 -0
  249. package/dist/cli/chunks/{mcp-TELMAC7Z.js → mcp-74G3CL2S.js} +2 -2
  250. package/dist/cli/chunks/{memory-PFQ3KPVJ.js → memory-XIFM6JNX.js} +5 -5
  251. package/dist/cli/chunks/memory-backend-NYKBBKZR.js +2 -0
  252. package/dist/cli/chunks/memory-handlers-ZCKURV6S.js +2 -0
  253. package/dist/cli/chunks/{multi-model-executor-3VDRX6TZ.js → multi-model-executor-7L4W3O2Q.js} +2 -2
  254. package/dist/cli/chunks/{opencode-installer-PJ576R63.js → opencode-installer-BPG422LF.js} +2 -2
  255. package/dist/cli/chunks/{orchestrator-72QP4UU7.js → orchestrator-OEAFLAEV.js} +61 -23
  256. package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +2 -0
  257. package/dist/cli/chunks/{pattern-usage-recorder-754YQW7C.js → pattern-usage-recorder-LOPNCULT.js} +2 -2
  258. package/dist/cli/chunks/{pipeline-AVXY4MVB.js → pipeline-VWTYUZB7.js} +2 -2
  259. package/dist/cli/chunks/{platform-3E3DXLYB.js → platform-WFJJ3X2E.js} +2 -2
  260. package/dist/cli/chunks/{plugin-7FUQAKRE.js → plugin-744TPUSG.js} +2 -2
  261. package/dist/cli/chunks/{prime-radiant-advanced-wasm-NIB4F5NV.js → prime-radiant-advanced-wasm-BD5BLNDR.js} +2 -2
  262. package/dist/cli/chunks/project-root-C7ELXZRK.js +2 -0
  263. package/dist/cli/chunks/protocol-executor-SUVE33BM.js +2 -0
  264. package/dist/cli/chunks/{protocol-handler-BQRYMUTG.js → protocol-handler-JIBILI74.js} +2 -2
  265. package/dist/cli/chunks/{prove-H52QGC6B.js → prove-MNOL5FYW.js} +2 -2
  266. package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +2 -0
  267. package/dist/cli/chunks/{quality-QO4XPAUM.js → quality-JEGBDGGX.js} +2 -2
  268. package/dist/cli/chunks/{quality-gate-FBKE5E6F.js → quality-gate-SYJ6ROMI.js} +3 -3
  269. package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +2 -0
  270. package/dist/cli/chunks/real-embeddings-ZWXS5ZFV.js +2 -0
  271. package/dist/cli/chunks/{ref-validation-LF76ZOBD.js → ref-validation-RRHUFW2N.js} +2 -2
  272. package/dist/cli/chunks/{roocode-installer-3BYEBTQ7.js → roocode-installer-XFO6JSVN.js} +2 -2
  273. package/dist/cli/chunks/router-4FTAVYLJ.js +2 -0
  274. package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +2 -0
  275. package/dist/cli/chunks/{routing-handler-DST7BVCU.js → routing-handler-L2K3JASE.js} +2 -2
  276. package/dist/cli/chunks/{ruvector-commands-XE32PGKC.js → ruvector-commands-A6CINHGM.js} +2 -2
  277. package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +2 -0
  278. package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +2 -0
  279. package/dist/cli/chunks/{rvf-migration-coordinator-VP32XC75.js → rvf-migration-coordinator-T4RY7L53.js} +2 -2
  280. package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +2 -0
  281. package/dist/cli/chunks/{rvf-store-integrity-SH2AMVI7.js → rvf-store-integrity-IR33TGQS.js} +2 -2
  282. package/dist/cli/chunks/safe-db-QXDZ6QY3.js +2 -0
  283. package/dist/cli/chunks/schedule-CZKD6RIY.js +2 -0
  284. package/dist/cli/chunks/scheduler-BLA3Q4CH.js +2 -0
  285. package/dist/cli/chunks/{security-VSPNKCDS.js → security-Z5GDE2IH.js} +3 -3
  286. package/dist/cli/chunks/{shared-rvf-adapter-HX6AHL3P.js → shared-rvf-adapter-SIZMEHPM.js} +2 -2
  287. package/dist/cli/chunks/{shared-rvf-dual-writer-MX4FC2JE.js → shared-rvf-dual-writer-HLM65RDS.js} +2 -2
  288. package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +2 -0
  289. package/dist/cli/chunks/{standalone-memory-O4QUTK6L.js → standalone-memory-SKSZG7P5.js} +2 -2
  290. package/dist/cli/chunks/{status-handler-Z2BP6EOG.js → status-handler-766YOOMJ.js} +2 -2
  291. package/dist/cli/chunks/{structural-health-R36WNLQG.js → structural-health-M45FNOLT.js} +2 -2
  292. package/dist/cli/chunks/{sync-QF5Y3EMZ.js → sync-6CJ24B5T.js} +2 -2
  293. package/dist/cli/chunks/{sync-2ELWUFQU.js → sync-B2U366I3.js} +2 -2
  294. package/dist/cli/chunks/{task-handler-43PYE75J.js → task-handler-P6IFLCKP.js} +17 -15
  295. package/dist/cli/chunks/task-handlers-DPWMUKFC.js +9 -0
  296. package/dist/cli/chunks/{test-UWA377D4.js → test-TODH7KRF.js} +11 -11
  297. package/dist/cli/chunks/test-runner-process-46IPK3GH.js +2 -0
  298. package/dist/cli/chunks/{test-scheduling-YQZPJRRN.js → test-scheduling-VMVMVRHT.js} +3 -3
  299. package/dist/cli/chunks/{token-bootstrap-F7C6UKTC.js → token-bootstrap-XQW7BMCK.js} +2 -2
  300. package/dist/cli/chunks/{token-usage-DO6WLMXP.js → token-usage-JCZEIRKO.js} +2 -2
  301. package/dist/cli/chunks/{transformers-H5RGFKVO.js → transformers-U2ML3OHE.js} +2 -2
  302. package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +2 -0
  303. package/dist/cli/chunks/{types-PJS2FGPF.js → types-GGEPCHP6.js} +2 -2
  304. package/dist/cli/chunks/unified-memory-FL26RTV3.js +2 -0
  305. package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +2 -0
  306. package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +2 -0
  307. package/dist/cli/chunks/{upgrade-4IC4F6AB.js → upgrade-T5GRM7HS.js} +2 -2
  308. package/dist/cli/chunks/{validate-DHUWW7PF.js → validate-XMUJPLP3.js} +2 -2
  309. package/dist/cli/chunks/{validate-swarm-OERQNOX5.js → validate-swarm-KJLF7JEH.js} +2 -2
  310. package/dist/cli/chunks/visual-security-IJVPO5FA.js +2 -0
  311. package/dist/cli/chunks/{web-tree-sitter-TV7DMKES.js → web-tree-sitter-LOHVZ7G5.js} +2 -2
  312. package/dist/cli/chunks/{windsurf-installer-QZPWSH37.js → windsurf-installer-33FBTXJU.js} +2 -2
  313. package/dist/cli/chunks/witness-chain-5FAFCQKP.js +2 -0
  314. package/dist/cli/chunks/witness-chain-V2M32W5D.js +2 -0
  315. package/dist/cli/chunks/{witness-chain-repair-RUXIOE7F.js → witness-chain-repair-VWBO4NXE.js} +2 -2
  316. package/dist/cli/chunks/{witness-chain-verifier-YXENHB42.js → witness-chain-verifier-BHJ3ZAEK.js} +2 -2
  317. package/dist/cli/chunks/{witness-key-manager-HL26AGFO.js → witness-key-manager-WNVPH2Z3.js} +2 -2
  318. package/dist/cli/chunks/{workflow-EOVVCN2E.js → workflow-6QR5MQTO.js} +4 -4
  319. package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +2 -0
  320. package/dist/cli/chunks/{wrappers-AGODHBOO.js → wrappers-EHOL62TS.js} +2 -2
  321. package/dist/cli/commands/ci.js +7 -0
  322. package/dist/cli/commands/coverage.js +7 -1
  323. package/dist/cli/commands/fleet.js +5 -2
  324. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
  325. package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
  326. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  327. package/dist/cli/commands/test.js +5 -2
  328. package/dist/cli/handlers/init-handler.d.ts +12 -0
  329. package/dist/cli/handlers/init-handler.js +27 -12
  330. package/dist/cli/handlers/task-handler.js +6 -0
  331. package/dist/cli/utils/ci-output.d.ts +2 -0
  332. package/dist/cli/utils/ci-output.js +2 -0
  333. package/dist/cli/utils/coverage-verdict.d.ts +11 -2
  334. package/dist/cli/utils/coverage-verdict.js +26 -6
  335. package/dist/cli/utils/fleet-operation.d.ts +5 -0
  336. package/dist/cli/utils/fleet-operation.js +7 -1
  337. package/dist/cli/utils/fleet-result.d.ts +5 -3
  338. package/dist/cli/utils/fleet-result.js +9 -3
  339. package/dist/cli/utils/progress.d.ts +16 -2
  340. package/dist/cli/utils/progress.js +31 -14
  341. package/dist/coordination/consensus/consensus-engine.js +3 -1
  342. package/dist/coordination/handlers/code-intelligence-handlers.js +3 -2
  343. package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
  344. package/dist/coordination/handlers/coverage-collection.js +5 -2
  345. package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
  346. package/dist/coordination/handlers/coverage-evidence.js +159 -0
  347. package/dist/coordination/handlers/coverage-handlers.js +16 -3
  348. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  349. package/dist/coordination/handlers/coverage-runner.js +6 -22
  350. package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
  351. package/dist/coordination/handlers/coverage-scope.js +321 -0
  352. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  353. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  354. package/dist/coordination/handlers/coverage-target.d.ts +9 -0
  355. package/dist/coordination/handlers/coverage-target.js +21 -8
  356. package/dist/coordination/handlers/handler-utils.d.ts +5 -0
  357. package/dist/coordination/handlers/handler-utils.js +11 -5
  358. package/dist/coordination/handlers/requirements-handlers.js +3 -2
  359. package/dist/coordination/handlers/security-handlers.js +34 -20
  360. package/dist/coordination/queen-coordinator.js +8 -3
  361. package/dist/coordination/task-executability.d.ts +12 -0
  362. package/dist/coordination/task-executability.js +27 -0
  363. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  364. package/dist/coordination/workflow-orchestrator.js +22 -8
  365. package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
  366. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  367. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +8 -0
  368. package/dist/domains/code-intelligence/services/semantic-analyzer.js +10 -7
  369. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  370. package/dist/domains/learning-optimization/interfaces.d.ts +2 -0
  371. package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -1
  372. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  373. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  374. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  375. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  376. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  377. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  378. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  379. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  380. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  381. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  382. package/dist/domains/test-execution/coordinator.js +5 -14
  383. package/dist/domains/test-execution/interfaces.d.ts +11 -1
  384. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  385. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  386. package/dist/domains/test-generation/coordinator.js +2 -2
  387. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  388. package/dist/domains/test-generation/services/test-generator.js +2 -2
  389. package/dist/governance/evolution-pipeline-integration.js +3 -1
  390. package/dist/hooks/cross-phase-hooks.js +3 -1
  391. package/dist/init/init-wizard-steps.js +5 -1
  392. package/dist/init/phases/04-database.js +7 -0
  393. package/dist/init/phases/10-workers.js +42 -4
  394. package/dist/init/phases/12-verification.js +14 -4
  395. package/dist/init/settings-merge.js +7 -4
  396. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +29 -0
  397. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +70 -6
  398. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +10 -3
  399. package/dist/integrations/agentic-flow/reasoning-bank/index.js +13 -0
  400. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  401. package/dist/learning/dream/insight-generator.js +5 -4
  402. package/dist/learning/embedder-endpoint-client.d.ts +8 -0
  403. package/dist/learning/embedder-endpoint-client.js +20 -0
  404. package/dist/learning/embedder-recovery.d.ts +63 -0
  405. package/dist/learning/embedder-recovery.js +94 -0
  406. package/dist/learning/memory-auditor.js +3 -1
  407. package/dist/learning/qe-patterns.js +2 -1
  408. package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
  409. package/dist/learning/qe-reasoning-bank.d.ts +21 -0
  410. package/dist/learning/qe-reasoning-bank.js +54 -8
  411. package/dist/learning/real-embeddings.d.ts +23 -0
  412. package/dist/learning/real-embeddings.js +69 -2
  413. package/dist/learning/real-qe-reasoning-bank.d.ts +39 -0
  414. package/dist/learning/real-qe-reasoning-bank.js +108 -38
  415. package/dist/logging/redaction.js +142 -12
  416. package/dist/mcp/bundle.js +520 -503
  417. package/dist/mcp/daemon-mode.d.ts +126 -0
  418. package/dist/mcp/daemon-mode.js +257 -0
  419. package/dist/mcp/entry.d.ts +4 -0
  420. package/dist/mcp/entry.js +50 -2
  421. package/dist/mcp/handlers/domain-handler-configs.d.ts +2 -0
  422. package/dist/mcp/handlers/domain-handler-configs.js +13 -2
  423. package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
  424. package/dist/mcp/handlers/orchestrate-routes.js +53 -0
  425. package/dist/mcp/handlers/task-handlers.d.ts +23 -1
  426. package/dist/mcp/handlers/task-handlers.js +90 -19
  427. package/dist/mcp/handlers/validation-pipeline-handler.js +9 -9
  428. package/dist/mcp/protocol-server.js +11 -8
  429. package/dist/mcp/qe-tool-bridge.js +3 -0
  430. package/dist/mcp/services/reasoning-bank-service.d.ts +9 -2
  431. package/dist/mcp/services/reasoning-bank-service.js +13 -0
  432. package/dist/mcp/tool-annotations.js +4 -1
  433. package/dist/mcp/tools/coherence/check.js +1 -0
  434. package/dist/mcp/tools/coherence/consensus.js +4 -2
  435. package/dist/mcp/tools/learning-optimization/optimize.js +1 -2
  436. package/dist/mcp/tools/mincut/index.js +3 -0
  437. package/dist/mcp/tools/quality-assessment/gate.js +7 -0
  438. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  439. package/dist/mcp/tools/requirements-validation/quality-criteria.js +10 -3
  440. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  441. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  442. package/dist/mcp/tools/test-execution/execute.js +3 -2
  443. package/dist/mcp/types.d.ts +14 -0
  444. package/dist/memory/crdt/crdt-store.js +5 -0
  445. package/dist/memory/crdt/lww-register.js +12 -2
  446. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  447. package/dist/planning/goap-planner.js +5 -0
  448. package/dist/planning/plan-executor.js +5 -0
  449. package/dist/routing/advisor/redaction.js +22 -2
  450. package/dist/shared/io/confined-read.d.ts +74 -0
  451. package/dist/shared/io/confined-read.js +256 -0
  452. package/dist/shared/io/file-reader.d.ts +6 -6
  453. package/dist/shared/io/file-reader.js +16 -42
  454. package/dist/shared/llm/providers/claude-code.js +4 -1
  455. package/dist/shared/llm/providers/response-deadline.js +16 -2
  456. package/dist/shared/native-module-errors.d.ts +51 -0
  457. package/dist/shared/native-module-errors.js +129 -0
  458. package/dist/shared/safe-db.js +14 -4
  459. package/dist/shared/security/osv-client.js +4 -1
  460. package/dist/shared/types/index.js +3 -1
  461. package/dist/shared/types/test-frameworks.js +2 -2
  462. package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
  463. package/dist/sync/readers/json-reader.js +2 -1
  464. package/dist/validation/anchor-set.d.ts +6 -0
  465. package/dist/validation/anchor-set.js +9 -1
  466. package/dist/validation/quality-gate-runner.d.ts +7 -1
  467. package/dist/validation/quality-gate-runner.js +3 -3
  468. package/package.json +3 -3
  469. package/dist/cli/chunks/adapter-TR5SLAZC.js +0 -2
  470. package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +0 -2
  471. package/dist/cli/chunks/base-GTB6POYE.js +0 -2
  472. package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +0 -2
  473. package/dist/cli/chunks/chunk-4SJYIX54.js +0 -3
  474. package/dist/cli/chunks/chunk-6P7424AO.js +0 -21
  475. package/dist/cli/chunks/chunk-6X5DHU6Q.js +0 -14
  476. package/dist/cli/chunks/chunk-CMBLM26R.js +0 -2
  477. package/dist/cli/chunks/chunk-DKAC3E3B.js +0 -3
  478. package/dist/cli/chunks/chunk-DURHK377.js +0 -742
  479. package/dist/cli/chunks/chunk-FPUDRSFJ.js +0 -180
  480. package/dist/cli/chunks/chunk-G5I6KGMW.js +0 -59
  481. package/dist/cli/chunks/chunk-HOZUDE4C.js +0 -2
  482. package/dist/cli/chunks/chunk-N6PIIK6G.js +0 -3
  483. package/dist/cli/chunks/chunk-NSHU347M.js +0 -2
  484. package/dist/cli/chunks/chunk-PPSAMXYN.js +0 -13
  485. package/dist/cli/chunks/chunk-TYFZXDGZ.js +0 -4
  486. package/dist/cli/chunks/chunk-U4OICXV2.js +0 -6
  487. package/dist/cli/chunks/chunk-WSF24I3D.js +0 -2
  488. package/dist/cli/chunks/chunk-XBVUVFJK.js +0 -4
  489. package/dist/cli/chunks/chunk-XUZDBQ5X.js +0 -6
  490. package/dist/cli/chunks/chunk-YBSBABOS.js +0 -2
  491. package/dist/cli/chunks/chunk-ZG5666GJ.js +0 -2
  492. package/dist/cli/chunks/ci-MSKMVH5X.js +0 -81
  493. package/dist/cli/chunks/client-POSVREVS.js +0 -2
  494. package/dist/cli/chunks/core-handlers-V243GY7X.js +0 -2
  495. package/dist/cli/chunks/coverage-B7MCGNTE.js +0 -49
  496. package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +0 -2
  497. package/dist/cli/chunks/dream-UA7MKOPQ.js +0 -2
  498. package/dist/cli/chunks/file-discovery-YCMNKZAK.js +0 -2
  499. package/dist/cli/chunks/fleet-2Y3ZE6CE.js +0 -46
  500. package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +0 -2
  501. package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +0 -2
  502. package/dist/cli/chunks/hnsw-index-DFUNARVD.js +0 -2
  503. package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +0 -2
  504. package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +0 -2
  505. package/dist/cli/chunks/init-wizard-NIMZ4J55.js +0 -2
  506. package/dist/cli/chunks/kernel-JQK7PRAI.js +0 -2
  507. package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +0 -2
  508. package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +0 -2
  509. package/dist/cli/chunks/load-test-UKNV5MWW.js +0 -2
  510. package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +0 -2
  511. package/dist/cli/chunks/memory-handlers-FCXN437E.js +0 -2
  512. package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +0 -2
  513. package/dist/cli/chunks/project-root-JCAUNL6O.js +0 -2
  514. package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +0 -2
  515. package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +0 -2
  516. package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +0 -2
  517. package/dist/cli/chunks/real-embeddings-RWGOVOXO.js +0 -2
  518. package/dist/cli/chunks/router-3DIS5X4R.js +0 -2
  519. package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +0 -2
  520. package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +0 -2
  521. package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +0 -2
  522. package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +0 -2
  523. package/dist/cli/chunks/safe-db-EVB4ZC7T.js +0 -2
  524. package/dist/cli/chunks/schedule-ORDDXXY4.js +0 -2
  525. package/dist/cli/chunks/scheduler-XFLJSFIU.js +0 -2
  526. package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +0 -2
  527. package/dist/cli/chunks/task-handlers-KPWAEMKH.js +0 -9
  528. package/dist/cli/chunks/test-runner-process-3XZUYST2.js +0 -2
  529. package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +0 -2
  530. package/dist/cli/chunks/unified-memory-EHD4VNFW.js +0 -2
  531. package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +0 -2
  532. package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +0 -2
  533. package/dist/cli/chunks/visual-security-54MLFKWY.js +0 -2
  534. package/dist/cli/chunks/witness-chain-LC6Q2W27.js +0 -2
  535. package/dist/cli/chunks/witness-chain-QUIBAF3W.js +0 -2
  536. package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +0 -2
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Embedder recovery after a failure (#1187, #1204)
3
+ *
4
+ * A consumer of the embedder (a pattern bank, ExperienceReplay) runs without
5
+ * vectors while its embedder is down: patterns are stored text-only and
6
+ * searched by text. This class tracks that state and retries the embedder
7
+ * after a bounded interval, so a short outage does not last until restart.
8
+ *
9
+ * The retry runs in the background. The call that finds a retry due still
10
+ * gets "unavailable" and carries on without vectors, so a slow or unreachable
11
+ * embedder host never stalls it. The consumer becomes available again only
12
+ * after the retry's probe has succeeded: it never reports vectors it does not
13
+ * have. ADR-097 still holds: nothing here produces a substitute vector.
14
+ */
15
+ import { type EmbeddingConfig } from './real-embeddings.js';
16
+ export declare const DEFAULT_EMBEDDER_RETRY_INTERVAL_MS = 60000;
17
+ export interface EmbedderRecoveryOptions {
18
+ /** Wait this long after a failure before trying the embedder again. */
19
+ retryIntervalMs?: number;
20
+ /**
21
+ * Resolve once the embedder works and the consumer is ready to use
22
+ * vectors again; throw otherwise. Defaults to probeEmbedder().
23
+ */
24
+ probe?: () => Promise<void>;
25
+ /** Called after a retry succeeded. */
26
+ onRecovered?: () => void;
27
+ /** Called after a retry failed. */
28
+ onRetryFailed?: (error: unknown) => void;
29
+ }
30
+ /**
31
+ * Probe the embedder after a failure: re-initialize it, or try the endpoint
32
+ * through its open circuit breaker (recheckEmbedder), then embed the canary,
33
+ * bypassing the cache — a cached vector proves nothing about the embedder now.
34
+ */
35
+ export declare function probeEmbedder(config?: Partial<EmbeddingConfig>): Promise<void>;
36
+ export declare class EmbedderRecovery {
37
+ private readonly options;
38
+ private reason;
39
+ private failedAt;
40
+ /** Counts failures, so a retry does not clear one recorded while it ran. */
41
+ private failureCount;
42
+ private retry;
43
+ private readonly retryIntervalMs;
44
+ private readonly probe;
45
+ constructor(options?: EmbedderRecoveryOptions);
46
+ /** Why the embedder is unavailable, or null while it works. */
47
+ get unavailableReason(): string | null;
48
+ /**
49
+ * True when the embedder can be used now. When it cannot and a retry is
50
+ * due, starts one in the background and still returns false.
51
+ */
52
+ isAvailable(): boolean;
53
+ /**
54
+ * Record an embedder failure. Returns true when the embedder was available
55
+ * until now, so the caller can warn once per outage rather than per call.
56
+ */
57
+ markUnavailable(reason: string): boolean;
58
+ /** Resolves once an in-flight retry has finished (tests, shutdown). */
59
+ whenRetrySettled(): Promise<void>;
60
+ private startRetryIfDue;
61
+ private runRetry;
62
+ }
63
+ //# sourceMappingURL=embedder-recovery.d.ts.map
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Embedder recovery after a failure (#1187, #1204)
3
+ *
4
+ * A consumer of the embedder (a pattern bank, ExperienceReplay) runs without
5
+ * vectors while its embedder is down: patterns are stored text-only and
6
+ * searched by text. This class tracks that state and retries the embedder
7
+ * after a bounded interval, so a short outage does not last until restart.
8
+ *
9
+ * The retry runs in the background. The call that finds a retry due still
10
+ * gets "unavailable" and carries on without vectors, so a slow or unreachable
11
+ * embedder host never stalls it. The consumer becomes available again only
12
+ * after the retry's probe has succeeded: it never reports vectors it does not
13
+ * have. ADR-097 still holds: nothing here produces a substitute vector.
14
+ */
15
+ import { computeRealEmbedding, recheckEmbedder, } from './real-embeddings.js';
16
+ import { EMBEDDING_SPACE_CANARY } from './embedding-space.js';
17
+ export const DEFAULT_EMBEDDER_RETRY_INTERVAL_MS = 60_000;
18
+ /**
19
+ * Probe the embedder after a failure: re-initialize it, or try the endpoint
20
+ * through its open circuit breaker (recheckEmbedder), then embed the canary,
21
+ * bypassing the cache — a cached vector proves nothing about the embedder now.
22
+ */
23
+ export async function probeEmbedder(config = {}) {
24
+ await recheckEmbedder(config);
25
+ await computeRealEmbedding(EMBEDDING_SPACE_CANARY, { ...config, enableCache: false });
26
+ }
27
+ export class EmbedderRecovery {
28
+ options;
29
+ reason = null;
30
+ failedAt = 0;
31
+ /** Counts failures, so a retry does not clear one recorded while it ran. */
32
+ failureCount = 0;
33
+ retry = null;
34
+ retryIntervalMs;
35
+ probe;
36
+ constructor(options = {}) {
37
+ this.options = options;
38
+ this.retryIntervalMs = options.retryIntervalMs ?? DEFAULT_EMBEDDER_RETRY_INTERVAL_MS;
39
+ this.probe = options.probe ?? (() => probeEmbedder());
40
+ }
41
+ /** Why the embedder is unavailable, or null while it works. */
42
+ get unavailableReason() {
43
+ return this.reason;
44
+ }
45
+ /**
46
+ * True when the embedder can be used now. When it cannot and a retry is
47
+ * due, starts one in the background and still returns false.
48
+ */
49
+ isAvailable() {
50
+ if (this.reason === null)
51
+ return true;
52
+ this.startRetryIfDue();
53
+ return false;
54
+ }
55
+ /**
56
+ * Record an embedder failure. Returns true when the embedder was available
57
+ * until now, so the caller can warn once per outage rather than per call.
58
+ */
59
+ markUnavailable(reason) {
60
+ const wasAvailable = this.reason === null;
61
+ this.reason = reason;
62
+ this.failedAt = Date.now();
63
+ this.failureCount++;
64
+ return wasAvailable;
65
+ }
66
+ /** Resolves once an in-flight retry has finished (tests, shutdown). */
67
+ async whenRetrySettled() {
68
+ await this.retry;
69
+ }
70
+ startRetryIfDue() {
71
+ if (this.retry)
72
+ return;
73
+ if (Date.now() - this.failedAt < this.retryIntervalMs)
74
+ return;
75
+ this.retry = this.runRetry().finally(() => {
76
+ this.retry = null;
77
+ });
78
+ }
79
+ async runRetry() {
80
+ const failuresBefore = this.failureCount;
81
+ try {
82
+ await this.probe();
83
+ if (this.failureCount !== failuresBefore)
84
+ return;
85
+ this.reason = null;
86
+ this.options.onRecovered?.();
87
+ }
88
+ catch (error) {
89
+ this.failedAt = Date.now();
90
+ this.options.onRetryFailed?.(error);
91
+ }
92
+ }
93
+ }
94
+ //# sourceMappingURL=embedder-recovery.js.map
@@ -59,6 +59,7 @@
59
59
  import { randomUUID } from 'crypto';
60
60
  import { LoggerFactory } from '../logging/index.js';
61
61
  import { toErrorMessage } from '../shared/error-utils.js';
62
+ import { createSafeRecord } from '../shared/utils/safe-record.js';
62
63
  const logger = LoggerFactory.create('MemoryAuditor');
63
64
  /**
64
65
  * Default auditor configuration
@@ -319,7 +320,8 @@ export class MemoryCoherenceAuditor {
319
320
  * Group patterns by domain
320
321
  */
321
322
  groupByDomain(patterns) {
322
- const groups = {};
323
+ // #1157: domains come from stored pattern rows.
324
+ const groups = createSafeRecord();
323
325
  for (const pattern of patterns) {
324
326
  const domain = pattern.qeDomain;
325
327
  if (!groups[domain]) {
@@ -163,7 +163,8 @@ export function validateQEPattern(pattern) {
163
163
  export function applyPatternTemplate(template, variables) {
164
164
  let content = template.content;
165
165
  for (const variable of template.variables) {
166
- const value = variables[variable.name] ?? variable.defaultValue;
166
+ // #1157: the variable name comes from a stored pattern; read own values only.
167
+ const value = (Object.hasOwn(variables, variable.name) ? variables[variable.name] : undefined) ?? variable.defaultValue;
167
168
  if (variable.required && value === undefined) {
168
169
  throw new Error(`Required variable ${variable.name} not provided`);
169
170
  }
@@ -38,6 +38,11 @@ export interface QEReasoningBankConfig {
38
38
  coherenceThreshold?: number;
39
39
  /** Optional RVF dual-writer for vector replication (Phase 3) */
40
40
  rvfDualWriter?: RvfDualWriter;
41
+ /**
42
+ * #1204: after the embedder fails, wait this long before trying it again
43
+ * (in the background). Until then patterns are stored and searched by text.
44
+ */
45
+ embedderRetryIntervalMs?: number;
41
46
  }
42
47
  /**
43
48
  * Default configuration
@@ -50,6 +50,11 @@ export declare class QEReasoningBank implements IQEReasoningBank {
50
50
  private readonly coherenceService?;
51
51
  private readonly config;
52
52
  private readonly embeddingProvenance;
53
+ /**
54
+ * #1187/#1204: whether the embedder works. While it does not, patterns are
55
+ * stored text-only and searched by text; it is retried in the background.
56
+ */
57
+ private readonly embedderRecovery;
53
58
  private patternStore;
54
59
  private initialized;
55
60
  private sqliteStore;
@@ -168,6 +173,22 @@ export declare class QEReasoningBank implements IQEReasoningBank {
168
173
  * for ARM64 or when transformers module cannot be loaded.
169
174
  */
170
175
  embed(text: string): Promise<number[]>;
176
+ /**
177
+ * #1187: embed for pattern store, search and routing, or null when the
178
+ * embedder endpoint fails at runtime. Callers then store the pattern
179
+ * text-only and search by text, as they do without an embedding runtime.
180
+ * ADR-097 still holds: no hash vector stands in for an endpoint vector.
181
+ * #1204: after a failure the embedder is not called again until a
182
+ * background retry, due `embedderRetryIntervalMs` later, finds it working.
183
+ */
184
+ private embedForPatterns;
185
+ /**
186
+ * #1204: why the embedder failed, while patterns are stored and searched
187
+ * by text only because of that failure; null while it works or was never
188
+ * needed. A missing embedding runtime with no endpoint configured is not a
189
+ * failure: there embed() returns a hash vector, which is stored text-only.
190
+ */
191
+ getEmbedderFailure(): string | null;
171
192
  /**
172
193
  * Get statistics
173
194
  */
@@ -23,6 +23,7 @@ import { createPatternStore, } from './pattern-store.js';
23
23
  import { createSQLitePatternStore, } from './sqlite-persistence.js';
24
24
  import { getWitnessChain } from '../audit/witness-chain.js';
25
25
  import { getActiveEmbeddingSpaceIdentity } from './real-embeddings.js';
26
+ import { EmbedderRecovery } from './embedder-recovery.js';
26
27
  import { reconcileRvfWithSqlite } from './rvf-reconcile.js';
27
28
  import { PatternMutationError } from './pattern-mutation-error.js';
28
29
  // Import extracted modules
@@ -67,6 +68,11 @@ export class QEReasoningBank {
67
68
  coherenceService;
68
69
  config;
69
70
  embeddingProvenance = new WeakMap();
71
+ /**
72
+ * #1187/#1204: whether the embedder works. While it does not, patterns are
73
+ * stored text-only and searched by text; it is retried in the background.
74
+ */
75
+ embedderRecovery;
70
76
  patternStore;
71
77
  initialized = false;
72
78
  sqliteStore = null;
@@ -106,6 +112,11 @@ export class QEReasoningBank {
106
112
  this.eventBus = eventBus;
107
113
  this.coherenceService = coherenceService;
108
114
  this.config = { ...DEFAULT_QE_REASONING_BANK_CONFIG, ...config };
115
+ this.embedderRecovery = new EmbedderRecovery({
116
+ retryIntervalMs: this.config.embedderRetryIntervalMs,
117
+ onRecovered: () => logger.info('Embedder available again: patterns are stored and searched with vectors'),
118
+ onRetryFailed: (error) => logger.debug('Embedder still unavailable', { error: toErrorMessage(error) }),
119
+ });
109
120
  if (config.rvfDualWriter) {
110
121
  this.rvfDualWriter = config.rvfDualWriter;
111
122
  }
@@ -318,14 +329,14 @@ export class QEReasoningBank {
318
329
  }
319
330
  // Generate embedding if not provided
320
331
  if (!options.embedding) {
321
- const embedding = await this.embed(`${options.name} ${options.description} ${options.context?.tags?.join(' ') || ''}`);
332
+ const embedding = await this.embedForPatterns(`${options.name} ${options.description} ${options.context?.tags?.join(' ') || ''}`);
322
333
  // #981: with no embedding runtime, embed() returns a hash-fallback vector
323
334
  // that has no embedding-space provenance, and the pattern store refuses
324
335
  // to persist it (VECTOR_SPACE_UNVERIFIED), losing the pattern. Store it
325
336
  // text-only instead, as search already does for such vectors; the vector
326
337
  // is filled later by `aqe learning backfill-embeddings`.
327
- const hasProvenance = this.embeddingProvenance.has(embedding)
328
- || Boolean(getActiveEmbeddingSpaceIdentity()?.spaceId);
338
+ const hasProvenance = embedding !== null && (this.embeddingProvenance.has(embedding)
339
+ || Boolean(getActiveEmbeddingSpaceIdentity()?.spaceId));
329
340
  if (hasProvenance) {
330
341
  options = { ...options, embedding };
331
342
  }
@@ -389,10 +400,10 @@ export class QEReasoningBank {
389
400
  searchQuery = '';
390
401
  }
391
402
  else {
392
- const embedding = await this.embed(query);
403
+ const embedding = await this.embedForPatterns(query);
393
404
  // Hash fallback and resized vectors do not belong to the active provider.
394
405
  // Keep their text searchable without claiming semantic comparability.
395
- searchQuery = this.embeddingProvenance.has(embedding) ? embedding : query;
406
+ searchQuery = embedding && this.embeddingProvenance.has(embedding) ? embedding : query;
396
407
  useVectorSearch = Array.isArray(searchQuery);
397
408
  }
398
409
  }
@@ -501,9 +512,9 @@ export class QEReasoningBank {
501
512
  detectedDomains.push('test-generation'); // Default
502
513
  }
503
514
  // 2. Search for similar patterns
504
- const embedding = await this.embed(request.task);
505
- const embeddingSpaceId = this.embeddingProvenance.get(embedding);
506
- const patternResults = await this.patternStore.search(embeddingSpaceId ? embedding : request.task, {
515
+ const embedding = await this.embedForPatterns(request.task);
516
+ const embeddingSpaceId = embedding ? this.embeddingProvenance.get(embedding) : undefined;
517
+ const patternResults = await this.patternStore.search(embedding && embeddingSpaceId ? embedding : request.task, {
507
518
  limit: this.config.maxRoutingCandidates,
508
519
  domain: detectedDomains[0],
509
520
  useVectorSearch: Boolean(embeddingSpaceId),
@@ -695,6 +706,41 @@ export class QEReasoningBank {
695
706
  // Hash-based fallback (always works, including ARM64)
696
707
  return hashEmbedding(text, this.config.embeddingDimension);
697
708
  }
709
+ /**
710
+ * #1187: embed for pattern store, search and routing, or null when the
711
+ * embedder endpoint fails at runtime. Callers then store the pattern
712
+ * text-only and search by text, as they do without an embedding runtime.
713
+ * ADR-097 still holds: no hash vector stands in for an endpoint vector.
714
+ * #1204: after a failure the embedder is not called again until a
715
+ * background retry, due `embedderRetryIntervalMs` later, finds it working.
716
+ */
717
+ async embedForPatterns(text) {
718
+ if (!this.embedderRecovery.isAvailable())
719
+ return null;
720
+ try {
721
+ return await this.embed(text);
722
+ }
723
+ catch (error) {
724
+ const reason = toErrorMessage(error);
725
+ const message = 'Embedder failed: storing and searching patterns by text only';
726
+ if (this.embedderRecovery.markUnavailable(reason)) {
727
+ logger.warn(message, { error: reason });
728
+ }
729
+ else {
730
+ logger.debug(message, { error: reason });
731
+ }
732
+ return null;
733
+ }
734
+ }
735
+ /**
736
+ * #1204: why the embedder failed, while patterns are stored and searched
737
+ * by text only because of that failure; null while it works or was never
738
+ * needed. A missing embedding runtime with no endpoint configured is not a
739
+ * failure: there embed() returns a hash vector, which is stored text-only.
740
+ */
741
+ getEmbedderFailure() {
742
+ return this.embedderRecovery.unavailableReason;
743
+ }
698
744
  /**
699
745
  * Get statistics
700
746
  */
@@ -75,6 +75,29 @@ export declare function getEmbeddingDimension(): number;
75
75
  * Reset initialization state (for testing)
76
76
  */
77
77
  export declare function resetInitialization(): void;
78
+ /**
79
+ * #1187: allow a new initialization attempt after a failed one. A failed
80
+ * initialization is otherwise remembered for the whole process, so a short
81
+ * embedding-endpoint outage at startup would disable embeddings until the
82
+ * process restarts. Callers rate-limit retries. No-op unless the last
83
+ * initialization failed.
84
+ */
85
+ export declare function allowEmbedderInitRetry(): void;
86
+ /**
87
+ * #1204: check whether a failed embedder works again, for callers that retry
88
+ * it after a cooldown. Resolves when the embedder is usable; throws otherwise.
89
+ * Other callers keep failing fast while the check runs, so a host that never
90
+ * answers stalls only the (background) check, never them:
91
+ * - after a failed initialization, initialize again while the failure stays
92
+ * recorded; concurrent rechecks share that attempt;
93
+ * - after runtime failures that opened the endpoint circuit breaker, probe the
94
+ * endpoint as the breaker's single trial request, so recovery does not wait
95
+ * for the breaker window as well as the caller's retry interval. The probe
96
+ * must find the identity this process bound to (ADR-097): a changed
97
+ * fingerprint means vectors would not be comparable.
98
+ * Callers rate-limit rechecks, then embed a canary to confirm.
99
+ */
100
+ export declare function recheckEmbedder(config?: Partial<EmbeddingConfig>): Promise<void>;
78
101
  /**
79
102
  * ADR-097: Returns true when the embedding pipeline is the external endpoint path,
80
103
  * false when it's the in-process transformer (or uninitialized).
@@ -17,6 +17,8 @@ let embeddingModel = null;
17
17
  let initPromise = null;
18
18
  let initializationFailed = false;
19
19
  let failureReason = '';
20
+ /** #1204: an in-flight recheckEmbedder() re-initialization, shared by callers. */
21
+ let initRetryPromise = null;
20
22
  /**
21
23
  * Set when ADR-097 endpoint path is active. Tracked separately so callers
22
24
  * (tests, observability) can verify endpoint vs in-process unambiguously.
@@ -78,8 +80,10 @@ function isNonSemanticText(text) {
78
80
  /**
79
81
  * Initialize the transformer model
80
82
  */
81
- async function initializeModel(config = {}) {
82
- if (initializationFailed) {
83
+ async function initializeModel(config = {}, retryingAfterFailure = false) {
84
+ // #1204: a recheckEmbedder() retry runs while the failure is still recorded,
85
+ // so other callers keep failing fast instead of waiting on a dead host.
86
+ if (initializationFailed && !retryingAfterFailure) {
83
87
  throw new Error(`Transformer initialization previously failed: ${failureReason}`);
84
88
  }
85
89
  if (initPromise) {
@@ -134,6 +138,8 @@ async function initializeModel(config = {}) {
134
138
  console.warn(`[RealEmbeddings] Could not persist endpoint identity: ${toErrorMessage(persistErr)}`);
135
139
  }
136
140
  embeddingModel = createEndpointPipeline(endpointClient);
141
+ initializationFailed = false;
142
+ failureReason = '';
137
143
  return;
138
144
  }
139
145
  // In-process branch — only here do we import the transformers package.
@@ -179,6 +185,8 @@ async function initializeModel(config = {}) {
179
185
  implementation: `transformers:${fullConfig.quantized ? 'quantized' : 'full'}`,
180
186
  runtimeFingerprint: fingerprintEmbeddingRuntime(canaryVector),
181
187
  });
188
+ initializationFailed = false;
189
+ failureReason = '';
182
190
  const loadTime = performance.now() - startTime;
183
191
  console.log(`[RealEmbeddings] Model loaded in ${loadTime.toFixed(0)}ms`);
184
192
  }
@@ -393,6 +401,65 @@ export function resetInitialization() {
393
401
  // AQE_MEMORY_PATH between runs don't write into a stale handle.
394
402
  resetEmbedderIdentityStore();
395
403
  }
404
+ /**
405
+ * #1187: allow a new initialization attempt after a failed one. A failed
406
+ * initialization is otherwise remembered for the whole process, so a short
407
+ * embedding-endpoint outage at startup would disable embeddings until the
408
+ * process restarts. Callers rate-limit retries. No-op unless the last
409
+ * initialization failed.
410
+ */
411
+ export function allowEmbedderInitRetry() {
412
+ if (!initializationFailed)
413
+ return;
414
+ initializationFailed = false;
415
+ failureReason = '';
416
+ initPromise = null;
417
+ if (endpointClient) {
418
+ endpointClient.close();
419
+ }
420
+ endpointClient = null;
421
+ endpointIdentity = null;
422
+ }
423
+ /**
424
+ * #1204: check whether a failed embedder works again, for callers that retry
425
+ * it after a cooldown. Resolves when the embedder is usable; throws otherwise.
426
+ * Other callers keep failing fast while the check runs, so a host that never
427
+ * answers stalls only the (background) check, never them:
428
+ * - after a failed initialization, initialize again while the failure stays
429
+ * recorded; concurrent rechecks share that attempt;
430
+ * - after runtime failures that opened the endpoint circuit breaker, probe the
431
+ * endpoint as the breaker's single trial request, so recovery does not wait
432
+ * for the breaker window as well as the caller's retry interval. The probe
433
+ * must find the identity this process bound to (ADR-097): a changed
434
+ * fingerprint means vectors would not be comparable.
435
+ * Callers rate-limit rechecks, then embed a canary to confirm.
436
+ */
437
+ export async function recheckEmbedder(config = {}) {
438
+ if (initializationFailed) {
439
+ initRetryPromise ??= retryInitialization(config).finally(() => {
440
+ initRetryPromise = null;
441
+ });
442
+ return initRetryPromise;
443
+ }
444
+ const client = endpointClient;
445
+ if (!client || !client.getBreakerState().open)
446
+ return;
447
+ const identity = await client.probeThroughOpenBreaker();
448
+ if (endpointIdentity && identity.fingerprint !== endpointIdentity.fingerprint) {
449
+ throw new Error(`[RealEmbeddings] endpoint identity changed since this process bound to it ` +
450
+ `(fingerprint ${endpointIdentity.fingerprint} -> ${identity.fingerprint}); ` +
451
+ `restart to use the new embedding space`);
452
+ }
453
+ }
454
+ async function retryInitialization(config) {
455
+ if (endpointClient) {
456
+ endpointClient.close();
457
+ }
458
+ endpointClient = null;
459
+ endpointIdentity = null;
460
+ initPromise = null;
461
+ await initializeModel(config, true);
462
+ }
396
463
  /**
397
464
  * ADR-097: Returns true when the embedding pipeline is the external endpoint path,
398
465
  * false when it's the in-process transformer (or uninitialized).
@@ -28,6 +28,11 @@ export interface RealQEReasoningBankConfig {
28
28
  };
29
29
  /** Coherence energy threshold for pattern promotion (ADR-052) */
30
30
  coherenceThreshold?: number;
31
+ /**
32
+ * #1187: after the embedder fails (at startup or at runtime), wait this long
33
+ * before trying it again. Until then pattern search is lexical-only.
34
+ */
35
+ embedderRetryIntervalMs?: number;
31
36
  }
32
37
  export declare const DEFAULT_REAL_CONFIG: RealQEReasoningBankConfig;
33
38
  /** Ranking evidence keeps lexical relevance separate from vector reuse safety. */
@@ -38,6 +43,18 @@ export interface RealQEPatternSearchResult {
38
43
  matchType: 'vector' | 'lexical';
39
44
  canReuse: boolean;
40
45
  }
46
+ /**
47
+ * #1022: how pattern search works in this process. Without an embedding
48
+ * runtime the bank stores patterns text-only (vectors pending, filled later by
49
+ * `aqe learning backfill-embeddings`) and searches by SQLite FTS text matching
50
+ * only. No similarity score is computed in that mode. #1187: the same mode
51
+ * applies while an embedder that failed at runtime is unavailable.
52
+ */
53
+ export interface PatternSearchStatus {
54
+ mode: 'vector' | 'lexical-only';
55
+ /** Why vector search is unavailable (only for 'lexical-only'). */
56
+ reason?: string;
57
+ }
41
58
  export interface RealQERoutingRequest {
42
59
  task: string;
43
60
  taskType?: 'test-generation' | 'analysis' | 'debugging' | 'optimization';
@@ -94,6 +111,8 @@ export interface RealQEReasoningBankStats {
94
111
  transformerAvailable: boolean;
95
112
  embeddingDimension: number;
96
113
  sqliteDbPath: string;
114
+ /** #1022: whether pattern search uses vectors, or text matching only */
115
+ patternSearch: PatternSearchStatus;
97
116
  /** ADR-061: Asymmetric learning metrics */
98
117
  asymmetricLearning?: {
99
118
  failurePenaltyRatio: string;
@@ -119,6 +138,11 @@ export declare class RealQEReasoningBank {
119
138
  private hnswIndex;
120
139
  private patternIdMap;
121
140
  private initialized;
141
+ /**
142
+ * #1022/#1187/#1204: whether the embedder works. While it does not, patterns
143
+ * are stored text-only and searched by text; it is retried in the background.
144
+ */
145
+ private readonly embedderRecovery;
122
146
  private stats;
123
147
  private routingLatencies;
124
148
  private readonly asymmetricEngine;
@@ -128,6 +152,19 @@ export declare class RealQEReasoningBank {
128
152
  * Initialize the QE ReasoningBank
129
153
  */
130
154
  initialize(): Promise<void>;
155
+ /** #1022: whether pattern search uses vectors or text matching only. */
156
+ getPatternSearchStatus(): PatternSearchStatus;
157
+ /**
158
+ * #1187: embed `text`, or return undefined when the embedder is unavailable.
159
+ * A runtime failure switches this bank to lexical-only (reported by
160
+ * getPatternSearchStatus): callers then store patterns text-only and search
161
+ * by text. The embedder is tried again once `embedderRetryIntervalMs` has
162
+ * passed, so a short outage, at startup or later, does not last until restart.
163
+ * #1204: that retry runs in the background; this call stays text-only.
164
+ */
165
+ private embedOrUndefined;
166
+ /** #1187: the retry probe; vector search needs the HNSW index as well. */
167
+ private probeEmbedderForRetry;
131
168
  /**
132
169
  * Initialize HNSW index for fast similarity search
133
170
  */
@@ -153,6 +190,8 @@ export declare class RealQEReasoningBank {
153
190
  domain?: QEDomain;
154
191
  minSimilarity?: number;
155
192
  }): Promise<Result<RealQEPatternSearchResult[]>>;
193
+ /** Append HNSW vector matches for the query embedding to `patterns`. */
194
+ private collectVectorMatches;
156
195
  /**
157
196
  * Route a task to optimal agent
158
197
  */