agentic-qe 3.10.0 → 3.10.2

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 (397) hide show
  1. package/.claude/hooks/README.txt +17 -0
  2. package/.claude/hooks/aqe-hook.cjs +98 -0
  3. package/.claude/hooks/cross-phase-memory.yaml +296 -0
  4. package/.claude/hooks/post-task-sync.sh +113 -0
  5. package/.claude/hooks/v3-domain-workers.json +121 -0
  6. package/.claude/skills/skills-manifest.json +1 -1
  7. package/CHANGELOG.md +148 -0
  8. package/README.md +35 -8
  9. package/dist/cli/bundle.js +5 -5
  10. package/dist/cli/chunks/adapter-CR6J5C76.js +2 -0
  11. package/dist/cli/chunks/{agent-booster-wasm-5UDM2PWG.js → agent-booster-wasm-DHSIPFTH.js} +2 -2
  12. package/dist/cli/chunks/{agent-handler-JSYER5YC.js → agent-handler-FPQVHGGT.js} +2 -2
  13. package/dist/cli/chunks/{agent-memory-branch-T2SAHI4F.js → agent-memory-branch-OLOF5ZHV.js} +2 -2
  14. package/dist/cli/chunks/aqe-learning-engine-2MNTHMB6.js +2 -0
  15. package/dist/cli/chunks/{audit-HIBRVGXG.js → audit-ALRYPHGP.js} +2 -2
  16. package/dist/cli/chunks/base-AOQNGMTL.js +2 -0
  17. package/dist/cli/chunks/{hnswlib-node-TA4DZV62.js → better-sqlite3-5BT5FO64.js} +2 -2
  18. package/dist/cli/chunks/{brain-handler-N6AWIMXG.js → brain-handler-ROZUHCOT.js} +3 -3
  19. package/dist/cli/chunks/{branch-enumerator-VYQGBVEJ.js → branch-enumerator-VK7G4NKJ.js} +2 -2
  20. package/dist/cli/chunks/{browser-2X4WKZPT.js → browser-Q2S75M2F.js} +2 -2
  21. package/dist/cli/chunks/browser-workflow-UJ4A2ZXO.js +2 -0
  22. package/dist/cli/chunks/{chunk-BQX5QDU5.js → chunk-2244IFZA.js} +1 -1
  23. package/dist/cli/chunks/{chunk-S33246T4.js → chunk-22D6VBPD.js} +1 -1
  24. package/dist/cli/chunks/{chunk-UGX4EHT5.js → chunk-24LUQICS.js} +2 -2
  25. package/dist/cli/chunks/{chunk-6HCHW5TS.js → chunk-2EDWGHDA.js} +2 -2
  26. package/dist/cli/chunks/{chunk-4WYGUTSF.js → chunk-2JDLQWSV.js} +2 -2
  27. package/dist/cli/chunks/{chunk-3QULDB7K.js → chunk-2OH3ALYB.js} +1 -1
  28. package/dist/cli/chunks/chunk-3RHHKYUR.js +2 -0
  29. package/dist/cli/chunks/{chunk-Z6JLPPAY.js → chunk-3Z4FHA2E.js} +1 -1
  30. package/dist/cli/chunks/{chunk-ZYZWBNKT.js → chunk-4BXGVM2C.js} +1 -1
  31. package/dist/cli/chunks/{chunk-6F3WJOU2.js → chunk-4F3ZTXHP.js} +2 -2
  32. package/dist/cli/chunks/{chunk-CU4IUJ2K.js → chunk-4GTDW2XL.js} +2 -2
  33. package/dist/cli/chunks/{chunk-4UUDFWOP.js → chunk-5HB54RUS.js} +2 -2
  34. package/dist/cli/chunks/{chunk-YHNEBCYQ.js → chunk-5PL7WTCU.js} +2 -2
  35. package/dist/cli/chunks/{chunk-MF3XRML3.js → chunk-5PRFFHFV.js} +2 -2
  36. package/dist/cli/chunks/{chunk-TEJPHJMW.js → chunk-5QHSLWLP.js} +2 -2
  37. package/dist/cli/chunks/{chunk-ZFBMBCKN.js → chunk-5WJ3FWL4.js} +2 -2
  38. package/dist/cli/chunks/{chunk-V5TRAL57.js → chunk-6KSCXPPL.js} +2 -2
  39. package/dist/cli/chunks/{chunk-P6XYFDXN.js → chunk-6NZHEM4V.js} +1 -1
  40. package/dist/cli/chunks/{chunk-HD6CZBZV.js → chunk-6ZFHIKQG.js} +2 -2
  41. package/dist/cli/chunks/{chunk-VEOQH4W6.js → chunk-7DKYCVJI.js} +2 -2
  42. package/dist/cli/chunks/{chunk-Y4I5JBOL.js → chunk-7IVQ6OVR.js} +2 -2
  43. package/dist/cli/chunks/chunk-7IZ2OPC2.js +2 -0
  44. package/dist/cli/chunks/{chunk-AFFYJSW2.js → chunk-7QRMARM7.js} +2 -2
  45. package/dist/cli/chunks/{chunk-L2AIES7X.js → chunk-7SJX4CFK.js} +1 -1
  46. package/dist/cli/chunks/{chunk-UCIJCRPB.js → chunk-7SWD3D6Y.js} +2 -2
  47. package/dist/cli/chunks/{chunk-FCSJ7GIZ.js → chunk-7V5UHLNY.js} +4 -4
  48. package/dist/cli/chunks/{chunk-5QJDH4Z5.js → chunk-7Z46RDDV.js} +2 -2
  49. package/dist/cli/chunks/{chunk-5RQT7EJP.js → chunk-A5RMQG4N.js} +3 -3
  50. package/dist/cli/chunks/{chunk-3BO7EKGO.js → chunk-AH7FXNFE.js} +3 -3
  51. package/dist/cli/chunks/chunk-AIUSZC6K.js +3 -0
  52. package/dist/cli/chunks/{chunk-MJBXQXSX.js → chunk-AOI67HA3.js} +1 -1
  53. package/dist/cli/chunks/{chunk-6H5MRVJS.js → chunk-AV7KYE5P.js} +7 -7
  54. package/dist/cli/chunks/{chunk-OGT45MZN.js → chunk-AWFIEGR3.js} +2 -2
  55. package/dist/cli/chunks/{chunk-J5RJYFRM.js → chunk-BQCSCAUC.js} +2 -2
  56. package/dist/cli/chunks/{chunk-OUJJ34JH.js → chunk-C2M74HCN.js} +1 -1
  57. package/dist/cli/chunks/{chunk-G2HA2O3R.js → chunk-CIRPP7RQ.js} +2 -2
  58. package/dist/cli/chunks/{chunk-LXHA55EB.js → chunk-CMACGG4Z.js} +1 -1
  59. package/dist/cli/chunks/{chunk-LRISVDVO.js → chunk-CTDLI2ON.js} +1 -1
  60. package/dist/cli/chunks/{chunk-DXV6NRG3.js → chunk-CV2SBMBW.js} +2 -2
  61. package/dist/cli/chunks/{chunk-WLLE54TA.js → chunk-DMQPO43S.js} +1 -1
  62. package/dist/cli/chunks/{chunk-I4E6CLC4.js → chunk-DRWGK3YO.js} +2 -2
  63. package/dist/cli/chunks/{chunk-Z2SCTEZD.js → chunk-DZZEHPSJ.js} +2 -2
  64. package/dist/cli/chunks/{chunk-DY7IRNE2.js → chunk-EA7ZSN3V.js} +1 -1
  65. package/dist/cli/chunks/{chunk-M4HDBRVJ.js → chunk-EQBEGDTG.js} +1 -1
  66. package/dist/cli/chunks/{chunk-HZPXOAFW.js → chunk-ETN5563K.js} +2 -2
  67. package/dist/cli/chunks/{chunk-OWMGD7FO.js → chunk-EVCOCGVJ.js} +3 -3
  68. package/dist/cli/chunks/{chunk-27ACATRH.js → chunk-FO43SQXP.js} +2 -2
  69. package/dist/cli/chunks/{chunk-DQJJS4AX.js → chunk-FO73PZVU.js} +2 -2
  70. package/dist/cli/chunks/{chunk-FEBXP74Y.js → chunk-FPAW77XV.js} +1 -1
  71. package/dist/cli/chunks/{chunk-KYLJERZ3.js → chunk-FY3CUPNN.js} +20 -17
  72. package/dist/cli/chunks/{chunk-LQ3TA22E.js → chunk-G5U6Q42D.js} +2 -2
  73. package/dist/cli/chunks/{chunk-JCKX2LEJ.js → chunk-HA63NBFK.js} +49 -49
  74. package/dist/cli/chunks/{chunk-NT4PI5HI.js → chunk-HHCYSAH3.js} +2 -2
  75. package/dist/cli/chunks/{chunk-GPKZ4MMH.js → chunk-HJME6G5M.js} +1 -1
  76. package/dist/cli/chunks/{chunk-TR7BZLB6.js → chunk-HJORBNXW.js} +1 -1
  77. package/dist/cli/chunks/{chunk-BXCS55GB.js → chunk-HO37VP4O.js} +1 -1
  78. package/dist/cli/chunks/{chunk-FX4SYT6Y.js → chunk-I677W5BT.js} +3 -3
  79. package/dist/cli/chunks/chunk-IAZEDWRX.js +2 -0
  80. package/dist/cli/chunks/{chunk-5UOV7T36.js → chunk-IICTTDAA.js} +2 -2
  81. package/dist/cli/chunks/{chunk-BQT4J3BD.js → chunk-JF53LRBL.js} +2 -2
  82. package/dist/cli/chunks/{chunk-S4CNA6Z5.js → chunk-KB5L5TTF.js} +3 -3
  83. package/dist/cli/chunks/{chunk-UE3XXKLN.js → chunk-L7VIX22Y.js} +2 -2
  84. package/dist/cli/chunks/{chunk-C5QESAYA.js → chunk-LQTWPSYL.js} +1 -1
  85. package/dist/cli/chunks/{chunk-2GL4GH52.js → chunk-LZCBSFAU.js} +4 -4
  86. package/dist/cli/chunks/{chunk-LDMG4372.js → chunk-MCOFJHSJ.js} +2 -2
  87. package/dist/cli/chunks/{chunk-ZCNVFULO.js → chunk-MCZHKXB4.js} +2 -2
  88. package/dist/cli/chunks/{chunk-VTIXFHZR.js → chunk-MEY43PIQ.js} +2 -2
  89. package/dist/cli/chunks/{chunk-PNDO4W4L.js → chunk-MMIQ5DMA.js} +2 -2
  90. package/dist/cli/chunks/{chunk-NWHSEXHA.js → chunk-MNUTRAUV.js} +1 -1
  91. package/dist/cli/chunks/{chunk-XFUU2RCA.js → chunk-MNV3E5KY.js} +2 -2
  92. package/dist/cli/chunks/{chunk-WVCIZIKH.js → chunk-MYWQTCS4.js} +1 -1
  93. package/dist/cli/chunks/{chunk-T7DLX3LS.js → chunk-NZO4WUSO.js} +3 -3
  94. package/dist/cli/chunks/{chunk-RF6QKV7M.js → chunk-OIEQF7PG.js} +2 -2
  95. package/dist/cli/chunks/{chunk-NLCUQMUR.js → chunk-OIRZJCZY.js} +2 -2
  96. package/dist/cli/chunks/{chunk-KOSKGZK4.js → chunk-ON4D4TJ4.js} +2 -2
  97. package/dist/cli/chunks/chunk-OPFN5LFT.js +95 -0
  98. package/dist/cli/chunks/{chunk-55JPAF56.js → chunk-ORF2UKQH.js} +1 -1
  99. package/dist/cli/chunks/{chunk-M73IL7FA.js → chunk-OWQ6HEYI.js} +2 -2
  100. package/dist/cli/chunks/{chunk-O3NAUNFC.js → chunk-OXCEUR5F.js} +2 -2
  101. package/dist/cli/chunks/{chunk-BTIVIWIG.js → chunk-PEK6NGVJ.js} +1 -1
  102. package/dist/cli/chunks/{chunk-ALCQRJDY.js → chunk-PIZYRPMT.js} +2 -2
  103. package/dist/cli/chunks/{chunk-L3IFZ4IX.js → chunk-PXTDEO65.js} +2 -2
  104. package/dist/cli/chunks/{chunk-3U77XX6J.js → chunk-PYIHZXCI.js} +12 -12
  105. package/dist/cli/chunks/{chunk-FQ5FT7IE.js → chunk-QBRHKTFT.js} +1 -1
  106. package/dist/cli/chunks/{chunk-I4T4JPR2.js → chunk-QEPFXY6G.js} +1 -1
  107. package/dist/cli/chunks/{chunk-X4U5NYB6.js → chunk-QJ2EHLJ2.js} +1 -1
  108. package/dist/cli/chunks/{chunk-JKVNZASH.js → chunk-QQNCSEZG.js} +2 -2
  109. package/dist/cli/chunks/{chunk-URVDWF2Y.js → chunk-QSE67XJO.js} +2 -2
  110. package/dist/cli/chunks/{chunk-RARSTEUO.js → chunk-R2O6OKT2.js} +1 -1
  111. package/dist/cli/chunks/{chunk-RGONSQ44.js → chunk-RLXTBL3H.js} +210 -210
  112. package/dist/cli/chunks/{chunk-RH3PHCJT.js → chunk-RNREAOY4.js} +2 -2
  113. package/dist/cli/chunks/{chunk-2POXDKUB.js → chunk-S3OZ7XSY.js} +1 -1
  114. package/dist/cli/chunks/{provider-manager-HV55NIIO.js → chunk-S3ZO7JXS.js} +13 -13
  115. package/dist/cli/chunks/{chunk-QWBO76AU.js → chunk-SJH3HYNC.js} +2 -2
  116. package/dist/cli/chunks/{chunk-WC6KZDPM.js → chunk-STEGWLH5.js} +2 -2
  117. package/dist/cli/chunks/{chunk-KCHFF4IE.js → chunk-SVYTN2GT.js} +2 -2
  118. package/dist/cli/chunks/{chunk-OKGK7DBT.js → chunk-SW4OKUTC.js} +2 -2
  119. package/dist/cli/chunks/{chunk-3OSCWD7Z.js → chunk-THRTUW4Z.js} +1 -1
  120. package/dist/cli/chunks/{chunk-U56TIYGP.js → chunk-TJKDATEU.js} +2 -2
  121. package/dist/cli/chunks/{chunk-4NQ6KANC.js → chunk-U3EUH6LX.js} +2 -2
  122. package/dist/cli/chunks/{chunk-7Y54QZKF.js → chunk-UUFOHMUG.js} +2 -2
  123. package/dist/cli/chunks/{chunk-W6U7SIIK.js → chunk-UVU7XLJY.js} +3 -3
  124. package/dist/cli/chunks/chunk-UWXH2UQK.js +2 -0
  125. package/dist/cli/chunks/{chunk-YYDHTBHE.js → chunk-UYYBPWU3.js} +1 -1
  126. package/dist/cli/chunks/{chunk-LYVFC7C7.js → chunk-VSUTI4G6.js} +2 -2
  127. package/dist/cli/chunks/{chunk-SGONA5GS.js → chunk-WDMPJ2M2.js} +2 -2
  128. package/dist/cli/chunks/{chunk-66GIKUI2.js → chunk-WNR2KAUH.js} +2 -2
  129. package/dist/cli/chunks/{chunk-M3M7HXDH.js → chunk-WSVUSIAZ.js} +2 -2
  130. package/dist/cli/chunks/{chunk-SCYF5CQA.js → chunk-WZJUMJ2S.js} +1 -1
  131. package/dist/cli/chunks/{chunk-WG6I7YF3.js → chunk-X2VAOIUY.js} +1 -1
  132. package/dist/cli/chunks/{chunk-7ZIRDBXH.js → chunk-XDSA7YUQ.js} +1 -1
  133. package/dist/cli/chunks/{chunk-HIWBW4IQ.js → chunk-XDU624HU.js} +1 -1
  134. package/dist/cli/chunks/{chunk-JUICZG3T.js → chunk-XGBAHAGC.js} +2 -2
  135. package/dist/cli/chunks/{chunk-DQLEZBWV.js → chunk-XMJTTF5N.js} +2 -2
  136. package/dist/cli/chunks/{chunk-KNL3QWVA.js → chunk-XPCNUX2U.js} +2 -2
  137. package/dist/cli/chunks/{chunk-VTO5O7DA.js → chunk-XRJECWZE.js} +1 -1
  138. package/dist/cli/chunks/{chunk-HD5NQDOL.js → chunk-XTCUN36Z.js} +2 -2
  139. package/dist/cli/chunks/{chunk-KDFW7MVM.js → chunk-Y63MBMOV.js} +2 -2
  140. package/dist/cli/chunks/{chunk-L4N6PTIC.js → chunk-YACT5WFC.js} +2 -2
  141. package/dist/cli/chunks/{chunk-QU54GUEA.js → chunk-YI6GNRQM.js} +2 -2
  142. package/dist/cli/chunks/chunk-YNNOY3XN.js +62 -0
  143. package/dist/cli/chunks/{chunk-GXCD7GNH.js → chunk-YWZHMXTO.js} +2 -2
  144. package/dist/cli/chunks/{chunk-XFMSHTXG.js → chunk-ZDHMZPSL.js} +1 -1
  145. package/dist/cli/chunks/{chunk-F363JJUI.js → chunk-ZGNZJJFF.js} +1 -1
  146. package/dist/cli/chunks/{chunk-UCXQQCIP.js → chunk-ZK2BH23O.js} +2 -2
  147. package/dist/cli/chunks/{chunk-IQNR662U.js → chunk-ZQUXNG5X.js} +2 -2
  148. package/dist/cli/chunks/{chunk-IBXNBLGM.js → chunk-ZXTO4C7R.js} +2 -2
  149. package/dist/cli/chunks/{ci-7TR4NQ5I.js → ci-PYCRCL7G.js} +2 -2
  150. package/dist/cli/chunks/{ci-output-SLTICF3O.js → ci-output-EKQQFE2D.js} +2 -2
  151. package/dist/cli/chunks/{circuit-breaker-7GVVTMBY.js → circuit-breaker-RH3Q2MJO.js} +2 -2
  152. package/dist/cli/chunks/{claude-flow-setup-TYCWYEMM.js → claude-flow-setup-DUDXB4VV.js} +2 -2
  153. package/dist/cli/chunks/client-RDPWGOSA.js +2 -0
  154. package/dist/cli/chunks/{cline-installer-ESIAJOLK.js → cline-installer-3Q4WIWUG.js} +2 -2
  155. package/dist/cli/chunks/{code-I42JGOVI.js → code-E4Q6DGOO.js} +2 -2
  156. package/dist/cli/chunks/{code-index-extractor-2CCXPCQW.js → code-index-extractor-2PCISUOW.js} +2 -2
  157. package/dist/cli/chunks/{codex-installer-HEZRDNUT.js → codex-installer-YNNNOLJ6.js} +2 -2
  158. package/dist/cli/chunks/{completions-44HLIZGI.js → completions-2F7TUFBD.js} +2 -2
  159. package/dist/cli/chunks/{complexity-analyzer-SOCSFDVO.js → complexity-analyzer-2B6MHO7W.js} +2 -2
  160. package/dist/cli/chunks/{continuedev-installer-Q7O4HLIM.js → continuedev-installer-ENOKRU5M.js} +2 -2
  161. package/dist/cli/chunks/{copilot-installer-GIWCVLCS.js → copilot-installer-6YD2KM5F.js} +2 -2
  162. package/dist/cli/chunks/{cost-tracker-G7BONKEV.js → cost-tracker-FCH4QOEA.js} +2 -2
  163. package/dist/cli/chunks/{coverage-5TWVP7KY.js → coverage-JTOXZE3T.js} +3 -3
  164. package/dist/cli/chunks/cross-domain-router-4K5ZVZEZ.js +2 -0
  165. package/dist/cli/chunks/{cursor-installer-43EQZSB5.js → cursor-installer-QZFBUGLQ.js} +2 -2
  166. package/dist/cli/chunks/{daemon-ZXHFRDKG.js → daemon-K4QFB5FQ.js} +3 -3
  167. package/dist/cli/chunks/{daemon-QQZE4BU2.js → daemon-M422U3ZA.js} +4 -4
  168. package/dist/cli/chunks/{dag-attention-scheduler-GOZAVAZQ.js → dag-attention-scheduler-BXAAW33V.js} +2 -2
  169. package/dist/cli/chunks/{detect-X777GVJ4.js → detect-UGSWIOAD.js} +2 -2
  170. package/dist/cli/chunks/{dist-node-EZZK46TB.js → dist-node-FN3HX3OK.js} +2 -2
  171. package/dist/cli/chunks/{domain-handler-ZT32DKYY.js → domain-handler-7PP7VYA7.js} +2 -2
  172. package/dist/cli/chunks/{domain-transfer-LHQVSLJW.js → domain-transfer-XZM44W7I.js} +2 -2
  173. package/dist/cli/chunks/dream-RPNWM7VS.js +2 -0
  174. package/dist/cli/chunks/{embed-and-insert-pattern-XFYPPWG7.js → embed-and-insert-pattern-JZVERJ5L.js} +2 -2
  175. package/dist/cli/chunks/{eval-V4NYJZUZ.js → eval-466NFF2D.js} +2 -2
  176. package/dist/cli/chunks/{experience-capture-middleware-HXX2W4GL.js → experience-capture-middleware-I7IQCC7V.js} +3 -3
  177. package/dist/cli/chunks/{fast-paths-RBPWQSFJ.js → fast-paths-34OICNZA.js} +2 -2
  178. package/dist/cli/chunks/{feature-flags-NX5EXRO3.js → feature-flags-6UBIVTAD.js} +2 -2
  179. package/dist/cli/chunks/{feature-flags-INJJZBMN.js → feature-flags-X5WBBWSO.js} +2 -2
  180. package/dist/cli/chunks/{file-discovery-SNFSG6NK.js → file-discovery-NLMDBWXX.js} +2 -2
  181. package/dist/cli/chunks/{fleet-6SDN4UWE.js → fleet-W7CYCHDI.js} +3 -3
  182. package/dist/cli/chunks/{gnn-wrapper-2JDRTDDK.js → gnn-wrapper-K4VTAG5X.js} +2 -2
  183. package/dist/cli/chunks/{heartbeat-handler-QLK6E7KA.js → heartbeat-handler-ZGKF2Z6T.js} +4 -4
  184. package/dist/cli/chunks/heartbeat-scheduler-JBCXMMZO.js +2 -0
  185. package/dist/cli/chunks/hnsw-adapter-3SC2HZIG.js +2 -0
  186. package/dist/cli/chunks/hnsw-index-FQORAR6K.js +2 -0
  187. package/dist/cli/chunks/{hnsw-legacy-bridge-Q2ZEZQKB.js → hnsw-legacy-bridge-ELDRLKK5.js} +2 -2
  188. package/dist/cli/chunks/{better-sqlite3-Y6GX6CGB.js → hnswlib-node-ZGSUMHDC.js} +2 -2
  189. package/dist/cli/chunks/{hooks-D4YENHO2.js → hooks-T4CBINAV.js} +13 -13
  190. package/dist/cli/chunks/hybrid-router-6CBFDXPR.js +2 -0
  191. package/dist/cli/chunks/{hypergraph-engine-G72U446M.js → hypergraph-engine-UWFW3XP5.js} +2 -2
  192. package/dist/cli/chunks/{hypergraph-handler-TRZ5FDRH.js → hypergraph-handler-PK2BI46K.js} +3 -3
  193. package/dist/cli/chunks/impact-analyzer-SOEFVZWG.js +2 -0
  194. package/dist/cli/chunks/{init-handler-3ZD4GCT4.js → init-handler-HNG6KJOU.js} +6 -6
  195. package/dist/cli/chunks/init-wizard-3E4IU5M4.js +2 -0
  196. package/dist/cli/chunks/kernel-GFZP4G5J.js +2 -0
  197. package/dist/cli/chunks/{kilocode-installer-AXSIW3XW.js → kilocode-installer-25V7FEJ4.js} +2 -2
  198. package/dist/cli/chunks/{kiro-installer-JQGIFWBK.js → kiro-installer-7RMTTCQB.js} +2 -2
  199. package/dist/cli/chunks/knowledge-graph-BKRKBU26.js +2 -0
  200. package/dist/cli/chunks/{learning-SPO7TGWX.js → learning-XQC2MG2R.js} +3 -3
  201. package/dist/cli/chunks/llm-router-6KTTONH4.js +36 -0
  202. package/dist/cli/chunks/llm-router-service-KE4IGZPP.js +2 -0
  203. package/dist/cli/chunks/{load-XIDDK64U.js → load-BV64P3AL.js} +2 -2
  204. package/dist/cli/chunks/load-test-VSYJV2AO.js +2 -0
  205. package/dist/cli/chunks/{mcp-3JXRGXO4.js → mcp-U5ZN77TA.js} +2 -2
  206. package/dist/cli/chunks/{memory-A66KRS2P.js → memory-WB5BNBK7.js} +5 -5
  207. package/dist/cli/chunks/memory-backend-B72RGHRF.js +2 -0
  208. package/dist/cli/chunks/memory-handlers-NWCH7AUO.js +2 -0
  209. package/dist/cli/chunks/{multi-model-executor-XCDGUVCE.js → multi-model-executor-3X3W3UTY.js} +2 -2
  210. package/dist/cli/chunks/{opencode-installer-GELXWLF2.js → opencode-installer-TTTMG7ZZ.js} +2 -2
  211. package/dist/cli/chunks/{orchestrator-CCS3K6NH.js → orchestrator-BLCGSHMZ.js} +18 -18
  212. package/dist/cli/chunks/{pipeline-Z5C72H5S.js → pipeline-DZPGMRG7.js} +2 -2
  213. package/dist/cli/chunks/{platform-4AK7XJ3Y.js → platform-EVMZAUNV.js} +2 -2
  214. package/dist/cli/chunks/{plugin-7RYBIZI7.js → plugin-OR55K4HT.js} +2 -2
  215. package/dist/cli/chunks/{prime-radiant-advanced-wasm-E5PARKRX.js → prime-radiant-advanced-wasm-4ODV27HD.js} +2 -2
  216. package/dist/cli/chunks/protocol-executor-V3F37FPO.js +2 -0
  217. package/dist/cli/chunks/{protocol-handler-R6QJQFNL.js → protocol-handler-ZOTI5PID.js} +2 -2
  218. package/dist/cli/chunks/{prove-7ESQ2YAL.js → prove-DIMBYJ7V.js} +2 -2
  219. package/dist/cli/chunks/provider-manager-2PN72TT6.js +2 -0
  220. package/dist/cli/chunks/qe-reasoning-bank-P665QNIR.js +2 -0
  221. package/dist/cli/chunks/{quality-4UE345QA.js → quality-7MX4VL6M.js} +2 -2
  222. package/dist/cli/chunks/queen-coordinator-XD4F7BGB.js +2 -0
  223. package/dist/cli/chunks/{real-embeddings-TYIVN3N5.js → real-embeddings-YPUHWRN2.js} +2 -2
  224. package/dist/cli/chunks/{roocode-installer-2KOANC47.js → roocode-installer-WG5AU4QM.js} +2 -2
  225. package/dist/cli/chunks/router-4SSNWDJC.js +2 -0
  226. package/dist/cli/chunks/routing-feedback-O2JSIBW6.js +2 -0
  227. package/dist/cli/chunks/{routing-handler-JFEYTN7T.js → routing-handler-LZB4MN2K.js} +2 -2
  228. package/dist/cli/chunks/{ruvector-commands-KSLSZRJX.js → ruvector-commands-YE4ADBMC.js} +2 -2
  229. package/dist/cli/chunks/{rvf-dual-writer-EPBL226J.js → rvf-dual-writer-QS5ATW4C.js} +2 -2
  230. package/dist/cli/chunks/{rvf-migration-adapter-25KSI6SF.js → rvf-migration-adapter-YIGKSBD3.js} +2 -2
  231. package/dist/cli/chunks/{rvf-migration-coordinator-2XBYHPZP.js → rvf-migration-coordinator-2NDCWP7F.js} +2 -2
  232. package/dist/cli/chunks/rvf-native-adapter-WIUHYXRB.js +2 -0
  233. package/dist/cli/chunks/safe-db-WL5Y7ZNS.js +2 -0
  234. package/dist/cli/chunks/schedule-U7QDGU5A.js +2 -0
  235. package/dist/cli/chunks/scheduler-LXKGQYXA.js +2 -0
  236. package/dist/cli/chunks/{security-4XWYKI4O.js → security-HT4SUT24.js} +3 -3
  237. package/dist/cli/chunks/{shared-rvf-adapter-WRZ3HGDQ.js → shared-rvf-adapter-4IZOJL33.js} +2 -2
  238. package/dist/cli/chunks/{shared-rvf-dual-writer-DX2N5STR.js → shared-rvf-dual-writer-ZKFO7CBY.js} +2 -2
  239. package/dist/cli/chunks/sqlite-persistence-4KFO3SEB.js +2 -0
  240. package/dist/cli/chunks/{status-handler-V75OSXMQ.js → status-handler-AMEMKBI4.js} +2 -2
  241. package/dist/cli/chunks/{structural-health-TLX3JHZ6.js → structural-health-RBADRLC3.js} +2 -2
  242. package/dist/cli/chunks/{sync-KGBEXUF7.js → sync-ARDDLQBS.js} +2 -2
  243. package/dist/cli/chunks/{sync-DXZFMVZQ.js → sync-PCB23M4K.js} +2 -2
  244. package/dist/cli/chunks/{task-handler-T3OJ6R7H.js → task-handler-J26FSCH5.js} +2 -2
  245. package/dist/cli/chunks/{task-handlers-NJYR54AS.js → task-handlers-AQRLR6BL.js} +3 -3
  246. package/dist/cli/chunks/{test-KMVDNNQA.js → test-YXWSIOSB.js} +4 -4
  247. package/dist/cli/chunks/{test-scheduling-R5EQ2XGV.js → test-scheduling-XY532GI4.js} +3 -3
  248. package/dist/cli/chunks/{token-bootstrap-PFKVV3RO.js → token-bootstrap-KL2QIQ36.js} +2 -2
  249. package/dist/cli/chunks/{token-usage-ZLOGA6LR.js → token-usage-2MJVE4DT.js} +2 -2
  250. package/dist/cli/chunks/{transformers-TNPSPQI3.js → transformers-QSNTOD2Z.js} +2 -2
  251. package/dist/cli/chunks/{tree-sitter-wasm-parser-A2EEB5BF.js → tree-sitter-wasm-parser-QJOKHOIW.js} +2 -2
  252. package/dist/cli/chunks/{types-DIXPI4NR.js → types-RNKRSYMO.js} +2 -2
  253. package/dist/cli/chunks/unified-memory-7AS4LIEF.js +2 -0
  254. package/dist/cli/chunks/unified-memory-hnsw-GREESNJX.js +2 -0
  255. package/dist/cli/chunks/unified-persistence-BPJOMZOA.js +2 -0
  256. package/dist/cli/chunks/{upgrade-LX5KP6VO.js → upgrade-EKJHIFWP.js} +2 -2
  257. package/dist/cli/chunks/{validate-3L6F7M36.js → validate-KS4T7LWC.js} +2 -2
  258. package/dist/cli/chunks/{validate-swarm-FD42ZKAQ.js → validate-swarm-SKKWRP2H.js} +2 -2
  259. package/dist/cli/chunks/{vibium-GSBSJR53.js → vibium-FLUQO4IF.js} +2 -2
  260. package/dist/cli/chunks/visual-security-BW662FHQ.js +2 -0
  261. package/dist/cli/chunks/{web-tree-sitter-TXHMO4BW.js → web-tree-sitter-UMC63DWD.js} +2 -2
  262. package/dist/cli/chunks/{windsurf-installer-3EUZ6RD3.js → windsurf-installer-V3FQGJIQ.js} +2 -2
  263. package/dist/cli/chunks/{witness-chain-ONAUEJ4M.js → witness-chain-GE74TLSO.js} +2 -2
  264. package/dist/cli/chunks/witness-chain-OXVDLNVT.js +2 -0
  265. package/dist/cli/chunks/{workflow-E7A6BV4C.js → workflow-4YZ2RPWA.js} +4 -4
  266. package/dist/cli/chunks/workflow-orchestrator-KKNR46XV.js +2 -0
  267. package/dist/cli/chunks/{wrappers-AHHAQJM3.js → wrappers-37NLMKPE.js} +2 -2
  268. package/dist/cli/commands/hooks-handlers/command-hooks.js +1 -1
  269. package/dist/cli/commands/hooks-handlers/routing-hooks.js +1 -1
  270. package/dist/cli/commands/hooks-handlers/task-hooks.js +1 -1
  271. package/dist/cli/commands/llm-router.js +83 -26
  272. package/dist/domains/chaos-resilience/coordinator.d.ts +2 -1
  273. package/dist/domains/chaos-resilience/coordinator.js +3 -2
  274. package/dist/domains/chaos-resilience/plugin.d.ts +4 -2
  275. package/dist/domains/chaos-resilience/plugin.js +8 -5
  276. package/dist/domains/code-intelligence/coordinator.d.ts +2 -1
  277. package/dist/domains/code-intelligence/coordinator.js +3 -2
  278. package/dist/domains/code-intelligence/plugin.d.ts +4 -2
  279. package/dist/domains/code-intelligence/plugin.js +8 -5
  280. package/dist/domains/contract-testing/coordinator.d.ts +2 -1
  281. package/dist/domains/contract-testing/coordinator.js +3 -2
  282. package/dist/domains/contract-testing/plugin.d.ts +4 -2
  283. package/dist/domains/contract-testing/plugin.js +8 -5
  284. package/dist/domains/coverage-analysis/coordinator.d.ts +2 -1
  285. package/dist/domains/coverage-analysis/coordinator.js +4 -3
  286. package/dist/domains/coverage-analysis/plugin.d.ts +3 -2
  287. package/dist/domains/coverage-analysis/plugin.js +4 -4
  288. package/dist/domains/defect-intelligence/coordinator.d.ts +2 -1
  289. package/dist/domains/defect-intelligence/coordinator.js +4 -3
  290. package/dist/domains/defect-intelligence/plugin.d.ts +4 -2
  291. package/dist/domains/defect-intelligence/plugin.js +9 -6
  292. package/dist/domains/learning-optimization/coordinator.d.ts +2 -1
  293. package/dist/domains/learning-optimization/coordinator.js +3 -2
  294. package/dist/domains/learning-optimization/plugin.d.ts +4 -2
  295. package/dist/domains/learning-optimization/plugin.js +8 -5
  296. package/dist/domains/quality-assessment/coordinator.d.ts +2 -1
  297. package/dist/domains/quality-assessment/coordinator.js +4 -3
  298. package/dist/domains/quality-assessment/plugin.d.ts +4 -2
  299. package/dist/domains/quality-assessment/plugin.js +10 -6
  300. package/dist/domains/requirements-validation/coordinator.d.ts +2 -1
  301. package/dist/domains/requirements-validation/coordinator.js +3 -2
  302. package/dist/domains/requirements-validation/plugin.d.ts +4 -2
  303. package/dist/domains/requirements-validation/plugin.js +8 -5
  304. package/dist/domains/security-compliance/coordinator.d.ts +2 -1
  305. package/dist/domains/security-compliance/coordinator.js +4 -2
  306. package/dist/domains/security-compliance/plugin.d.ts +4 -2
  307. package/dist/domains/security-compliance/plugin.js +11 -6
  308. package/dist/domains/test-execution/coordinator.d.ts +3 -2
  309. package/dist/domains/test-execution/coordinator.js +6 -5
  310. package/dist/domains/test-execution/plugin.d.ts +4 -2
  311. package/dist/domains/test-execution/plugin.js +6 -4
  312. package/dist/domains/test-generation/coordinator.d.ts +2 -1
  313. package/dist/domains/test-generation/coordinator.js +4 -3
  314. package/dist/domains/test-generation/plugin.d.ts +4 -2
  315. package/dist/domains/test-generation/plugin.js +12 -7
  316. package/dist/domains/visual-accessibility/coordinator.d.ts +2 -1
  317. package/dist/domains/visual-accessibility/coordinator.js +4 -3
  318. package/dist/domains/visual-accessibility/plugin.d.ts +4 -2
  319. package/dist/domains/visual-accessibility/plugin.js +9 -6
  320. package/dist/init/init-wizard-hooks.js +271 -271
  321. package/dist/init/phases/07-hooks.d.ts +7 -0
  322. package/dist/init/phases/07-hooks.js +132 -96
  323. package/dist/kernel/interfaces.d.ts +37 -0
  324. package/dist/kernel/kernel.d.ts +39 -0
  325. package/dist/kernel/kernel.js +157 -17
  326. package/dist/learning/agent-routing.d.ts +19 -0
  327. package/dist/learning/agent-routing.js +27 -1
  328. package/dist/learning/dream/dream-scheduler.d.ts +11 -36
  329. package/dist/learning/dream/dream-scheduler.js +44 -0
  330. package/dist/learning/experience-consolidation.d.ts +16 -0
  331. package/dist/learning/experience-consolidation.js +55 -11
  332. package/dist/learning/pattern-lifecycle.d.ts +21 -0
  333. package/dist/learning/pattern-lifecycle.js +70 -6
  334. package/dist/mcp/bundle.js +426 -401
  335. package/dist/mcp/protocol-server.js +13 -14
  336. package/dist/mcp/qe-tool-bridge.js +8 -1
  337. package/dist/mcp/tools/base.d.ts +56 -0
  338. package/dist/mcp/tools/base.js +104 -1
  339. package/dist/mcp/tools/chaos-resilience/inject.js +4 -2
  340. package/dist/mcp/tools/code-intelligence/analyze.js +5 -3
  341. package/dist/mcp/tools/contract-testing/validate.js +4 -2
  342. package/dist/mcp/tools/coverage-analysis/index.js +11 -5
  343. package/dist/mcp/tools/defect-intelligence/predict.js +5 -10
  344. package/dist/mcp/tools/learning-optimization/optimize.js +4 -2
  345. package/dist/mcp/tools/registry.js +8 -1
  346. package/dist/mcp/tools/test-generation/generate.js +10 -6
  347. package/dist/mcp/tools/visual-accessibility/index.js +7 -4
  348. package/dist/mcp/transport/stdio.d.ts +20 -0
  349. package/dist/mcp/transport/stdio.js +35 -2
  350. package/dist/shared/llm/llm-router-service.d.ts +77 -0
  351. package/dist/shared/llm/llm-router-service.js +166 -0
  352. package/dist/shared/llm/providers/gemini.js +5 -2
  353. package/dist/shared/llm/router/config-store.d.ts +89 -0
  354. package/dist/shared/llm/router/config-store.js +261 -0
  355. package/dist/shared/llm/router/hybrid-router.js +33 -11
  356. package/dist/shared/utils/rabitq.d.ts +133 -0
  357. package/dist/shared/utils/rabitq.js +201 -0
  358. package/package.json +8 -2
  359. package/dist/cli/chunks/adapter-WTE6UVGP.js +0 -2
  360. package/dist/cli/chunks/aqe-learning-engine-LCLEBU7D.js +0 -2
  361. package/dist/cli/chunks/base-73I73HBF.js +0 -2
  362. package/dist/cli/chunks/browser-workflow-2NSV5O6W.js +0 -2
  363. package/dist/cli/chunks/chunk-6MONUYQ5.js +0 -2
  364. package/dist/cli/chunks/chunk-QL3U5VSM.js +0 -62
  365. package/dist/cli/chunks/chunk-VMJXNTJT.js +0 -95
  366. package/dist/cli/chunks/chunk-X73CRYF4.js +0 -2
  367. package/dist/cli/chunks/client-7GB4WWUD.js +0 -2
  368. package/dist/cli/chunks/cross-domain-router-7HQ74TLE.js +0 -2
  369. package/dist/cli/chunks/dream-G5SEFHI4.js +0 -2
  370. package/dist/cli/chunks/heartbeat-scheduler-NG7BY3FR.js +0 -2
  371. package/dist/cli/chunks/hnsw-adapter-TDSLUI7K.js +0 -2
  372. package/dist/cli/chunks/hnsw-index-OWLQSOQH.js +0 -2
  373. package/dist/cli/chunks/hybrid-router-URU2XLBD.js +0 -2
  374. package/dist/cli/chunks/impact-analyzer-NMTN75KA.js +0 -2
  375. package/dist/cli/chunks/init-wizard-SHBFYGBV.js +0 -2
  376. package/dist/cli/chunks/kernel-7KVY2JGO.js +0 -2
  377. package/dist/cli/chunks/knowledge-graph-V4G5J5B7.js +0 -2
  378. package/dist/cli/chunks/llm-router-G6N2OKDA.js +0 -36
  379. package/dist/cli/chunks/load-test-N4RNPLG4.js +0 -2
  380. package/dist/cli/chunks/memory-backend-HPGJ5YDQ.js +0 -2
  381. package/dist/cli/chunks/memory-handlers-K33YVCVQ.js +0 -2
  382. package/dist/cli/chunks/protocol-executor-GNVWUJUP.js +0 -2
  383. package/dist/cli/chunks/qe-reasoning-bank-DDSBHO6D.js +0 -2
  384. package/dist/cli/chunks/queen-coordinator-BQJ5O63C.js +0 -2
  385. package/dist/cli/chunks/router-C2RKWB7J.js +0 -2
  386. package/dist/cli/chunks/routing-feedback-RHATTSJ6.js +0 -2
  387. package/dist/cli/chunks/rvf-native-adapter-QG4CXHLL.js +0 -2
  388. package/dist/cli/chunks/safe-db-A4KQ2IDB.js +0 -2
  389. package/dist/cli/chunks/schedule-O7MLASQT.js +0 -2
  390. package/dist/cli/chunks/scheduler-HT7RNYQ2.js +0 -2
  391. package/dist/cli/chunks/sqlite-persistence-4NNKJ6CQ.js +0 -2
  392. package/dist/cli/chunks/unified-memory-CMNJVHOJ.js +0 -2
  393. package/dist/cli/chunks/unified-memory-hnsw-JQLU2KI6.js +0 -2
  394. package/dist/cli/chunks/unified-persistence-I25TEDIU.js +0 -2
  395. package/dist/cli/chunks/visual-security-AJJIEV5V.js +0 -2
  396. package/dist/cli/chunks/witness-chain-762QQBTN.js +0 -2
  397. package/dist/cli/chunks/workflow-orchestrator-ZGPYISKY.js +0 -2
