agentic-qe 3.15.15 → 3.15.17

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 (526) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +168 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/audit/witness-chain.d.ts +7 -0
  5. package/dist/audit/witness-chain.js +10 -0
  6. package/dist/cli/bundle.js +6 -6
  7. package/dist/cli/chunks/adapter-OMILP6KH.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-EUF4XVUC.js → agent-booster-wasm-6BUOFQZA.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-MOX6PSIQ.js → agent-handler-HPDK3JI3.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-AEXKIGDG.js → agent-memory-branch-5QKUTWK5.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-OXH5CCOS.js +2 -0
  12. package/dist/cli/chunks/{arena-IQ5ZZDRF.js → arena-7OKPMNHD.js} +2 -2
  13. package/dist/cli/chunks/{arena-M7GA3CVG.js → arena-HZ35LESR.js} +4 -4
  14. package/dist/cli/chunks/{audit-4IPBMKWB.js → audit-XI575SVK.js} +3 -3
  15. package/dist/cli/chunks/base-MAK2BLTG.js +2 -0
  16. package/dist/cli/chunks/{better-sqlite3-IKDKJ2IE.js → better-sqlite3-YO5X7ZJS.js} +2 -2
  17. package/dist/cli/chunks/{brain-handler-5NQUDH4W.js → brain-handler-GCQZFZGQ.js} +3 -3
  18. package/dist/cli/chunks/{branch-enumerator-KSXELWRC.js → branch-enumerator-N6G44UU2.js} +2 -2
  19. package/dist/cli/chunks/{browser-6LACARWE.js → browser-EVKPTLOI.js} +2 -2
  20. package/dist/cli/chunks/browser-workflow-IR3VF2TL.js +2 -0
  21. package/dist/cli/chunks/{chunk-DKX4GNRU.js → chunk-2EQK7B5L.js} +2 -2
  22. package/dist/cli/chunks/chunk-2PCEMDIX.js +757 -0
  23. package/dist/cli/chunks/{chunk-JCQGJGGZ.js → chunk-2UUZCQSD.js} +7 -7
  24. package/dist/cli/chunks/chunk-2YWYW7NU.js +21 -0
  25. package/dist/cli/chunks/{chunk-PFQCV6YS.js → chunk-45223KK6.js} +6 -6
  26. package/dist/cli/chunks/chunk-4EJLHNER.js +12 -0
  27. package/dist/cli/chunks/{chunk-E5G4WZ2T.js → chunk-4L6WX5KC.js} +1 -1
  28. package/dist/cli/chunks/{chunk-UQPA33UK.js → chunk-4NKZU2JZ.js} +2 -2
  29. package/dist/cli/chunks/{chunk-OBDONJQM.js → chunk-4UKTIQDT.js} +2 -2
  30. package/dist/cli/chunks/{chunk-7BLZHFKD.js → chunk-4YM45Z5B.js} +1 -1
  31. package/dist/cli/chunks/{chunk-ZWBGYJ7K.js → chunk-5FSPELOG.js} +2 -2
  32. package/dist/cli/chunks/{chunk-NWIIYHT6.js → chunk-5WATBVU6.js} +2 -2
  33. package/dist/cli/chunks/{chunk-7ACCBHRB.js → chunk-5WYZVSL2.js} +1 -1
  34. package/dist/cli/chunks/{chunk-ZYJB6FML.js → chunk-6LSZCEW2.js} +1 -1
  35. package/dist/cli/chunks/{chunk-U62OUXBF.js → chunk-6V6BD6PH.js} +1 -1
  36. package/dist/cli/chunks/{chunk-MIA447GY.js → chunk-74MDUIAZ.js} +1 -1
  37. package/dist/cli/chunks/{chunk-AJPROCDW.js → chunk-776K4ZLE.js} +2 -2
  38. package/dist/cli/chunks/{chunk-CBK5CT6T.js → chunk-7BSOO3CY.js} +2 -2
  39. package/dist/cli/chunks/{chunk-ERN56H6S.js → chunk-7SNSI4VY.js} +1 -1
  40. package/dist/cli/chunks/{chunk-JKJOB65O.js → chunk-A4BVDYIL.js} +1 -1
  41. package/dist/cli/chunks/{chunk-MV55NXTD.js → chunk-AGCS5GSO.js} +2 -2
  42. package/dist/cli/chunks/{chunk-XIVVTYM2.js → chunk-AVHYJ3XP.js} +2 -2
  43. package/dist/cli/chunks/{chunk-KJBPB7P5.js → chunk-BE7ZHM34.js} +2 -2
  44. package/dist/cli/chunks/{chunk-GKSMRBHU.js → chunk-BHQ2DLJU.js} +1 -1
  45. package/dist/cli/chunks/{chunk-7XB3FCKM.js → chunk-BKHEQIRZ.js} +2 -2
  46. package/dist/cli/chunks/{chunk-G242G224.js → chunk-BSIWI4ES.js} +2 -2
  47. package/dist/cli/chunks/{chunk-NQS3BWS6.js → chunk-C7QLLMYI.js} +1 -1
  48. package/dist/cli/chunks/{chunk-XWIAZG3C.js → chunk-CMN7PU2H.js} +2 -2
  49. package/dist/cli/chunks/{chunk-4X3SWKBA.js → chunk-COTQ44YO.js} +2 -2
  50. package/dist/cli/chunks/{chunk-3J3RNJNX.js → chunk-CQER6IJ5.js} +1 -1
  51. package/dist/cli/chunks/{chunk-6KCSKGVY.js → chunk-CVPXHDQU.js} +1 -1
  52. package/dist/cli/chunks/{chunk-R6LHJ7ME.js → chunk-CVYPMGUM.js} +2 -2
  53. package/dist/cli/chunks/chunk-CXCMATZ6.js +3 -0
  54. package/dist/cli/chunks/{chunk-PYPS65P7.js → chunk-D75GLKEL.js} +2 -2
  55. package/dist/cli/chunks/chunk-DCDSN67A.js +2 -0
  56. package/dist/cli/chunks/{chunk-6RBTS3NF.js → chunk-DHKSPOUQ.js} +2 -2
  57. package/dist/cli/chunks/{chunk-JW74KRBC.js → chunk-DJDVD6RM.js} +2 -2
  58. package/dist/cli/chunks/{chunk-X33CWRDF.js → chunk-DNVRTJKB.js} +2 -2
  59. package/dist/cli/chunks/{chunk-BQ47GQPK.js → chunk-DS5IFRY6.js} +2 -2
  60. package/dist/cli/chunks/{chunk-AHMWD6JG.js → chunk-E7XIMOKW.js} +2 -2
  61. package/dist/cli/chunks/{chunk-SON6ZRH3.js → chunk-ECKHDHR2.js} +2 -2
  62. package/dist/cli/chunks/chunk-EPVPXHL7.js +2 -0
  63. package/dist/cli/chunks/{chunk-BP5T3OEV.js → chunk-ERYADKMZ.js} +4 -4
  64. package/dist/cli/chunks/{chunk-DUKE27HC.js → chunk-EUWG2JG4.js} +2 -2
  65. package/dist/cli/chunks/chunk-FAQ24UHB.js +29 -0
  66. package/dist/cli/chunks/{chunk-XG4F4XH4.js → chunk-FBBPRVNF.js} +2 -2
  67. package/dist/cli/chunks/{chunk-5PTAFGJT.js → chunk-FBSBXCZS.js} +2 -2
  68. package/dist/cli/chunks/chunk-G2X3OLMN.js +153 -0
  69. package/dist/cli/chunks/{chunk-IXL5ZHWJ.js → chunk-GG7PMTHD.js} +1 -1
  70. package/dist/cli/chunks/{chunk-6BRQPHMZ.js → chunk-GN6OE3JT.js} +1 -1
  71. package/dist/cli/chunks/{chunk-SZAZQZWI.js → chunk-GPPTRKEM.js} +2 -2
  72. package/dist/cli/chunks/{chunk-LTQVUAPH.js → chunk-H2LHWZRE.js} +2 -2
  73. package/dist/cli/chunks/{chunk-WVXJ2QIG.js → chunk-HAQJFUAQ.js} +2 -2
  74. package/dist/cli/chunks/{chunk-C5CXL3JP.js → chunk-HD6W6PHV.js} +2 -2
  75. package/dist/cli/chunks/{chunk-K3WZICFA.js → chunk-HFZD5KLR.js} +1 -1
  76. package/dist/cli/chunks/{chunk-VCXI4XC4.js → chunk-HRUHHHVR.js} +2 -2
  77. package/dist/cli/chunks/{chunk-GV2QE5TO.js → chunk-HVT7RMGV.js} +1 -1
  78. package/dist/cli/chunks/chunk-HWQPMUSN.js +2 -0
  79. package/dist/cli/chunks/{chunk-4ATQP3PR.js → chunk-HZ5O7G2P.js} +1 -1
  80. package/dist/cli/chunks/{chunk-XHHWABJV.js → chunk-IHQGNDMX.js} +2 -2
  81. package/dist/cli/chunks/{chunk-UUBIQR6A.js → chunk-IJSROBM6.js} +18 -18
  82. package/dist/cli/chunks/{chunk-PS6UMZVK.js → chunk-IJZFJPHS.js} +2 -2
  83. package/dist/cli/chunks/{chunk-C4KLXFJP.js → chunk-IKB3M7OF.js} +1 -1
  84. package/dist/cli/chunks/{chunk-SJCKCSN3.js → chunk-INI3Q4CN.js} +1 -1
  85. package/dist/cli/chunks/{chunk-LYJHUNBK.js → chunk-IOWEBPXJ.js} +2 -2
  86. package/dist/cli/chunks/{chunk-HTZSRMHW.js → chunk-IQL6XRF5.js} +2 -2
  87. package/dist/cli/chunks/{chunk-DEKR3CTS.js → chunk-IRHXGCQR.js} +2 -2
  88. package/dist/cli/chunks/{chunk-TODNOP7C.js → chunk-J3QFJI2Y.js} +6 -6
  89. package/dist/cli/chunks/{chunk-OLZH5LRT.js → chunk-J6QRNQJF.js} +11 -11
  90. package/dist/cli/chunks/{chunk-HL2ANKN3.js → chunk-J7Q5TXFZ.js} +2 -2
  91. package/dist/cli/chunks/{chunk-6YVMX2TC.js → chunk-JHKKIJT2.js} +2 -2
  92. package/dist/cli/chunks/{chunk-K3XBQC3R.js → chunk-JI33PMPZ.js} +1 -1
  93. package/dist/cli/chunks/{chunk-74YG72NQ.js → chunk-JRIJM4LE.js} +3 -3
  94. package/dist/cli/chunks/{chunk-TDQWTSBS.js → chunk-JVWZAE2H.js} +2 -2
  95. package/dist/cli/chunks/{chunk-RDMRY7CT.js → chunk-K7WAI662.js} +1 -1
  96. package/dist/cli/chunks/{chunk-C4RTAVC6.js → chunk-KB34MTFZ.js} +2 -2
  97. package/dist/cli/chunks/{chunk-2CKERSMB.js → chunk-KPIPVSIP.js} +2 -2
  98. package/dist/cli/chunks/{chunk-LNX74WHQ.js → chunk-KR2TAAF6.js} +1 -1
  99. package/dist/cli/chunks/{chunk-73PBAWAF.js → chunk-KT2QCXO6.js} +2 -2
  100. package/dist/cli/chunks/{chunk-BBRROA3Z.js → chunk-KTORRIX3.js} +2 -2
  101. package/dist/cli/chunks/{chunk-GCHYOPRZ.js → chunk-LCWEQRZI.js} +2 -2
  102. package/dist/cli/chunks/{chunk-M4WMSCAE.js → chunk-LG5PPJT7.js} +1 -1
  103. package/dist/cli/chunks/{chunk-UAQZI6N4.js → chunk-LIF6UWHV.js} +2 -2
  104. package/dist/cli/chunks/chunk-LN7NKE3N.js +27 -0
  105. package/dist/cli/chunks/chunk-LOLSZG5J.js +2 -0
  106. package/dist/cli/chunks/{chunk-BLL2XU7A.js → chunk-LOMT4UC2.js} +2 -2
  107. package/dist/cli/chunks/chunk-LRKLATSH.js +2 -0
  108. package/dist/cli/chunks/{chunk-EKP2SC77.js → chunk-LRY6UIRI.js} +2 -2
  109. package/dist/cli/chunks/{chunk-JCZCJE6X.js → chunk-LV7UIK4Q.js} +2 -2
  110. package/dist/cli/chunks/{chunk-LVABQNRF.js → chunk-M2YI5YUR.js} +2 -2
  111. package/dist/cli/chunks/{chunk-RIRZHOS2.js → chunk-MCXW3DKE.js} +2 -2
  112. package/dist/cli/chunks/{chunk-ZSOMUTNL.js → chunk-MGZ6XZHU.js} +1 -1
  113. package/dist/cli/chunks/{chunk-H5DER3JY.js → chunk-MLMD3I75.js} +1 -1
  114. package/dist/cli/chunks/{chunk-UXIY4IAI.js → chunk-MVVVGQJ6.js} +2 -2
  115. package/dist/cli/chunks/{chunk-WUOOX7UG.js → chunk-ND72UDVH.js} +2 -2
  116. package/dist/cli/chunks/{chunk-AKZO6GGG.js → chunk-NE3LRUNC.js} +4 -4
  117. package/dist/cli/chunks/{chunk-O6EWL5DQ.js → chunk-NKUHMA4T.js} +2 -2
  118. package/dist/cli/chunks/{chunk-L32JNNKL.js → chunk-NQFDJ6BT.js} +1 -1
  119. package/dist/cli/chunks/{chunk-T66PPF4D.js → chunk-NZJVDOUN.js} +31 -31
  120. package/dist/cli/chunks/{chunk-EBTNMQSS.js → chunk-O7VJ3VKD.js} +2 -2
  121. package/dist/cli/chunks/{chunk-76P32JVU.js → chunk-OJIUIEI4.js} +1 -1
  122. package/dist/cli/chunks/chunk-OO2M2QUV.js +12 -0
  123. package/dist/cli/chunks/{chunk-CAOUV5GZ.js → chunk-ORQ2YBRR.js} +2 -2
  124. package/dist/cli/chunks/chunk-OWIQR6N2.js +4 -0
  125. package/dist/cli/chunks/chunk-OWIZBZLN.js +14 -0
  126. package/dist/cli/chunks/{chunk-J3FP5UGL.js → chunk-P3D7SEHW.js} +1 -1
  127. package/dist/cli/chunks/{chunk-3CYNZFKH.js → chunk-P4OB6WDJ.js} +1 -1
  128. package/dist/cli/chunks/{chunk-LHMQIZ6B.js → chunk-PCL5JRKN.js} +2 -2
  129. package/dist/cli/chunks/{chunk-KLTMOXIK.js → chunk-PIWGKGWP.js} +2 -2
  130. package/dist/cli/chunks/{chunk-VMAM46HQ.js → chunk-PK34KJH7.js} +2 -2
  131. package/dist/cli/chunks/chunk-POPSZDI2.js +65 -0
  132. package/dist/cli/chunks/{chunk-JUDUBQHA.js → chunk-Q6F3DYZN.js} +2 -2
  133. package/dist/cli/chunks/{chunk-Y2OX6KGN.js → chunk-QJSSUBO3.js} +2 -2
  134. package/dist/cli/chunks/{chunk-XM6ZVFM5.js → chunk-QN7HP2UW.js} +235 -173
  135. package/dist/cli/chunks/{chunk-T4GE7MPI.js → chunk-QSQNXBD2.js} +2 -2
  136. package/dist/cli/chunks/{chunk-5C62XMJR.js → chunk-QTQDX4TZ.js} +33 -33
  137. package/dist/cli/chunks/{chunk-DURD37JZ.js → chunk-R3KBOQ3O.js} +2 -2
  138. package/dist/cli/chunks/{chunk-LJMYRTJ7.js → chunk-REY52O7J.js} +1 -1
  139. package/dist/cli/chunks/{chunk-W5ZJG2OU.js → chunk-RKCN4B26.js} +2 -2
  140. package/dist/cli/chunks/chunk-S3DT5TPR.js +14 -0
  141. package/dist/cli/chunks/{chunk-4HKAD25N.js → chunk-S3TBOKAZ.js} +22 -22
  142. package/dist/cli/chunks/{chunk-2IIXCEMS.js → chunk-SAEECT23.js} +2 -2
  143. package/dist/cli/chunks/{chunk-LB2LGEDP.js → chunk-SAZ4PJBR.js} +2 -2
  144. package/dist/cli/chunks/{chunk-FOOW4JVS.js → chunk-SFITYZLV.js} +2 -2
  145. package/dist/cli/chunks/{chunk-2ZFLULL4.js → chunk-SRBCBVSI.js} +2 -2
  146. package/dist/cli/chunks/chunk-SUAZ5Z47.js +63 -0
  147. package/dist/cli/chunks/{chunk-RBKUU7WF.js → chunk-TDZ6N43D.js} +2 -2
  148. package/dist/cli/chunks/chunk-TIVKDIF7.js +2 -0
  149. package/dist/cli/chunks/{chunk-MPFPWJTH.js → chunk-TM75GAXG.js} +2 -2
  150. package/dist/cli/chunks/{chunk-UJABDXST.js → chunk-TWBZONKT.js} +2 -2
  151. package/dist/cli/chunks/{chunk-AOKKUB5F.js → chunk-U4S74IIZ.js} +1 -1
  152. package/dist/cli/chunks/{chunk-W62OOK7A.js → chunk-U5SMBJ6F.js} +2 -2
  153. package/dist/cli/chunks/{chunk-6LE362LZ.js → chunk-UHJVZEQA.js} +2 -2
  154. package/dist/cli/chunks/{chunk-T67R2MUN.js → chunk-UOVCTK5L.js} +2 -2
  155. package/dist/cli/chunks/{chunk-FTRSS64D.js → chunk-VDEKVIP5.js} +2 -2
  156. package/dist/cli/chunks/{chunk-BDKEAGQ2.js → chunk-VITV7AEC.js} +2 -2
  157. package/dist/cli/chunks/{chunk-BU4UQR36.js → chunk-VKREKVFI.js} +2 -2
  158. package/dist/cli/chunks/{chunk-BZULJMGH.js → chunk-VLTDW7XJ.js} +2 -2
  159. package/dist/cli/chunks/{chunk-UE2J6MA5.js → chunk-VQFV2IPV.js} +1 -1
  160. package/dist/cli/chunks/{chunk-TZIHDJZD.js → chunk-VYPVU3JF.js} +2 -2
  161. package/dist/cli/chunks/{chunk-UORB2QDU.js → chunk-WAOEQA3W.js} +2 -2
  162. package/dist/cli/chunks/{chunk-GQABPCQE.js → chunk-WBDWHHKP.js} +2 -2
  163. package/dist/cli/chunks/{chunk-GGQGCT4Y.js → chunk-WX4PO65Q.js} +2 -2
  164. package/dist/cli/chunks/chunk-X2DWHGCC.js +6 -0
  165. package/dist/cli/chunks/{chunk-337Z52QM.js → chunk-X5QD76IU.js} +2 -2
  166. package/dist/cli/chunks/{chunk-E56PVVWC.js → chunk-XBTGEYED.js} +2 -2
  167. package/dist/cli/chunks/{chunk-5AFVEWMT.js → chunk-XEMCHGAJ.js} +2 -2
  168. package/dist/cli/chunks/{chunk-E3MRDIZF.js → chunk-XEYFZLIT.js} +1 -1
  169. package/dist/cli/chunks/{chunk-KCQNFBBR.js → chunk-XFTX3KLE.js} +1 -1
  170. package/dist/cli/chunks/{chunk-QFGYH6HD.js → chunk-XPTCQKVE.js} +1 -1
  171. package/dist/cli/chunks/{chunk-PXATBHWN.js → chunk-YAJOBZE5.js} +2 -2
  172. package/dist/cli/chunks/{chunk-27HE2BHC.js → chunk-YCVLKU6H.js} +2 -2
  173. package/dist/cli/chunks/{chunk-ZIPAB5J6.js → chunk-YD2C6EPN.js} +2 -2
  174. package/dist/cli/chunks/{chunk-5G4UFTV4.js → chunk-YKRLUTK7.js} +2 -2
  175. package/dist/cli/chunks/{chunk-YUS6TWAL.js → chunk-YMUY3TES.js} +6 -6
  176. package/dist/cli/chunks/chunk-YR5QBUHZ.js +6 -0
  177. package/dist/cli/chunks/{chunk-XH4JMX5O.js → chunk-Z7SKUC6P.js} +1 -1
  178. package/dist/cli/chunks/{chunk-EFUJDMNC.js → chunk-ZAQMRFBB.js} +2 -2
  179. package/dist/cli/chunks/{chunk-22UKJGGN.js → chunk-ZC3KDNJW.js} +3 -3
  180. package/dist/cli/chunks/{chunk-AP2W7Z3A.js → chunk-ZGV7L4MW.js} +1 -1
  181. package/dist/cli/chunks/{chunk-W27AJ5B4.js → chunk-ZN35XSKF.js} +2 -2
  182. package/dist/cli/chunks/{chunk-M4CJCPCQ.js → chunk-ZNXM6WVL.js} +2 -2
  183. package/dist/cli/chunks/{chunk-5I7357KS.js → chunk-ZP5AWQRO.js} +2 -2
  184. package/dist/cli/chunks/{chunk-OQG3UQQ7.js → chunk-ZTP3DQ5M.js} +1 -1
  185. package/dist/cli/chunks/{chunk-BFQTLF5X.js → chunk-ZVMSSCTH.js} +2 -2
  186. package/dist/cli/chunks/chunk-ZWUF27P4.js +2 -0
  187. package/dist/cli/chunks/{ci-UCUJOSBW.js → ci-3RTTTS2D.js} +2 -2
  188. package/dist/cli/chunks/{ci-config-2XILD3XG.js → ci-config-XRUR3I4K.js} +2 -2
  189. package/dist/cli/chunks/{ci-output-BL6KWOHW.js → ci-output-E5IAMU2U.js} +2 -2
  190. package/dist/cli/chunks/{circuit-breaker-5XLIOXE5.js → circuit-breaker-SHR2P44P.js} +2 -2
  191. package/dist/cli/chunks/{claude-flow-setup-4IMP6ACS.js → claude-flow-setup-ZDDILFMF.js} +2 -2
  192. package/dist/cli/chunks/client-NO5FOWT4.js +2 -0
  193. package/dist/cli/chunks/{cline-installer-RYLHCDK7.js → cline-installer-BGYVUM6G.js} +2 -2
  194. package/dist/cli/chunks/{code-WY3GJXHX.js → code-PJ4MC3MC.js} +4 -3
  195. package/dist/cli/chunks/{code-index-extractor-Y4MZBZCW.js → code-index-extractor-IW2P22YG.js} +2 -2
  196. package/dist/cli/chunks/{codex-installer-SCJ3T3DX.js → codex-installer-A7WZ6OGL.js} +2 -2
  197. package/dist/cli/chunks/{completions-CN2DXQFU.js → completions-KS23WD5J.js} +2 -2
  198. package/dist/cli/chunks/{complexity-analyzer-7MDPPIBH.js → complexity-analyzer-Q7GLSR2E.js} +2 -2
  199. package/dist/cli/chunks/{continuedev-installer-GCEJRK34.js → continuedev-installer-SK55BFW2.js} +2 -2
  200. package/dist/cli/chunks/copilot-installer-3N5J3WTM.js +3 -0
  201. package/dist/cli/chunks/core-handlers-JNAZPXE2.js +2 -0
  202. package/dist/cli/chunks/{cost-tracker-VO5MFWR6.js → cost-tracker-NENVSO4A.js} +2 -2
  203. package/dist/cli/chunks/{coverage-LYFQYNH6.js → coverage-5L7UQWDH.js} +3 -3
  204. package/dist/cli/chunks/cross-domain-router-HEBM767Z.js +2 -0
  205. package/dist/cli/chunks/{cursor-installer-KP4HA7TV.js → cursor-installer-XXBO2ZE6.js} +2 -2
  206. package/dist/cli/chunks/{daemon-7RC7TS57.js → daemon-CDCQU3LR.js} +3 -3
  207. package/dist/cli/chunks/daemon-JEBJGEUK.js +18 -0
  208. package/dist/cli/chunks/{dag-attention-scheduler-NKA44RSR.js → dag-attention-scheduler-HOMMF7FA.js} +2 -2
  209. package/dist/cli/chunks/{detect-CMYAJWYF.js → detect-FXCOUG6X.js} +2 -2
  210. package/dist/cli/chunks/{dist-node-EN3PYEGW.js → dist-node-GXQ7FMTY.js} +2 -2
  211. package/dist/cli/chunks/{domain-handler-EXSZCX7A.js → domain-handler-TI3JBAPC.js} +2 -2
  212. package/dist/cli/chunks/{domain-plugins-HCQFSNL7.js → domain-plugins-R7LTUM32.js} +2 -2
  213. package/dist/cli/chunks/{domain-transfer-3LGSNTPO.js → domain-transfer-LBIAFHIQ.js} +2 -2
  214. package/dist/cli/chunks/dream-GQDCEJMS.js +2 -0
  215. package/dist/cli/chunks/embed-and-insert-pattern-33KLHDD5.js +3 -0
  216. package/dist/cli/chunks/embedding-space-HHLWTBF5.js +2 -0
  217. package/dist/cli/chunks/{eval-OQELIWJK.js → eval-KDOZMAXJ.js} +2 -2
  218. package/dist/cli/chunks/experience-capture-middleware-X45PECQN.js +40 -0
  219. package/dist/cli/chunks/{fast-paths-UV4NDEWM.js → fast-paths-462V6UUB.js} +2 -2
  220. package/dist/cli/chunks/{feature-flags-H7H33B6C.js → feature-flags-G66OT3AS.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-CKTYX67J.js → feature-flags-NIRQ4YDM.js} +2 -2
  222. package/dist/cli/chunks/file-discovery-33USPLB5.js +2 -0
  223. package/dist/cli/chunks/{fleet-ZJBCAKRG.js → fleet-PXWGB7CU.js} +3 -3
  224. package/dist/cli/chunks/{gnn-wrapper-RUE2QZRG.js → gnn-wrapper-7MUW3M5M.js} +2 -2
  225. package/dist/cli/chunks/{heartbeat-handler-XRV327M7.js → heartbeat-handler-5237PB35.js} +4 -4
  226. package/dist/cli/chunks/heartbeat-scheduler-LIXLC5IH.js +2 -0
  227. package/dist/cli/chunks/hnsw-adapter-62D5UH27.js +2 -0
  228. package/dist/cli/chunks/hnsw-index-GSGUMQQC.js +2 -0
  229. package/dist/cli/chunks/{hnsw-legacy-bridge-UJID6ZZ4.js → hnsw-legacy-bridge-OSQPW7JP.js} +2 -2
  230. package/dist/cli/chunks/{hnswlib-node-WS43R4AX.js → hnswlib-node-GX6WG2GB.js} +2 -2
  231. package/dist/cli/chunks/{hooks-YZNJKXAJ.js → hooks-GUWHL7VC.js} +23 -22
  232. package/dist/cli/chunks/hybrid-backend-FRWP4BOY.js +2 -0
  233. package/dist/cli/chunks/{hypergraph-engine-XQJSIMTS.js → hypergraph-engine-SRWLLCU3.js} +2 -2
  234. package/dist/cli/chunks/{hypergraph-handler-ZD2NYXMR.js → hypergraph-handler-AVOPRHHO.js} +3 -3
  235. package/dist/cli/chunks/impact-analyzer-7KF3AQXV.js +2 -0
  236. package/dist/cli/chunks/{init-guard-DSRUAVRT.js → init-guard-P4N6EVZS.js} +2 -2
  237. package/dist/cli/chunks/{init-handler-RJU5QMAP.js → init-handler-LRGWOJMD.js} +6 -6
  238. package/dist/cli/chunks/init-wizard-XWWAXY25.js +2 -0
  239. package/dist/cli/chunks/kernel-ZEJPNDBW.js +2 -0
  240. package/dist/cli/chunks/{kilocode-installer-BCPOCVMC.js → kilocode-installer-7R2EPOQ6.js} +2 -2
  241. package/dist/cli/chunks/{kiro-installer-GFCWCB2S.js → kiro-installer-QNM7DPOB.js} +2 -2
  242. package/dist/cli/chunks/knowledge-graph-RRZQS7KY.js +2 -0
  243. package/dist/cli/chunks/{learning-FZTD72CF.js → learning-7OIZBPXZ.js} +3 -3
  244. package/dist/cli/chunks/{llm-router-GJVKGRJL.js → llm-router-SIDXES23.js} +4 -4
  245. package/dist/cli/chunks/llm-router-service-3OSW67LC.js +2 -0
  246. package/dist/cli/chunks/{load-YKTPOYBE.js → load-EI2E2C3S.js} +2 -2
  247. package/dist/cli/chunks/load-test-7TRIH2WJ.js +2 -0
  248. package/dist/cli/chunks/{mcp-LT6R2IKS.js → mcp-IOE5WOCS.js} +2 -2
  249. package/dist/cli/chunks/{memory-4HKKOLRY.js → memory-DLYGJAP7.js} +5 -5
  250. package/dist/cli/chunks/memory-backend-G7ZW6Q2B.js +2 -0
  251. package/dist/cli/chunks/memory-handlers-TPF3KCO5.js +2 -0
  252. package/dist/cli/chunks/{multi-model-executor-2YPM2WTK.js → multi-model-executor-WHH4YCHM.js} +2 -2
  253. package/dist/cli/chunks/{opencode-installer-WBAJMH5K.js → opencode-installer-63FDZAMS.js} +2 -2
  254. package/dist/cli/chunks/{orchestrator-5W5WVMVJ.js → orchestrator-3LA776KK.js} +5 -5
  255. package/dist/cli/chunks/pattern-null-store-OU3ZC3NR.js +2 -0
  256. package/dist/cli/chunks/{pattern-usage-recorder-GXRMNPAZ.js → pattern-usage-recorder-NW54QUGI.js} +2 -2
  257. package/dist/cli/chunks/{pipeline-2NA4DRDA.js → pipeline-P3TYX6J6.js} +2 -2
  258. package/dist/cli/chunks/{platform-BGERNQ5V.js → platform-FNA2WLI6.js} +2 -2
  259. package/dist/cli/chunks/{plugin-L4EPVENR.js → plugin-NJS7BC2S.js} +2 -2
  260. package/dist/cli/chunks/{prime-radiant-advanced-wasm-RTQRTPTM.js → prime-radiant-advanced-wasm-NIAVL2OT.js} +2 -2
  261. package/dist/cli/chunks/project-root-GMOFJEKD.js +2 -0
  262. package/dist/cli/chunks/protocol-executor-AD345XRO.js +2 -0
  263. package/dist/cli/chunks/{protocol-handler-SYQXM6JK.js → protocol-handler-JU5C4JHY.js} +2 -2
  264. package/dist/cli/chunks/{prove-5O7GPJCU.js → prove-35VOSLYP.js} +2 -2
  265. package/dist/cli/chunks/qe-reasoning-bank-NLTP26RC.js +2 -0
  266. package/dist/cli/chunks/{quality-KIIDHGNF.js → quality-ET74X7HN.js} +2 -2
  267. package/dist/cli/chunks/{quality-gate-H65VECD3.js → quality-gate-FEDQISNB.js} +3 -3
  268. package/dist/cli/chunks/queen-coordinator-2TB4FWS6.js +2 -0
  269. package/dist/cli/chunks/real-embeddings-II6CXTCI.js +2 -0
  270. package/dist/cli/chunks/{ref-validation-CSBJOMZM.js → ref-validation-DTBPYCEB.js} +2 -2
  271. package/dist/cli/chunks/{roocode-installer-G7OVYXEN.js → roocode-installer-LYQEMR4J.js} +2 -2
  272. package/dist/cli/chunks/router-PLM3MWME.js +2 -0
  273. package/dist/cli/chunks/routing-feedback-I7VOX2HU.js +2 -0
  274. package/dist/cli/chunks/{routing-handler-ZNZPPI5Y.js → routing-handler-DJOJFPII.js} +2 -2
  275. package/dist/cli/chunks/{ruvector-commands-C6IG3OY3.js → ruvector-commands-VXYGJDPW.js} +2 -2
  276. package/dist/cli/chunks/rvf-dual-writer-GQZHFWO2.js +2 -0
  277. package/dist/cli/chunks/rvf-migration-adapter-3TVKBCAM.js +2 -0
  278. package/dist/cli/chunks/rvf-migration-coordinator-XUHKLMT6.js +2 -0
  279. package/dist/cli/chunks/rvf-native-adapter-5GUTYOWS.js +2 -0
  280. package/dist/cli/chunks/{rvf-store-integrity-3G6LFLT3.js → rvf-store-integrity-GA2ZYOEG.js} +2 -2
  281. package/dist/cli/chunks/safe-db-RZPQGLGQ.js +2 -0
  282. package/dist/cli/chunks/schedule-G7JMQDUX.js +2 -0
  283. package/dist/cli/chunks/scheduler-4SEGPCKD.js +2 -0
  284. package/dist/cli/chunks/{security-A3IMVLFM.js → security-MM6YOECX.js} +3 -3
  285. package/dist/cli/chunks/{shared-rvf-adapter-VHWQ6US5.js → shared-rvf-adapter-6AHPA3V5.js} +2 -2
  286. package/dist/cli/chunks/{shared-rvf-dual-writer-JB3QS7IG.js → shared-rvf-dual-writer-EYAVY2GZ.js} +2 -2
  287. package/dist/cli/chunks/sqlite-persistence-IVE4SQXR.js +2 -0
  288. package/dist/cli/chunks/{standalone-memory-DDNXCSBD.js → standalone-memory-A3PLB4CZ.js} +2 -2
  289. package/dist/cli/chunks/{status-handler-2HK7XPEK.js → status-handler-OSSFAP4Z.js} +2 -2
  290. package/dist/cli/chunks/{structural-health-DSJVLEPV.js → structural-health-PGY5XUNO.js} +2 -2
  291. package/dist/cli/chunks/{sync-NTUR53PI.js → sync-CWEHYGNN.js} +2 -2
  292. package/dist/cli/chunks/sync-PM6D7EQF.js +2 -0
  293. package/dist/cli/chunks/task-handler-LHMQ75W4.js +64 -0
  294. package/dist/cli/chunks/{task-handlers-VJR6EHRZ.js → task-handlers-S2TX5FTR.js} +4 -4
  295. package/dist/cli/chunks/test-4EGZZ6NJ.js +34 -0
  296. package/dist/cli/chunks/test-runner-process-72YACW6M.js +2 -0
  297. package/dist/cli/chunks/{test-scheduling-Q6QEEOS6.js → test-scheduling-YJQHH3XE.js} +3 -3
  298. package/dist/cli/chunks/token-bootstrap-DJNETMVW.js +2 -0
  299. package/dist/cli/chunks/{token-usage-YEEFWSSI.js → token-usage-WPNOJR6H.js} +2 -2
  300. package/dist/cli/chunks/{transformers-BZCHJJJT.js → transformers-4MRPXCPU.js} +2 -2
  301. package/dist/cli/chunks/tree-sitter-wasm-parser-UVWSDXFR.js +2 -0
  302. package/dist/cli/chunks/{types-4AOKZYOX.js → types-6P5FB4EB.js} +2 -2
  303. package/dist/cli/chunks/unified-memory-2VMGSGQL.js +2 -0
  304. package/dist/cli/chunks/unified-memory-hnsw-3KULVD3N.js +2 -0
  305. package/dist/cli/chunks/unified-persistence-QCSLU2SV.js +2 -0
  306. package/dist/cli/chunks/{upgrade-2MWW6BT2.js → upgrade-4ICTN63Y.js} +2 -2
  307. package/dist/cli/chunks/{validate-PAEV3GT5.js → validate-HQF5GZ7L.js} +2 -2
  308. package/dist/cli/chunks/{validate-swarm-ZIXACK5K.js → validate-swarm-45JYG7VW.js} +2 -2
  309. package/dist/cli/chunks/visual-security-ZYP2KPH7.js +2 -0
  310. package/dist/cli/chunks/{web-tree-sitter-VLTXZFAB.js → web-tree-sitter-UOTWZLNH.js} +2 -2
  311. package/dist/cli/chunks/{windsurf-installer-VELMLOZF.js → windsurf-installer-WDWSBXGN.js} +2 -2
  312. package/dist/cli/chunks/witness-chain-5QRT7EMX.js +2 -0
  313. package/dist/cli/chunks/witness-chain-DOYMNPC7.js +2 -0
  314. package/dist/cli/chunks/witness-chain-repair-CUF2AFQB.js +2 -0
  315. package/dist/cli/chunks/{witness-chain-verifier-MIDWD4JS.js → witness-chain-verifier-JB42X62J.js} +2 -2
  316. package/dist/cli/chunks/{witness-key-manager-OSVCWOB2.js → witness-key-manager-LXXO6L2G.js} +2 -2
  317. package/dist/cli/chunks/{workflow-MK7A7QCX.js → workflow-6ARK47NF.js} +4 -4
  318. package/dist/cli/chunks/workflow-orchestrator-RYDDWIXN.js +2 -0
  319. package/dist/cli/chunks/wrappers-CYQBOMPL.js +2 -0
  320. package/dist/cli/commands/code.js +4 -0
  321. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +10 -2
  322. package/dist/cli/commands/test.js +26 -4
  323. package/dist/cli/handlers/task-handler.d.ts +5 -0
  324. package/dist/cli/handlers/task-handler.js +21 -1
  325. package/dist/cli/utils/task-result.d.ts +11 -0
  326. package/dist/cli/utils/task-result.js +39 -0
  327. package/dist/coordination/handlers/test-execution-handlers.js +137 -59
  328. package/dist/coordination/mincut/mincut-persistence.js +29 -25
  329. package/dist/domains/code-intelligence/coordinator.d.ts +4 -0
  330. package/dist/domains/code-intelligence/coordinator.js +46 -13
  331. package/dist/domains/code-intelligence/interfaces.d.ts +10 -1
  332. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +37 -7
  333. package/dist/domains/code-intelligence/services/semantic-analyzer.js +135 -62
  334. package/dist/domains/code-intelligence/services/text-relevance.d.ts +32 -0
  335. package/dist/domains/code-intelligence/services/text-relevance.js +63 -0
  336. package/dist/domains/learning-optimization/services/learning-coordinator.js +1 -1
  337. package/dist/domains/quality-assessment/coordinator.js +2 -1
  338. package/dist/domains/test-execution/coordinator.d.ts +3 -1
  339. package/dist/domains/test-execution/coordinator.js +21 -7
  340. package/dist/domains/test-execution/interfaces.d.ts +17 -0
  341. package/dist/domains/test-execution/plugin.js +8 -2
  342. package/dist/domains/test-execution/services/flaky-detector.d.ts +9 -1
  343. package/dist/domains/test-execution/services/flaky-detector.js +26 -8
  344. package/dist/domains/test-execution/services/retry-handler.d.ts +9 -1
  345. package/dist/domains/test-execution/services/retry-handler.js +56 -12
  346. package/dist/domains/test-execution/services/runner-test-cases.d.ts +2 -0
  347. package/dist/domains/test-execution/services/runner-test-cases.js +7 -3
  348. package/dist/domains/test-execution/services/test-executor.d.ts +6 -1
  349. package/dist/domains/test-execution/services/test-executor.js +97 -14
  350. package/dist/domains/visual-accessibility/coordinator.d.ts +15 -7
  351. package/dist/domains/visual-accessibility/coordinator.js +15 -7
  352. package/dist/domains/visual-accessibility/interfaces.d.ts +27 -3
  353. package/dist/domains/visual-accessibility/services/accessibility-contrast.d.ts +39 -0
  354. package/dist/domains/visual-accessibility/services/accessibility-contrast.js +93 -0
  355. package/dist/domains/visual-accessibility/services/accessibility-tester-browser.d.ts +18 -3
  356. package/dist/domains/visual-accessibility/services/accessibility-tester-browser.js +50 -40
  357. package/dist/domains/visual-accessibility/services/accessibility-tester-checks.d.ts +27 -0
  358. package/dist/domains/visual-accessibility/services/accessibility-tester-checks.js +137 -0
  359. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +5 -0
  360. package/dist/domains/visual-accessibility/services/accessibility-tester.js +43 -24
  361. package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.d.ts +2 -3
  362. package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.js +8 -14
  363. package/dist/feedback/coverage-learner.js +13 -9
  364. package/dist/feedback/test-outcome-tracker.js +13 -9
  365. package/dist/governance/witness-chain.d.ts +5 -0
  366. package/dist/governance/witness-chain.js +22 -6
  367. package/dist/init/copilot-installer.d.ts +6 -0
  368. package/dist/init/copilot-installer.js +37 -17
  369. package/dist/init/platform-config-generator.d.ts +10 -0
  370. package/dist/init/platform-config-generator.js +26 -1
  371. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +22 -0
  372. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +115 -45
  373. package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.d.ts +6 -0
  374. package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.js +51 -33
  375. package/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.js +17 -9
  376. package/dist/integrations/embeddings/cache/EmbeddingCache.d.ts +8 -0
  377. package/dist/integrations/embeddings/cache/EmbeddingCache.js +24 -10
  378. package/dist/integrations/ruvector/delta-tracker.d.ts +11 -0
  379. package/dist/integrations/ruvector/delta-tracker.js +16 -0
  380. package/dist/integrations/ruvector/sona-persistence.d.ts +10 -0
  381. package/dist/integrations/ruvector/sona-persistence.js +49 -24
  382. package/dist/kernel/unified-memory.d.ts +32 -0
  383. package/dist/kernel/unified-memory.js +76 -8
  384. package/dist/learning/aqe-learning-engine.js +1 -1
  385. package/dist/learning/embed-and-insert-pattern.js +4 -2
  386. package/dist/learning/embedder-endpoint-client.d.ts +76 -0
  387. package/dist/learning/embedder-endpoint-client.js +201 -13
  388. package/dist/learning/embedding-space-registry.d.ts +75 -0
  389. package/dist/learning/embedding-space-registry.js +142 -0
  390. package/dist/learning/embedding-space.d.ts +12 -0
  391. package/dist/learning/embedding-space.js +17 -0
  392. package/dist/learning/experience-capture-middleware.js +25 -13
  393. package/dist/learning/experience-capture.js +1 -1
  394. package/dist/learning/experience-consolidation.d.ts +18 -0
  395. package/dist/learning/experience-consolidation.js +55 -8
  396. package/dist/learning/experience-space-verification.d.ts +71 -0
  397. package/dist/learning/experience-space-verification.js +147 -0
  398. package/dist/learning/pattern-lifecycle.d.ts +40 -4
  399. package/dist/learning/pattern-lifecycle.js +153 -76
  400. package/dist/learning/pattern-null-store.d.ts +5 -0
  401. package/dist/learning/pattern-null-store.js +8 -0
  402. package/dist/learning/pattern-promotion.js +6 -3
  403. package/dist/learning/pattern-store.d.ts +6 -0
  404. package/dist/learning/pattern-store.js +19 -6
  405. package/dist/learning/qe-reasoning-bank.js +2 -2
  406. package/dist/learning/real-embeddings.d.ts +3 -0
  407. package/dist/learning/real-embeddings.js +52 -12
  408. package/dist/learning/real-qe-reasoning-bank.d.ts +5 -0
  409. package/dist/learning/real-qe-reasoning-bank.js +77 -47
  410. package/dist/learning/rvf-pattern-store.js +6 -2
  411. package/dist/learning/sqlite-persistence.d.ts +6 -0
  412. package/dist/learning/sqlite-persistence.js +10 -0
  413. package/dist/mcp/bundle.js +699 -619
  414. package/dist/mcp/entry.js +4 -0
  415. package/dist/mcp/handlers/domain-handler-configs.js +2 -0
  416. package/dist/mcp/handlers/trajectory-judge.js +1 -1
  417. package/dist/mcp/protocol-server.js +1 -0
  418. package/dist/mcp/tools/visual-accessibility/index.js +8 -2
  419. package/dist/mcp/types.d.ts +6 -0
  420. package/dist/optimization/session-cache.d.ts +17 -1
  421. package/dist/optimization/session-cache.js +40 -36
  422. package/dist/planning/goap-planner.d.ts +6 -0
  423. package/dist/planning/goap-planner.js +35 -19
  424. package/dist/planning/plan-executor.js +24 -15
  425. package/dist/routing/co-execution-repository.js +12 -9
  426. package/dist/routing/routing-feedback.d.ts +8 -0
  427. package/dist/routing/routing-feedback.js +46 -24
  428. package/dist/routing/routing-outcomes-migration.js +7 -2
  429. package/dist/shared/embeddings/index.d.ts +2 -2
  430. package/dist/shared/embeddings/index.js +1 -1
  431. package/dist/shared/embeddings/nomic-embedder.d.ts +8 -2
  432. package/dist/shared/embeddings/nomic-embedder.js +19 -11
  433. package/dist/shared/embeddings/ollama-client.d.ts +28 -2
  434. package/dist/shared/embeddings/ollama-client.js +84 -22
  435. package/dist/shared/embeddings/types.d.ts +15 -0
  436. package/dist/shared/embeddings/types.js +4 -0
  437. package/dist/shared/llm/spend-ledger.d.ts +9 -0
  438. package/dist/shared/llm/spend-ledger.js +64 -39
  439. package/dist/shared/pytest-junit-report.d.ts +93 -0
  440. package/dist/shared/pytest-junit-report.js +241 -0
  441. package/dist/shared/sqlite-lock-wait.d.ts +27 -0
  442. package/dist/shared/sqlite-lock-wait.js +37 -0
  443. package/dist/shared/sqlite-write-queue.d.ts +28 -0
  444. package/dist/shared/sqlite-write-queue.js +38 -0
  445. package/dist/shared/test-runner-project.d.ts +119 -0
  446. package/dist/shared/test-runner-project.js +301 -0
  447. package/dist/skills/security-visual-testing/index.d.ts +3 -1
  448. package/dist/skills/security-visual-testing/index.js +49 -35
  449. package/dist/skills/security-visual-testing/types.d.ts +19 -3
  450. package/dist/workers/workers/heartbeat-scheduler.js +5 -5
  451. package/dist/workers/workers/learning-consolidation.js +8 -7
  452. package/package.json +1 -1
  453. package/dist/cli/chunks/adapter-QU6INSKP.js +0 -2
  454. package/dist/cli/chunks/aqe-learning-engine-PAJPENJD.js +0 -2
  455. package/dist/cli/chunks/base-OTGSN6IC.js +0 -2
  456. package/dist/cli/chunks/browser-workflow-WLZGR6SB.js +0 -2
  457. package/dist/cli/chunks/chunk-2LUTPMBO.js +0 -21
  458. package/dist/cli/chunks/chunk-3HVFIITW.js +0 -2
  459. package/dist/cli/chunks/chunk-4D4CWP72.js +0 -2
  460. package/dist/cli/chunks/chunk-5KA5TVPR.js +0 -6
  461. package/dist/cli/chunks/chunk-6NBRMD25.js +0 -13
  462. package/dist/cli/chunks/chunk-7O45RQHF.js +0 -153
  463. package/dist/cli/chunks/chunk-EMSZVUYA.js +0 -29
  464. package/dist/cli/chunks/chunk-G6RDCCFV.js +0 -4
  465. package/dist/cli/chunks/chunk-HH4ED4F7.js +0 -744
  466. package/dist/cli/chunks/chunk-Q6I4SIUU.js +0 -65
  467. package/dist/cli/chunks/chunk-QGBGSQ2E.js +0 -14
  468. package/dist/cli/chunks/chunk-QRKTBSZT.js +0 -27
  469. package/dist/cli/chunks/chunk-SHRI7TKJ.js +0 -62
  470. package/dist/cli/chunks/chunk-TX2CHQD7.js +0 -2
  471. package/dist/cli/chunks/chunk-UGYM4U44.js +0 -2
  472. package/dist/cli/chunks/chunk-VY4U6DPO.js +0 -12
  473. package/dist/cli/chunks/chunk-WNTA4YKE.js +0 -14
  474. package/dist/cli/chunks/chunk-XHLYGXYE.js +0 -2
  475. package/dist/cli/chunks/client-KKRNPX4F.js +0 -2
  476. package/dist/cli/chunks/copilot-installer-BHPDSELY.js +0 -3
  477. package/dist/cli/chunks/core-handlers-47MPMED7.js +0 -2
  478. package/dist/cli/chunks/cross-domain-router-U6MBFHEC.js +0 -2
  479. package/dist/cli/chunks/daemon-AXLVPKVO.js +0 -18
  480. package/dist/cli/chunks/dream-76L6EEN7.js +0 -2
  481. package/dist/cli/chunks/embed-and-insert-pattern-B6MNHICW.js +0 -3
  482. package/dist/cli/chunks/experience-capture-middleware-SUFILYPW.js +0 -40
  483. package/dist/cli/chunks/file-discovery-VSFKZ3LJ.js +0 -2
  484. package/dist/cli/chunks/heartbeat-scheduler-NIK3KKEH.js +0 -2
  485. package/dist/cli/chunks/hnsw-adapter-WJG7LUJJ.js +0 -2
  486. package/dist/cli/chunks/hnsw-index-D6PRI5HC.js +0 -2
  487. package/dist/cli/chunks/hybrid-backend-RIUR3I7F.js +0 -2
  488. package/dist/cli/chunks/impact-analyzer-C36YYTJ5.js +0 -2
  489. package/dist/cli/chunks/init-wizard-JCKNGIGT.js +0 -2
  490. package/dist/cli/chunks/kernel-F7ILJTYD.js +0 -2
  491. package/dist/cli/chunks/knowledge-graph-VTXDBHB2.js +0 -2
  492. package/dist/cli/chunks/llm-router-service-TNOWQINA.js +0 -2
  493. package/dist/cli/chunks/load-test-FPVBK2EV.js +0 -2
  494. package/dist/cli/chunks/memory-backend-2QE7O67A.js +0 -2
  495. package/dist/cli/chunks/memory-handlers-X4CMVBXB.js +0 -2
  496. package/dist/cli/chunks/pattern-null-store-UI35ORHW.js +0 -2
  497. package/dist/cli/chunks/project-root-S7WDFTMU.js +0 -2
  498. package/dist/cli/chunks/protocol-executor-OPANXQVB.js +0 -2
  499. package/dist/cli/chunks/qe-reasoning-bank-3OTF4DYQ.js +0 -2
  500. package/dist/cli/chunks/queen-coordinator-WTYH4TAN.js +0 -2
  501. package/dist/cli/chunks/real-embeddings-DYIOLKQ3.js +0 -2
  502. package/dist/cli/chunks/router-DBBW4NC2.js +0 -2
  503. package/dist/cli/chunks/routing-feedback-W35QHCL4.js +0 -2
  504. package/dist/cli/chunks/rvf-dual-writer-X3NSL25Z.js +0 -2
  505. package/dist/cli/chunks/rvf-migration-adapter-TZR7GDOK.js +0 -2
  506. package/dist/cli/chunks/rvf-migration-coordinator-4ATTHGHD.js +0 -2
  507. package/dist/cli/chunks/rvf-native-adapter-HD25ZYV5.js +0 -2
  508. package/dist/cli/chunks/safe-db-ZS2QKANY.js +0 -2
  509. package/dist/cli/chunks/schedule-ZH6VNA32.js +0 -2
  510. package/dist/cli/chunks/scheduler-T6CD74B6.js +0 -2
  511. package/dist/cli/chunks/sqlite-persistence-47WU5EKZ.js +0 -2
  512. package/dist/cli/chunks/sync-3MUV6S5E.js +0 -2
  513. package/dist/cli/chunks/task-handler-74MZN2EO.js +0 -62
  514. package/dist/cli/chunks/test-O6FK3FVF.js +0 -34
  515. package/dist/cli/chunks/test-runner-process-2NPW3UDQ.js +0 -2
  516. package/dist/cli/chunks/token-bootstrap-TTRCECLP.js +0 -2
  517. package/dist/cli/chunks/tree-sitter-wasm-parser-RZAND65G.js +0 -2
  518. package/dist/cli/chunks/unified-memory-FZ5K2C7W.js +0 -2
  519. package/dist/cli/chunks/unified-memory-hnsw-VREWX56M.js +0 -2
  520. package/dist/cli/chunks/unified-persistence-YZGMKX6B.js +0 -2
  521. package/dist/cli/chunks/visual-security-GXGSFBVA.js +0 -2
  522. package/dist/cli/chunks/witness-chain-MRJKVCOW.js +0 -2
  523. package/dist/cli/chunks/witness-chain-WWHJKITG.js +0 -2
  524. package/dist/cli/chunks/witness-chain-repair-5SAXPETG.js +0 -2
  525. package/dist/cli/chunks/workflow-orchestrator-SG7DV72E.js +0 -2
  526. package/dist/cli/chunks/wrappers-5QFMCKXL.js +0 -2
