agentic-qe 3.15.9 → 3.15.11

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 (668) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +365 -0
  3. package/README.md +8 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  6. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  7. package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
  8. package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
  9. package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
  10. package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
  11. package/dist/adapters/ag-ui/json-patch.js +10 -6
  12. package/dist/adapters/trajectory-adapter.js +1 -1
  13. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  14. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  15. package/dist/agents/overlay-loader.js +26 -21
  16. package/dist/audit/witness-chain.d.ts +1 -1
  17. package/dist/cli/bundle.js +6 -6
  18. package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
  19. package/dist/cli/chunks/agent-booster-wasm-TIDSQ3ZK.js +2 -0
  20. package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-G3EPBVA7.js} +2 -2
  21. package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-ARC5C7GW.js} +2 -2
  22. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
  23. package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-36DTATJV.js} +4 -4
  24. package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-K4I4QDXB.js} +2 -2
  25. package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-WQSJSJZF.js} +3 -3
  26. package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
  27. package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-BB4K67MT.js} +2 -2
  28. package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-CU3GOIU3.js} +3 -3
  29. package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-NJQX7ZNB.js} +2 -2
  30. package/dist/cli/chunks/browser-6YJF4FQW.js +4 -0
  31. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
  32. package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-25P77WA5.js} +1 -1
  33. package/dist/cli/chunks/chunk-2CW7VRPH.js +141 -0
  34. package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
  35. package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-2KFFEKSI.js} +2 -2
  36. package/dist/cli/chunks/chunk-2VLYUF7U.js +2 -0
  37. package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-325QCVDI.js} +2 -2
  38. package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-35M2X3C5.js} +2 -2
  39. package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-3RHOPP7A.js} +1 -1
  40. package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-4HJKQIX5.js} +2 -2
  41. package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
  42. package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-4RAQ7PJA.js} +8 -8
  43. package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-4RH5I24Q.js} +2 -2
  44. package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-4UBVAJFO.js} +3 -3
  45. package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-4UX35V7P.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-4X4MWMHB.js} +2 -2
  47. package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-55CH76ZO.js} +3 -3
  48. package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-57LNKSW7.js} +2 -2
  49. package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
  50. package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-5HQP4SLM.js} +2 -2
  51. package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-5MNASJOH.js} +2 -2
  52. package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-5MTWCCZJ.js} +2 -2
  53. package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-5N25I53C.js} +2 -2
  54. package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-5WYZHDIZ.js} +1 -1
  55. package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-5YLOLACR.js} +2 -2
  56. package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-672XOJDG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-6NA3KZZT.js} +10 -10
  58. package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
  59. package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-76SNL7GU.js} +2 -2
  60. package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-7HEMJHPP.js} +2 -2
  61. package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-7R5HC56U.js} +1 -1
  62. package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-AFFN6E6Q.js} +2 -2
  63. package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-AMZKAJLJ.js} +2 -2
  64. package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-AP3ADWDK.js} +2 -2
  65. package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-APPZATXA.js} +2 -2
  66. package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-AUUJBXWX.js} +25 -20
  67. package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-BTVWA35P.js} +2 -2
  68. package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-BZPE3LDO.js} +2 -2
  69. package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-CFWGGRE7.js} +1 -1
  70. package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-CIAL4YRY.js} +2 -2
  71. package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-CO3DX2AX.js} +2 -2
  72. package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-DDEOZPWJ.js} +2 -2
  73. package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-DOBZPSKE.js} +1 -1
  74. package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-DOFREOPQ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-E44NNCEU.js} +2 -2
  76. package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-E6PF35JZ.js} +2 -2
  77. package/dist/cli/chunks/chunk-EBPJY4DI.js +3 -0
  78. package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EH2S6AOR.js} +2 -2
  79. package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-EIDJNT5C.js} +1 -1
  80. package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-EJPK7OTR.js} +2 -2
  81. package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EK5GMOSO.js} +1 -1
  82. package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ERN43HOX.js} +430 -433
  83. package/dist/cli/chunks/chunk-ETVAYGCB.js +180 -0
  84. package/dist/cli/chunks/chunk-EWPUQCN4.js +2 -0
  85. package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-FL32MTKT.js} +2 -2
  86. package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
  87. package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-FUYOOKTH.js} +5 -5
  88. package/dist/cli/chunks/chunk-FWSGPE3V.js +12 -0
  89. package/dist/cli/chunks/chunk-FZHSG75I.js +3 -0
  90. package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-G2IJFNZS.js} +2 -2
  91. package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-G4CKPWF6.js} +1 -1
  92. package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-G4FAPO57.js} +5 -5
  93. package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-G77MLBDF.js} +2 -2
  94. package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-GBFUANTC.js} +1 -1
  95. package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-GVKVJJQX.js} +2 -2
  96. package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GWJWSLDA.js} +2 -2
  97. package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-H43AFUKL.js} +2 -2
  98. package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
  99. package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-HDJUYAZG.js} +1 -1
  100. package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-HDNWSKHA.js} +2 -2
  101. package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-HFFPYC4G.js} +2 -2
  102. package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-HJ3XNTTJ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-HYXUN7BW.js} +1 -1
  104. package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-I36CRDHF.js} +2 -2
  105. package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-I4K2HTQU.js} +1 -1
  106. package/dist/cli/chunks/chunk-IENZSO3K.js +4 -0
  107. package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
  108. package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-IOZRKXR5.js} +2 -2
  109. package/dist/cli/chunks/chunk-ITL3IN2E.js +3 -0
  110. package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-ITPGWGQS.js} +14 -14
  111. package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-IW6WDGHM.js} +1 -1
  112. package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-J4JMCZVA.js} +2 -2
  113. package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-JFLU7L3W.js} +2 -2
  114. package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-JGJXXAS6.js} +4 -4
  115. package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-JUMICXM6.js} +2 -2
  116. package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-K2HBNYAZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-K7V2WZNF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-KDI5JOYZ.js} +2 -2
  119. package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-KJCIMNHS.js} +1 -1
  120. package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-KKYO2NKV.js} +2 -2
  121. package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-KSE5TDM5.js} +2 -2
  122. package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-KSLLHFVY.js} +1 -1
  123. package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-KXS3Y2AX.js} +2 -2
  124. package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LBX7M4LW.js} +2 -2
  125. package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-LCVEEII4.js} +2 -2
  126. package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-LD5CFK53.js} +54 -33
  127. package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-LPU6PAJE.js} +2 -2
  128. package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-LQ4NUC6Q.js} +2 -2
  129. package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
  130. package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-LXQ3B4RY.js} +2 -2
  131. package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-M5RQ6U3G.js} +2 -2
  132. package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-M5XYIQYZ.js} +2 -2
  133. package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
  134. package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-MIK4RBEH.js} +1 -1
  135. package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-NC6K7SCQ.js} +2 -2
  136. package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-NKTWKYHB.js} +2 -2
  137. package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-NPZOBSAN.js} +2 -2
  138. package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-NQZNMCZU.js} +2 -2
  139. package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-NT7JRHMH.js} +1 -1
  140. package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-NTB342NJ.js} +1 -1
  141. package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-O4JAKWWM.js} +13 -13
  142. package/dist/cli/chunks/chunk-OD5D4LSZ.js +2 -0
  143. package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-OH5V5EJW.js} +2 -2
  144. package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-OHR7C777.js} +2 -2
  145. package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-OURITHFV.js} +2 -2
  146. package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-OV5RPLKV.js} +2 -2
  147. package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-OYJC3YON.js} +2 -2
  148. package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-QDESWOZP.js} +2 -2
  149. package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
  150. package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-R5LGV6GZ.js} +2 -2
  151. package/dist/cli/chunks/chunk-RBZCA7SD.js +12 -0
  152. package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
  153. package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
  154. package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-RTY7VSZB.js} +2 -2
  155. package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-S6IYEBAI.js} +2 -2
  156. package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-SMVVAVN2.js} +2 -2
  157. package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-T5KHJ3J7.js} +5 -5
  158. package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-TCYSBC7Y.js} +1 -1
  159. package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-TFW7CCKS.js} +1 -1
  160. package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
  161. package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-U3LJNNVJ.js} +5 -5
  162. package/dist/cli/chunks/chunk-UKKYMW3S.js +3 -0
  163. package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-UMVSWQNB.js} +2 -2
  164. package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-UTTSH4NH.js} +3 -3
  165. package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-V5AADCBC.js} +1 -1
  166. package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-V7DA4HAK.js} +1 -1
  167. package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-VBK2YAYY.js} +2 -2
  168. package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-VEEYL2CZ.js} +2 -2
  169. package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-VLD7Z2ED.js} +3 -3
  170. package/dist/cli/chunks/chunk-VO3DRK4P.js +3 -0
  171. package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-VWUZSNVC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-VYTILW4R.js} +2 -2
  173. package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-WCAVIJ64.js} +1 -1
  174. package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-WCVCOT4E.js} +2 -2
  175. package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-WM3SRRA6.js} +2 -2
  176. package/dist/cli/chunks/chunk-X3PZCXWG.js +2 -0
  177. package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-X4J73KP3.js} +1 -1
  178. package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-XDI5X3FR.js} +1 -1
  179. package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-XGBU3KEM.js} +2 -2
  180. package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-XGPTZUKQ.js} +2 -2
  181. package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-XJKZ7FTR.js} +2 -2
  182. package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-XNLIWQYE.js} +2 -2
  183. package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-XS2XF3YG.js} +6 -5
  184. package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
  185. package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-YBBT3YYG.js} +1 -1
  186. package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-YNOCQ2SL.js} +1 -1
  187. package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-YOCULVHR.js} +1 -1
  188. package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-YPX2TV3M.js} +1 -1
  189. package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-Z2EA7A4Z.js} +1 -1
  190. package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-ZMC543GI.js} +2 -2
  191. package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
  192. package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-ZP75ASUU.js} +1 -1
  193. package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-ZQHDA4O7.js} +1 -1
  194. package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-6GUFAZMJ.js} +2 -2
  195. package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-J665XNOX.js} +2 -2
  196. package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-PEQQQWVD.js} +2 -2
  197. package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-HHB2JSKH.js} +2 -2
  198. package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-JKUJRWPN.js} +2 -2
  199. package/dist/cli/chunks/client-HL2COSFM.js +2 -0
  200. package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-Y77BWTAN.js} +2 -2
  201. package/dist/cli/chunks/{code-ONKLMVQ2.js → code-LV2HAGJY.js} +3 -3
  202. package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4GKKSETB.js} +2 -2
  203. package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-WMKBYE5Y.js} +2 -2
  204. package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-SBGFAOIJ.js} +2 -2
  205. package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-AQHFIJXC.js} +2 -2
  206. package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-26AYFS2E.js} +2 -2
  207. package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-4UD3DK55.js} +2 -2
  208. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
  209. package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-TP4NZCG4.js} +2 -2
  210. package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B2KIXHAI.js} +3 -3
  211. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
  212. package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-AVZEQZ4W.js} +2 -2
  213. package/dist/cli/chunks/daemon-P574WWBW.js +18 -0
  214. package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-XM2A7LQU.js} +3 -3
  215. package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
  216. package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-TYR7HT23.js} +2 -2
  217. package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-2DGVQGLS.js} +2 -2
  218. package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-RRA4ZOMF.js} +2 -2
  219. package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-IVZEZ5RB.js} +2 -2
  220. package/dist/cli/chunks/domain-transfer-DOBI67K6.js +2 -0
  221. package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
  222. package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
  223. package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-QV4LVPUF.js} +2 -2
  224. package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-DAPKT763.js} +3 -3
  225. package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-WVRFPHX7.js} +2 -2
  226. package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-DEFTUIYT.js} +2 -2
  227. package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-O7ZXDDCD.js} +2 -2
  228. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
  229. package/dist/cli/chunks/fleet-FVAUMKUT.js +46 -0
  230. package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-LS4LZJDR.js} +2 -2
  231. package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-RFTERD4K.js} +4 -4
  232. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
  233. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
  234. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
  235. package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
  236. package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-PHL3F2PR.js} +2 -2
  237. package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-GYJ6D4QM.js} +36 -36
  238. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
  239. package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
  240. package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-ZIMM647V.js} +3 -3
  241. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
  242. package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-VOMBXJXG.js} +2 -2
  243. package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-PSMUBWK5.js} +26 -25
  244. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
  245. package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
  246. package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-2YNTFBWJ.js} +2 -2
  247. package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-XHJDPVAZ.js} +2 -2
  248. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
  249. package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-GNSIDRNG.js} +24 -24
  250. package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-LQDM7IU2.js} +4 -4
  251. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
  252. package/dist/cli/chunks/{load-ZM43WGDO.js → load-YATHI72E.js} +2 -2
  253. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
  254. package/dist/cli/chunks/mcp-4Y6GDLYK.js +2 -0
  255. package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-OUW3L7H2.js} +5 -5
  256. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
  257. package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
  258. package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-UBZJXAD2.js} +2 -2
  259. package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-AMMNWVH5.js} +2 -2
  260. package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-Y44WDOER.js} +69 -25
  261. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
  262. package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-ESR42RME.js} +2 -2
  263. package/dist/cli/chunks/pipeline-EDTS6OSC.js +19 -0
  264. package/dist/cli/chunks/{platform-KJDABL5C.js → platform-5WONJSUX.js} +2 -2
  265. package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-IJXPCLD4.js} +2 -2
  266. package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
  267. package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
  268. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
  269. package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-DRD3GVNW.js} +2 -2
  270. package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-KTGW2HMJ.js} +2 -2
  271. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
  272. package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-DV2WPRRS.js} +2 -2
  273. package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-HFUAFVZC.js} +3 -3
  274. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
  275. package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RQRVOKVM.js} +2 -2
  276. package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-QWSKS5OY.js} +2 -2
  277. package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-RBAYRCHX.js} +2 -2
  278. package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
  279. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
  280. package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-FMPP3XKO.js} +2 -2
  281. package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-KZZT4HWF.js} +2 -2
  282. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
  283. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
  284. package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
  285. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
  286. package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
  287. package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
  288. package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
  289. package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
  290. package/dist/cli/chunks/{security-AUDTRX3I.js → security-CUEA3UIM.js} +3 -3
  291. package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
  292. package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
  293. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
  294. package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-IAHA3M6B.js} +2 -2
  295. package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-AFUCASTX.js} +2 -2
  296. package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-AQRV6JJ6.js} +2 -2
  297. package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-GX7FMJHL.js} +2 -2
  298. package/dist/cli/chunks/sync-XW5TLZ7M.js +2 -0
  299. package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-TFKVUTNF.js} +2 -2
  300. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
  301. package/dist/cli/chunks/{test-XFSGQELD.js → test-D2XDJNDX.js} +17 -17
  302. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
  303. package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-TS6I2PR7.js} +3 -3
  304. package/dist/cli/chunks/token-bootstrap-HBBLPCZ3.js +2 -0
  305. package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-3MBUX4PR.js} +2 -2
  306. package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-ZWMQO3L2.js} +2 -2
  307. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
  308. package/dist/cli/chunks/{types-JTWLBAZJ.js → types-5YEMGPSQ.js} +2 -2
  309. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
  310. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
  311. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
  312. package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-2TPBKIHI.js} +2 -2
  313. package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-XRAXXFW6.js} +2 -2
  314. package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-IYSCS3BZ.js} +2 -2
  315. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
  316. package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
  317. package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-U6XWFRVT.js} +2 -2
  318. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
  319. package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
  320. package/dist/cli/chunks/witness-chain-repair-K7YX2AO6.js +2 -0
  321. package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
  322. package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-YBNKMOP6.js} +2 -2
  323. package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-UAJUILFQ.js} +4 -4
  324. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
  325. package/dist/cli/chunks/wrappers-AVZ3GPAL.js +2 -0
  326. package/dist/cli/commands/fleet.js +23 -13
  327. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
  328. package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
  329. package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
  330. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  331. package/dist/cli/commands/learning.js +5 -3
  332. package/dist/cli/commands/ruvector-commands.js +2 -1
  333. package/dist/cli/commands/test.js +11 -2
  334. package/dist/cli/handlers/init-handler.d.ts +12 -0
  335. package/dist/cli/handlers/init-handler.js +27 -12
  336. package/dist/cli/utils/ci-output.d.ts +11 -0
  337. package/dist/cli/utils/ci-output.js +2 -0
  338. package/dist/cli/utils/fleet-operation.d.ts +32 -0
  339. package/dist/cli/utils/fleet-operation.js +71 -0
  340. package/dist/cli/utils/fleet-result.d.ts +31 -0
  341. package/dist/cli/utils/fleet-result.js +124 -0
  342. package/dist/cli/utils/progress.d.ts +16 -2
  343. package/dist/cli/utils/progress.js +31 -14
  344. package/dist/context/sources/git-source.js +6 -2
  345. package/dist/coordination/consensus/consensus-engine.js +3 -1
  346. package/dist/coordination/handlers/code-intelligence-handlers.js +63 -7
  347. package/dist/coordination/handlers/coverage-collection.js +3 -1
  348. package/dist/coordination/handlers/coverage-handlers.js +10 -1
  349. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  350. package/dist/coordination/handlers/coverage-runner.js +6 -22
  351. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  352. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  353. package/dist/coordination/handlers/coverage-target.js +6 -3
  354. package/dist/coordination/handlers/handler-utils.js +3 -1
  355. package/dist/coordination/handlers/requirements-handlers.js +18 -3
  356. package/dist/coordination/handlers/security-handlers.js +45 -21
  357. package/dist/coordination/handlers/test-execution-handlers.js +25 -7
  358. package/dist/coordination/mincut/queen-integration.d.ts +39 -1
  359. package/dist/coordination/mincut/queen-integration.js +83 -6
  360. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
  361. package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
  362. package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
  363. package/dist/coordination/protocols/learning-consolidation.js +71 -22
  364. package/dist/coordination/queen-coordinator.d.ts +1 -1
  365. package/dist/coordination/queen-coordinator.js +27 -10
  366. package/dist/coordination/queen-event-handlers.js +13 -0
  367. package/dist/coordination/queen-task-management.d.ts +18 -24
  368. package/dist/coordination/queen-task-management.js +62 -168
  369. package/dist/coordination/queen-task-queue.d.ts +41 -0
  370. package/dist/coordination/queen-task-queue.js +194 -0
  371. package/dist/coordination/queen-types.d.ts +1 -1
  372. package/dist/coordination/queen-work-stealing.d.ts +6 -1
  373. package/dist/coordination/queen-work-stealing.js +7 -4
  374. package/dist/coordination/result-saver-adapters.d.ts +15 -0
  375. package/dist/coordination/result-saver-adapters.js +57 -0
  376. package/dist/coordination/result-saver.d.ts +1 -1
  377. package/dist/coordination/result-saver.js +8 -5
  378. package/dist/coordination/task-executability.d.ts +12 -0
  379. package/dist/coordination/task-executability.js +27 -0
  380. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  381. package/dist/coordination/workflow-orchestrator.js +22 -8
  382. package/dist/coordination/yaml-pipeline-loader.js +5 -2
  383. package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
  384. package/dist/domains/code-intelligence/index-path-guard.js +20 -50
  385. package/dist/domains/code-intelligence/plugin.js +5 -1
  386. package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
  387. package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
  388. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
  389. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
  390. package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
  391. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
  392. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  393. package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
  394. package/dist/domains/contract-testing/services/contract-validator.js +6 -4
  395. package/dist/domains/contract-testing/services/schema-validator.js +8 -5
  396. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  397. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  398. package/dist/domains/defect-intelligence/plugin.js +11 -2
  399. package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
  400. package/dist/domains/defect-intelligence/prediction-history.js +68 -0
  401. package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
  402. package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
  403. package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
  404. package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
  405. package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
  406. package/dist/domains/learning-optimization/active-patterns.js +2 -2
  407. package/dist/domains/learning-optimization/coordinator.js +9 -5
  408. package/dist/domains/learning-optimization/interfaces.d.ts +8 -2
  409. package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
  410. package/dist/domains/learning-optimization/pattern-archive.js +56 -0
  411. package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
  412. package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
  413. package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
  414. package/dist/domains/learning-optimization/reward-source.js +8 -1
  415. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
  416. package/dist/domains/learning-optimization/services/learning-coordinator.js +47 -59
  417. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  418. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  419. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  420. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  421. package/dist/domains/security-compliance/plugin.js +17 -3
  422. package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
  423. package/dist/domains/security-compliance/sast-path-guard.js +17 -0
  424. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
  425. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
  426. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
  427. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
  428. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
  429. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  430. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  431. package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
  432. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  433. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  434. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  435. package/dist/domains/test-execution/coordinator.d.ts +6 -0
  436. package/dist/domains/test-execution/coordinator.js +28 -22
  437. package/dist/domains/test-execution/interfaces.d.ts +36 -1
  438. package/dist/domains/test-execution/plugin.js +19 -4
  439. package/dist/domains/test-execution/services/flaky-detector.js +9 -7
  440. package/dist/domains/test-execution/services/retry-handler.js +46 -7
  441. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  442. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  443. package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
  444. package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
  445. package/dist/domains/test-execution/services/test-executor.js +8 -8
  446. package/dist/domains/test-generation/coordinator.js +2 -2
  447. package/dist/domains/test-generation/plugin.js +7 -2
  448. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  449. package/dist/domains/test-generation/services/test-data-generator.js +3 -1
  450. package/dist/domains/test-generation/services/test-generator.js +2 -2
  451. package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
  452. package/dist/governance/evolution-pipeline-integration.js +3 -1
  453. package/dist/hooks/cross-phase-hooks.js +5 -2
  454. package/dist/init/init-wizard-steps.js +5 -1
  455. package/dist/init/phases/04-database.js +7 -0
  456. package/dist/init/phases/10-workers.js +50 -6
  457. package/dist/init/phases/12-verification.js +14 -4
  458. package/dist/init/settings-merge.js +7 -4
  459. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
  460. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
  461. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
  462. package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
  463. package/dist/integrations/browser/agent-browser/client.js +37 -52
  464. package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
  465. package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
  466. package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
  467. package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
  468. package/dist/integrations/browser/web-content-fetcher.js +9 -3
  469. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  470. package/dist/integrations/vibium/client.js +2 -2
  471. package/dist/integrations/vibium/runtime.d.ts +1 -1
  472. package/dist/integrations/vibium/runtime.js +14 -11
  473. package/dist/kernel/unified-memory-schemas.d.ts +3 -2
  474. package/dist/kernel/unified-memory-schemas.js +3 -2
  475. package/dist/kernel/unified-memory.js +25 -6
  476. package/dist/learning/dream/dream-commit.d.ts +65 -0
  477. package/dist/learning/dream/dream-commit.js +104 -0
  478. package/dist/learning/dream/dream-engine.d.ts +81 -31
  479. package/dist/learning/dream/dream-engine.js +225 -168
  480. package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
  481. package/dist/learning/dream/dream-insights-pruner.js +16 -30
  482. package/dist/learning/dream/index.d.ts +3 -2
  483. package/dist/learning/dream/index.js +3 -1
  484. package/dist/learning/dream/insight-generator.js +5 -4
  485. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
  486. package/dist/learning/dream/rvcow-branch-manager.js +8 -1
  487. package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
  488. package/dist/learning/dream/speculative-dreamer.js +64 -111
  489. package/dist/learning/dream/spreading-activation.d.ts +2 -1
  490. package/dist/learning/dream/spreading-activation.js +15 -6
  491. package/dist/learning/experience-capture.d.ts +9 -0
  492. package/dist/learning/experience-capture.js +18 -4
  493. package/dist/learning/memory-auditor.js +3 -1
  494. package/dist/learning/qe-patterns.js +2 -1
  495. package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
  496. package/dist/learning/qe-reasoning-bank.js +22 -11
  497. package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
  498. package/dist/learning/real-qe-reasoning-bank.js +70 -38
  499. package/dist/learning/sqlite-persistence.d.ts +6 -0
  500. package/dist/learning/sqlite-persistence.js +16 -2
  501. package/dist/learning/usage-outcome.d.ts +68 -0
  502. package/dist/learning/usage-outcome.js +84 -0
  503. package/dist/mcp/background-workers.d.ts +13 -1
  504. package/dist/mcp/background-workers.js +17 -3
  505. package/dist/mcp/bundle.js +612 -580
  506. package/dist/mcp/handlers/core-handlers.js +11 -0
  507. package/dist/mcp/handlers/domain-handler-configs.d.ts +7 -0
  508. package/dist/mcp/handlers/domain-handler-configs.js +19 -5
  509. package/dist/mcp/handlers/handler-factory.d.ts +2 -1
  510. package/dist/mcp/handlers/handler-factory.js +36 -15
  511. package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
  512. package/dist/mcp/handlers/orchestrate-routes.js +88 -0
  513. package/dist/mcp/handlers/task-handlers.d.ts +16 -0
  514. package/dist/mcp/handlers/task-handlers.js +77 -24
  515. package/dist/mcp/handlers/validation-pipeline-handler.js +14 -10
  516. package/dist/mcp/protocol-server.js +10 -8
  517. package/dist/mcp/qe-tool-bridge.js +3 -0
  518. package/dist/mcp/security/schema-validator.js +3 -2
  519. package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
  520. package/dist/mcp/services/reasoning-bank-service.js +4 -0
  521. package/dist/mcp/tool-annotations.js +4 -1
  522. package/dist/mcp/tools/code-intelligence/c4.js +11 -1
  523. package/dist/mcp/tools/coherence/check.js +1 -0
  524. package/dist/mcp/tools/coherence/consensus.js +4 -2
  525. package/dist/mcp/tools/coverage-analysis/index.js +31 -2
  526. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
  527. package/dist/mcp/tools/learning-optimization/dream.js +38 -34
  528. package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
  529. package/dist/mcp/tools/learning-optimization/optimize.js +59 -12
  530. package/dist/mcp/tools/mincut/index.js +3 -0
  531. package/dist/mcp/tools/quality-assessment/gate.js +19 -1
  532. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  533. package/dist/mcp/tools/requirements-validation/quality-criteria.js +17 -3
  534. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  535. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  536. package/dist/mcp/tools/test-execution/execute.js +3 -2
  537. package/dist/memory/crdt/crdt-store.js +5 -0
  538. package/dist/memory/crdt/lww-register.js +12 -2
  539. package/dist/migration/agent-compat.js +7 -5
  540. package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
  541. package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
  542. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  543. package/dist/planning/goap-planner.js +5 -0
  544. package/dist/planning/plan-executor.js +5 -0
  545. package/dist/shared/git/git-analyzer.d.ts +49 -0
  546. package/dist/shared/git/git-analyzer.js +159 -319
  547. package/dist/shared/git/git-process.d.ts +22 -0
  548. package/dist/shared/git/git-process.js +37 -0
  549. package/dist/shared/git/index.d.ts +1 -0
  550. package/dist/shared/git/index.js +1 -0
  551. package/dist/shared/io/confined-read.d.ts +74 -0
  552. package/dist/shared/io/confined-read.js +256 -0
  553. package/dist/shared/io/file-reader.d.ts +6 -6
  554. package/dist/shared/io/file-reader.js +16 -42
  555. package/dist/shared/io/payload-path-guard.d.ts +75 -0
  556. package/dist/shared/io/payload-path-guard.js +190 -0
  557. package/dist/shared/llm/providers/claude-code.js +4 -1
  558. package/dist/shared/llm/router/agent-router-config.js +2 -1
  559. package/dist/shared/llm/translation/tool-translator.js +2 -1
  560. package/dist/shared/native-module-errors.d.ts +51 -0
  561. package/dist/shared/native-module-errors.js +129 -0
  562. package/dist/shared/safe-db.js +14 -4
  563. package/dist/shared/security/osv-client.js +4 -1
  564. package/dist/shared/test-runner-args.d.ts +5 -0
  565. package/dist/shared/test-runner-args.js +6 -1
  566. package/dist/shared/test-runner-process.d.ts +6 -0
  567. package/dist/shared/test-runner-process.js +14 -0
  568. package/dist/shared/test-runner-verdict.d.ts +9 -1
  569. package/dist/shared/test-runner-verdict.js +15 -4
  570. package/dist/shared/types/test-frameworks.js +2 -2
  571. package/dist/shared/utils/namespaced-search.d.ts +14 -0
  572. package/dist/shared/utils/namespaced-search.js +19 -1
  573. package/dist/shared/utils/safe-expression-evaluator.js +4 -3
  574. package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
  575. package/dist/sync/readers/json-reader.js +2 -1
  576. package/dist/validation/anchor-set.d.ts +6 -0
  577. package/dist/validation/anchor-set.js +9 -1
  578. package/dist/validation/gate-reexecute.js +7 -4
  579. package/dist/validation/quality-gate-runner.d.ts +7 -1
  580. package/dist/validation/quality-gate-runner.js +3 -3
  581. package/dist/workers/daemon.js +13 -1
  582. package/dist/workers/quality-daemon/git-watcher.js +9 -9
  583. package/dist/workers/workers/defect-predictor.d.ts +8 -3
  584. package/dist/workers/workers/defect-predictor.js +48 -49
  585. package/dist/workers/workers/learning-consolidation.d.ts +2 -0
  586. package/dist/workers/workers/learning-consolidation.js +12 -1
  587. package/dist/workflows/browser/workflow-loader.js +8 -5
  588. package/package.json +1 -1
  589. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
  590. package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
  591. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
  592. package/dist/cli/chunks/base-67DXSAYM.js +0 -2
  593. package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
  594. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
  595. package/dist/cli/chunks/chunk-2XITOPYV.js +0 -6
  596. package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
  597. package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
  598. package/dist/cli/chunks/chunk-6PXA2BQJ.js +0 -742
  599. package/dist/cli/chunks/chunk-6YL6JOQB.js +0 -4
  600. package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
  601. package/dist/cli/chunks/chunk-AR2E4B7K.js +0 -6
  602. package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
  603. package/dist/cli/chunks/chunk-FJ4VTLLK.js +0 -2
  604. package/dist/cli/chunks/chunk-FV3NHVC7.js +0 -59
  605. package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
  606. package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
  607. package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
  608. package/dist/cli/chunks/chunk-JEP4ULR6.js +0 -21
  609. package/dist/cli/chunks/chunk-JK2ME6IT.js +0 -2
  610. package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
  611. package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
  612. package/dist/cli/chunks/chunk-N5PDFGCQ.js +0 -180
  613. package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
  614. package/dist/cli/chunks/chunk-P2CXVNKK.js +0 -4
  615. package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
  616. package/dist/cli/chunks/chunk-VU2EL424.js +0 -14
  617. package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
  618. package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
  619. package/dist/cli/chunks/chunk-XZJ2O3VC.js +0 -2
  620. package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
  621. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
  622. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
  623. package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
  624. package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
  625. package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
  626. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
  627. package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
  628. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
  629. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
  630. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
  631. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
  632. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
  633. package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
  634. package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
  635. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
  636. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
  637. package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
  638. package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
  639. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
  640. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
  641. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
  642. package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
  643. package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
  644. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
  645. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
  646. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
  647. package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
  648. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
  649. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
  650. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
  651. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
  652. package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
  653. package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
  654. package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
  655. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
  656. package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
  657. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
  658. package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
  659. package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
  660. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
  661. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
  662. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
  663. package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
  664. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
  665. package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
  666. package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
  667. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
  668. package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Caller-facing summary of a coverage runner's stderr.