@@ -30,6 +30,51 @@ export const DEFAULT_LIFECYCLE_CONFIG = {
30
30
  asymmetricLearning: {},
31
31
  };
32
32
  // ============================================================================
33
+ // EWC++ catastrophic-forgetting protection (#510 item 6)
34
+ // ----------------------------------------------------------------------------
35
+ // Confidence decay and stale/age deprecation were uniform: a proven,
36
+ // high-success pattern was forgotten at the same rate as noise, so an influx
37
+ // of new low-value patterns could crowd out historically valuable ones.
38
+ // Inspired by Elastic Weight Consolidation, we protect HIGH-IMPORTANCE
39
+ // patterns from being clobbered, weighted by an importance proxy.
40
+ //
41
+ // Honest framing (as in ruflo's EWC adapter): this is NOT true Fisher
42
+ // information — there are no model gradients here. Importance is a heuristic:
43
+ // success_rate gated on enough usage to trust it (and recency is already
44
+ // implied because only unused patterns decay / go stale).
45
+ //
46
+ // Protection applies ONLY to stale/age/decay forgetting. A high-importance
47
+ // pattern that STARTS failing or drops below minActiveConfidence is still
48
+ // deprecated — we blend retention, we don't permanently shield dead weight.
49
+ // ============================================================================
50
+ /** Minimum usage_count before success_rate is trusted as an importance signal. */
51
+ export const EWC_MIN_USAGE_FOR_PROTECTION = 5;
52
+ /**
53
+ * Fraction of the base decay rate a fully-important pattern is shielded from.
54
+ * 0.9 => a success_rate=1.0 pattern decays at 10% of the base rate.
55
+ * Low-importance patterns (importance 0) decay EXACTLY as before (no regression).
56
+ */
57
+ export const EWC_DECAY_PROTECTION = 0.9;
58
+ /**
59
+ * Multiplier extending the stale window by importance.
60
+ * effectiveStaleDays = staleDaysThreshold * (1 + importance * EWC_STALE_PROTECTION_BONUS).
61
+ * 2 => a fully-important pattern survives 3x longer unused (e.g. 30d -> 90d)
62
+ * before stale-deprecation; importance-0 patterns are unchanged.
63
+ */
64
+ export const EWC_STALE_PROTECTION_BONUS = 2;
65
+ /**
66
+ * Importance proxy in [0,1] for EWC++ forgetting protection.
67
+ * Returns 0 (no protection) until a pattern has been used enough to trust its
68
+ * success rate, then equals the clamped success rate.
69
+ */
70
+ export function patternImportance(successRate, usageCount) {
71
+ if (usageCount < EWC_MIN_USAGE_FOR_PROTECTION)
72
+ return 0;
73
+ if (!Number.isFinite(successRate))
74
+ return 0;
75
+ return Math.min(Math.max(successRate, 0), 1);
76
+ }
77
+ // ============================================================================
33
78
  // Pattern Lifecycle Manager