@@ -10,6 +10,7 @@ import { QE_AGENT_REGISTRY } from './qe-agent-registry.js';
10
10
  import { getUnifiedMemory } from '../kernel/unified-memory.js';
11
11
  import { safeJsonParse } from '../shared/safe-json.js';
12
12
  import { toErrorMessage } from '../shared/error-utils.js';
13
+ import { isBusyError } from '../learning/dream/dream-lock-retry.js';
13
14
  import { EMACalibrator } from './calibration/index.js';
14
15
  import { AutoEscalationTracker } from './escalation/index.js';
15
16
  import { ensureRoutingOutcomesAdr095Columns } from './routing-outcomes-migration.js';
@@ -141,10 +142,11 @@ export class RoutingFeedbackCollector {
141
142
  * Persist a single outcome to the database
142
143
  */
143
144
  persistOutcome(outcome) {
144
- if (!this.db)
145
- return;
146
- try {
147
- const database = this.db.getDatabase();
145
+ const modelTier = this.inferTier(outcome.usedAgent);
146
+ const advisorJson = outcome.advisorConsultation
147
+ ? JSON.stringify(outcome.advisorConsultation)
148
+ : null;
149
+ this.persistInBackground('outcome', (database) => {
148
150
  // Ensure schema columns exist for databases created before ADR-092
149
151
  // and ADR-095. Runs once per process via the flag; new databases have
150
152
  // columns from unified-memory-schemas.ts CREATE TABLE.
@@ -156,17 +158,17 @@ export class RoutingFeedbackCollector {
156
158
  try {
157
159
  database.prepare(col).run();
158
160
  }
159
- catch { /* column already exists */ }
161
+ catch (error) {
162
+ // Column already exists. A locked database is retried instead (#1274).
163
+ if (isBusyError(error))
164
+ throw error;
165
+ }
160
166
  }
161
167
  // ADR-095: routing exploration columns via shared helper so all
162
168
  // writer paths agree on the column set.
163
169
  ensureRoutingOutcomesAdr095Columns(database);
164
170
  RoutingFeedbackCollector.schemaMigrated = true;
165
171
  }
166
- const modelTier = this.inferTier(outcome.usedAgent);
167
- const advisorJson = outcome.advisorConsultation
168
- ? JSON.stringify(outcome.advisorConsultation)
169
- : null;
170
172
  database.prepare(`
171
173
  INSERT OR REPLACE INTO routing_outcomes (
172
174
  id, task_json, decision_json, used_agent,
@@ -174,13 +176,30 @@ export class RoutingFeedbackCollector {
174
176
  duration_ms, error, model_tier, advisor_consultation_json
175
177
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
176
178
  `).run(outcome.id, JSON.stringify(outcome.task), JSON.stringify(outcome.decision), outcome.usedAgent, outcome.followedRecommendation ? 1 : 0, outcome.outcome.success ? 1 : 0, outcome.outcome.qualityScore, outcome.outcome.durationMs, outcome.outcome.error || null, modelTier, advisorJson);
179
+ }, () => {
177
180
  this.persistCount++;
178
181
  if (this.persistCount % RoutingFeedbackCollector.RETENTION_CLEANUP_INTERVAL === 0) {
179
- this.enforceRetention(database);
182
+ this.enforceRetention();
180
183
  }
184
+ });
185
+ }
186
+ /**
187
+ * Queue a write on the shared connection without blocking the caller
188
+ * (#1274). recordOutcome runs after every routed task, so a locked
189
+ * memory.db must not freeze the MCP server's event loop. Writes keep their
190
+ * call order and the connection's full busy_timeout budget; with the
191
+ * database unlocked and nothing queued the write runs at once, as before.
192
+ */
193
+ persistInBackground(what, write, onPersisted) {
194
+ if (!this.db)
195
+ return;
196
+ const warn = (error) => console.warn(`[RoutingFeedbackCollector] Failed to persist ${what}:`, toErrorMessage(error));
197
+ try {
198
+ const database = this.db.getDatabase();
199
+ this.db.writeWhenUnlocked(() => write(database)).then(onPersisted, warn);
181
200
  }
182
201
  catch (error) {
183
- console.warn('[RoutingFeedbackCollector] Failed to persist outcome:', toErrorMessage(error));
202
+ warn(error);
184
203
  }
185
204
  }
186
205
  /**
@@ -228,18 +247,15 @@ export class RoutingFeedbackCollector {
228
247
  /**
229
248
  * Delete oldest rows beyond retention limit
230
249
  */
231
- enforceRetention(database) {
232
- try {
233
- const maxRows = this.maxOutcomes * 2;
250
+ enforceRetention() {
251
+ const maxRows = this.maxOutcomes * 2;
252
+ this.persistInBackground('retention cleanup', (database) => {
234
253
  database.prepare(`
235
254
  DELETE FROM routing_outcomes WHERE id NOT IN (
236
255
  SELECT id FROM routing_outcomes ORDER BY created_at DESC LIMIT ?
237
256
  )
238
257
  `).run(maxRows);
239
- }
240
- catch (error) {
241
- console.warn('[RoutingFeedbackCollector] Retention cleanup failed:', toErrorMessage(error));
242
- }
258
+ });
243
259
  }
244
260
  /**
245
261
  * Load persisted EMA calibrator state from the database
@@ -268,14 +284,17 @@ export class RoutingFeedbackCollector {
268
284
  persistCalibratorState() {
269
285
  if (!this.db || !this.calibrator)
270
286
  return;
287
+ let serialized;
271
288
  try {
272
- const database = this.db.getDatabase();
273
- const serialized = JSON.stringify(this.calibrator.serialize());
274
- database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:ema_calibrator_state', serialized);
289
+ serialized = JSON.stringify(this.calibrator.serialize());
275
290
  }
276
291
  catch (error) {
277
292
  console.warn('[RoutingFeedbackCollector] Failed to persist calibrator state:', toErrorMessage(error));
293
+ return;
278
294
  }
295
+ this.persistInBackground('calibrator state', (database) => {
296
+ database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:ema_calibrator_state', serialized);
297
+ });
279
298
  }
280
299
  /**
281
300
  * Load persisted economic routing state from the database
@@ -304,14 +323,17 @@ export class RoutingFeedbackCollector {
304
323
  persistEconomicState() {
305
324
  if (!this.db || !this.economicModel)
306
325
  return;
326
+ let serialized;
307
327
  try {
308
- const database = this.db.getDatabase();
309
- const serialized = JSON.stringify(this.economicModel.serializeEstimates());
310
- database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:economic_quality_estimates', serialized);
328
+ serialized = JSON.stringify(this.economicModel.serializeEstimates());
311
329
  }
312
330
  catch (error) {
313
331
  console.warn('[RoutingFeedbackCollector] Failed to persist economic state:', toErrorMessage(error));
332
+ return;
314
333
  }
334
+ this.persistInBackground('economic state', (database) => {
335
+ database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:economic_quality_estimates', serialized);
336
+ });
315
337
  }
316
338
  /**
317
339
  * Connect to router for automatic performance updates
@@ -13,6 +13,7 @@
13
13
  * Callers run this before INSERTing rows that reference the new columns.
14
14
  * A process-local flag prevents repeated migration attempts.
15
15
  */
16
+ import { isBusyError } from '../learning/dream/dream-lock-retry.js';
16
17
  let migrated = false;
17
18
  /**
18
19
  * Add the ADR-095 columns to routing_outcomes if they don't already exist.
@@ -34,11 +35,15 @@ export function ensureRoutingOutcomesAdr095Columns(db) {
34
35
  try {
35
36
  db.prepare(stmt).run();
36
37
  }
37
- catch {
38
+ catch (error) {
38
39
  // Column already exists, or table doesn't exist yet. Both are
39
40
  // acceptable — ALTER is additive, and a missing table means the
40
41
  // unified schema hasn't been applied yet (caller's INSERT will fail
41
- // separately with a clearer error).
42
+ // separately with a clearer error). A locked database is not (#1274):
43
+ // rethrow so a retrying caller migrates on its next attempt instead of
44
+ // marking the migration done without the columns.
45
+ if (isBusyError(error))
46
+ throw error;
42
47
  }
43
48
  }
44
49
  // Index on exploration for the bucket-comparison queries used by
@@ -28,8 +28,8 @@
28
28
  */
29
29
  export { NomicEmbedder, createNomicEmbedder } from './nomic-embedder';
30
30
  export type { NomicEmbedderConfig } from './nomic-embedder';
31
- export { OllamaClient } from './ollama-client';
31
+ export { OllamaClient, isConfiguredOllamaModel } from './ollama-client';
32
32
  export { EmbeddingCache } from './embedding-cache';
33
- export type { CodeChunk, EmbeddingResult, EmbeddingBatchResult, OllamaEmbeddingRequest, OllamaEmbeddingResponse, OllamaHealthResponse, CacheStats, EmbeddingCacheEntry, BatchProgress, ProgressCallback, IEmbeddingProvider, } from './types';
33
+ export type { CodeChunk, EmbeddingResult, EmbeddingBatchResult, OllamaEmbeddingRequest, OllamaEmbeddingResponse, OllamaHealthResponse, OllamaModelStatus, CacheStats, EmbeddingCacheEntry, BatchProgress, ProgressCallback, IEmbeddingProvider, } from './types';
34
34
  export { EMBEDDING_CONFIG } from './types';
35
35
  //# sourceMappingURL=index.d.ts.map
@@ -27,7 +27,7 @@
27
27
  * ```
28
28
  */
29
29
  export { NomicEmbedder, createNomicEmbedder } from './nomic-embedder.js';
30
- export { OllamaClient } from './ollama-client.js';
30
+ export { OllamaClient, isConfiguredOllamaModel } from './ollama-client.js';
31
31
  export { EmbeddingCache } from './embedding-cache.js';
32
32
  export { EMBEDDING_CONFIG } from './types.js';
33
33
  //# sourceMappingURL=index.js.map
@@ -11,13 +11,15 @@
11
11
  * - Error handling and retries
12
12
  */
13
13
  import { EmbeddingCache } from './embedding-cache';
14
- import { CodeChunk, EmbeddingBatchResult, ProgressCallback, CacheStats, IEmbeddingProvider } from './types';
14
+ import { CodeChunk, EmbeddingBatchResult, ProgressCallback, CacheStats, IEmbeddingProvider, OllamaModelStatus } from './types';
15
15
  /**
16
16
  * Configuration for NomicEmbedder
17
17
  */
18
18
  export interface NomicEmbedderConfig {
19
19
  /** Ollama base URL (default: http://localhost:11434) */
20
20
  ollamaBaseUrl?: string;
21
+ /** #1229: installed Ollama model to use (default: AQE_OLLAMA_EMBEDDING_MODEL, else found by name) */
22
+ ollamaModel?: string;
21
23
  /** Batch size for processing (default: 100) */
22
24
  batchSize?: number;
23
25
  /** Maximum cache size (default: 10000) */
@@ -100,6 +102,10 @@ export declare class NomicEmbedder implements IEmbeddingProvider {
100
102
  * Verify Ollama connection and model availability
101
103
  */
102
104
  healthCheck(): Promise<boolean>;
105
+ /** #1229: the installed Ollama model, or why there is none. */
106
+ checkModel(): Promise<OllamaModelStatus>;
107
+ /** Identifies the embedding space of this embedder's vectors (ADR-097). */
108
+ getModelId(): string;
103
109
  /**
104
110
  * Get Ollama server information
105
111
  */
@@ -112,7 +118,7 @@ export declare class NomicEmbedder implements IEmbeddingProvider {
112
118
  * Get configuration info
113
119
  */
114
120
  getConfig(): {
115
- model: "all-MiniLM-L6-v2";
121
+ model: string;
116
122
  dimensions: 384;
117
123
  contextWindow: 8192;
118
124
  batchSize: number;
@@ -17,7 +17,7 @@ import { EMBEDDING_CONFIG, } from './types.js';
17
17
  const PSEUDO_EMBEDDING_MODEL = 'pseudo-embedding';
18
18
  // Unversioned real-model entries may predate fallback provenance separation.
19
19
  const VERIFIED_MODEL_CACHE_NAMESPACE = 'verified-backend-v1';
20
- const cacheNamespace = (model) => model === EMBEDDING_CONFIG.MODEL ? VERIFIED_MODEL_CACHE_NAMESPACE : undefined;
20
+ const cacheNamespace = (model) => model === PSEUDO_EMBEDDING_MODEL ? undefined : VERIFIED_MODEL_CACHE_NAMESPACE;
21
21
  /**
22
22
  * Nomic Embedder for generating code embeddings via Ollama
23
23
  */
@@ -45,7 +45,7 @@ export class NomicEmbedder {
45
45
  * ```
46
46
  */
47
47
  constructor(config = {}) {
48
- this.client = new OllamaClient(config.ollamaBaseUrl);
48
+ this.client = new OllamaClient(config.ollamaBaseUrl, undefined, undefined, undefined, config.ollamaModel);
49
49
  this.cache = config.cache ?? new EmbeddingCache(config.maxCacheSize);
50
50
  this.batchSize = config.batchSize ?? EMBEDDING_CONFIG.BATCH_SIZE;
51
51
  this.enableFallback = config.enableFallback ?? true;
@@ -56,9 +56,9 @@ export class NomicEmbedder {
56
56
  async embed(text) {
57
57
  // Prefer genuine cached vectors, then select the active backend before a
58
58
  // single counted lookup so alternate namespaces do not inflate misses.
59
- let model = this.cache.has(text, EMBEDDING_CONFIG.MODEL, VERIFIED_MODEL_CACHE_NAMESPACE) ||
59
+ let model = this.cache.has(text, this.getModelId(), VERIFIED_MODEL_CACHE_NAMESPACE) ||
60
60
  await this.isOllamaAvailable() || !this.enableFallback
61
- ? EMBEDDING_CONFIG.MODEL : PSEUDO_EMBEDDING_MODEL;
61
+ ? this.getModelId() : PSEUDO_EMBEDDING_MODEL;
62
62
  const cached = this.cache.get(text, model, cacheNamespace(model));
63
63
  if (cached) {
64
64
  return cached;
@@ -66,7 +66,7 @@ export class NomicEmbedder {
66
66
  // Try Ollama first, fall back to pseudo-embedding if unavailable
67
67
  let embedding;
68
68
  if (await this.isOllamaAvailable()) {
69
- model = EMBEDDING_CONFIG.MODEL;
69
+ model = this.getModelId();
70
70
  embedding = await this.client.generateEmbedding(text);
71
71
  }
72
72
  else if (this.enableFallback) {
@@ -75,7 +75,7 @@ export class NomicEmbedder {
75
75
  }
76
76
  else {
77
77
  throw new Error(`Ollama is not available and fallback is disabled. ` +
78
- `Please run: ollama pull ${EMBEDDING_CONFIG.MODEL}`);
78
+ `Please run: ollama pull ${EMBEDDING_CONFIG.OLLAMA_PULL_NAME}`);
79
79
  }
80
80
  // Cache result
81
81
  this.cache.set(text, model, embedding, cacheNamespace(model));
@@ -137,7 +137,7 @@ export class NomicEmbedder {
137
137
  }
138
138
  else if (!this.enableFallback) {
139
139
  throw new Error(`Ollama is not available and fallback is disabled. ` +
140
- `Please run: ollama pull ${EMBEDDING_CONFIG.MODEL}`);
140
+ `Please run: ollama pull ${EMBEDDING_CONFIG.OLLAMA_PULL_NAME}`);
141
141
  }
142
142
  // Process in batches
143
143
  for (let i = 0; i < chunks.length; i += this.batchSize) {
@@ -191,8 +191,8 @@ export class NomicEmbedder {
191
191
  const formattedText = this.formatForEmbedding(chunk);
192
192
  const chunkStartTime = Date.now();
193
193
  // Check cache
194
- const cachedModel = useOllama || this.cache.has(formattedText, EMBEDDING_CONFIG.MODEL, VERIFIED_MODEL_CACHE_NAMESPACE)
195
- ? EMBEDDING_CONFIG.MODEL : PSEUDO_EMBEDDING_MODEL;
194
+ const cachedModel = useOllama || this.cache.has(formattedText, this.getModelId(), VERIFIED_MODEL_CACHE_NAMESPACE)
195
+ ? this.getModelId() : PSEUDO_EMBEDDING_MODEL;
196
196
  const cachedEmbedding = this.cache.get(formattedText, cachedModel, cacheNamespace(cachedModel));
197
197
  if (cachedEmbedding) {
198
198
  return {
@@ -213,7 +213,7 @@ export class NomicEmbedder {
213
213
  embedding = this.generatePseudoEmbedding(formattedText);
214
214
  }
215
215
  // Cache the result
216
- const model = useOllama ? EMBEDDING_CONFIG.MODEL : PSEUDO_EMBEDDING_MODEL;
216
+ const model = useOllama ? this.getModelId() : PSEUDO_EMBEDDING_MODEL;
217
217
  this.cache.set(formattedText, model, embedding, cacheNamespace(model));
218
218
  return {
219
219
  chunkId: chunk.id,
@@ -300,6 +300,14 @@ export class NomicEmbedder {
300
300
  async healthCheck() {
301
301
  return await this.client.healthCheck();
302
302
  }
303
+ /** #1229: the installed Ollama model, or why there is none. */
304
+ async checkModel() {
305
+ return await this.client.checkModel();
306
+ }
307
+ /** Identifies the embedding space of this embedder's vectors (ADR-097). */
308
+ getModelId() {
309
+ return this.client.getModelId();
310
+ }
303
311
  /**
304
312
  * Get Ollama server information
305
313
  */
@@ -317,7 +325,7 @@ export class NomicEmbedder {
317
325
  */
318
326
  getConfig() {
319
327
  return {
320
- model: EMBEDDING_CONFIG.MODEL,
328
+ model: this.getModelId(),
321
329
  dimensions: EMBEDDING_CONFIG.DIMENSIONS,
322
330
  contextWindow: EMBEDDING_CONFIG.CONTEXT_WINDOW,
323
331
  batchSize: this.batchSize,
@@ -2,7 +2,16 @@
2
2
  * Agentic QE v3 - Ollama API Client
3
3
  * Client for Ollama embeddings API with retry logic
4
4
  */
5
- import { OllamaHealthResponse } from './types';
5
+ import { OllamaHealthResponse, OllamaModelStatus } from './types';
6
+ /**
7
+ * #1229: whether an installed Ollama model is EMBEDDING_CONFIG.MODEL. Accepts
8
+ * the exact name with any namespace and tag (`Xenova/all-MiniLM-L6-v2:latest`)
9
+ * and Ollama's library name `all-minilm` with an L6 tag (`all-minilm:22m`).
10
+ * Other models are rejected, even 384-dimensional ones such as
11
+ * `all-minilm:33m` (all-MiniLM-L12-v2): their vectors are in another
12
+ * embedding space (ADR-097).
13
+ */
14
+ export declare function isConfiguredOllamaModel(listed: string): boolean;
6
15
  /**
7
16
  * Client for Ollama API
8
17
  */
@@ -11,11 +20,28 @@ export declare class OllamaClient {
11
20
  private maxRetries;
12
21
  private retryDelayMs;
13
22
  private timeoutMs;
14
- constructor(baseUrl?: string, maxRetries?: number, retryDelayMs?: number, timeoutMs?: number);
23
+ /** #1229: the Ollama model named by the user (AQE_OLLAMA_EMBEDDING_MODEL), if any. */
24
+ private readonly requestedModel?;
25
+ /** The installed Ollama model found by the last successful check. */
26
+ private installedModel;
27
+ constructor(baseUrl?: string, maxRetries?: number, retryDelayMs?: number, timeoutMs?: number, ollamaModel?: string | undefined);
28
+ /** The Ollama server this client talks to. */
29
+ getBaseUrl(): string;
30
+ /**
31
+ * Identifies the embedding space of this client's vectors. A model named by
32
+ * AQE_OLLAMA_EMBEDDING_MODEL that is not EMBEDDING_CONFIG.MODEL gets its own
33
+ * id, so its vectors are never compared with stored MiniLM vectors (ADR-097).
34
+ */
35
+ getModelId(): string;
15
36
  /**
16
37
  * Check if Ollama is running and the configured embedding model is available
17
38
  */
18
39
  healthCheck(): Promise<boolean>;
40
+ /**
41
+ * #1229: find the installed Ollama model to embed with, or say why there is
42
+ * none (Ollama unreachable, or reachable without the model).
43
+ */
44
+ checkModel(): Promise<OllamaModelStatus>;
19
45
  /**
20
46
  * Generate embedding for a single text prompt
21
47
  */
@@ -5,6 +5,30 @@
5
5
  import { toError } from '../error-utils.js';
6
6
  import { EMBEDDING_CONFIG, } from './types.js';
7
7
  import { resolveOllamaBaseUrl } from '../llm/ollama-url.js';
8
+ /** Tags of Ollama's `all-minilm` that are all-MiniLM-L6-v2 (33m / l12-v2 is the L12 model). */
9
+ const ALL_MINILM_L6_TAG = /^(latest|22m(-.*)?|l6-v2(-.*)?)?$/i;
10
+ /** Splits `namespace/name:tag` into the name part and the tag ('' when untagged). */
11
+ function splitTag(listed) {
12
+ const colon = listed.lastIndexOf(':');
13
+ return colon > listed.lastIndexOf('/')
14
+ ? { base: listed.slice(0, colon), tag: listed.slice(colon + 1) }
15
+ : { base: listed, tag: '' };
16
+ }
17
+ /**
18
+ * #1229: whether an installed Ollama model is EMBEDDING_CONFIG.MODEL. Accepts
19
+ * the exact name with any namespace and tag (`Xenova/all-MiniLM-L6-v2:latest`)
20
+ * and Ollama's library name `all-minilm` with an L6 tag (`all-minilm:22m`).
21
+ * Other models are rejected, even 384-dimensional ones such as
22
+ * `all-minilm:33m` (all-MiniLM-L12-v2): their vectors are in another
23
+ * embedding space (ADR-097).
24
+ */
25
+ export function isConfiguredOllamaModel(listed) {
26
+ const { base, tag } = splitTag(listed);
27
+ const name = base.slice(base.lastIndexOf('/') + 1).toLowerCase();
28
+ if (name === EMBEDDING_CONFIG.MODEL.toLowerCase())
29
+ return true;
30
+ return base.toLowerCase() === 'all-minilm' && ALL_MINILM_L6_TAG.test(tag);
31
+ }
8
32
  /**
9
33
  * Client for Ollama API
10
34
  */
@@ -13,46 +37,85 @@ export class OllamaClient {
13
37
  maxRetries;
14
38
  retryDelayMs;
15
39
  timeoutMs;
16
- constructor(baseUrl = resolveOllamaBaseUrl(EMBEDDING_CONFIG.DEFAULT_OLLAMA_URL), maxRetries = EMBEDDING_CONFIG.MAX_RETRIES, retryDelayMs = EMBEDDING_CONFIG.RETRY_DELAY_MS, timeoutMs = EMBEDDING_CONFIG.TIMEOUT_MS) {
40
+ /** #1229: the Ollama model named by the user (AQE_OLLAMA_EMBEDDING_MODEL), if any. */
41
+ requestedModel;
42
+ /** The installed Ollama model found by the last successful check. */
43
+ installedModel = null;
44
+ constructor(baseUrl = resolveOllamaBaseUrl(EMBEDDING_CONFIG.DEFAULT_OLLAMA_URL), maxRetries = EMBEDDING_CONFIG.MAX_RETRIES, retryDelayMs = EMBEDDING_CONFIG.RETRY_DELAY_MS, timeoutMs = EMBEDDING_CONFIG.TIMEOUT_MS, ollamaModel = process.env[EMBEDDING_CONFIG.OLLAMA_MODEL_ENV]) {
17
45
  this.baseUrl = baseUrl.replace(/\/$/, ''); // Remove trailing slash
18
46
  this.maxRetries = maxRetries;
19
47
  this.retryDelayMs = retryDelayMs;
20
48
  this.timeoutMs = timeoutMs;
49
+ this.requestedModel = ollamaModel?.trim() || undefined;
50
+ }
51
+ /** The Ollama server this client talks to. */
52
+ getBaseUrl() {
53
+ return this.baseUrl;
54
+ }
55
+ /**
56
+ * Identifies the embedding space of this client's vectors. A model named by
57
+ * AQE_OLLAMA_EMBEDDING_MODEL that is not EMBEDDING_CONFIG.MODEL gets its own
58
+ * id, so its vectors are never compared with stored MiniLM vectors (ADR-097).
59
+ */
60
+ getModelId() {
61
+ return !this.requestedModel || isConfiguredOllamaModel(this.requestedModel)
62
+ ? EMBEDDING_CONFIG.MODEL
63
+ : `ollama:${this.requestedModel}`;
21
64
  }
22
65
  /**
23
66
  * Check if Ollama is running and the configured embedding model is available
24
67
  */
25
68
  async healthCheck() {
69
+ return (await this.checkModel()).status === 'available';
70
+ }
71
+ /**
72
+ * #1229: find the installed Ollama model to embed with, or say why there is
73
+ * none (Ollama unreachable, or reachable without the model).
74
+ */
75
+ async checkModel() {
76
+ const wanted = this.requestedModel ?? EMBEDDING_CONFIG.MODEL;
77
+ let data;
26
78
  try {
27
- return await this.fetchWithTimeout(`${this.baseUrl}/api/tags`, {
79
+ data = await this.fetchWithTimeout(`${this.baseUrl}/api/tags`, {
28
80
  method: 'GET',
29
81
  headers: { 'Content-Type': 'application/json' },
30
82
  }, 5000, // Shorter timeout for health check
31
- async (response) => {
32
- if (!response.ok)
33
- return false;
34
- const data = await response.json();
35
- // Check if configured embedding model is available
36
- // Match the configured model exactly, allowing its existing tag suffix.
37
- if (data.models) {
38
- return data.models.some((model) => model.name === EMBEDDING_CONFIG.MODEL ||
39
- model.name?.startsWith(`${EMBEDDING_CONFIG.MODEL}:`) ||
40
- model.model === EMBEDDING_CONFIG.MODEL ||
41
- model.model?.startsWith(`${EMBEDDING_CONFIG.MODEL}:`));
42
- }
43
- return false;
44
- });
83
+ async (response) => response.ok
84
+ ? await response.json()
85
+ : { httpStatus: response.status });
45
86
  }
46
87
  catch {
47
- return false;
88
+ return { status: 'unreachable', reason: `Ollama at ${this.baseUrl} is not reachable` };
48
89
  }
90
+ if (data && 'httpStatus' in data) {
91
+ return {
92
+ status: 'unreachable',
93
+ reason: `Ollama at ${this.baseUrl} answered HTTP ${data.httpStatus} when listing models`,
94
+ };
95
+ }
96
+ const requested = this.requestedModel;
97
+ const matches = requested
98
+ ? (listed) => listed === requested || (!splitTag(requested).tag && listed === `${requested}:latest`)
99
+ : isConfiguredOllamaModel;
100
+ for (const model of data?.models ?? []) {
101
+ const found = [model.name, model.model].find((listed) => !!listed && matches(listed));
102
+ if (found) {
103
+ this.installedModel = found;
104
+ return { status: 'available', model: found };
105
+ }
106
+ }
107
+ return {
108
+ status: 'missing',
109
+ reason: `model '${wanted}' not installed in Ollama at ${this.baseUrl}; ` +
110
+ `install it with: ollama pull ${requested ?? EMBEDDING_CONFIG.OLLAMA_PULL_NAME}`,
111
+ };
49
112
  }
50
113
  /**
51
114
  * Generate embedding for a single text prompt
52
115
  */
53
116
  async generateEmbedding(prompt) {
54
117
  const request = {
55
- model: EMBEDDING_CONFIG.MODEL,
118
+ model: this.installedModel ?? this.requestedModel ?? EMBEDDING_CONFIG.MODEL,
56
119
  prompt,
57
120
  };
58
121
  let lastError = null;
@@ -133,10 +196,9 @@ export class OllamaClient {
133
196
  * Verify model is available and throw if not
134
197
  */
135
198
  async ensureModelAvailable() {
136
- const isHealthy = await this.healthCheck();
137
- if (!isHealthy) {
138
- throw new Error(`Ollama model '${EMBEDDING_CONFIG.MODEL}' is not available. ` +
139
- `Please run: ollama pull ${EMBEDDING_CONFIG.MODEL}`);
199
+ const check = await this.checkModel();
200
+ if (check.status !== 'available') {
201
+ throw new Error(`Ollama model '${this.requestedModel ?? EMBEDDING_CONFIG.MODEL}' is not available: ${check.reason}`);
140
202
  }
141
203
  }
142
204
  }
@@ -120,6 +120,21 @@ export declare const EMBEDDING_CONFIG: {
120
120
  readonly TIMEOUT_MS: 30000;
121
121
  /** Default Ollama URL */
122
122
  readonly DEFAULT_OLLAMA_URL: "http://localhost:11434";
123
+ /** #1229: Ollama library name of MODEL, used in install hints */
124
+ readonly OLLAMA_PULL_NAME: "all-minilm:22m";
125
+ /** #1229: env var naming the installed Ollama model to use for MODEL */
126
+ readonly OLLAMA_MODEL_ENV: "AQE_OLLAMA_EMBEDDING_MODEL";
127
+ };
128
+ /**
129
+ * #1229: whether Ollama has the configured embedding model. `reason` says why
130
+ * not: Ollama did not answer, or it answered without the model.
131
+ */
132
+ export type OllamaModelStatus = {
133
+ status: 'available';
134
+ model: string;
135
+ } | {
136
+ status: 'missing' | 'unreachable';
137
+ reason: string;
123
138
  };
124
139
  /**
125
140
  * Interface for embedding providers
@@ -22,5 +22,9 @@ export const EMBEDDING_CONFIG = {
22
22
  TIMEOUT_MS: 30000,
23
23
  /** Default Ollama URL */
24
24
  DEFAULT_OLLAMA_URL: 'http://localhost:11434',
25
+ /** #1229: Ollama library name of MODEL, used in install hints */
26
+ OLLAMA_PULL_NAME: 'all-minilm:22m',
27
+ /** #1229: env var naming the installed Ollama model to use for MODEL */
28
+ OLLAMA_MODEL_ENV: 'AQE_OLLAMA_EMBEDDING_MODEL',
25
29
  };
26
30
  //# sourceMappingURL=types.js.map
@@ -64,8 +64,17 @@ export declare class SqliteSpendLedger implements SpendLedger {
64
64
  * drop ALL spend — bypassing the budget cap (the #557 class).
65
65
  */
66
66
  private hasAgentColumn;
67
+ /**
68
+ * Charges queued but not yet in the table (#1283). record() queues its
69
+ * INSERT so a locked memory.db does not freeze the MCP server; until the row
70
+ * lands, the spend reads below count it from here, so the ADR-123 budget cap
71
+ * never under-counts. Each entry leaves this set in the same synchronous
72
+ * step that inserts its row, so a charge is never counted twice.
73
+ */
74
+ private readonly pending;
67
75
  constructor(db: DatabaseType);
68
76
  record(entry: SpendEntry): void;
77
+ private insert;
69
78
  spentSince(windowMs: number, nowMs?: number): number;
70
79
  spentByAgentSince(windowMs: number, nowMs?: number): Record<string, number>;
71
80
  }