3
+ *
4
+ * #1150: the summary reaches `provenance.notes` of a SUCCESS result, where the
5
+ * #1139 error backstop never sees it, so it is redacted here. Redaction runs
6
+ * BEFORE slicing: a slice boundary that cut a token or connection string in
7
+ * half would leave a fragment the redaction patterns no longer recognise.
8
+ * The collector therefore keeps a wide raw window at each end of the stream;
9
+ * each window is redacted whole, and only then are the short head and tail
10
+ * taken from it. A secret cut by a window edge lies far outside the part
11
+ * that is kept.
12
+ */
13
+ import { redactLogText } from '../../logging/redaction.js';
14
+ /** Raw stderr kept at each end of the stream, before redaction. */
15
+ export const STDERR_WINDOW_BYTES = 64 * 1024;
16
+ const STDERR_TAIL_BYTES = 2048;
17
+ const STDERR_HEAD_BYTES = 4096;
18
+ const STDERR_PREFIX_BYTES = 512;
19
+ const ERROR_LINE_RE = /^.*(?:error|\[[A-Z][A-Z_]{2,}\]|ERR_[A-Z_]+).*$/im;
20
+ /**
21
+ * Summarise a runner's stderr for a caller: the FIRST error-looking line (or
22
+ * the first ~512 bytes) plus the last ~2 KB (#995 review NB-C). A tail alone
23
+ * loses the cause when a long stack follows it — a vitest config syntax error
24
+ * prints `[PARSE_ERROR] …` first and then kilobytes of frames. `head` and
25
+ * `tail` are the raw windows at each end; both are redacted before slicing.
26
+ */
27
+ export function summarizeStderr(head, tail, totalBytes) {
28
+ const safeTail = redactLogText(tail, Number.POSITIVE_INFINITY);
29
+ if (totalBytes <= STDERR_TAIL_BYTES)
30
+ return safeTail.trim();
31
+ const safeHead = redactLogText(head, Number.POSITIVE_INFINITY).slice(0, STDERR_HEAD_BYTES);
32
+ const tailPart = safeTail.slice(-STDERR_TAIL_BYTES);
33
+ const errorLine = ERROR_LINE_RE.exec(safeHead)?.[0]?.trim();
34
+ const prefix = (errorLine ?? safeHead.slice(0, STDERR_PREFIX_BYTES)).trim();
35
+ if (prefix && tailPart.includes(prefix))
36
+ return tailPart.trim();
37
+ return `${prefix}\n…\n${tailPart.trim()}`;
38
+ }
39
+ //# sourceMappingURL=coverage-stderr.js.map
@@ -19,6 +19,7 @@
19
19
  * and the CLI `coverage` command can share it.