34
79
  // ============================================================================
35
80
  /**
@@ -402,12 +447,16 @@ Pattern extracted from ${exp.count} successful experiences.`;
402
447
  consecutiveFailures,
403
448
  };
404
449
  }
405
- // Check staleness
450
+ // Check staleness (EWC++ #510 item 6: high-importance patterns get a
451
+ // longer grace period before stale-deprecation, so a proven pattern that
452
+ // simply went unused isn't forgotten like noise. importance=0 => unchanged.)
406
453
  const lastUsedTime = pattern.lastUsedAt instanceof Date
407
454
  ? pattern.lastUsedAt.getTime()
408
455
  : new Date(pattern.lastUsedAt).getTime();
409
456
  const daysSinceLastUse = (Date.now() - lastUsedTime) / (1000 * 60 * 60 * 24);
410
- if (daysSinceLastUse >= this.config.staleDaysThreshold) {
457
+ const importance = patternImportance(pattern.successRate, pattern.usageCount);
458
+ const effectiveStaleDays = this.config.staleDaysThreshold * (1 + importance * EWC_STALE_PROTECTION_BONUS);
459
+ if (daysSinceLastUse >= effectiveStaleDays) {
411
460
  return {
412
461
  shouldDeprecate: true,
413
462
  reason: 'stale',
@@ -496,16 +545,25 @@ Pattern extracted from ${exp.count} successful experiences.`;
496
545
  * Apply confidence decay to patterns that haven't been used recently
497
546
  */
