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
@@ -11,7 +11,7 @@
11
11
  * - Daily Markdown log entries
12
12
  */
13
13
  import { BaseWorker } from '../base-worker.js';
14
- import { createPatternLifecycleManager, } from '../../learning/pattern-lifecycle.js';
14
+ import { createPatternLifecycleManagerWhenUnlocked, } from '../../learning/pattern-lifecycle.js';
15
15
  import { getUnifiedMemory } from '../../kernel/unified-memory.js';
16
16
  import { DailyLogger } from '../../learning/daily-log.js';
17
17
  import { toErrorMessage } from '../../shared/error-utils.js';
@@ -53,7 +53,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
53
53
  const unifiedMemory = getUnifiedMemory();
54
54
  await unifiedMemory.initialize();
55
55
  const db = unifiedMemory.getDatabase();
56
- this.lifecycleManager = createPatternLifecycleManager(db, {
56
+ this.lifecycleManager = await createPatternLifecycleManagerWhenUnlocked(db, {
57
57
  promotionRewardThreshold: 0.7,
58
58
  promotionMinOccurrences: 2,
59
59
  promotionMinSuccessRate: 0.7,
@@ -117,7 +117,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
117
117
  let promoted = 0;
118
118
  let promotionChecked = 0;
119
119
  try {
120
- const promotionResult = lifecycleManager.promoteEligiblePatterns();
120
+ const promotionResult = await lifecycleManager.promoteEligiblePatternsWhenUnlocked();
121
121
  promoted = promotionResult.promoted;
122
122
  promotionChecked = promotionResult.checked;
123
123
  if (promoted > 0) {
@@ -139,7 +139,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
139
139
  let deprecated = 0;
140
140
  let deprecationChecked = 0;
141
141
  try {
142
- const deprecationResult = lifecycleManager.deprecateStalePatterns();
142
+ const deprecationResult = await lifecycleManager.deprecateStalePatternsWhenUnlocked();
143
143
  deprecated = deprecationResult.deprecated;
144
144
  deprecationChecked = deprecationResult.checked;
145
145
  if (deprecated > 0) {
@@ -163,7 +163,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
163
163
  const daysSinceLastRun = this.lastRunTimestamp > 0
164
164
  ? (Date.now() - this.lastRunTimestamp) / (1000 * 60 * 60 * 24)
165
165
  : 1;
166
- const decayResult = lifecycleManager.applyConfidenceDecay(Math.min(daysSinceLastRun, 7));
166
+ const decayResult = await lifecycleManager.applyConfidenceDecayWhenUnlocked(Math.min(daysSinceLastRun, 7));
167
167
  decayed = decayResult.decayed;
168
168
  }
169
169
  catch (error) {
@@ -16,7 +16,7 @@ import { BaseWorker } from '../base-worker.js';
16
16
  import { ALL_DOMAINS } from '../../shared/types/index.js';
17
17
  import { TimeRange } from '../../shared/value-objects/index.js';
18
18
  import { DreamEngine } from '../../learning/dream/index.js';
19
- import { createPatternLifecycleManager, } from '../../learning/pattern-lifecycle.js';
19
+ import { createPatternLifecycleManagerWhenUnlocked, } from '../../learning/pattern-lifecycle.js';
20
20
  import { getUnifiedMemory, findProjectRoot } from '../../kernel/unified-memory.js';
21
21
  import { toErrorMessage } from '../../shared/error-utils.js';
22
22
  import { ExperienceConsolidator } from '../../learning/experience-consolidation.js';
@@ -77,7 +77,7 @@ export class LearningConsolidationWorker extends BaseWorker {
77
77
  const unifiedMemory = getUnifiedMemory();
78
78
  await unifiedMemory.initialize();
79
79
  const db = unifiedMemory.getDatabase();
80
- this.lifecycleManager = createPatternLifecycleManager(db, {
80
+ this.lifecycleManager = await createPatternLifecycleManagerWhenUnlocked(db, {
81
81
  promotionRewardThreshold: 0.7,
82
82
  promotionMinOccurrences: 2,
83
83
  promotionMinSuccessRate: 0.7,
@@ -332,7 +332,7 @@ export class LearningConsolidationWorker extends BaseWorker {
332
332
  }
333
333
  }
334
334
  // Step 3: Promote eligible patterns
335
- const promotionResult = lifecycleManager.promoteEligiblePatterns();
335
+ const promotionResult = await lifecycleManager.promoteEligiblePatternsWhenUnlocked();
336
336
  patternsPromoted = promotionResult.promoted;
337
337
  if (patternsPromoted > 0) {
338
338
  findings.push({
@@ -348,7 +348,7 @@ export class LearningConsolidationWorker extends BaseWorker {
348
348
  });
349
349
  }
350
350
  // Step 4: Deprecate underperforming patterns
351
- const deprecationResult = lifecycleManager.deprecateStalePatterns();
351
+ const deprecationResult = await lifecycleManager.deprecateStalePatternsWhenUnlocked();
352
352
  patternsDeprecated = deprecationResult.deprecated;
353
353
  if (patternsDeprecated > 0) {
354
354
  findings.push({
@@ -405,7 +405,7 @@ export class LearningConsolidationWorker extends BaseWorker {
405
405
  ? (Date.now() - this.lastRunTimestamp) / (1000 * 60 * 60 * 24)
406
406
  : 1;
407
407
  if (daysSinceLastRun >= 0.5) { // Apply decay at least twice per day
408
- const decayResult = lifecycleManager.applyConfidenceDecay(Math.min(daysSinceLastRun, 7));
408
+ const decayResult = await lifecycleManager.applyConfidenceDecayWhenUnlocked(Math.min(daysSinceLastRun, 7));
409
409
  confidenceDecayApplied = decayResult.decayed;
410
410
  }
411
411
  // Step 6: Generate lifecycle statistics finding
@@ -591,7 +591,8 @@ export class LearningConsolidationWorker extends BaseWorker {
591
591
  const { v4: uuidv4 } = await import('uuid');
592
592
  const patternId = uuidv4();
593
593
  const description = `Auto-extracted pattern from ${candidate.sourceExperiences} experiences. Avg reward: ${candidate.avgReward.toFixed(3)}`;
594
- db.prepare(`
594
+ // #1283: queued so a locked memory.db does not freeze the MCP server.
595
+ await unifiedMemory.writeWhenUnlocked(() => db.prepare(`
595
596
  INSERT INTO qe_patterns (
596
597
  id, pattern_type, qe_domain, domain, name, description,
597
598
  confidence, usage_count, success_rate, quality_score, tier,
@@ -606,7 +607,7 @@ export class LearningConsolidationWorker extends BaseWorker {
606
607
  tags: candidate.actions,
607
608
  sourceType: 'experience-extraction',
608
609
  extractedAt: new Date().toISOString(),
609
- }), Math.round(candidate.sourceExperiences * candidate.successRate));
610
+ }), Math.round(candidate.sourceExperiences * candidate.successRate)));
610
611
  // Pair the qe_patterns row with an embedding so HNSW pattern recall
611
612
  // doesn't see this as a "ghost" (ADR-058 embedding-locality). Fail-soft.
612
613
  const { ensurePatternEmbedding } = await import('../../learning/embed-and-insert-pattern.js');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "3.15.15",
3
+ "version": "3.15.17",
4
4
  "description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{a,b,c}from"./chunk-74YG72NQ.js";import"./chunk-LB2LGEDP.js";import"./chunk-UE2J6MA5.js";import"./chunk-XWIAZG3C.js";import"./chunk-HL2ANKN3.js";import"./chunk-XH4JMX5O.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{a,b,c,d,e,f}from"./chunk-VY4U6DPO.js";import"./chunk-LVABQNRF.js";import"./chunk-PFQCV6YS.js";import"./chunk-RBKUU7WF.js";import"./chunk-Q6I4SIUU.js";import"./chunk-UXIY4IAI.js";import"./chunk-KCQNFBBR.js";import"./chunk-C4KLXFJP.js";import"./chunk-ZYJB6FML.js";import"./chunk-TODNOP7C.js";import"./chunk-2ZFLULL4.js";import"./chunk-ERN56H6S.js";import"./chunk-UQPA33UK.js";import"./chunk-YUS6TWAL.js";import"./chunk-AP2W7Z3A.js";import"./chunk-BP5T3OEV.js";import"./chunk-T66PPF4D.js";import"./chunk-337Z52QM.js";import"./chunk-XWIAZG3C.js";import"./chunk-5G4UFTV4.js";import"./chunk-DEKR3CTS.js";import"./chunk-4X3SWKBA.js";import"./chunk-W62OOK7A.js";import"./chunk-GCHYOPRZ.js";import"./chunk-DKX4GNRU.js";import"./chunk-PXATBHWN.js";import"./chunk-6NBRMD25.js";import"./chunk-5I7357KS.js";import"./chunk-QFGYH6HD.js";import"./chunk-LJMYRTJ7.js";import"./chunk-G242G224.js";import"./chunk-3HVFIITW.js";import"./chunk-BQ47GQPK.js";import"./chunk-ZWBGYJ7K.js";import"./chunk-UJABDXST.js";import"./chunk-6YVMX2TC.js";import"./chunk-DURD37JZ.js";import"./chunk-SZAZQZWI.js";import"./chunk-MPFPWJTH.js";import"./chunk-AOKKUB5F.js";import"./chunk-T4GE7MPI.js";import"./chunk-FOOW4JVS.js";import"./chunk-HL2ANKN3.js";import"./chunk-BZULJMGH.js";import"./chunk-XH4JMX5O.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-XIVVTYM2.js";import"./chunk-DUKE27HC.js";import"./chunk-6LE362LZ.js";import"./chunk-T66PPF4D.js";import"./chunk-337Z52QM.js";import"./chunk-XWIAZG3C.js";import"./chunk-5G4UFTV4.js";import"./chunk-DEKR3CTS.js";import"./chunk-4X3SWKBA.js";import"./chunk-W62OOK7A.js";import"./chunk-GCHYOPRZ.js";import"./chunk-DKX4GNRU.js";import"./chunk-PXATBHWN.js";import"./chunk-5I7357KS.js";import"./chunk-QFGYH6HD.js";import"./chunk-G242G224.js";import"./chunk-3HVFIITW.js";import"./chunk-BQ47GQPK.js";import"./chunk-ZWBGYJ7K.js";import"./chunk-UJABDXST.js";import"./chunk-6YVMX2TC.js";import"./chunk-SZAZQZWI.js";import"./chunk-MPFPWJTH.js";import"./chunk-FOOW4JVS.js";import"./chunk-HL2ANKN3.js";import"./chunk-BZULJMGH.js";import"./chunk-XH4JMX5O.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{a}from"./chunk-EFUJDMNC.js";import"./chunk-XIVVTYM2.js";import"./chunk-DUKE27HC.js";import"./chunk-6LE362LZ.js";import"./chunk-T66PPF4D.js";import"./chunk-337Z52QM.js";import"./chunk-XWIAZG3C.js";import"./chunk-5G4UFTV4.js";import"./chunk-DEKR3CTS.js";import"./chunk-4X3SWKBA.js";import"./chunk-W62OOK7A.js";import"./chunk-GCHYOPRZ.js";import"./chunk-DKX4GNRU.js";import"./chunk-PXATBHWN.js";import"./chunk-5I7357KS.js";import"./chunk-QFGYH6HD.js";import"./chunk-G242G224.js";import"./chunk-3HVFIITW.js";import"./chunk-BQ47GQPK.js";import"./chunk-ZWBGYJ7K.js";import"./chunk-UJABDXST.js";import"./chunk-6YVMX2TC.js";import"./chunk-SZAZQZWI.js";import"./chunk-MPFPWJTH.js";import"./chunk-FOOW4JVS.js";import"./chunk-HL2ANKN3.js";import"./chunk-BZULJMGH.js";import"./chunk-XH4JMX5O.js";export{a as BrowserWorkflowTool};
@@ -1,21 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{a as Z}from"./chunk-RDMRY7CT.js";import{a as C,e as x,f as X}from"./chunk-W5ZJG2OU.js";import{a as O}from"./chunk-MIA447GY.js";import{a as F,b as H,c as G,d as j,e as V,f as Y,h as K}from"./chunk-RBKUU7WF.js";import{c as $,d as J}from"./chunk-Q6I4SIUU.js";import{a as W,b as _,g as z,j as U}from"./chunk-KCQNFBBR.js";import{i as B}from"./chunk-YUS6TWAL.js";import{b as w,d as re}from"./chunk-XWIAZG3C.js";import{b as D,h as q,j as M,l as L,m as v,s as A}from"./chunk-6NBRMD25.js";import{i as N}from"./chunk-QFGYH6HD.js";import{c as p,d as h}from"./chunk-LJMYRTJ7.js";import{a as ie}from"./chunk-3HVFIITW.js";import{c as T}from"./chunk-BQ47GQPK.js";import{a as b,b as y,e as ne}from"./chunk-HL2ANKN3.js";ie();ne();re();var o=T.create("RealQEReasoningBank"),ae={sqlite:{dbPath:".agentic-qe/memory.db",walMode:!0,useUnified:!0},embeddings:{modelName:"Xenova/all-MiniLM-L6-v2",quantized:!0,enableCache:!0},enableLearning:!0,enableRouting:!0,enableGuidance:!0,hnsw:{M:16,efConstruction:200,efSearch:100},routingWeights:{similarity:.3,performance:.4,capabilities:.3},coherenceThreshold:.4,embedderRetryIntervalMs:6e4},k=class{constructor(e={},t){this.coherenceService=t;this.qeConfig={...ae,...e},this.sqliteStore=B(this.qeConfig.sqlite),this.asymmetricEngine=new Z,this.embedderRecovery=new Y({retryIntervalMs:this.qeConfig.embedderRetryIntervalMs,probe:()=>this.probeEmbedderForRetry(),onRecovered:()=>o.info("Embedder available again: pattern search uses vectors"),onRetryFailed:n=>o.debug("Embedder still unavailable",{error:b(n)})})}coherenceService;qeConfig;sqliteStore;hnswIndex=null;patternIdMap=new Map;initialized=!1;embedderRecovery;stats={routingRequests:0,totalRoutingLatency:0,learningOutcomes:0,successfulOutcomes:0};routingLatencies=new O(1e3);asymmetricEngine;agentCapabilities={"qe-test-generator":{domains:["test-generation"],capabilities:["test-generation","tdd","bdd","unit-test","integration-test"],performanceScore:.85},"qe-coverage-analyzer":{domains:["coverage-analysis"],capabilities:["coverage-analysis","gap-detection","risk-scoring"],performanceScore:.92},"qe-coverage-specialist":{domains:["coverage-analysis"],capabilities:["sublinear-analysis","branch-coverage","mutation-testing"],performanceScore:.88},"qe-test-architect":{domains:["test-generation","coverage-analysis"],capabilities:["test-strategy","test-pyramid","architecture"],performanceScore:.9},"qe-api-contract-validator":{domains:["contract-testing"],capabilities:["contract-testing","openapi","graphql","pact"],performanceScore:.87},"qe-security-auditor":{domains:["security-compliance"],capabilities:["sast","dast","vulnerability","owasp"],performanceScore:.82},"qe-visual-tester":{domains:["visual-accessibility"],capabilities:["screenshot","visual-regression","percy","chromatic"],performanceScore:.8},"qe-a11y-ally":{domains:["visual-accessibility"],capabilities:["wcag","aria","screen-reader","contrast"],performanceScore:.85},"qe-performance-tester":{domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery"],performanceScore:.83},"qe-flaky-investigator":{domains:["test-execution"],capabilities:["flaky-detection","test-stability","retry"],performanceScore:.78},"qe-chaos-engineer":{domains:["chaos-resilience"],capabilities:["chaos-testing","resilience","fault-injection"],performanceScore:.75}};async initialize(){if(this.initialized)return;let e=performance.now();await this.sqliteStore.initialize(),o.info("SQLite persistence initialized");try{await q(D,this.qeConfig.embeddings)}catch(i){this.embedderRecovery.markUnavailable(b(i)),o.warn("No embedding runtime: patterns are stored without vectors (pending `aqe learning backfill-embeddings`) and searched by text matching only",{reason:this.embedderRecovery.unavailableReason})}this.embedderRecovery.unavailableReason===null&&(await this.initializeHNSW(),o.info("HNSW index initialized"),await this.loadPatternsIntoHNSW()),this.sqliteStore.getStats().totalPatterns===0&&(this.sqliteStore.hasAnyHistoricalData?.()??!1?o.error("qe_patterns table is EMPTY but historical data exists \u2014 possible data loss! Restore from backup instead of loading seed patterns. Skipping foundational pattern load to avoid masking data loss."):await this.loadFoundationalPatterns()),this.initialized=!0;let n=performance.now()-e;o.info("Fully initialized",{durationMs:Math.round(n)})}getPatternSearchStatus(){let e=this.embedderRecovery.unavailableReason;return e===null?{mode:"vector"}:{mode:"lexical-only",reason:e}}async embedOrUndefined(e){if(this.embedderRecovery.isAvailable())try{return await q(e,this.qeConfig.embeddings)}catch(t){let n=`Embedder failed at runtime: ${b(t)}`;this.embedderRecovery.markUnavailable(n)&&o.warn("Embedder failed: patterns are stored without vectors and searched by text matching only until it recovers",{reason:n});return}}async probeEmbedderForRetry(){await V(this.qeConfig.embeddings),this.hnswIndex||(await this.initializeHNSW(),await this.loadPatternsIntoHNSW())}async initializeHNSW(){try{let e=await import("./hnswlib-node-WS43R4AX.js"),n=e.default?.HierarchicalNSW||e.HierarchicalNSW;if(typeof n!="function")throw new Error("HierarchicalNSW not found in hnswlib-node module");let i=n,r=v();this.hnswIndex=new i("cosine",r),this.hnswIndex.initIndex(1e5,this.qeConfig.hnsw.M,this.qeConfig.hnsw.efConstruction),this.hnswIndex.setEf(this.qeConfig.hnsw.efSearch),o.info("HNSW initialized",{dimension:r,M:this.qeConfig.hnsw.M})}catch(e){throw o.error("HNSW initialization failed",e instanceof Error?e:void 0),e}}async loadPatternsIntoHNSW(){if(!this.hnswIndex)return;let e=this.sqliteStore.getAllEmbeddings(),t=v(),n=0,i=0,r=A()?.spaceId;for(let{patternId:s,embedding:a,spaceId:l}of e){if(!r||l!==r||!a||!Array.isArray(a)||a.length!==t){i++;continue}let c=this.hnswIndex.getCurrentCount();this.hnswIndex.addPoint(a,c),this.patternIdMap.set(c,s),n++}i>0&&o.warn("Skipped invalid embeddings",{skipped:i,expectedDim:t}),o.info("Loaded patterns into HNSW index",{count:n})}async loadFoundationalPatterns(){let e=[{patternType:"test-template",name:"AAA Unit Test",description:"Arrange-Act-Assert pattern for clear, maintainable unit tests",template:{type:"code",content:`describe('{{className}}', () => {
3
- describe('{{methodName}}', () => {
4
- it('should {{expectedBehavior}}', {{async}} () => {
5
- // Arrange
6
- {{arrangeCode}}
7
-
8
- // Act
9
- {{actCode}}
10
-
11
- // Assert
12
- {{assertCode}}
13
- });
14
- });
15
- });`,variables:[{name:"className",type:"string",required:!0},{name:"methodName",type:"string",required:!0},{name:"expectedBehavior",type:"string",required:!0}]},context:{testType:"unit",tags:["unit-test","aaa","best-practice"]}},{patternType:"coverage-strategy",name:"Risk-Based Coverage",description:"Prioritize coverage by code risk and complexity",template:{type:"prompt",content:"Analyze coverage gaps focusing on critical business logic, error handling, and high-complexity functions.",variables:[]},context:{tags:["coverage","risk-based"]}}];for(let t of e)try{await this.storeQEPattern(t)}catch(n){o.warn("Failed to load foundational pattern",{name:t.name,error:n})}o.info("Loaded foundational patterns",{count:e.length})}async storeQEPattern(e){try{let t=`${e.name} ${e.description||""} ${e.context?.tags?.join(" ")||""}`,n=await this.embedOrUndefined(t),i=W(t)||"test-generation";if(C())try{let a=X(e.name,{description:e.description,template:e.template,patternType:e.patternType},i,{tags:e.context?.tags}),l=await x.evaluateWrite(a);if(!l.allowed&&(o.warn("Pattern blocked by MemoryWriteGate",{name:e.name,reason:l.reason,conflicts:l.conflictingPatterns?.join(", ")||"none"}),l.reason?.includes("strict")))return h(new Error(`Pattern blocked by governance: ${l.reason}`))}catch(a){o.warn("MemoryWriteGate check error (continuing)",{error:a})}let r=N(),s={id:r,patternType:e.patternType,qeDomain:i,domain:i,name:e.name,description:e.description||"",confidence:.5,usageCount:0,successRate:0,qualityScore:0,tier:"short-term",template:e.template,context:{tags:[],...e.context},createdAt:new Date,lastUsedAt:new Date,successfulUses:0,embedding:n,reusable:!1,reuseCount:0,averageTokenSavings:0};if(this.sqliteStore.storePattern(s,n),this.hnswIndex&&n){let a=this.hnswIndex.getCurrentCount();this.hnswIndex.addPoint(n,a),this.patternIdMap.set(a,r)}if(C())try{x.registerPattern({key:r,value:{name:s.name,description:s.description,patternType:s.patternType},domain:s.domain})}catch(a){o.warn("Pattern registration with MemoryWriteGate failed",{error:a})}return p(s)}catch(t){return h(y(t))}}async searchQEPatterns(e,t={}){let n=performance.now();try{let i=t.limit||10,r=[],s=await this.embedOrUndefined(e);if(s){if(!this.hnswIndex)return h(new Error("HNSW index not available"));this.collectVectorMatches(s,i,t,r)}let a=new Map(r.map(c=>[c.pattern.id,c]));for(let c of this.sqliteStore.searchFTS(e,i*2)){let d=a.get(c.id);if(d){d.score=J(d.score,c.ftsScore*c.coverage);continue}if(t.minSimilarity!==void 0)continue;let u=this.sqliteStore.getPattern(c.id);!u||t.domain&&u.qeDomain!==t.domain||r.push({pattern:u,score:.5*c.ftsScore*c.coverage,similarity:0,matchType:"lexical",canReuse:!1})}r.sort((c,d)=>d.score-c.score);let l=performance.now()-n;return l>10&&o.warn("Slow search",{searchTimeMs:Number(l.toFixed(1))}),p(r.slice(0,i))}catch(i){return h(y(i))}}collectVectorMatches(e,t,n,i){let r=this.hnswIndex.searchKnn(e,t*2);for(let s=0;s<r.neighbors.length;s++){let a=r.neighbors[s],c=1-r.distances[s];if(n.minSimilarity!==void 0&&c<n.minSimilarity)continue;let d=this.patternIdMap.get(a);if(!d)continue;let u=this.sqliteStore.getPattern(d);if(!u||n.domain&&u.qeDomain!==n.domain)continue;let m=$.reuseOptimization,g=(Date.now()-new Date(u.lastUsedAt).getTime())/864e5;i.push({pattern:u,similarity:c,score:c,matchType:"vector",canReuse:!!(u.reusable&&c>=m.minSimilarityForReuse&&u.successRate>=m.minSuccessRateForReuse&&g<=m.maxAgeForReuse)})}}async routeTask(e){let t=performance.now();this.stats.routingRequests++;try{let n=e.domain?[e.domain]:_(e.task);n.length===0&&n.push("test-generation");let i=await this.searchQEPatterns(e.task,{limit:10,domain:n[0]}),r=i.success?i.value.map(m=>m.pattern):[],s=[];for(let[m,g]of Object.entries(this.agentCapabilities)){let f=0,P=[],I=n.filter(S=>g.domains.includes(S)).length,E=I>0?I/n.length*.4:0;if(f+=E*this.qeConfig.routingWeights.similarity,E>0&&P.push(`Domain: ${(E*100).toFixed(0)}%`),e.capabilities&&e.capabilities.length>0){let S=e.capabilities.filter(ee=>g.capabilities.some(te=>te.toLowerCase().includes(ee.toLowerCase()))).length,R=S>0?S/e.capabilities.length*.3:0;f+=R*this.qeConfig.routingWeights.capabilities,R>0&&P.push(`Caps: ${(R*100).toFixed(0)}%`)}else f+=.15*this.qeConfig.routingWeights.capabilities;f+=g.performanceScore*.3*this.qeConfig.routingWeights.performance,P.push(`Perf: ${(g.performanceScore*100).toFixed(0)}%`),s.push({agent:m,score:f,reasoning:P})}s.sort((m,g)=>g.score-m.score);let a=s[0],l=s.slice(1,4),c=[];if(this.qeConfig.enableGuidance&&n.length>0){let m=H(n[0],{framework:e.context?.framework,language:e.context?.language,includeAntiPatterns:!0});c.push(...m.slice(0,5))}let d=performance.now()-t;this.stats.totalRoutingLatency+=d,this.routingLatencies.push(d);let u={recommendedAgent:a.agent,confidence:a.score,alternatives:l.map(m=>({agent:m.agent,score:m.score})),domains:n,patterns:r,guidance:c,reasoning:a.reasoning.join("; "),latencyMs:d};return p(K(e.includePatternGuidance,u,i.success?i.value:[]))}catch(n){return h(y(n))}}async recordOutcome(e){if(!this.qeConfig.enableLearning)return p(void 0);try{this.sqliteStore.recordUsage(e.patternId,e.success,e.metrics,e.feedback),this.stats.learningOutcomes++,e.success&&this.stats.successfulOutcomes++;let t=this.sqliteStore.getPattern(e.patternId);if(t){let n=t.qeDomain,i=this.asymmetricEngine.computeConfidenceUpdate(t.confidence,e.success?"success":"failure",n);this.asymmetricEngine.shouldQuarantine(i,n).shouldQuarantine&&o.info("Pattern quarantined (asymmetric drop)",{name:t.name}),this.sqliteStore.updatePattern(e.patternId,{confidence:i}),await this.checkPatternPromotionWithCoherence(t)&&(this.sqliteStore.promotePattern(e.patternId),o.info("Pattern promoted to long-term",{name:t.name}))}return p(void 0)}catch(t){return h(y(t))}}async checkPatternPromotionWithCoherence(e){let t=z(e);if(!t.meetsUsageCriteria||!t.meetsQualityCriteria)return!1;if(this.coherenceService&&this.coherenceService.isInitialized()){let r=[...await this.getLongTermPatterns(),e].map(a=>({id:a.id,embedding:a.embedding||[],weight:a.confidence,metadata:{name:a.name,domain:a.qeDomain}})),s=await this.coherenceService.checkCoherence(r);if(s.energy>=(this.qeConfig.coherenceThreshold||.4))return o.info("Pattern promotion blocked due to coherence violation",{name:e.name,energy:s.energy}),s.contradictions&&s.contradictions.length>0&&o.info("Conflicts with existing patterns",{conflictingNodeIds:s.contradictions.map(a=>a.nodeIds).flat()}),!1}return!0}async getLongTermPatterns(){return this.sqliteStore.getPatterns({limit:1e3}).filter(t=>t.tier==="long-term")}shouldPromote(e){return e.tier==="short-term"&&e.successfulUses>=3&&e.successRate>=.7&&e.confidence>=.6}getQEGuidance(e){return F(e)}generateQEContext(e,t){return j(e,t||{})}checkQEAntiPatterns(e,t){return G(e,t)}async getQEStats(){let e=this.sqliteStore.getStats(),t=this.routingLatencies.percentile(95)||0,n={};for(let i of U)n[i]=e.byDomain[i]||0;return{totalPatterns:e.totalPatterns,byDomain:n,byTier:e.byTier,routingRequests:this.stats.routingRequests,avgRoutingLatencyMs:this.stats.routingRequests>0?this.stats.totalRoutingLatency/this.stats.routingRequests:0,p95RoutingLatencyMs:t,learningOutcomes:this.stats.learningOutcomes,patternSuccessRate:this.stats.learningOutcomes>0?this.stats.successfulOutcomes/this.stats.learningOutcomes:0,embeddingCacheSize:0,transformerAvailable:L(),patternSearch:this.getPatternSearchStatus(),embeddingDimension:v(),sqliteDbPath:this.qeConfig.sqlite.dbPath||".agentic-qe/memory.db",asymmetricLearning:{failurePenaltyRatio:"10:1",quarantinedPatterns:this.sqliteStore.getPatterns({limit:1e4}).filter(i=>i.quarantined===!0).length,rehabilitatedPatterns:this.sqliteStore.getPatterns({limit:1e4}).filter(i=>i.quarantined===!1&&i.quarantinedAt).length,avgConfidenceDelta:this.stats.learningOutcomes>0?this.stats.successfulOutcomes/this.stats.learningOutcomes-.5:0}}}async storeLoopPattern(e){try{let t=await this.storeQEPattern({patternType:"anti-pattern",name:`loop-detection:${e.toolCallSignature}`,description:`Tool call loop detected for agent ${e.agentId} during ${e.taskType}. Steering: ${e.steeringUsed}. Resolved: ${e.resolved}`,template:{type:"prompt",content:e.steeringUsed,variables:[]},context:{tags:["anti-pattern","loop-detection","learning-optimization",e.taskType]}});return t.success?{success:!0,patternId:t.value.id}:{success:!1,error:t.error?.message??"Unknown error"}}catch(t){return{success:!1,error:b(t)}}}async recordPatternOutcome(e,t,n){let i=this.sqliteStore.getPattern(e);if(!i)return;let r=i.usageCount+1,s=t?i.successfulUses+1:i.successfulUses,a=s/r,l=.3,c=(1-l)*i.qualityScore+l*n,d=Math.min(1,.5+r*.05+a*.3);this.sqliteStore.updatePattern(e,{usageCount:r,successfulUses:s,successRate:a,qualityScore:c,confidence:d})}async checkPatternPromotion(e,t,n,i){let r=this.sqliteStore.getPattern(e);return r?r.tier==="short-term"?t>=3&&n>=.6&&i>=.5:r.tier==="long-term"?t>=10&&n>=.75&&i>=.7:!1:!1}async promotePattern(e){this.sqliteStore.promotePattern(e)}async demotePattern(e){let t=this.sqliteStore.getPattern(e);if(!t)return;let n=["short-term","working","long-term"],i=n.indexOf(t.tier);if(i>0){let r=n[i-1];this.sqliteStore.updatePattern(e,{tier:r}),o.info("Pattern demoted",{name:t.name,newTier:r})}}cleanupPatternIdMap(){if(!this.initialized)return 0;let e=0,t=this.sqliteStore.getPatterns({limit:1e5}),n=new Set(t.map(i=>i.id));for(let[i,r]of Array.from(this.patternIdMap.entries()))n.has(r)||(this.patternIdMap.delete(i),e++);return e>0&&o.info("Cleaned stale patternIdMap entries",{count:e}),e}removePatternFromHNSW(e){for(let[t,n]of Array.from(this.patternIdMap.entries()))if(n===e)return this.patternIdMap.delete(t),o.info("Removed pattern from HNSW mapping",{patternId:e}),!0;return!1}getMemoryStats(){return{patternIdMapSize:this.patternIdMap.size,routingLatenciesSize:this.routingLatencies.length,hnswIndexCount:this.hnswIndex?.getCurrentCount()??0}}async storeTrajectory(e){return this.sqliteStore.getDb().prepare(`
16
- INSERT OR REPLACE INTO qe_trajectories (
17
- id, task, agent, domain, started_at, ended_at, success, steps_json, metadata_json
18
- ) VALUES (?, ?, ?, ?, datetime('now'), datetime('now'), ?, ?, ?)
19
- `).run(e.id,e.task,e.agent??null,e.domain??null,e.success?1:0,JSON.stringify(e.steps),JSON.stringify(e.metrics??{})),e.id}async getTrajectories(e,t=50){let n=this.sqliteStore.getDb(),i="SELECT * FROM qe_trajectories",r=[];return e&&(i+=" WHERE domain = ?",r.push(e)),i+=" ORDER BY ended_at DESC LIMIT ?",r.push(t),n.prepare(i).all(...r).map(a=>({id:a.id,task:a.task,agent:a.agent??void 0,domain:a.domain,success:a.success===1,steps:w(a.steps_json||"[]"),metrics:a.metadata_json?w(a.metadata_json):void 0}))}async linkPatternToTrajectory(e,t){let n=this.sqliteStore.getDb(),i=this.sqliteStore.getPattern(e);if(i){let r={...i.context,sourceTrajectoryId:t};n.prepare(`
20
- UPDATE qe_patterns SET context_json = ?, updated_at = datetime('now') WHERE id = ?
21
- `).run(JSON.stringify(r),e)}}async getEnhancedAdapter(){return{message:"Use EnhancedReasoningBankAdapter for full agentic-flow integration",importPath:"../integrations/agentic-flow/reasoning-bank/index.js"}}async dispose(){this.sqliteStore.close(),M(),this.hnswIndex=null,this.patternIdMap.clear(),this.routingLatencies.clear(),this.stats.routingRequests=0,this.stats.totalRoutingLatency=0,this.stats.learningOutcomes=0,this.stats.successfulOutcomes=0,this.initialized=!1,o.info("Disposed")}async destroy(){return this.dispose()}};function Ie(Q={},e){return new k(Q,e)}export{Ie as a};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{a as e,b as g,e as t}from"./chunk-BQ47GQPK.js";import{d as r}from"./chunk-ZWBGYJ7K.js";import{b as o}from"./chunk-XH4JMX5O.js";var L=o(()=>{"use strict";e();g();t();r()});export{L as a};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{c as i,e as m}from"./chunk-HL2ANKN3.js";m();var u='expected [{ "functionName": "add", "args": [2, 3], "expected": 5 }]',g={type:"object",description:"One caller-owned specification example",properties:{functionName:{type:"string",description:"Named export of the source file to call"},args:{type:"array",description:"Positional JSON arguments; length must equal the function arity",items:{}},expected:{description:"Expected JSON return value (use null for a null result)"}},required:["functionName","args","expected"]};function d(t,s="Behavior example value"){let o=(e,r)=>{if(!(e===null||typeof e=="string"||typeof e=="boolean")&&!(typeof e=="number"&&Number.isFinite(e)&&!Object.is(e,-0))){if(typeof e!="object"||r.has(e))throw new i(`${s} must be finite JSON data (no undefined, functions, NaN/Infinity, cycles, or negative zero)`);if(!Array.isArray(e)&&Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw new i(`${s} must contain only plain JSON objects`);r.add(e);for(let l of Array.isArray(e)?Array.from(e):Object.values(e))o(l,r);r.delete(e)}};o(t,new Set)}function h(t){if(t!==void 0){if(!Array.isArray(t))throw new i(`behaviorExamples must be an array; ${u}`);return t.forEach((s,o)=>{let e=`behaviorExamples[${o}]`;if(typeof s!="object"||s===null||Array.isArray(s))throw new i(`${e} must be an object; ${u}`);let r=s;if(typeof r.functionName!="string"||r.functionName.trim()==="")throw new i(`${e}.functionName must be a non-empty string`);if(!Array.isArray(r.args))throw new i(`${e}.args must be an array of arguments`);if(!Object.prototype.hasOwnProperty.call(r,"expected"))throw new i(`${e}.expected is required (use null for a null result)`);d(r.args,`${e}.args`),d(r.expected,`${e}.expected`)}),t}}function x(t,s){let o=new Map(t.failedTests.map(n=>[n.testId,n])),e=s.tests??[],r={totalRetries:s.retried,nowPassing:s.nowPassing,stillFailing:s.stillFailing,tests:e.map(({testId:n,...a})=>({name:o.get(n)?.testName??n,file:o.get(n)?.file??"",...a}))};t.retries=r;let l=new Set(e.filter(n=>n.passed&&!n.unmatched).map(n=>n.testId)),f=t.failedTests.filter(n=>l.has(n.testId));if(f.length!==0&&(t.failedTests=t.failedTests.filter(n=>!l.has(n.testId)),t.failed=Math.max(0,t.failed-f.length),t.passed+=f.length,t.flaky=(t.flaky??0)+f.length,t.failed===0&&t.status==="failed"&&(t.status="passed"),t.testCases)){let n=[...f];t.testCases=t.testCases.map(a=>{if(a.status!=="failed")return a;let c=n.findIndex(p=>p.testName===a.name&&p.file===a.file);return c<0?a:(n.splice(c,1),{...a,status:"passed",flaky:!0})})}}export{g as a,d as b,h as c,x as d};
@@ -1,6 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{e as z}from"./chunk-Q6I4SIUU.js";import{a as P}from"./chunk-KCQNFBBR.js";import{a as w,b as S}from"./chunk-TDQWTSBS.js";import{u as $,v as H}from"./chunk-T66PPF4D.js";import{a as T,e as I}from"./chunk-5G4UFTV4.js";import{c as C,d as M}from"./chunk-SZAZQZWI.js";import{a as k,e as F}from"./chunk-HL2ANKN3.js";import{f as D}from"./chunk-XH4JMX5O.js";M();import{createHash as L}from"crypto";import*as x from"path";function Q(){let o="3.15.15",e=(process.env.AQE_SESSION_CACHE_SALT??"").trim();return e?`${o}+${e}`:o}var U={enabled:!0,maxEntries:500,ttlMs:3600*1e3,persistToDb:!0};function N(o){let e=JSON.parse(JSON.stringify(o));function t(r){if(r===null||typeof r!="object")return JSON.stringify(r);if(Array.isArray(r))return"["+r.map(t).join(",")+"]";let i=r;return"{"+Object.keys(i).sort().map(n=>JSON.stringify(n)+":"+t(i[n])).join(",")+"}"}return t(e)}function j(o){let e=o?.projectRoot;if(!e)try{e=C()}catch{e=""}let t=o?.cwd;if(!t)try{t=process.cwd()}catch{t=""}return{projectRoot:e?x.resolve(e):"",cwd:t?x.resolve(t):"",inputs:o?.inputs??{}}}var v=class{cache=new Map;config;hits=0;misses=0;generation=0;constructor(e){this.config={...U,...e}}computeFingerprint(e,t,r,i){let n=N({action:t,build:Q(),domain:e,input:r,scope:j(i)});return L("sha256").update(n).digest("hex").slice(0,16)}get(e){if(!this.config.enabled)return null;let t=this.cache.get(e);return t?Date.now()-t.cachedAt>this.config.ttlMs?(this.cache.delete(e),this.misses++,null):(t.hitCount++,t.lastHitAt=Date.now(),this.hits++,t):(this.misses++,null)}set(e,t,r,i,n){if(!this.config.enabled)return;!this.cache.has(e)&&this.cache.size>=this.config.maxEntries&&this.evictOldest();let s={fingerprint:e,domain:t,action:r,result:i,tokensSaved:n,cachedAt:Date.now(),hitCount:0,lastHitAt:0};this.cache.set(e,s),this.config.persistToDb&&this.persistEntry(s)}loadFromDb(){try{let e=d();if(!e)return;let t=Date.now()-this.config.ttlMs,r=e.prepare(`SELECT key, value FROM kv_store
3
- WHERE namespace = 'session_cache'
4
- AND created_at > ?
5
- ORDER BY created_at DESC LIMIT ?`).all(t,this.config.maxEntries);for(let i of r)try{let n=JSON.parse(i.value);Date.now()-n.cachedAt<=this.config.ttlMs&&this.cache.set(n.fingerprint,n)}catch{}}catch{}}getStats(){let e=this.hits+this.misses,t=0;for(let r of this.cache.values())t+=r.tokensSaved*r.hitCount;return{size:this.cache.size,hits:this.hits,misses:this.misses,hitRate:e>0?this.hits/e:0,estimatedTokensSaved:t}}clear(){this.cache.clear(),this.hits=0,this.misses=0,this.generation++}getGeneration(){return this.generation}invalidateAll(){let e=this.cache.size;if(this.cache.clear(),this.generation++,this.config.persistToDb)try{d()?.prepare("DELETE FROM kv_store WHERE namespace = 'session_cache'").run()}catch{}return e}invalidateDomain(e){this.generation++;let t=0;for(let[r,i]of this.cache)i.domain===e&&(this.cache.delete(r),this.deletePersisted(i.fingerprint),t++);return t}evictOldest(){let e=null,t=1/0;for(let[r,i]of this.cache)i.cachedAt<t&&(t=i.cachedAt,e=r);e&&this.cache.delete(e)}persistEntry(e){try{let t=d();if(!t)return;t.prepare(`INSERT OR REPLACE INTO kv_store (key, namespace, value, created_at)
6
- VALUES (?, 'session_cache', ?, ?)`).run(`session_cache:${e.fingerprint}`,JSON.stringify(e),Date.now())}catch{}}deletePersisted(e){try{let t=d();if(!t)return;t.prepare("DELETE FROM kv_store WHERE namespace = 'session_cache' AND key = ?").run(`session_cache:${e}`)}catch{}}};function d(){try{let{getUnifiedMemory:o}=(H(),D($)),e=o();return e.isInitialized()?e.getDatabase():null}catch{return null}}var f=null;function p(o){return f||(f=new v(o),f.loadFromDb()),f}import{randomUUID as B}from"crypto";F();I();var b={minConfidenceForExit:.85,minSuccessRate:.9,maxPatternAge:10080*60*1e3,minQualityScore:.7,minSuccessfulUses:2,maxSearchResults:5,similarityThreshold:.8,verbose:!1},K={minConfidenceForExit:.75,minSuccessRate:.8,maxPatternAge:336*60*60*1e3,minQualityScore:.6,minSuccessfulUses:1,maxSearchResults:10,similarityThreshold:.7,verbose:!1},Z={minConfidenceForExit:.92,minSuccessRate:.95,maxPatternAge:4320*60*1e3,minQualityScore:.85,minSuccessfulUses:3,maxSearchResults:3,similarityThreshold:.9,verbose:!1},g=class{patternStore;config;reuseHistory=[];attemptHistory=[];constructor(e,t){this.patternStore=e,this.config={...b,...t}}async checkEarlyExit(e){let t=performance.now(),r=new Date;try{let i=e.domain??P(e.description)??void 0,n={limit:this.config.maxSearchResults*2,useVectorSearch:!!e.embedding};i&&(n.domain=i),e.context&&(n.context={language:e.context.language,framework:e.context.framework,testType:e.context.testType});let s=e.embedding??e.description,m=await this.patternStore.search(s,n),l=performance.now()-t;if(!m.success){let a="error"in m?m.error.message:"Unknown error",h=this.createResult(!1,"search_error",`Pattern search failed: ${a}`,l);return this.recordAttempt("search_error",i),h}let c=m.value;if(c.length===0){let a=this.createResult(!1,"no_matching_pattern","No matching patterns found in store",l);return this.recordAttempt("no_matching_pattern",i),a}let u=null;for(let{pattern:a,score:h}of c){let y=this.evaluatePatternEligibility(a,h,r);if(y.eligible){let E=this.estimateTokensSaved(a),A={canExit:!0,reusedPattern:a,estimatedTokensSaved:E,confidence:a.confidence,similarityScore:h,reason:"pattern_reused",explanation:`Reusing pattern "${a.name}" with ${(a.confidence*100).toFixed(1)}% confidence`,searchLatencyMs:l};return this.recordReuse(a.id,E,a.confidence,h,l,i),this.config.verbose&&console.log(`[EarlyExitTokenOptimizer] Pattern reuse: ${a.name} (confidence: ${a.confidence.toFixed(2)}, similarity: ${h.toFixed(2)}, tokens saved: ${E})`),A}u===null&&(u={reason:y.reason,explanation:y.explanation})}if(u){let a=this.createResult(!1,u.reason,u.explanation,l);return this.recordAttempt(u.reason,i),a}let O=this.createResult(!1,"no_matching_pattern",`Found ${c.length} patterns but none met eligibility criteria`,l);return this.recordAttempt("no_matching_pattern",i),O}catch(i){let n=performance.now()-t,s=this.createResult(!1,"search_error",`Error during pattern search: ${k(i)}`,n);return this.recordAttempt("search_error"),s}}evaluatePatternEligibility(e,t,r){if(t<this.config.similarityThreshold)return{eligible:!1,reason:"similarity_too_low",explanation:`Similarity ${(t*100).toFixed(1)}% < threshold ${(this.config.similarityThreshold*100).toFixed(1)}%`};if(e.confidence<this.config.minConfidenceForExit)return{eligible:!1,reason:"confidence_too_low",explanation:`Confidence ${(e.confidence*100).toFixed(1)}% < threshold ${(this.config.minConfidenceForExit*100).toFixed(1)}%`};if(e.successRate<this.config.minSuccessRate)return{eligible:!1,reason:"success_rate_too_low",explanation:`Success rate ${(e.successRate*100).toFixed(1)}% < threshold ${(this.config.minSuccessRate*100).toFixed(1)}%`};let i=r.getTime()-e.lastUsedAt.getTime();if(i>this.config.maxPatternAge){let n=Math.floor(i/864e5),s=Math.floor(this.config.maxPatternAge/(1440*60*1e3));return{eligible:!1,reason:"pattern_too_old",explanation:`Pattern age ${n} days > max ${s} days`}}return e.qualityScore<this.config.minQualityScore?{eligible:!1,reason:"quality_score_too_low",explanation:`Quality score ${(e.qualityScore*100).toFixed(1)}% < threshold ${(this.config.minQualityScore*100).toFixed(1)}%`}:e.successfulUses<this.config.minSuccessfulUses?{eligible:!1,reason:"insufficient_uses",explanation:`Successful uses ${e.successfulUses} < minimum ${this.config.minSuccessfulUses}`}:{eligible:!0,reason:"pattern_reused",explanation:"Pattern meets all eligibility criteria"}}estimateTokensSaved(e){let t=100,r=Math.ceil(e.template.content.length/4);t+=r,t+=50;let s={"test-template":1.5,"assertion-pattern":1,"mock-pattern":1.2,"coverage-strategy":1.3,"api-contract":1.4,"visual-baseline":1.1,"perf-benchmark":1.4,"flaky-fix":1.3,"error-handling":1.2}[e.patternType]??1;return Math.ceil(t*s)}createResult(e,t,r,i){return{canExit:e,reason:t,explanation:r,searchLatencyMs:i}}recordReuse(e,t,r,i,n,s){this.reuseHistory.push({patternId:e,tokensSaved:t,confidence:r,similarity:i,latencyMs:n,domain:s,timestamp:new Date}),this.attemptHistory.push({reason:"pattern_reused",domain:s,timestamp:new Date}),this.reuseHistory.length>1e4&&(this.reuseHistory=this.reuseHistory.slice(-1e4))}recordAttempt(e,t){this.attemptHistory.push({reason:e,domain:t,timestamp:new Date}),this.attemptHistory.length>1e4&&(this.attemptHistory=this.attemptHistory.slice(-1e4))}recordSuccessfulReuse(e){this.patternStore.recordUsage(e,!0).catch(t=>{console.warn(`[EarlyExitTokenOptimizer] Failed to record successful reuse for ${e}:`,t)})}recordFailedReuse(e){this.patternStore.recordUsage(e,!1).catch(t=>{console.warn(`[EarlyExitTokenOptimizer] Failed to record failed reuse for ${e}:`,t)})}getReuseStats(){let e=this.reuseHistory.length,t=this.attemptHistory.length,r=0,i=0,n=0,s=0;for(let c of this.reuseHistory)r+=c.tokensSaved,i+=c.confidence,n+=c.similarity,s+=c.latencyMs;let m={pattern_reused:0,no_matching_pattern:0,confidence_too_low:0,success_rate_too_low:0,pattern_too_old:0,quality_score_too_low:0,insufficient_uses:0,similarity_too_low:0,search_error:0};for(let c of this.attemptHistory)m[c.reason]++;let l=T();for(let c of this.reuseHistory){let u=c.domain??"unknown";l[u]||(l[u]={reuses:0,tokens:0}),l[u].reuses++,l[u].tokens+=c.tokensSaved}return{totalReuses:e,tokensSaved:r,avgConfidence:e>0?i/e:0,avgSimilarity:e>0?n/e:0,avgSearchLatencyMs:e>0?s/e:0,totalAttempts:t,exitRate:t>0?e/t:0,reasonBreakdown:m,domainBreakdown:l}}resetStats(){this.reuseHistory=[],this.attemptHistory=[]}getConfig(){return{...this.config}}updateConfig(e){Object.assign(this.config,e)}};var _={enabled:!0,earlyExit:b,verbose:!1},R=class{optimizer=null;patternStore=null;config=_;initialized=!1;readyPromise=null;memoryBackend=null;async initialize(e,t){this.initialized||(this.readyPromise=null,this.patternStore=null,this.optimizer=null,this.config={..._,...t},this.memoryBackend=e,this.initialized=!0,this.config.verbose&&console.log("[TokenOptimizerService] Registered (lazy \u2014 pattern store not yet created)"))}async ensurePatternStoreReady(){if(!this.optimizer&&!(!this.initialized||!this.config.enabled||!this.memoryBackend))return this.readyPromise?this.readyPromise:(this.readyPromise=(async()=>{try{this.patternStore=z(this.memoryBackend),await this.patternStore.initialize(),this.optimizer=new g(this.patternStore,this.config.earlyExit),this.config.verbose&&console.log("[TokenOptimizerService] Pattern store ready (lazy init)")}catch(e){console.warn("[TokenOptimizerService] Lazy pattern store init failed:",e)}})(),this.readyPromise)}async checkEarlyExit(e){if(!this.initialized||!this.config.enabled)return{canExit:!1,reason:"no_matching_pattern",explanation:"Token optimizer service not initialized",searchLatencyMs:0};try{let r=p(),i=r.computeFingerprint(e.domain??"unknown",e.description,e.context??{}),n=r.get(i);if(n)return S.recordEarlyExit(n.tokensSaved),this.config.verbose&&console.log(`[TokenOptimizerService] Session cache hit: ${i.slice(0,8)}... (saved ${n.tokensSaved} tokens)`),{canExit:!0,estimatedTokensSaved:n.tokensSaved,confidence:1,similarityScore:1,reason:"pattern_reused",explanation:`Session cache exact match (fingerprint: ${i.slice(0,8)}...)`,searchLatencyMs:0}}catch{}if(await this.ensurePatternStoreReady(),!this.optimizer)return{canExit:!1,reason:"no_matching_pattern",explanation:"Pattern store unavailable (lazy init failed or disabled)",searchLatencyMs:0};let t=await this.optimizer.checkEarlyExit(e);return t.canExit&&t.estimatedTokensSaved&&(S.recordEarlyExit(t.estimatedTokensSaved),this.config.verbose&&console.log(`[TokenOptimizerService] Early exit: ${t.reusedPattern?.name} (saved ${t.estimatedTokensSaved} tokens)`)),t}async checkTaskEarlyExit(e,t){return this.checkEarlyExit({description:e,domain:t})}recordSuccessfulReuse(e){this.optimizer&&this.optimizer.recordSuccessfulReuse(e)}recordFailedReuse(e){this.optimizer&&this.optimizer.recordFailedReuse(e)}async storePattern(e){if(await this.ensurePatternStoreReady(),!this.patternStore)return null;try{let t=await this.patternStore.store({...e,id:`pattern-${Date.now()}-${B().slice(0,8)}`,createdAt:new Date,lastUsedAt:new Date});return t.success?t.value:null}catch(t){return console.warn("[TokenOptimizerService] Failed to store pattern:",t),null}}getReuseStats(){return this.optimizer?this.optimizer.getReuseStats():null}isEnabled(){return this.initialized&&this.config.enabled}getConfig(){return{...this.config}}getDashboardSummary(){return w()}cacheOperationResult(e,t,r,i,n){try{let s=p(),m=s.computeFingerprint(e,t,r);s.set(m,e,t,i,n)}catch{}}getSessionCacheStats(){try{return p().getStats()}catch{return{size:0,hits:0,misses:0,hitRate:0,estimatedTokensSaved:0}}}reset(){this.optimizer&&this.optimizer.resetStats(),this.optimizer=null,this.patternStore=null,this.initialized=!1,this.readyPromise=null,this.memoryBackend=null,this.config=_}},G=new R;async function ue(o,e){await G.initialize(o,e)}export{p as a,G as b,ue as c};
@@ -1,13 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{b as Q,d as q}from"./chunk-5I7357KS.js";import{c as z,d as me}from"./chunk-SZAZQZWI.js";import{a as F,e as pe}from"./chunk-HL2ANKN3.js";q();pe();q();import*as _ from"node:http";import*as D from"node:https";import{createHash as ue}from"node:crypto";import{URL as X}from"node:url";var N={model:"Xenova/all-MiniLM-L6-v2",expectedDim:384,connectTimeoutMs:5e3,requestTimeoutMs:3e4,failureThreshold:3,failureWindowMs:6e4},fe="AQE embedder endpoint identity canary v1",ge="/v1/embeddings";function J(t){if(t.startsWith("unix:"))return t;try{let e=new X(t);return e.username||e.password?(e.username="",e.password="",e.toString().replace(/\/$/,"")):t}catch{return t}}function he(t){if(t.startsWith("unix:")){let r=t.slice(5);if(!r.startsWith("/"))throw new Error(`unix endpoint must be an absolute path: ${t}`);return{transport:"unix",socketPath:r,safeUrl:t}}let e=new X(t);if(e.protocol!=="http:"&&e.protocol!=="https:")throw new Error(`unsupported embedder endpoint protocol: ${e.protocol}`);return(e.username||e.password)&&(console.warn("[EmbedderEndpointClient] endpoint URL contained userinfo; stripping. Use AQE_EMBEDDER_TOKEN env var for credentials."),e.username="",e.password=""),{transport:e.protocol==="https:"?"https":"http",host:e.hostname,port:e.port?Number(e.port):e.protocol==="https:"?443:80,protocol:e.protocol,safeUrl:e.toString().replace(/\/$/,"")}}var U=class{constructor(e,n,r=()=>{}){this.threshold=e;this.windowMs=n;this.onRecover=r}threshold;windowMs;onRecover;failures=[];trippedAt=null;recordSuccess(){this.failures=[],this.trippedAt=null}recordFailure(){let e=Date.now();this.failures=this.failures.filter(n=>e-n<this.windowMs),this.failures.push(e),this.failures.length>=this.threshold&&(this.trippedAt=e)}isOpen(){return this.trippedAt===null?!1:Date.now()-this.trippedAt>=this.windowMs?(this.failures=[],this.trippedAt=null,this.onRecover(),!1):!0}trip(){this.trippedAt=Date.now()}getState(){return{open:this.isOpen(),failures:this.failures.length,trippedAt:this.trippedAt}}},P=class{parsed;agent;breaker;opts;cachedIdentity=null;probeInFlight=null;constructor(e){if(this.opts={endpoint:e.endpoint,token:e.token,model:e.model??N.model,expectedDim:e.expectedDim??N.expectedDim,connectTimeoutMs:e.connectTimeoutMs??N.connectTimeoutMs,requestTimeoutMs:e.requestTimeoutMs??N.requestTimeoutMs,failureThreshold:e.failureThreshold??N.failureThreshold,failureWindowMs:e.failureWindowMs??N.failureWindowMs,tlsOptions:e.tlsOptions},this.parsed=he(e.endpoint),this.parsed.transport==="https"){let n=e.tlsOptions??{};this.agent=new D.Agent({keepAlive:!0,ca:n.ca,cert:n.cert,key:n.key,rejectUnauthorized:n.rejectUnauthorized!==!1,servername:n.servername})}else this.agent=new _.Agent({keepAlive:!0});this.breaker=new U(this.opts.failureThreshold,this.opts.failureWindowMs,()=>{this.cachedIdentity=null})}getSafeEndpoint(){return this.parsed.safeUrl}async embed(e){if(e.length===0)return[];if(this.breaker.isOpen())throw new Error(`[EmbedderEndpointClient] circuit breaker open for ${this.parsed.safeUrl} \u2014 fast-failing`);this.cachedIdentity===null&&await this.ensureProbed();try{let n=await this.postEmbeddings(e),r=this.decodeAndNormalize(n,e.length);return this.breaker.recordSuccess(),r}catch(n){throw this.breaker.recordFailure(),n}}async probe(){return this.probeInFlight?this.probeInFlight:(this.probeInFlight=this.doProbe().finally(()=>{this.probeInFlight=null}),this.probeInFlight)}async ensureProbed(){return this.cachedIdentity?this.cachedIdentity:this.probe()}async doProbe(){let e;try{let a=await this.postEmbeddings([fe]);e=this.decodeAndNormalize(a,1)[0],this.breaker.recordSuccess()}catch(a){throw this.breaker.recordFailure(),a}if(!e||e.length!==this.opts.expectedDim)throw new Error(`[EmbedderEndpointClient] dim mismatch: expected ${this.opts.expectedDim}, got ${e?.length??0} from ${this.parsed.safeUrl}`);let n=Buffer.alloc(e.length*2);for(let a=0;a<e.length;a++){let i=Math.max(-32768,Math.min(32767,Math.round(e[a]*32767)));n.writeInt16LE(i,a*2)}let r=ue("sha256").update(n).digest("hex").slice(0,16);return this.cachedIdentity={dim:e.length,fingerprint:r,endpoint:this.parsed.safeUrl},this.cachedIdentity}getCachedIdentity(){return this.cachedIdentity}getBreakerState(){return this.breaker.getState()}async probeThroughOpenBreaker(){try{return await this.probe()}catch(e){throw this.breaker.trip(),e}}close(){this.agent.destroy()}decodeAndNormalize(e,n){if(!e||typeof e!="object"||!Array.isArray(e.data))throw new Error("[EmbedderEndpointClient] response missing data array");let r=e.data;if(r.length!==n)throw new Error(`[EmbedderEndpointClient] response count mismatch: expected ${n}, got ${r.length}`);let a=r.map((i,s)=>({idx:typeof i.index=="number"?i.index:s,embedding:i.embedding}));return a.sort((i,s)=>i.idx-s.idx),a.map(({embedding:i},s)=>{if(typeof i=="string")throw new Error(`[EmbedderEndpointClient] received base64 embedding at position ${s} \u2014 server ignored encoding_format=float. Configure the server to return float arrays.`);if(!Array.isArray(i))throw new Error(`[EmbedderEndpointClient] missing embedding at position ${s}`);if(i.length!==this.opts.expectedDim)throw new Error(`[EmbedderEndpointClient] dim mismatch at position ${s}: expected ${this.opts.expectedDim}, got ${i.length}`);return Q(i)})}postEmbeddings(e){let n=JSON.stringify({model:this.opts.model,input:e,encoding_format:"float"});return this.request(ge,n)}request(e,n){let r={"content-type":"application/json","content-length":Buffer.byteLength(n),accept:"application/json"};this.opts.token&&(r.authorization=`Bearer ${this.opts.token}`);let a={method:"POST",path:e,headers:r,agent:this.agent},i,s;this.parsed.transport==="unix"?(i={...a,socketPath:this.parsed.socketPath},s=_.request):(i={...a,host:this.parsed.host,port:this.parsed.port,protocol:this.parsed.protocol},s=this.parsed.transport==="https"?D.request:_.request);let o=this.parsed.safeUrl,c=this.opts.connectTimeoutMs,S=this.opts.requestTimeoutMs;return new Promise((p,k)=>{let w=!1,M=d=>{w||(w=!0,p(d))},b=d=>{w||(w=!0,k(d))},I=s(i,d=>{let h=[];d.on("data",f=>h.push(Buffer.from(f))),d.on("end",()=>{let f=Buffer.concat(h).toString("utf-8");if(!d.statusCode||d.statusCode<200||d.statusCode>=300){b(new Error(`[EmbedderEndpointClient] HTTP ${d.statusCode} from ${o}: ${f.slice(0,200)}`));return}try{let y=JSON.parse(f);M(y)}catch(y){b(new Error(`[EmbedderEndpointClient] invalid JSON from ${o}: ${y.message}`))}}),d.on("error",f=>b(f))});I.on("socket",d=>{d.setTimeout(c);let h=()=>{d.setTimeout(S)};d.connecting?d.once("connect",h):h(),d.on("timeout",()=>{let f=d.connecting?"connect":"request",y=d.connecting?c:S,R=new Error(`[EmbedderEndpointClient] ${f} timeout after ${y}ms`);b(R),I.destroy(R)})}),I.on("error",d=>b(d)),I.write(n),I.end()})}};me();import{join as K,resolve as Ee}from"node:path";import{existsSync as be,mkdirSync as ye}from"node:fs";import{createRequire as we}from"node:module";var Ie=we(import.meta.url);function ve(){let t=process.env.AQE_MEMORY_PATH;return t&&t.length>0?t===":memory:"?t:Ee(z(),t):K(z(),".agentic-qe","memory.db")}var Y="_system",Z="embedder_identity:",C=null,B=!1;function ee(){if(C)return C;if(B)return null;try{let t=Ie("better-sqlite3"),e=ve(),n=K(e,"..");be(n)||ye(n,{recursive:!0});let r=new t(e);return r.pragma("journal_mode = WAL"),r.pragma("busy_timeout = 5000"),r.exec(`
3
- CREATE TABLE IF NOT EXISTS kv_store (
4
- key TEXT NOT NULL,
5
- namespace TEXT NOT NULL,
6
- value TEXT NOT NULL,
7
- expires_at INTEGER,
8
- created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
9
- PRIMARY KEY (namespace, key)
10
- );
11
- CREATE INDEX IF NOT EXISTS idx_kv_namespace ON kv_store(namespace);
12
- `),C=r,r}catch{return B=!0,null}}function te(t){let e=ee();if(!e)return null;try{let n=e.prepare("SELECT value FROM kv_store WHERE namespace = ? AND key = ?").get(Y,Z+t);if(!n)return null;let r=JSON.parse(n.value);return!r.fingerprint||typeof r.dim!="number"?null:{fingerprint:r.fingerprint,dim:r.dim,endpoint:r.endpoint}}catch{return null}}function ne(t){let e=ee();if(!e)return;let n={fingerprint:t.fingerprint,dim:t.dim,endpoint:t.endpoint,updatedAt:Date.now()};e.prepare("INSERT OR REPLACE INTO kv_store (key, namespace, value) VALUES (?, ?, ?)").run(Z+t.endpoint,Y,JSON.stringify(n))}function re(){if(C)try{C.close()}catch{}C=null,B=!1}q();import{createHash as oe}from"node:crypto";import{existsSync as xe,readFileSync as Te,renameSync as Se,writeFileSync as Ne}from"node:fs";var se="aqe embedding-space compatibility canary v1";var v=class extends Error{constructor(n,r){super(`${n}: ${r}`);this.code=n;this.name="EmbeddingSpaceError"}code};function Ce(t){return JSON.stringify({provider:t.provider,model:t.model,dimensions:t.dimensions,pooling:t.pooling??null,normalized:t.normalized,preprocessingVersion:t.preprocessingVersion??null,implementation:t.implementation??null,runtimeFingerprint:t.runtimeFingerprint})}function ae(t){let e=Buffer.alloc(t.length*2);for(let n=0;n<t.length;n++){let r=Math.max(-32768,Math.min(32767,Math.round(t[n]*32767)));e.writeInt16LE(r,n*2)}return oe("sha256").update(e).digest("hex").slice(0,16)}function V(t){if(!t.runtimeFingerprint)throw new Error("Embedding space identity requires executable runtime evidence");let e=oe("sha256").update("aqe:embedding-space:v1\0").update(Ce(t)).digest("hex");return{...t,spaceId:e}}function We(t,e){let n=[...new Set(t.flatMap(o=>o.spaceId?[o.spaceId]:[]))].sort(),r=t.filter(o=>!o.spaceId).length,a=e?t.filter(o=>o.spaceId===e).length:0,i=e?t.filter(o=>o.spaceId!==null&&o.spaceId!==e).length:t.length-r;return{status:r>0||!e?"unverified":i>0||n.length>1?"vector_space_mismatch":"healthy",activeSpaceId:e,storedSpaceIds:n,verifiedVectors:a,mismatchedVectors:i,unverifiedVectors:r}}var Re="[VectorSearch] WARN: semantic vector search is not active: no embedding runtime was available when the ANN indexes were opened (set AQE_EMBEDDER_ENDPOINT, or install @huggingface/transformers). Any existing vectors in patterns.rvf and brain.rvf are kept and will be used once an embedder is available; until then pattern search uses SQLite text matching.",Ge="VECTOR_SPACE_UNVERIFIED: no embedding runtime was available when the RVF index was opened; index left unbound (existing vectors are kept)",ie=!1;function je(){ie||(ie=!0,console.warn(Re))}function _e(t){return`${t}.space.json`}function Qe(t,e,n){if(!e)throw new v("VECTOR_SPACE_UNVERIFIED",`cannot open ANN index ${t} without runtime provenance`);let r=_e(t);if(xe(r)){let s;try{s=JSON.parse(Te(r,"utf8"))}catch{throw new v("VECTOR_SPACE_UNVERIFIED",`ANN index manifest ${r} is unreadable`)}if(s.version!==1||!s.spaceId)throw new v("VECTOR_SPACE_UNVERIFIED",`ANN index manifest ${r} has no verified space`);if(s.spaceId!==e)throw new v("VECTOR_SPACE_MISMATCH",`ANN index space ${s.spaceId} != active space ${e}`);return}if(n>0)throw new v("VECTOR_SPACE_UNVERIFIED",`populated ANN index ${t} has no embedding-space manifest; rebuild required`);let a={version:1,spaceId:e},i=`${r}.${process.pid}.tmp`;Ne(i,`${JSON.stringify(a)}
13
- `,{encoding:"utf8",mode:384}),Se(i,r)}var H=null,g=null,x=null,E=!1,A="",L=null,m=null,l=null,T=null,G={modelName:"Xenova/all-MiniLM-L6-v2",quantized:!0,enableCache:!0,maxCacheSize:1e4,endpoint:process.env.AQE_EMBEDDER_ENDPOINT,endpointToken:process.env.AQE_EMBEDDER_TOKEN},u=new Map,de=36e5;function W(t){return l?`endpoint:${l.fingerprint}:${t}`:`inproc:${t}`}function le(t){let e=t.trim();return!!(e.startsWith("{")&&/["']metrics["']/.test(e)||e.startsWith("[")&&e.endsWith("]")&&e.length>50||(e.match(/[a-zA-Z]/g)||[]).length/Math.max(e.length,1)<.3&&e.length>20)}async function O(t={},e=!1){if(E&&!e)throw new Error(`Transformer initialization previously failed: ${A}`);if(x)return x;let n={...G,...t};return x=(async()=>{try{if(n.endpoint){let S=J(n.endpoint);console.log(`[RealEmbeddings] Using external embedder endpoint: ${S}`),m=new P({endpoint:n.endpoint,token:n.endpointToken,model:n.modelName,expectedDim:$()}),l=await m.probe(),T=V({provider:"openai-compatible-endpoint",model:n.modelName,dimensions:l.dim,pooling:"mean",normalized:!0,preprocessingVersion:"aqe-text-v1",implementation:l.endpoint,runtimeFingerprint:l.fingerprint}),console.log(`[RealEmbeddings] Endpoint identity: dim=${l.dim} fingerprint=${l.fingerprint}`);try{let p=te(l.endpoint);p&&p.fingerprint!==l.fingerprint&&console.warn(`[RealEmbeddings] WARNING: endpoint identity changed since last run. Previous fingerprint=${p.fingerprint} dim=${p.dim}, current fingerprint=${l.fingerprint} dim=${l.dim}. Vectors written before this change may no longer be comparable.`),ne(l)}catch(p){console.warn(`[RealEmbeddings] Could not persist endpoint identity: ${F(p)}`)}g=Me(m),E=!1,A="";return}let r;try{r=await import("./transformers-BZCHJJJT.js")}catch{throw new Error('In-process embeddings require the optional package "@huggingface/transformers", which is not installed. Configure an embedding endpoint (EmbeddingConfig.endpoint / AQE_EMBEDDER_ENDPOINT) so no local model is loaded. Installing @huggingface/transformers@4.2.0 is an explicit security opt-in: its compatible dependency chain currently has unresolved HIGH advisories GHSA-xcpc-8h2w-3j85 and GHSA-f88m-g3jw-g9cj.')}H=r.pipeline,console.log(`[RealEmbeddings] Loading model: ${n.modelName}`);let a=performance.now();g=await H("feature-extraction",n.modelName,{quantized:n.quantized});let i=g;if(!i)throw new Error("Transformer pipeline returned no embedding model");let s=await i(se,{pooling:"mean",normalize:!0}),o=Array.from(s.data);T=V({provider:"huggingface-transformers",model:n.modelName,dimensions:o.length,pooling:"mean",normalized:!0,preprocessingVersion:"aqe-text-v1",implementation:`transformers:${n.quantized?"quantized":"full"}`,runtimeFingerprint:ae(o)}),E=!1,A="";let c=performance.now()-a;console.log(`[RealEmbeddings] Model loaded in ${c.toFixed(0)}ms`)}catch(r){throw E=!0,A=F(r),new Error(`Failed to initialize transformer model: ${A}`)}})(),x}function Me(t){return async e=>{let n=Array.isArray(e)?e:[e],r=await t.embed(n),a=r[0]?.length??$(),i=new Float32Array(n.length*a);for(let s=0;s<r.length;s++)i.set(r[s],s*a);return{data:i,dims:[n.length,a]}}}async function et(t,e={}){let n={...G,...e};if(le(t))return new Array($()).fill(0);if(g||await O(e),!g)throw new Error("Embedding model failed to initialize");let r=W(t);if(n.enableCache){let c=u.get(r);if(c&&Date.now()-c.timestamp<de)return c.embedding}let a=performance.now(),i=await g(t,{pooling:"mean",normalize:!0}),s=Array.from(i.data),o=performance.now()-a;if(o>500&&console.warn(`[RealEmbeddings] Slow embedding computation: ${o.toFixed(1)}ms for "${t.slice(0,50)}..."`),n.enableCache){if(u.size>=n.maxCacheSize){let c=u.keys().next().value;c&&u.delete(c)}u.set(r,{embedding:s,timestamp:Date.now()})}return s}async function tt(t,e={}){let n={...G,...e},r=[],a=[],i=new Array(t.length).fill(null),s=[];for(let o=0;o<t.length;o++)le(t[o])?i[o]=new Array($()).fill(0):s.push(o);if(s.length===0)return i;if(g||await O(e),!g)throw new Error("Embedding model failed to initialize");if(n.enableCache)for(let o of s){let c=u.get(W(t[o]));c&&Date.now()-c.timestamp<de?i[o]=c.embedding:(r.push(t[o]),a.push(o))}else for(let o of s)r.push(t[o]),a.push(o);if(r.length>0){let o=performance.now(),c=32;for(let p=0;p<r.length;p+=c){let k=Math.min(p+c,r.length),w=r.slice(p,k),M=await g(w,{pooling:"mean",normalize:!0}),b=M.dims||[w.length,384],I=b[0],d=b[1];for(let h=0;h<I;h++){let f=h*d,y=Array.from(M.data.slice(f,f+d)),R=p+h,ce=a[R];if(i[ce]=y,n.enableCache){if(u.size>=n.maxCacheSize){let j=u.keys().next().value;j&&u.delete(j)}u.set(W(r[R]),{embedding:y,timestamp:Date.now()})}}}let S=performance.now()-o;console.log(`[RealEmbeddings] Batch computed ${r.length} embeddings in ${S.toFixed(0)}ms`)}return i.filter(o=>o!==null)}function nt(){u.clear(),console.log("[RealEmbeddings] Cache cleared")}function rt(){return{size:u.size,hitRate:0}}function it(){return!E&&g!==null}function $(){return 384}function ot(){H=null,g=null,x=null,E=!1,A="",u.clear(),m&&m.close(),m=null,l=null,T=null,re()}function st(){E&&(E=!1,A="",x=null,m&&m.close(),m=null,l=null)}async function at(t={}){if(E)return L??=Pe(t).finally(()=>{L=null}),L;let e=m;if(!e||!e.getBreakerState().open)return;let n=await e.probeThroughOpenBreaker();if(l&&n.fingerprint!==l.fingerprint)throw new Error(`[RealEmbeddings] endpoint identity changed since this process bound to it (fingerprint ${l.fingerprint} -> ${n.fingerprint}); restart to use the new embedding space`)}async function Pe(t){m&&m.close(),m=null,l=null,x=null,await O(t,!0)}function dt(){return m!==null}function lt(){return l}function ct(){return T}async function pt(){if(T)return T;let t=process.env.AQE_EMBEDDER_ENDPOINT;return t?(await O({endpoint:t,endpointToken:process.env.AQE_EMBEDDER_TOKEN}),T):null}export{J as a,se as b,We as c,Ge as d,je as e,Qe as f,G as g,et as h,tt as i,nt as j,rt as k,it as l,$ as m,ot as n,st as o,at as p,dt as q,lt as r,ct as s,pt as t};
@@ -1,153 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.15");process.exit(0)}
2
- import{a as D}from"./chunk-RDMRY7CT.js";import{c as L}from"./chunk-K3WZICFA.js";import{e as w}from"./chunk-KCQNFBBR.js";import{b as E,d as V}from"./chunk-XWIAZG3C.js";import{b as P,e as Q}from"./chunk-5G4UFTV4.js";import{a as W}from"./chunk-3HVFIITW.js";import{c as v}from"./chunk-BQ47GQPK.js";import{S as $,j as f}from"./chunk-6YVMX2TC.js";import{b as S,d as j}from"./chunk-SZAZQZWI.js";V();var J=["oracle:test-exec","judge:llm","proxy:structural"],d="proxy:structural";function G(n){return n&&J.includes(n)?n:d}function m(n,e={}){switch(G(n)){case"oracle:test-exec":return!0;case"judge:llm":return e.allowJudgeTier===!0;default:return!1}}import{createHash as M}from"node:crypto";function C(n,e){let t=n.length;if(t===0)return-1/0;let r=e?.iters??2e3,a=e?.alpha??.05,s=(e?.seed??2654435761)>>>0,o=()=>(s=Math.imul(s,1664525)+1013904223>>>0,s/4294967296),c=new Array(r);for(let u=0;u<r;u++){let l=0;for(let h=0;h<t;h++)l+=n[Math.floor(o()*t)];c[u]=l/t}c.sort((u,l)=>u-l);let i=Math.min(Math.floor(a*r),r-1);return c[i]}function x(n,e){let t=Math.min(n.length,e.length),r=new Array(t);for(let a=0;a<t;a++)r[a]=n[a]-e[a];return r}Q();var I=n=>m(n.provenanceTier,{allowJudgeTier:n.allowJudgeTier})?n.candidateHeldOut>n.baselineHeldOut?L(n.candidateAnchorMean,n.baselineAnchorMean,n.anchorTol)?{promote:!0,reason:"held-out gain, no anchor regression, oracle-tier evidence"}:{promote:!1,reason:`anchor regression: ${n.candidateAnchorMean} < ${n.baselineAnchorMean} - ${n.anchorTol}`}:{promote:!1,reason:`held-out ${n.candidateHeldOut} did not beat baseline ${n.baselineHeldOut}`}:{promote:!1,reason:`provenance tier '${n.provenanceTier}' not allowed to promote`},N=8,O=1e-6,U=n=>n.reduce((e,t)=>e+t,0)/n.length,z=n=>{let e=I(n);if(!e.promote)return e;let t=n.candidateHeldOutSamples,r=n.baselineHeldOutSamples;if(!t||!r||t.length===0||t.length!==r.length)return{promote:!1,reason:"significance gate: missing/mismatched paired held-out samples (need equal-length candidate & baseline per-task vectors)"};if(t.length<N)return{promote:!1,reason:`significance gate: only ${t.length} paired samples (< ${N}) \u2014 a bootstrap CI is not meaningful; fail closed rather than certify noise`};if(Math.abs(U(t)-n.candidateHeldOut)>O||Math.abs(U(r)-n.baselineHeldOut)>O)return{promote:!1,reason:"significance gate: sealed sample means do not match the sealed held-out scalars \u2014 inconsistent/forged evaluation"};let a=C(x(t,r));return a>0?{promote:!0,reason:`${e.reason}; paired gain significant (CI low ${a.toFixed(4)} > 0)`}:{promote:!1,reason:`significance gate: paired held-out gain not significant (95% CI lower bound ${a.toFixed(4)} \u2264 0)`}},le=Object.freeze({"accept/v1":I,"accept/v1+sig":z});function T(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(T).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${T(e[r])}`).join(",")}}`}var B="aqe:promotion-path-rule:v1+sig",X=n=>m(n.provenanceTier,{allowJudgeTier:n.allowJudgeTier})?n.reward===void 0||n.rewardThreshold===void 0||!(n.reward>=n.rewardThreshold)?{promote:!1,reason:`reward ${n.reward} below threshold ${n.rewardThreshold}`}:n.occurrences===void 0||n.occurrenceThreshold===void 0||!(n.occurrences>=n.occurrenceThreshold)?{promote:!1,reason:`occurrences ${n.occurrences} below threshold ${n.occurrenceThreshold}`}:n.successRate===void 0||n.successRateThreshold===void 0||!(n.successRate>=n.successRateThreshold)?{promote:!1,reason:`success rate ${n.successRate} below threshold ${n.successRateThreshold}`}:n.withinActivityWindow!==!0?{promote:!1,reason:"pattern outside promotion activity window (stale)"}:{promote:!0,reason:"tier allowed; reward/occurrence/success-rate thresholds met; within activity window"}:{promote:!1,reason:`provenance tier '${n.provenanceTier}' not allowed to promote`},Y=n=>m(n.provenanceTier,{allowJudgeTier:n.allowJudgeTier})?n.insightConfidence===void 0||n.insightConfidenceThreshold===void 0||!(n.insightConfidence>=n.insightConfidenceThreshold)?{promote:!1,reason:`insight confidence ${n.insightConfidence} below threshold ${n.insightConfidenceThreshold}`}:n.insightActionable!==!0?{promote:!1,reason:"insight produced no actionable reorganization"}:{promote:!0,reason:"tier allowed; insight confidence meets threshold; actionable"}:{promote:!1,reason:`provenance tier '${n.provenanceTier}' not allowed to apply`},k=Object.freeze({"pattern-promote/v1":X,"dream-apply/v1":Y});function b(n){return M("sha256").update(T(n)).digest("hex")}function _(n){if(!Object.hasOwn(k,n))throw new Error(`Unknown promotion-path rule version '${n}' \u2014 cannot fingerprint an unregistered rule.`);return M("sha256").update(B).update("\0").update(n).digest("hex")}function y(n,e){let t=P(k,n);if(!t)throw new Error(`Unknown promotion-path rule version '${n}' \u2014 refusing to re-execute an unregistered rule.`);return t(e)}function F(n,e={}){let t=[],r=b(n.sealed)===n.sealedHash;r||t.push("sealIntact");let a=!1;try{let c=_(n.ruleVersion);a=n.ruleFingerprint===c&&(e.pinnedRuleFingerprint===void 0||n.ruleFingerprint===e.pinnedRuleFingerprint)}catch{a=!1}a||t.push("gateUnchanged");let s=!1;r&&a&&(s=(y(n.ruleVersion,n.sealed).promote?"promote":"reject")===n.recordedVerdict),s||t.push("gateReExecutes");let o=t.length===0;return{valid:o,checks:{sealIntact:r,gateUnchanged:a,gateReExecutes:s},failures:t,reason:o?"promotion verified: sealed inputs intact, rule unchanged, frozen rule re-execution reproduces the recorded verdict":`promotion INVALID (failed: ${t.join(", ")}) \u2014 the recorded verdict is not reproducible under the frozen rule`}}W();$();var p=v.create("pattern-lifecycle"),K={promotionRewardThreshold:.7,promotionMinOccurrences:w,promotionMinSuccessRate:.7,deprecationFailureThreshold:3,staleDaysThreshold:30,confidenceDecayRate:.01,minActiveConfidence:.3,maxAgeForActivePatterns:90,promotionActivityWindowDays:30,asymmetricLearning:{},allowJudgeTierPromotion:!1},H=5,Z=.9,ee=2;function te(n,e){return e<H||!Number.isFinite(n)?0:Math.min(Math.max(n,0),1)}var R=class{constructor(e,t={}){this.db=e;this.config={...K,...t},this.asymmetricEngine=new D(this.config.asymmetricLearning),this.ensureSchema()}db;config;asymmetricEngine;_witnessChain=null;set witnessChain(e){this._witnessChain=e}_compressionService=null;set compressionService(e){this._compressionService=e}ensureSchema(){try{this.db.prepare(`
3
- SELECT deprecated_at FROM qe_patterns LIMIT 1
4
- `).get()}catch(e){p.debug("Adding missing deprecated_at column",{error:e instanceof Error?e.message:String(e)}),this.db.exec(`
5
- ALTER TABLE qe_patterns ADD COLUMN deprecated_at TEXT DEFAULT NULL
6
- `),console.log("[PatternLifecycle] Added deprecated_at column to qe_patterns")}try{this.db.prepare(`
7
- SELECT consecutive_failures FROM qe_patterns LIMIT 1
8
- `).get()}catch(e){p.debug("Adding missing consecutive_failures column",{error:e instanceof Error?e.message:String(e)}),this.db.exec(`
9
- ALTER TABLE qe_patterns ADD COLUMN consecutive_failures INTEGER DEFAULT 0
10
- `),console.log("[PatternLifecycle] Added consecutive_failures column to qe_patterns")}try{this.db.prepare(`
11
- SELECT promotion_date FROM qe_patterns LIMIT 1
12
- `).get()}catch(e){p.debug("Adding missing promotion_date column",{error:e instanceof Error?e.message:String(e)}),this.db.exec(`
13
- ALTER TABLE qe_patterns ADD COLUMN promotion_date TEXT DEFAULT NULL
14
- `),console.log("[PatternLifecycle] Added promotion_date column to qe_patterns")}try{this.db.prepare(`
15
- SELECT provenance_tier FROM qe_patterns LIMIT 1
16
- `).get()}catch(e){p.debug("Adding missing provenance_tier column",{error:e instanceof Error?e.message:String(e)}),this.db.exec(`
17
- ALTER TABLE qe_patterns ADD COLUMN provenance_tier TEXT DEFAULT '${d}'
18
- `),console.log(`[PatternLifecycle] Added provenance_tier column to qe_patterns (backfilled '${d}')`)}}getRecentExperiences(e={}){let t=e.minReward??this.config.promotionRewardThreshold,r=e.limit??100,a=e.sinceDays??7;if(!this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='captured_experiences'").get())return p.debug("captured_experiences table not found"),[];let o=new Date(Date.now()-a*864e5).toISOString().replace("T"," ").slice(0,19);return this.db.prepare(`
19
- SELECT
20
- domain as task_type,
21
- COUNT(*) as count,
22
- AVG(quality) as avg_reward,
23
- MAX(quality) as max_reward,
24
- MIN(quality) as min_reward,
25
- SUM(CASE WHEN quality >= ? THEN 1 ELSE 0 END) as success_count,
26
- GROUP_CONCAT(DISTINCT agent) as actions,
27
- MAX(started_at) as latest_at
28
- FROM captured_experiences
29
- WHERE started_at >= ?
30
- AND quality >= ?
31
- AND agent != 'cli-hook'
32
- GROUP BY domain
33
- HAVING COUNT(*) >= ?
34
- ORDER BY avg_reward DESC
35
- LIMIT ?
36
- `).all(t,o,t*.5,this.config.promotionMinOccurrences,r).map(i=>({taskType:i.task_type,domain:this.taskTypeToQEDomain(i.task_type),count:i.count,avgReward:i.avg_reward,maxReward:i.max_reward,minReward:i.min_reward,actions:i.actions?i.actions.split(",").filter(Boolean):[],successCount:i.success_count,latestAt:new Date(i.latest_at)}))}taskTypeToQEDomain(e){let t={generate:"test-generation","test-generation":"test-generation",test:"test-generation",analyze:"coverage-analysis",coverage:"coverage-analysis","coverage-analysis":"coverage-analysis",run:"test-execution",execute:"test-execution","test-execution":"test-execution",report:"quality-assessment",quality:"quality-assessment",assessment:"quality-assessment",security:"security-compliance",sast:"security-compliance",audit:"security-compliance",defect:"defect-intelligence",predict:"defect-intelligence",bug:"defect-intelligence",requirements:"requirements-validation",validation:"requirements-validation",code:"code-intelligence",complexity:"code-intelligence",contract:"contract-testing",api:"contract-testing",visual:"visual-accessibility",a11y:"visual-accessibility",accessibility:"visual-accessibility",chaos:"chaos-resilience",resilience:"chaos-resilience",flaky:"chaos-resilience",learning:"learning-optimization",optimize:"learning-optimization"},r=e.toLowerCase();for(let[a,s]of Object.entries(t))if(r.includes(a))return s;return null}taskTypeToPatternType(e){let t={generate:"test-template",test:"test-template",coverage:"coverage-strategy",analyze:"coverage-strategy",mock:"mock-pattern",stub:"mock-pattern",assert:"assertion-pattern",expect:"assertion-pattern",security:"assertion-pattern",contract:"api-contract",api:"api-contract",visual:"visual-baseline",screenshot:"visual-baseline",a11y:"a11y-check",accessibility:"a11y-check",perf:"perf-benchmark",load:"perf-benchmark",stress:"perf-benchmark",flaky:"flaky-fix",retry:"flaky-fix",refactor:"refactor-safe",error:"error-handling",exception:"error-handling"},r=e.toLowerCase();for(let[a,s]of Object.entries(t))if(r.includes(a))return s;return"test-template"}findPatternCandidates(e){let t=[];for(let r of e){let a=r.avgReward>=this.config.promotionRewardThreshold,s=r.count>=this.config.promotionMinOccurrences,o=r.successCount/r.count,c=o>=this.config.promotionMinSuccessRate;if(a&&s&&c){let i=r.domain||"code-intelligence",u=this.taskTypeToPatternType(r.taskType);if(this.findExistingPattern(r.taskType,i))continue;t.push({name:`${r.taskType}-success-pattern`,domain:i,patternType:u,confidence:Math.min(.95,r.avgReward*.9),sourceExperiences:r.count,avgReward:r.avgReward,successRate:o,actions:r.actions.slice(0,5),templateContent:this.generateTemplateContent(r)})}}return t}findExistingPattern(e,t){let r=this.db.prepare(`
37
- SELECT * FROM qe_patterns
38
- WHERE name LIKE ? AND qe_domain = ? AND deprecated_at IS NULL
39
- LIMIT 1
40
- `).get(`%${e}%`,t);return r?this.rowToPattern(r):null}generateTemplateContent(e){let t=e.actions.map((r,a)=>`${a+1}. ${r}`).join(`
41
- `);return`Task Type: ${e.taskType}
42
- Domain: ${e.domain||"general"}
43
- Average Reward: ${e.avgReward.toFixed(3)}
44
- Success Rate: ${(e.successCount/e.count*100).toFixed(1)}%
45
-
46
- Typical Actions:
47
- ${t||"N/A"}
48
-
49
- Pattern extracted from ${e.count} successful experiences.`}getProvenanceTier(e){try{return this.db.prepare("SELECT provenance_tier FROM qe_patterns WHERE id = ?").get(e)?.provenance_tier??d}catch{return d}}checkPromotion(e){let t=this.getPattern(e);if(!t)return{shouldPromote:!1,meetsRewardThreshold:!1,meetsOccurrenceThreshold:!1,meetsSuccessRateThreshold:!1,meetsActivityWindow:!1,currentReward:0,currentOccurrences:0,currentSuccessRate:0,provenanceTier:d,meetsProvenanceTier:!1};let r=t.qualityScore,a=r>=this.config.promotionRewardThreshold,s=t.usageCount>=this.config.promotionMinOccurrences,o=t.successRate>=this.config.promotionMinSuccessRate,c=this.getProvenanceTier(e),i=m(c,{allowJudgeTier:this.config.allowJudgeTierPromotion}),u=this.config.promotionActivityWindowDays*24*60*60*1e3,l=t.lastUsedAt?.getTime()??t.createdAt.getTime(),h=Date.now()-l<u;return{shouldPromote:t.tier==="short-term"&&i&&a&&s&&o&&h,meetsRewardThreshold:a,meetsOccurrenceThreshold:s,meetsSuccessRateThreshold:o,meetsActivityWindow:h,provenanceTier:c,meetsProvenanceTier:i,currentReward:r,currentOccurrences:t.usageCount,currentSuccessRate:t.successRate}}promotePattern(e){let t=this.checkPromotion(e);if(!t.shouldPromote)return!1;let r={provenanceTier:t.provenanceTier,allowJudgeTier:this.config.allowJudgeTierPromotion,reward:t.currentReward,rewardThreshold:this.config.promotionRewardThreshold,occurrences:t.currentOccurrences,occurrenceThreshold:this.config.promotionMinOccurrences,successRate:t.currentSuccessRate,successRateThreshold:this.config.promotionMinSuccessRate,withinActivityWindow:t.meetsActivityWindow},a=y("pattern-promote/v1",r),s={ruleVersion:"pattern-promote/v1",ruleFingerprint:_("pattern-promote/v1"),sealedHash:b(r),sealed:r,recordedVerdict:a.promote?"promote":"reject"},o=F(s);return!o.valid||!a.promote?(console.warn(`[PatternLifecycle] Refusing to promote ${e}: ${a.reason} (${o.reason})`),!1):(this.db.prepare(`
50
- UPDATE qe_patterns
51
- SET tier = 'long-term',
52
- promotion_date = datetime('now'),
53
- confidence = MIN(1.0, confidence + 0.1),
54
- updated_at = datetime('now')
55
- WHERE id = ?
56
- `).run(e),console.log(`[PatternLifecycle] Promoted pattern ${e} to long-term`),!0)}promoteEligiblePatterns(){let e=this.db.prepare(`
57
- SELECT id FROM qe_patterns
58
- WHERE tier = 'short-term' AND deprecated_at IS NULL
59
- `).all(),t=0;for(let{id:r}of e)this.promotePattern(r)&&t++;return{promoted:t,checked:e.length}}runPromotionSweep(){return this.promoteEligiblePatterns()}checkDeprecation(e){let t=this.getPattern(e);if(!t)return{shouldDeprecate:!1,reason:null};if(t.deprecated_at)return{shouldDeprecate:!1,reason:null};let r=t.consecutive_failures||0;if(r>=this.config.deprecationFailureThreshold)return{shouldDeprecate:!0,reason:"failures",consecutiveFailures:r};let a=t.lastUsedAt instanceof Date?t.lastUsedAt.getTime():new Date(t.lastUsedAt).getTime(),s=(Date.now()-a)/(1e3*60*60*24),o=te(t.successRate,t.usageCount),c=this.config.staleDaysThreshold*(1+o*ee);if(s>=c)return{shouldDeprecate:!0,reason:"stale",daysSinceLastUse:s};if(t.confidence<this.config.minActiveConfidence)return{shouldDeprecate:!0,reason:"low_confidence",currentConfidence:t.confidence};let i=t.createdAt instanceof Date?t.createdAt.getTime():new Date(t.createdAt).getTime(),u=(Date.now()-i)/(1e3*60*60*24);return u>=this.config.maxAgeForActivePatterns&&t.usageCount<5?{shouldDeprecate:!0,reason:"age",ageInDays:u}:{shouldDeprecate:!1,reason:null}}deprecatePattern(e,t){let r=this.checkDeprecation(e);if(!r.shouldDeprecate&&!t)return!1;let a=t||r.reason||"manual";this.db.prepare(`
60
- UPDATE qe_patterns
61
- SET deprecated_at = datetime('now'),
62
- updated_at = datetime('now')
63
- WHERE id = ?
64
- `).run(e);let s=this.getPattern(e);if(s){let o={deprecation_reason:a,deprecated_at:new Date().toISOString(),final_confidence:s.confidence,final_success_rate:s.successRate,total_usage:s.usageCount};this.db.prepare(`
65
- UPDATE qe_patterns
66
- SET context_json = json_patch(COALESCE(context_json, '{}'), ?)
67
- WHERE id = ?
68
- `).run(JSON.stringify({deprecation_metadata:o}),e)}return console.log(`[PatternLifecycle] Deprecated pattern ${e}: ${a}`),!0}deprecateStalePatterns(){let e=this.db.prepare(`
69
- SELECT id FROM qe_patterns
70
- WHERE deprecated_at IS NULL
71
- `).all(),t=0;for(let{id:r}of e){let a=this.checkDeprecation(r);a.shouldDeprecate&&(this.deprecatePattern(r,a.reason||void 0),t++)}return{deprecated:t,checked:e.length}}applyConfidenceDecay(e=1){let t=this.config.confidenceDecayRate*e,r=Date.now()-e*24*60*60*1e3,a=this.db.prepare(`
72
- UPDATE qe_patterns
73
- SET confidence = MAX(?, confidence * (1 - ? * (1 - ? *
74
- (CASE WHEN usage_count >= ?
75
- THEN MIN(MAX(COALESCE(success_rate, 0.0), 0.0), 1.0)
76
- ELSE 0.0 END)))),
77
- updated_at = datetime('now')
78
- WHERE deprecated_at IS NULL
79
- AND datetime(COALESCE(last_used_at, created_at)) < datetime(?, 'unixepoch')
80
- `).run(this.config.minActiveConfidence,t,Z,H,r/1e3);return{updated:a.changes,decayed:a.changes}}recordUsage(e,t){t?this.db.prepare(`
81
- UPDATE qe_patterns
82
- SET usage_count = usage_count + 1,
83
- successful_uses = successful_uses + 1,
84
- consecutive_failures = 0,
85
- confidence = MIN(1.0, confidence + 0.02),
86
- success_rate = CAST(successful_uses + 1 AS REAL) / CAST(usage_count + 1 AS REAL),
87
- last_used_at = datetime('now'),
88
- updated_at = datetime('now')
89
- WHERE id = ?
90
- `).run(e):this.db.prepare(`
91
- UPDATE qe_patterns
92
- SET usage_count = usage_count + 1,
93
- consecutive_failures = consecutive_failures + 1,
94
- confidence = MAX(0.1, confidence - 0.05),
95
- success_rate = CAST(successful_uses AS REAL) / CAST(usage_count + 1 AS REAL),
96
- last_used_at = datetime('now'),
97
- updated_at = datetime('now')
98
- WHERE id = ?
99
- `).run(e),this.db.prepare(`
100
- UPDATE qe_patterns
101
- SET quality_score = confidence * 0.3 + (MIN(usage_count, 100) / 100.0) * 0.2 + success_rate * 0.5
102
- WHERE id = ?
103
- `).run(e)}recordAsymmetricOutcome(e,t,r){let a=this.getPattern(e);if(!a)return;let s=a.confidence,o=this.asymmetricEngine.computeConfidenceUpdate(s,t?"success":"failure",r);this.db.prepare(`
104
- UPDATE qe_patterns
105
- SET confidence = ?,
106
- usage_count = usage_count + 1,
107
- successful_uses = CASE WHEN ? THEN successful_uses + 1 ELSE successful_uses END,
108
- consecutive_failures = CASE WHEN ? THEN 0 ELSE consecutive_failures + 1 END,
109
- success_rate = CAST(CASE WHEN ? THEN successful_uses + 1 ELSE successful_uses END AS REAL) / CAST(usage_count + 1 AS REAL),
110
- last_used_at = datetime('now'),
111
- updated_at = datetime('now')
112
- WHERE id = ?
113
- `).run(o,t?1:0,t?1:0,t?1:0,e),this.asymmetricEngine.shouldQuarantine(o,r).shouldQuarantine&&this.quarantinePattern(e)}quarantinePattern(e){if(this.db.prepare(`
114
- UPDATE qe_patterns
115
- SET deprecated_at = datetime('now'),
116
- updated_at = datetime('now')
117
- WHERE id = ? AND deprecated_at IS NULL
118
- `).run(e).changes>0){console.log(`[PatternLifecycle] Quarantined pattern ${e} (asymmetric confidence drop)`);try{this._witnessChain?.append("PATTERN_QUARANTINE",{patternId:e},"pattern-lifecycle")}catch{}return!0}return!1}checkRehabilitation(e,t){return this.asymmetricEngine.checkRehabilitation(t).canRehabilitate}rehabilitatePattern(e){return this.db.prepare(`
119
- UPDATE qe_patterns
120
- SET deprecated_at = NULL,
121
- consecutive_failures = 0,
122
- confidence = 0.5,
123
- updated_at = datetime('now')
124
- WHERE id = ?
125
- `).run(e).changes>0?(console.log(`[PatternLifecycle] Rehabilitated pattern ${e} (10+ consecutive successes)`),!0):!1}getAsymmetricEngine(){return this.asymmetricEngine}compressPatternEmbedding(e){if(!f()||!this._compressionService)return null;let t=this.getPattern(e);if(!t||!t.embedding||t.embedding.length===0)return null;let r=t.lastUsedAt??t.createdAt,a=this._compressionService.classifyTier(r),s=new Float32Array(t.embedding),o=this._compressionService.compress(s,a);return p.debug("Compressed pattern embedding",{patternId:e,tier:a,ratio:(o.originalByteSize/o.compressedByteSize).toFixed(1)}),o}decompressPatternEmbedding(e){return this._compressionService?this._compressionService.decompress(e):null}compressAllPatternEmbeddings(){if(!f()||!this._compressionService)return 0;let e=this.db.prepare(`
126
- SELECT id FROM qe_patterns
127
- WHERE deprecated_at IS NULL
128
- `).all(),t=0;for(let{id:r}of e)this.compressPatternEmbedding(r)&&t++;return p.info("Bulk pattern embedding compression complete",{total:e.length,compressed:t}),t}getStats(){let e=this.db.prepare(`
129
- SELECT
130
- COUNT(*) as total,
131
- SUM(CASE WHEN deprecated_at IS NULL THEN 1 ELSE 0 END) as active,
132
- SUM(CASE WHEN deprecated_at IS NOT NULL THEN 1 ELSE 0 END) as deprecated,
133
- SUM(CASE WHEN tier = 'long-term' AND deprecated_at IS NULL THEN 1 ELSE 0 END) as promoted,
134
- SUM(CASE WHEN tier = 'short-term' AND deprecated_at IS NULL THEN 1 ELSE 0 END) as short_term,
135
- SUM(CASE WHEN tier = 'long-term' THEN 1 ELSE 0 END) as long_term,
136
- AVG(CASE WHEN deprecated_at IS NULL THEN confidence ELSE NULL END) as avg_confidence,
137
- AVG(CASE WHEN deprecated_at IS NULL THEN success_rate ELSE NULL END) as avg_success_rate
138
- FROM qe_patterns
139
- `).get(),t=this.db.prepare(`
140
- SELECT COUNT(*) as count
141
- FROM qe_patterns
142
- WHERE deprecated_at IS NULL
143
- AND (
144
- consecutive_failures >= ?
145
- OR confidence < ?
146
- OR (julianday('now') - julianday(COALESCE(last_used_at, created_at))) >= ?
147
- )
148
- `).get(this.config.deprecationFailureThreshold-1,this.config.minActiveConfidence+.1,this.config.staleDaysThreshold-7);return{totalPatterns:e.total||0,activePatterns:e.active||0,deprecatedPatterns:e.deprecated||0,promotedPatterns:e.promoted||0,shortTermPatterns:e.short_term||0,longTermPatterns:e.long_term||0,avgConfidence:e.avg_confidence||0,avgSuccessRate:e.avg_success_rate||0,patternsNearDeprecation:t.count||0}}getPattern(e){let t=this.db.prepare(`
149
- SELECT * FROM qe_patterns WHERE id = ?
150
- `).get(e);return t?this.rowToPattern(t):null}rowToPattern(e){return{id:e.id,patternType:e.pattern_type,qeDomain:e.qe_domain,domain:e.domain,name:e.name,description:e.description||"",confidence:e.confidence,usageCount:e.usage_count,successRate:e.success_rate,qualityScore:e.quality_score,tier:e.tier,template:E(e.template_json||"{}"),context:E(e.context_json||"{}"),createdAt:new Date(e.created_at),lastUsedAt:e.last_used_at?new Date(e.last_used_at):new Date(e.created_at),successfulUses:e.successful_uses,reusable:e.reusable===1,reuseCount:e.reuse_count||0,averageTokenSavings:e.average_token_savings||0,deprecated_at:e.deprecated_at??null,consecutive_failures:e.consecutive_failures??0}}};function be(n,e){return new R(n,e)}j();import*as g from"fs";import*as A from"path";var ne={"pattern-learned":"\u{1F9E0}","pattern-promoted":"\u2B06\uFE0F","pattern-quarantined":"\u{1F512}","experience-captured":"\u{1F4F8}","search-performed":"\u{1F50D}","reward-assigned":"\u{1F3AF}"},q=class{config;buffer=[];flushTimer=null;constructor(e){this.config={logDir:e?.logDir??S("logs"),enabled:e?.enabled??!0,maxEntriesPerDay:e?.maxEntriesPerDay??500}}log(e){this.config.enabled&&(this.buffer.push(e),this.buffer.length>=10&&this.flush())}flush(){if(this.buffer.length===0)return;let e=new Date().toISOString().split("T")[0],t=A.join(this.config.logDir,`${e}.md`);try{g.mkdirSync(this.config.logDir,{recursive:!0});let r=this.buffer.splice(0,this.buffer.length),a=[];g.existsSync(t)||(a.push(`# AQE Daily Log \u2014 ${e}
151
- `),a.push("| Time | Event | Summary |"),a.push("|------|-------|---------|"));for(let s of r){let o=s.timestamp.toISOString().split("T")[1]?.slice(0,8)??"00:00:00",c=ne[s.type]??"\u{1F4DD}",i=s.summary.replace(/\\/g,"\\\\").replace(/\|/g,"\\|").replace(/\n/g," ");a.push(`| ${o} | ${c} ${s.type} | ${i} |`)}g.appendFileSync(t,a.join(`
152
- `)+`
153
- `)}catch(r){console.debug("[DailyLog] Write failed:",r)}}getTodayLogPath(){let e=new Date().toISOString().split("T")[0];return A.join(this.config.logDir,`${e}.md`)}dispose(){this.flush(),this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null)}};export{be as a,q as b};