20
20
  */
21
21
  import * as fs from 'fs';
22
+ import { readConfinedText, readConfinedTextSync } from '../../shared/io/confined-read.js';
22
23
  import * as os from 'os';
23
24
  import * as path from 'path';
24
25
  import { loadCoverageData, parseCoberturaXml, parseCoverageJson, parseCoverageSummaryJson, parseLcovInfo, } from './handler-utils.js';
@@ -99,7 +100,7 @@ function packageCanUseRootRunner(pkgDir, rootDir) {
99
100
  }
100
101
  function readPackageJson(dir) {
101
102
  try {
102
- const parsed = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf-8'));
103
+ const parsed = JSON.parse(readConfinedTextSync(path.join(dir, 'package.json'), { outsideRoot: 'allow' }));
103
104
  return typeof parsed === 'object' && parsed !== null ? parsed : null;
104
105
  }
105
106
  catch {
@@ -128,7 +129,7 @@ function readWorkspacePatterns(dir) {
128
129
  // Only the block-list `packages:` form is read; the flow form gives no
129
130
  // patterns, so the root is not adopted (fails safe).
130
131
  try {
131
- const yaml = fs.readFileSync(path.join(dir, 'pnpm-workspace.yaml'), 'utf-8');
132
+ const yaml = readConfinedTextSync(path.join(dir, 'pnpm-workspace.yaml'), { outsideRoot: 'allow' });
132
133
  isRoot = true;
133
134
  let inPackages = false;
134
135
  for (const raw of yaml.split(/\r?\n/)) {
@@ -326,7 +327,9 @@ export function isCoverageReportFile(filePath) {
326
327
  export async function loadCoverageReportFile(filePath) {
327
328
  let content;
328
329
  try {
329
- content = await fs.promises.readFile(filePath, 'utf-8');
330
+ // #1161: read from the validated descriptor, not the name checked earlier;
331
+ // a report linked out of the project, or to a device, is not read.
332
+ content = await readConfinedText(filePath, { outsideRoot: 'allow' });
330
333
  }
331
334
  catch {
332
335
  return null;
@@ -5,6 +5,7 @@
5
5
  * now co-located with the handlers that use them.
6
6
  */
7
7
  import * as fs from 'fs/promises';
8
+ import { readConfinedText } from '../../shared/io/confined-read.js';
8
9
  import * as path from 'path';
9
10
  import { isAqeManagedDir } from '../../shared/aqe-managed-dirs.js';
10
11
  import { safeJsonParse } from '../../shared/safe-json.js';
@@ -32,7 +33,8 @@ export async function loadCoverageData(targetPath) {
32
33
  ];
33
34
  for (const coveragePath of coverageLocations) {
34
35
  try {
35
- const content = await fs.readFile(coveragePath, 'utf-8');
36
+ // #1161: a report linked out of the project, or to a device, is not read.
37
+ const content = await readConfinedText(coveragePath, { outsideRoot: 'allow' });
36
38
  if (coveragePath.endsWith('coverage-summary.json')) {
37
39
  return parseCoverageSummaryJson(content);
38
40
  }
@@ -4,16 +4,24 @@
4
4
  * Extracted from task-executor.ts registerHandlers().
5
5
  * Covers: validate-requirements, validate-contracts
6
6
  */
7
- import * as fs from 'fs/promises';
7
+ import { readConfinedText } from '../../shared/io/confined-read.js';
8
8
  import { ok, err } from '../../shared/types/index.js';
9
9
  import { toError, toErrorMessage } from '../../shared/error-utils.js';
10
10
  import { discoverSourceFiles } from './handler-utils.js';
11
+ import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../shared/io/payload-path-guard.js';
11
12
  export function registerRequirementsHandlers(ctx) {
12
13
  // Register requirements validation handler
13
14
  ctx.registerHandler('validate-requirements', async (task) => {
14
15
  const payload = task.payload;
15
16
  try {
16
- const targetPath = payload.requirementsPath || process.cwd();
17
+ // #1126: list requirement files only inside the project.
18
+ let targetPath = process.cwd();
19
+ if (payload.requirementsPath) {
20
+ const confined = await requirePayloadPath('validate-requirements', 'requirementsPath', payload.requirementsPath, { allowDirectory: true, allowMissing: true });
21
+ if (!confined.success)
22
+ return confined;
23
+ targetPath = confined.value;
24
+ }
17
25
  // Look for requirements files (markdown, feature files, etc.)
18
26
  const reqFiles = await discoverSourceFiles(targetPath, {
19
27
  includeTests: false,
@@ -58,9 +66,16 @@ export function registerRequirementsHandlers(ctx) {
58
66
  error: 'contractPath is required. Provide a path to an OpenAPI spec, JSON Schema, or Protocol Buffer file.',
59
67
  });
60
68
  }
69
+ // #1126: read only a regular file inside the project, within the size
70
+ // limit; the result reports its line count and whether it parses. A
71
+ // missing file keeps its valid:false result below.
72
+ const confined = await requirePayloadPath('validate-contracts', 'contractPath', payload.contractPath, { allowMissing: true, maxBytes: MAX_PAYLOAD_FILE_BYTES });
73
+ if (!confined.success)
74
+ return confined;
61
75
  // Check if the contract file exists
62
76
  try {
63
- const content = await fs.readFile(payload.contractPath, 'utf-8');
77
+ // #1161: read from the descriptor that was validated, not the name.
78
+ const content = await readConfinedText(confined.value, { maxBytes: MAX_PAYLOAD_FILE_BYTES });
64
79
  const isJson = payload.contractPath.endsWith('.json');
65
80
  const isYaml = payload.contractPath.endsWith('.yaml') || payload.contractPath.endsWith('.yml');
66
81
  // Basic structural validation
@@ -4,7 +4,6 @@
4
4
  * Extracted from task-executor.ts registerHandlers().
5
5
  * Covers: scan-security
6
6
  */
7
- import * as fs from 'fs/promises';
8
7
  import * as path from 'path';
9
8
  import { ok, err } from '../../shared/types/index.js';
10
9
  import { createHash } from 'node:crypto';
@@ -13,12 +12,24 @@ import { FilePath } from '../../shared/value-objects/index.js';
13
12
  import { generateSecurityRecommendations } from './handler-utils.js';
14
13
  import { discoverSecurityFiles, isSecuritySourceFile } from '../../domains/security-compliance/scan-discovery.js';
15
14
  import { runDependencyAdvisoryScan } from '../../domains/security-compliance/dependency-advisory-engine.js';
15
+ import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../shared/io/payload-path-guard.js';
16
+ import { dropGenericEvalCoveredBySast, GENERIC_EVAL_EXEC_TITLE } from '../../domains/security-compliance/generic-finding-dedup.js';
17
+ import { readConfinedFile } from '../../shared/io/confined-read.js';
16
18
  export function registerSecurityHandlers(ctx) {
17
19
  // Register security scan handler - REAL IMPLEMENTATION
18
20
  ctx.registerHandler('scan-security', async (task) => {
19
21
  const payload = task.payload;
20
22
  try {
21
- const targetPath = path.resolve(payload.target || process.cwd());
23
+ // #1126: read (SAST, manifests, dependencies) only a file or directory
24
+ // inside the project. A DAST-only scan reads no target path.
25
+ let targetPath = path.resolve(payload.target || process.cwd());
26
+ const readsTarget = payload.sast !== false || payload.dependencies === true;
27
+ if (payload.target && payload.target !== '.' && readsTarget) {
28
+ const confined = await requirePayloadPath('scan-security', 'target', payload.target, { allowDirectory: true, allowMissing: true, maxBytes: MAX_PAYLOAD_FILE_BYTES });
29
+ if (!confined.success)
30
+ return confined;
31
+ targetPath = confined.value;
32
+ }
22
33
  const sastRequested = payload.sast !== false;
23
34
  const discoveryResult = sastRequested ? await discoverSecurityFiles(targetPath) : undefined;
24
35
  const filesToScan = discoveryResult?.files ?? [];
@@ -34,6 +45,8 @@ export function registerSecurityHandlers(ctx) {
34
45
  const otherFiles = filesToScan.filter(f => !/\.(ts|tsx|js|jsx|mjs|cjs)$/i.test(f));
35
46
  // Run basic cross-language security patterns on non-JS/TS files
36
47
  const crossLangVulns = [];
48
+ // Generic eval/exec matches whose line calls eval() and not exec() (#1170).
49
+ const evalOnlyFindings = new Set();
37
50
  // Run secret/CORS patterns on ALL files (not just otherFiles) to catch JS/TS secrets too
38
51
  for (const filePath of filesToScan) {
39
52
  if (!isSecuritySourceFile(filePath)) {
@@ -42,13 +55,15 @@ export function registerSecurityHandlers(ctx) {
42
55
  continue;
43
56
  }
44
57
  try {
45
- const source = await fs.readFile(filePath);
58
+ // #1161: validate the opened descriptor, not the name checked earlier.
59
+ const source = await readConfinedFile(filePath, { outsideRoot: 'allow' });
46
60
  const content = source.toString('utf-8');
47
61
  const lines = content.split('\n');
48
62
  fileEvidence.push({ path: filePath, engineId: 'generic-patterns', status: 'analyzed',
49
63
  sourceDigest: createHash('sha256').update(source).digest('hex'),
50
64
  readLines: lines.length, analyzedLines: lines.length });
51
- const relPath = path.relative(targetPath, filePath) || path.basename(filePath);
65
+ // #1170: report the scanned path, as SAST does, so a finding names the
66
+ // real file and the same line from both engines can be matched.
52
67
  // Pattern: Hardcoded secrets/keys
53
68
  // Fix #287: Use \w* around keywords to match SECRET_KEY, JWT_SECRET, API_TOKEN, etc.
54
69
  const secretPatterns = [
@@ -65,7 +80,7 @@ export function registerSecurityHandlers(ctx) {
65
80
  crossLangVulns.push({
66
81
  title: pattern.title,
67
82
  severity: pattern.severity,
68
- location: { file: relPath, line: i + 1 },
83
+ location: { file: filePath, line: i + 1 },
69
84
  description: `Potential hardcoded secret found at line ${i + 1}`,
70
85
  category: 'sensitive-data',
71
86
  });
@@ -80,7 +95,7 @@ export function registerSecurityHandlers(ctx) {
80
95
  crossLangVulns.push({
81
96
  title: 'Potential SQL injection',
82
97
  severity: 'high',
83
- location: { file: relPath, line: i + 1 },
98
+ location: { file: filePath, line: i + 1 },
84
99
  description: 'String interpolation in SQL query — use parameterized queries',
85
100
  category: 'injection',
86
101
  });
@@ -101,7 +116,7 @@ export function registerSecurityHandlers(ctx) {
101
116
  crossLangVulns.push({
102
117
  title: 'CORS wildcard origin',
103
118
  severity: 'high',
104
- location: { file: relPath, line: lines.findIndex(l => corsPattern.test(l)) + 1 },
119
+ location: { file: filePath, line: lines.findIndex(l => corsPattern.test(l)) + 1 },
105
120
  description: 'CORS configured with wildcard (*) origin — restrict to specific domains',
106
121
  category: 'security-misconfiguration',
107
122
  });
@@ -114,21 +129,26 @@ export function registerSecurityHandlers(ctx) {
114
129
  crossLangVulns.push({
115
130
  title: 'Debug mode enabled',
116
131
  severity: 'medium',
117
- location: { file: relPath, line: lines.findIndex(l => /DEBUG\s*[=:]\s*(?:True|true|1)/i.test(l)) + 1 },
132
+ location: { file: filePath, line: lines.findIndex(l => /DEBUG\s*[=:]\s*(?:True|true|1)/i.test(l)) + 1 },
118
133
  description: 'Debug mode should be disabled in production',
119
134
  category: 'security-misconfiguration',
120
135
  });
121
136
  }
122
- // Pattern: Eval/exec usage
137
+ // Pattern: Eval/exec usage, one finding per matching line (#1170)
123
138
  genericRules.set('eval-exec', /\b(?:eval|exec)\s*\(/i.toString());
124
- if (/\b(?:eval|exec)\s*\(/i.test(content)) {
125
- crossLangVulns.push({
126
- title: 'Dangerous eval/exec usage',
139
+ for (let i = 0; i < lines.length; i++) {
140
+ if (!/\b(?:eval|exec)\s*\(/i.test(lines[i]))
141
+ continue;
142
+ const finding = {
143
+ title: GENERIC_EVAL_EXEC_TITLE,
127
144
  severity: 'high',
128
- location: { file: relPath, line: lines.findIndex(l => /\b(?:eval|exec)\s*\(/.test(l)) + 1 },
145
+ location: { file: filePath, line: i + 1 },
129
146
  description: 'eval/exec can lead to code injection — avoid using with user input',
130
147
  category: 'injection',
131
- });
148
+ };
149
+ crossLangVulns.push(finding);
150
+ if (!/\bexec\s*\(/i.test(lines[i]))
151
+ evalOnlyFindings.add(finding);
132
152
  }
133
153
  }
134
154
  catch (error) {
@@ -143,7 +163,8 @@ export function registerSecurityHandlers(ctx) {
143
163
  for (const manifest of sastRequested ? depManifests : []) {
144
164
  const manifestPath = path.join(targetPath, manifest);
145
165
  try {
146
- const manifestSource = await fs.readFile(manifestPath);
166
+ // #1161: a manifest linked out of the project is not read.
167
+ const manifestSource = await readConfinedFile(manifestPath, { outsideRoot: 'allow' });
147
168
  const manifestContent = manifestSource.toString('utf-8');
148
169
  const manifestLines = manifestContent.split('\n').length;
149
170
  fileEvidence.push({ path: manifestPath, engineId: 'dependency-manifest-patterns', status: 'analyzed',
@@ -286,13 +307,16 @@ export function registerSecurityHandlers(ctx) {
286
307
  };
287
308
  const deepAnalysisPerformed = Boolean(sastResult?.evidence?.engines.some(engine => engine.id === 'patterns' && (engine.status === 'completed' || engine.status === 'partial') &&
288
309
  (engine.analyzedFiles ?? 0) > 0));
310
+ // #1170: a generic eval() match on a line SAST reported as CWE-95 is the
311
+ // same finding, so it is counted once, as SAST reported it.
312
+ const genericVulns = await dropGenericEvalCoveredBySast(crossLangVulns, sastResult?.vulnerabilities ?? [], finding => evalOnlyFindings.has(finding));
289
313
  // Combine results from all scan sources - SAST, DAST, and cross-language patterns
290
314
  const crossLangSeverityCounts = {
291
- critical: crossLangVulns.filter(v => v.severity === 'critical').length,
292
- high: crossLangVulns.filter(v => v.severity === 'high').length,
293
- medium: crossLangVulns.filter(v => v.severity === 'medium').length,
294
- low: crossLangVulns.filter(v => v.severity === 'low').length,
295
- informational: crossLangVulns.filter(v => v.severity === 'informational').length,
315
+ critical: genericVulns.filter(v => v.severity === 'critical').length,
316
+ high: genericVulns.filter(v => v.severity === 'high').length,
317
+ medium: genericVulns.filter(v => v.severity === 'medium').length,
318
+ low: genericVulns.filter(v => v.severity === 'low').length,
319
+ informational: genericVulns.filter(v => v.severity === 'informational').length,
296
320
  };
297
321
  const depVulns = dependencyScan?.vulnerabilities ?? [];
298
322
  const depCount = (severity) => depVulns.filter(v => v.severity === severity).length;
@@ -307,7 +331,7 @@ export function registerSecurityHandlers(ctx) {
307
331
  const allVulns = [
308
332
  ...(sastResult?.vulnerabilities || []),
309
333
  ...(dastResult?.vulnerabilities || []),
310
- ...crossLangVulns,
334
+ ...genericVulns,
311
335
  ...depVulns,
312
336
  ];
313
337
  const topVulnerabilities = allVulns
@@ -8,11 +8,12 @@ import { v4 as uuidv4 } from 'uuid';
8
8
  import * as fs from 'fs/promises';
9
9
  import { ok, err } from '../../shared/types/index.js';
10
10
  import { toError } from '../../shared/error-utils.js';
11
- import { getTestRunnerExecutionError, TestRunnerExecutionError } from '../../shared/test-runner-verdict.js';
11
+ import { capDiagnostics, getTestRunnerExecutionError, TestRunnerExecutionError } from '../../shared/test-runner-verdict.js';
12
12
  import { createVitestJsonReport } from '../../shared/vitest-json-report.js';
13
13
  import { jestExactPathPattern, runnerFilePath } from '../../shared/test-runner-args.js';
14
14
  import { testCasesFromRunnerReport } from '../../domains/test-execution/services/runner-test-cases.js';
15
15
  import { runTestRunnerProcess } from '../../shared/test-runner-process.js';
16
+ import { MAX_PAYLOAD_FILE_BYTES, requirePayloadFiles } from '../../shared/io/payload-path-guard.js';
16
17
  function escapeRegExp(s) {
17
18
  return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
18
19
  }
@@ -69,9 +70,19 @@ export function registerTestExecutionHandlers(ctx) {
69
70
  if (payload.sourceFiles && payload.sourceFiles.length > 0) {
70
71
  sourceFiles = payload.sourceFiles;
71
72
  }
72
- else if (payload.filePath) {
73
+ else if (payload.filePath && !payload.sourceCode) {
74
+ // With sourceCode, filePath is only the import target written into the
75
+ // generated tests (tool contract); it is neither read nor required.
73
76
  sourceFiles = [payload.filePath];
74
77
  }
78
+ if (sourceFiles.length > 0) {
79
+ // #1126: the generator reads each file whole, so only project files.
80
+ const field = payload.sourceFiles?.length ? 'sourceFiles' : 'filePath';
81
+ const confined = await requirePayloadFiles('generate-tests', field, sourceFiles, { maxBytes: MAX_PAYLOAD_FILE_BYTES });
82
+ if (!confined.success)
83
+ return confined;
84
+ sourceFiles = confined.value;
85
+ }
75
86
  else if (payload.sourceCode) {
76
87
  // Write temporary file for analysis if only source code provided
77
88
  // Use correct file extension based on language parameter
@@ -175,15 +186,22 @@ export function registerTestExecutionHandlers(ctx) {
175
186
  ctx.registerHandler('execute-tests', async (task) => {
176
187
  const payload = task.payload;
177
188
  try {
178
- const testFiles = payload.testFiles || [];
179
- if (testFiles.length === 0) {
189
+ const requestedFiles = payload.testFiles || [];
190
+ if (requestedFiles.length === 0) {
180
191
  return err(new TestRunnerExecutionError('No test files specified. Provide testFiles array with paths to test files.'));
181
192
  }
182
193
  // Validate test file paths before invoking a runner.
183
194
  const safePathPattern = /^[a-zA-Z0-9_./@-]+$/;
184
- if (testFiles.some(file => !safePathPattern.test(file))) {
195
+ if (requestedFiles.some(file => !safePathPattern.test(file))) {
185
196
  return err(new TestRunnerExecutionError('Some test file paths contain invalid characters and were rejected. Provide concrete paths; expand glob patterns before calling.'));
186
197
  }
198
+ // #1126: a runner executes what it is given, so only files and
199
+ // directories (#909 Jest targets) inside the project, run as the real
200
+ // paths that were checked. A missing file is still reported by the runner.
201
+ const confined = await requirePayloadFiles('execute-tests', 'testFiles', requestedFiles, { allowMissing: true, allowDirectory: true });
202
+ if (!confined.success)
203
+ return confined;
204
+ const testFiles = confined.value;
187
205
  // A caller-owned MCP task skips the Queen's plugin dispatch. Run through
188
206
  // that same domain API here: it owns persistence, measured quality evidence
189
207
  // and TestRunStarted/Completed events as well as the runner itself.
@@ -230,7 +248,7 @@ export function registerTestExecutionHandlers(ctx) {
230
248
  }
231
249
  const diagnostics = [execution.error?.message, execution.signal && `Terminated by ${execution.signal}`, execution.stderr, output].filter(Boolean).join('\n');
232
250
  if (execution.error) {
233
- return err(new TestRunnerExecutionError(`${runner} could not complete: ${diagnostics.slice(0, 4000)}`));
251
+ return err(new TestRunnerExecutionError(`${runner} could not complete: ${capDiagnostics(diagnostics)}`));
234
252
  }
235
253
  try {
236
254
  const jsonStart = output.indexOf('{');
@@ -259,7 +277,7 @@ export function registerTestExecutionHandlers(ctx) {
259
277
  catch {
260
278
  // A malformed report cannot establish that the requested tests completed.
261
279
  }
262
- return err(new TestRunnerExecutionError(`Could not parse ${runner} results (exit code ${execution.status ?? 'unknown'}):\n${diagnostics.slice(0, 4000)}`));
280
+ return err(new TestRunnerExecutionError(`Could not parse ${runner} results (exit code ${execution.status ?? 'unknown'}):\n${capDiagnostics(diagnostics)}`));
263
281
  }
264
282
  catch (error) {
265
283
  return err(toError(error));
@@ -20,6 +20,19 @@ import { SwarmGraph } from './swarm-graph';
20
20
  import { MinCutHealthMonitor } from './mincut-health-monitor';
21
21
  import { MinCutPersistence } from './mincut-persistence';
22
22
  import { SwarmVertex, SwarmEdge, MinCutHealth, MinCutHealthConfig, WeakVertex } from './interfaces';
23
+ /**
24
+ * #1130: Queen health reads the MinCut of the fleet's own topology (domains
25
+ * and long-lived agents). An agent spawned for one task is a leaf with a
26
+ * single edge, so counting it would put every running task below threshold.
27
+ */
28
+ export interface FleetMinCutHealth extends MinCutHealth {
29
+ /** Status of the topology without task-scoped agents; this one degrades Queen health. */
30
+ readonly fleetStatus: MinCutHealth['status'];
31
+ /** MinCut of the topology without task-scoped agents. `minCutValue` stays the raw value. */
32
+ readonly fleetMinCutValue: number;
33
+ /** Running task-scoped agents left out of `fleetStatus`. */
34
+ readonly taskAgents: number;
35
+ }
23
36
  /**
24
37
  * Configuration for Queen-MinCut integration
25
38
  */
@@ -56,6 +69,13 @@ export declare class QueenMinCutBridge {
56
69
  private readonly monitor;
57
70
  private readonly persistence;
58
71
  private eventSubscriptions;
72
+ /**
73
+ * Agents with a vertex in the graph, from QueenAgentSpawned or from the
74
+ * coordinator when the graph was built. Pruned once they complete (#1130).
75
+ */
76
+ private readonly spawnedAgentIds;
77
+ /** The subset spawned for a single task (#1130). */
78
+ private readonly taskAgentIds;
59
79
  private snapshotTimer;
60
80
  private initialized;
61
81
  constructor(eventBus: EventBus, agentCoordinator: AgentCoordinator, config?: Partial<QueenMinCutConfig>);
@@ -100,11 +120,29 @@ export declare class QueenMinCutBridge {
100
120
  * Convert MinCut alerts to Queen health issues
101
121
  */
102
122
  getHealthIssuesFromMinCut(): HealthIssue[];
123
+ /**
124
+ * #1130: nothing publishes QueenAgentTerminated, so a finished task agent
125
+ * stayed in the topology and kept the fleet degraded after its run. Drop the
126
+ * vertex of every tracked agent that completed normally or that the
127
+ * coordinator no longer lists. A failed agent keeps its vertex (see
128
+ * failedAgentIssues), so a crash never makes the fleet look healthier.
129
+ * Returns the tracked agents that failed.
130
+ */
131
+ private pruneCompletedAgents;
132
+ /** #1130: one issue per failed agent, task-scoped or long-lived. */
133
+ private failedAgentIssues;
134
+ private isTaskAgentVertex;
135
+ /**
136
+ * #1130: MinCut health with the fleet reading next to the raw one. The fleet
137
+ * reading drops task-scoped agents from a copy of the graph; the raw graph,
138
+ * its value and its alerts are unchanged.
139
+ */
140
+ getFleetMinCutHealth(): FleetMinCutHealth;
103
141
  /**
104
142
  * Extend Queen health with MinCut metrics
105
143
  */
106
144
  extendQueenHealth(baseHealth: QueenHealth): QueenHealth & {
107
- minCut?: MinCutHealth;
145
+ minCut?: FleetMinCutHealth;
108
146
  };
109
147
  /**
110
148
  * Extend Queen metrics with MinCut data
@@ -44,6 +44,13 @@ export class QueenMinCutBridge {
44
44
  monitor;
45
45
  persistence;
46
46
  eventSubscriptions = [];
47
+ /**
48
+ * Agents with a vertex in the graph, from QueenAgentSpawned or from the
49
+ * coordinator when the graph was built. Pruned once they complete (#1130).
50
+ */
51
+ spawnedAgentIds = new Set();
52
+ /** The subset spawned for a single task (#1130). */
53
+ taskAgentIds = new Set();
47
54
  snapshotTimer = null;
48
55
  initialized = false;
49
56
  constructor(eventBus, agentCoordinator, config = {}) {
@@ -137,6 +144,8 @@ export class QueenMinCutBridge {
137
144
  // Add agent vertices
138
145
  for (const agent of agents) {
139
146
  this.addAgentVertex(agent);
147
+ // #1130: tracked so a completed agent is pruned like a spawned one
148
+ this.spawnedAgentIds.add(agent.id);
140
149
  }
141
150
  // Add edges based on coordination patterns
142
151
  this.buildCoordinationEdges(agents);
@@ -239,7 +248,10 @@ export class QueenMinCutBridge {
239
248
  subscribeToEvents() {
240
249
  // Agent spawned
241
250
  const onAgentSpawned = async (event) => {
242
- const { agentId, domain, type, capabilities } = event.payload;
251
+ const { agentId, domain, type, capabilities, taskId } = event.payload;
252
+ this.spawnedAgentIds.add(agentId);
253
+ if (taskId)
254
+ this.taskAgentIds.add(agentId);
243
255
  // Cast to extended AgentInfo with optional properties
244
256
  this.addAgentVertex({
245
257
  id: agentId,
@@ -381,7 +393,9 @@ export class QueenMinCutBridge {
381
393
  }
382
394
  // Add issues for weak vertices
383
395
  const weakVertices = this.monitor.getWeakVertices();
384
- for (const weak of weakVertices.slice(0, 3)) { // Top 3 weak vertices
396
+ // #1130: a task-scoped agent is a leaf by design, not a weak point of the fleet
397
+ const fleetWeakVertices = weakVertices.filter(weak => !this.isTaskAgentVertex(weak.vertex.id));
398
+ for (const weak of fleetWeakVertices.slice(0, 3)) { // Top 3 weak vertices
385
399
  if (weak.riskScore > 0.7) {
386
400
  issues.push({
387
401
  severity: 'high',
@@ -393,6 +407,66 @@ export class QueenMinCutBridge {
393
407
  }
394
408
  return issues;
395
409
  }
410
+ /**
411
+ * #1130: nothing publishes QueenAgentTerminated, so a finished task agent
412
+ * stayed in the topology and kept the fleet degraded after its run. Drop the
413
+ * vertex of every tracked agent that completed normally or that the
414
+ * coordinator no longer lists. A failed agent keeps its vertex (see
415
+ * failedAgentIssues), so a crash never makes the fleet look healthier.
416
+ * Returns the tracked agents that failed.
417
+ */
418
+ pruneCompletedAgents() {
419
+ if (this.spawnedAgentIds.size === 0)
420
+ return [];
421
+ const byId = new Map(this.agentCoordinator.listAgents().map(agent => [agent.id, agent]));
422
+ const failed = [];
423
+ for (const agentId of this.spawnedAgentIds) {
424
+ const agent = byId.get(agentId);
425
+ if (agent?.status === 'failed') {
426
+ failed.push(agent);
427
+ continue;
428
+ }
429
+ if (agent && agent.status !== 'completed')
430
+ continue;
431
+ this.graph.removeVertex(`agent:${agentId}`);
432
+ this.spawnedAgentIds.delete(agentId);
433
+ this.taskAgentIds.delete(agentId);
434
+ }
435
+ return failed;
436
+ }
437
+ /** #1130: one issue per failed agent, task-scoped or long-lived. */
438
+ failedAgentIssues(failed) {
439
+ return failed.map(agent => ({
440
+ severity: 'high',
441
+ message: `Agent ${agent.id} (${agent.type}) failed`,
442
+ timestamp: new Date(),
443
+ domain: agent.domain,
444
+ }));
445
+ }
446
+ isTaskAgentVertex(vertexId) {
447
+ return vertexId.startsWith('agent:') && this.taskAgentIds.has(vertexId.slice('agent:'.length));
448
+ }
449
+ /**
450
+ * #1130: MinCut health with the fleet reading next to the raw one. The fleet
451
+ * reading drops task-scoped agents from a copy of the graph; the raw graph,
452
+ * its value and its alerts are unchanged.
453
+ */
454
+ getFleetMinCutHealth() {
455
+ const raw = this.getMinCutHealth();
456
+ if (this.taskAgentIds.size === 0) {
457
+ return { ...raw, fleetStatus: raw.status, fleetMinCutValue: raw.minCutValue, taskAgents: 0 };
458
+ }
459
+ const fleetGraph = this.graph.clone();
460
+ for (const agentId of this.taskAgentIds)
461
+ fleetGraph.removeVertex(`agent:${agentId}`);
462
+ const fleet = createMinCutHealthMonitor(fleetGraph, this.config).getHealth();
463
+ return {
464
+ ...raw,
465
+ fleetStatus: fleet.status,
466
+ fleetMinCutValue: fleet.minCutValue,
467
+ taskAgents: this.taskAgentIds.size,
468
+ };
469
+ }
396
470
  /**
397
471
  * Extend Queen health with MinCut metrics
398
472
  */
@@ -400,19 +474,22 @@ export class QueenMinCutBridge {
400
474
  if (!this.config.includeInQueenHealth) {
401
475
  return baseHealth;
402
476
  }
403
- const minCutHealth = this.getMinCutHealth();
404
- const minCutIssues = this.getHealthIssuesFromMinCut();
477
+ const failedAgents = this.pruneCompletedAgents();
478
+ const minCutHealth = this.getFleetMinCutHealth();
479
+ // #1130: with only task-scoped agents the fleet topology is idle, and the
480
+ // raw alerts describe those agents, not the fleet.
481
+ const minCutIssues = minCutHealth.fleetStatus === 'idle' ? [] : this.getHealthIssuesFromMinCut();
405
482
  // Issue #205 fix: Only degrade status for actual critical issues
406
483
  // 'idle' status is normal for fresh installs - don't degrade health
407
484
  let status = baseHealth.status;
408
- if (minCutHealth.status === 'critical' && status === 'healthy') {
485
+ if ((minCutHealth.fleetStatus === 'critical' || failedAgents.length > 0) && status === 'healthy') {
409
486
  status = 'degraded';
410
487
  }
411
488
  // Note: 'idle' status does NOT trigger degradation - it's expected for fresh systems
412
489
  return {
413
490
  ...baseHealth,
414
491
  status,
415
- issues: [...baseHealth.issues, ...minCutIssues],
492
+ issues: [...baseHealth.issues, ...this.failedAgentIssues(failedAgents), ...minCutIssues],
416
493
  minCut: minCutHealth,
417
494
  };
418
495
  }
@@ -14,10 +14,10 @@
14
14
  * deleted. A pattern used or re-scored since it was selected is left active.
15
15
  * - The archive copy is read back before the active key is deleted, so a
16
16
  * failed write never loses the pattern.
17
+ * The move is implemented in domains/learning-optimization/pattern-archive.ts.
17
18
  */
18
- import type { MemoryBackend } from '../../kernel/interfaces.js';
19
19
  import type { LearnedPattern } from '../../domains/learning-optimization/interfaces.js';
20
- export type ArchiveOutcome = 'archived' | 'missing' | 'failed';
20
+ export { archiveSelectedPattern, type ArchiveOutcome } from '../../domains/learning-optimization/pattern-archive.js';
21
21
  /** Counts of one consolidation run's archive step, for logs and results. */
22
22
  export interface ArchiveCounts {
23
23
  /** Patterns the retention and trim rules selected for removal. */
@@ -30,10 +30,6 @@ export interface ArchiveCounts {
30
30
  failed: number;
31
31
  }
32
32
  export declare function emptyArchiveCounts(): ArchiveCounts;
33
- /**
34
- * Move one selected pattern to its archive key in the learning namespace.
35
- */
36
- export declare function archiveSelectedPattern(memory: MemoryBackend, pattern: LearnedPattern, archivedAt?: Date): Promise<ArchiveOutcome>;
37
33
  /** True when the pattern was created less than `graceDays` days ago. */
38
34
  export declare function isWithinRetentionGrace(pattern: LearnedPattern, graceDays: number, now?: number): boolean;
39
35
  //# sourceMappingURL=learning-consolidation-archive.d.ts.map