498
547
  applyConfidenceDecay(daysSinceLastRun = 1) {
499
- const decayFactor = 1 - (this.config.confidenceDecayRate * daysSinceLastRun);
548
+ // EWC++ (#510 item 6): per-row importance-weighted decay. The base decay
549
+ // amount is shielded by `EWC_DECAY_PROTECTION * importance`, where
550
+ // importance = success_rate (clamped) once usage_count >= the trust
551
+ // threshold, else 0. A pattern with importance 0 decays EXACTLY as before
552
+ // (1 - baseDecayAmount); a fully-proven pattern decays up to 10x slower,
553
+ // so it isn't forgotten as fast as new low-value patterns.
554
+ const baseDecayAmount = this.config.confidenceDecayRate * daysSinceLastRun;
500
555
  // Get patterns that haven't been used in the decay period
501
556
  const cutoffTime = Date.now() - (daysSinceLastRun * 24 * 60 * 60 * 1000);
502
557
  const result = this.db.prepare(`
503
558
  UPDATE qe_patterns
504
- SET confidence = MAX(?, confidence * ?),
559
+ SET confidence = MAX(?, confidence * (1 - ? * (1 - ? *
560
+ (CASE WHEN usage_count >= ?
561
+ THEN MIN(MAX(COALESCE(success_rate, 0.0), 0.0), 1.0)
562
+ ELSE 0.0 END)))),
505
563
  updated_at = datetime('now')
506
564
  WHERE deprecated_at IS NULL
507
565
  AND (last_used_at IS NULL OR datetime(last_used_at) < datetime(?, 'unixepoch'))
508
- `).run(this.config.minActiveConfidence, decayFactor, cutoffTime / 1000);
566
+ `).run(this.config.minActiveConfidence, baseDecayAmount, EWC_DECAY_PROTECTION, EWC_MIN_USAGE_FOR_PROTECTION, cutoffTime / 1000);
509
567
  return {
510
568
  updated: result.changes,
511
569
  decayed: result.changes,
@@ -765,7 +823,7 @@ Pattern extracted from ${exp.count} successful experiences.`;
765
823
  * Convert database row to QEPattern
766
824
  */
767
825
  rowToPattern(row) {
768
- return {
826
+ const pattern = {
769
827
  id: row.id,
770
828
  patternType: row.pattern_type,
771
829
  qeDomain: row.qe_domain,
@@ -785,7 +843,13 @@ Pattern extracted from ${exp.count} successful experiences.`;
785
843
  reusable: row.reusable === 1,
786
844
  reuseCount: row.reuse_count || 0,
787
845
  averageTokenSavings: row.average_token_savings || 0,
846
+ // Surface deprecation/failure columns so checkDeprecation() can read them
847
+ // (these live on qe_patterns via ensureSchema ALTERs but aren't part of
848
+ // the base QEPattern shape — see PatternWithDeprecation).
849
+ deprecated_at: row.deprecated_at ?? null,
850
+ consecutive_failures: row.consecutive_failures ?? 0,
788
851
  };
852
+ return pattern;
789
853
  }
790
854
  }
791
855
  // ============================================================================