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
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { err } from '../../shared/types/index.js';
6
6
  import { BaseDomainPlugin } from '../domain-interface.js';
7
+ import { requirePayloadFiles } from '../../shared/io/payload-path-guard.js';
7
8
  import { createTestExecutionCoordinator } from './coordinator.js';
8
9
  import { getGlobalInfraHealing } from '../../strange-loop/infra-healing/global-instance.js';
9
10
  import { isMeasuredGapPayload } from '../../shared/events/domain-events.js';
@@ -60,11 +61,22 @@ export class TestExecutionPlugin extends BaseDomainPlugin {
60
61
  if (!this.coordinator) {
61
62
  return err(new Error('Coordinator not initialized'));
62
63
  }
64
+ // #1126: a runner executes the files it is given, so only files and
65
+ // directories (#909 Jest targets) inside the project, passed on as the
66
+ // real paths that were checked. A missing one is still reported by the
67
+ // runner.
68
+ let testFiles;
69
+ if (payload.testFiles !== undefined) {
70
+ const confined = await requirePayloadFiles('execute-tests', 'testFiles', payload.testFiles, { allowMissing: true, allowDirectory: true });
71
+ if (!confined.success)
72
+ return confined;
73
+ testFiles = confined.value;
74
+ }
63
75
  // Support both simple and full request formats
64
- if (payload.testFiles && Array.isArray(payload.testFiles)) {
76
+ if (testFiles) {
65
77
  // Simple request format
66
78
  const request = {
67
- testFiles: payload.testFiles,
79
+ testFiles,
68
80
  parallel: payload.parallel,
69
81
  retryCount: payload.retryCount,
70
82
  timeout: payload.timeout,
@@ -75,7 +87,7 @@ export class TestExecutionPlugin extends BaseDomainPlugin {
75
87
  else if (payload.framework) {
76
88
  // Full request format
77
89
  const request = {
78
- testFiles: payload.testFiles || [],
90
+ testFiles: [],
79
91
  framework: payload.framework,
80
92
  timeout: payload.timeout,
81
93
  env: payload.env,
@@ -96,8 +108,11 @@ export class TestExecutionPlugin extends BaseDomainPlugin {
96
108
  if (!testFiles) {
97
109
  return err(new Error('Invalid detect-flaky payload: missing testFiles'));
98
110
  }
111
+ const confined = await requirePayloadFiles('detect-flaky', 'testFiles', testFiles, { allowMissing: true, allowDirectory: true });
112
+ if (!confined.success)
113
+ return confined;
99
114
  return this.coordinator.detectFlaky({
100
- testFiles,
115
+ testFiles: confined.value,
101
116
  runs: runs ?? 5,
102
117
  threshold: threshold ?? 0.1,
103
118
  });
@@ -15,6 +15,7 @@ import { getTestRunnerExecutionError } from '../../../shared/test-runner-verdict
15
15
  import { createVitestJsonReport, needsVitestJsonReportFile } from '../../../shared/vitest-json-report.js';
16
16
  import { isJestCommand, jestExactPathPattern, runnerFilePath } from '../../../shared/test-runner-args.js';
17
17
  import { secureRandom } from '../../../shared/utils/crypto-random.js';
18
+ import { redactFailureText } from './runner-test-cases.js';
18
19
  const DEFAULT_FLAKY_CONFIG = {
19
20
  simulateForTesting: false,
20
21
  simulatedFlakinessRate: RETRY_CONSTANTS.DEFAULT_FLAKY_RATE,
@@ -132,7 +133,8 @@ export class FlakyDetectorService {
132
133
  async recordExecution(testId, result) {
133
134
  // Add to in-memory history
134
135
  const history = this.testHistory.get(testId) ?? [];
135
- history.push(result);
136
+ // #1122: test-history is persisted, so failure text is stored redacted.
137
+ history.push(result.error ? { ...result, error: redactFailureText(result.error) } : result);
136
138
  // Keep only last 100 executions
137
139
  if (history.length > 100) {
138
140
  history.shift();
@@ -336,7 +338,7 @@ export class FlakyDetectorService {
336
338
  runId,
337
339
  passed: code === 0,
338
340
  duration,
339
- error: code !== 0 ? stderr || `Exit code: ${code}` : undefined,
341
+ error: code !== 0 ? redactFailureText(stderr || `Exit code: ${code}`) : undefined,
340
342
  timestamp: new Date(),
341
343
  context: {
342
344
  parallelRuns: 1,
@@ -365,7 +367,7 @@ export class FlakyDetectorService {
365
367
  passed: code === 0,
366
368
  duration,
367
369
  error: code !== 0
368
- ? stderr || `Exit code: ${code}, Parse error: ${parseError}`
370
+ ? redactFailureText(stderr || `Exit code: ${code}, Parse error: ${parseError}`)
369
371
  : undefined,
370
372
  timestamp: new Date(),
371
373
  context: {
@@ -479,8 +481,8 @@ export class FlakyDetectorService {
479
481
  runId,
480
482
  passed: test.status === 'passed',
481
483
  duration: test.duration || 0,
482
- error: test.status === 'failed'
483
- ? test.failureMessages?.join('\n')
484
+ error: test.status === 'failed' && test.failureMessages
485
+ ? redactFailureText(test.failureMessages.join('\n'))
484
486
  : undefined,
485
487
  timestamp: new Date(),
486
488
  context: {
@@ -505,8 +507,8 @@ export class FlakyDetectorService {
505
507
  runId,
506
508
  passed: assertion.status === 'passed',
507
509
  duration: assertion.duration || 0,
508
- error: assertion.status === 'failed'
509
- ? assertion.failureMessages?.join('\n')
510
+ error: assertion.status === 'failed' && assertion.failureMessages
511
+ ? redactFailureText(assertion.failureMessages.join('\n'))
510
512
  : undefined,
511
513
  timestamp: new Date(),
512
514
  context: {
@@ -14,6 +14,7 @@ import { toError } from '../../../shared/error-utils.js';
14
14
  import { safeJsonParse } from '../../../shared/safe-json.js';
15
15
  import { secureRandom } from '../../../shared/utils/crypto-random.js';
16
16
  import { terminateTestRunner, trackTestRunnerExit } from '../../../shared/test-runner-process.js';
17
+ import { redactFailureText } from './runner-test-cases.js';
17
18
  /**
18
19
  * Whether a runner-reported test file and the requested target are the same
19
20
  * file. Runners report real paths, so a target given through a symlink must be
@@ -104,6 +105,8 @@ export class RetryHandlerService {
104
105
  const nowPassing = [];
105
106
  const stillFailing = [];
106
107
  const flakyDetected = [];
108
+ const unmatched = [];
109
+ const tests = [];
107
110
  for (const test of failedTests) {
108
111
  const result = await this.retryTest(test, maxRetries, backoff, baseDelay, maxDelay, onRetry);
109
112
  stats.totalRetries += result.attempts;
@@ -118,11 +121,18 @@ export class RetryHandlerService {
118
121
  else {
119
122
  stillFailing.push(test.testId);
120
123
  stats.failed++;
124
+ if (result.unmatched)
125
+ unmatched.push(test.testId);
121
126
  }
127
+ tests.push({
128
+ testId: test.testId, attempts: result.attempts, passed: result.passed,
129
+ ...(result.unmatched ? { unmatched: true } : {}),
130
+ });
122
131
  // Record retry history
123
132
  await this.recordRetry(test.testId, result);
124
133
  }
125
134
  stats.flakyDetected = flakyDetected;
135
+ stats.unmatched = unmatched;
126
136
  stats.endTime = Date.now();
127
137
  this.runStats.set(runId, stats);
128
138
  // Persist stats
@@ -136,6 +146,8 @@ export class RetryHandlerService {
136
146
  nowPassing: nowPassing.length,
137
147
  stillFailing: stillFailing.length,
138
148
  flakyDetected,
149
+ unmatched,
150
+ tests,
139
151
  };
140
152
  return ok(retryResult);
141
153
  }
@@ -218,7 +230,8 @@ export class RetryHandlerService {
218
230
  }
219
231
  async retryTest(test, maxRetries, backoff, baseDelay, maxDelay, onRetry) {
220
232
  let attempts = 0;
221
- let lastError = test.error;
233
+ // #1122: the final error is persisted in retry-history, so keep it redacted.
234
+ let lastError = redactFailureText(test.error);
222
235
  while (attempts < maxRetries) {
223
236
  // Check if should retry
224
237
  const shouldRetry = await this.shouldRetry(test.testId, attempts, lastError);
@@ -232,9 +245,16 @@ export class RetryHandlerService {
232
245
  if (onRetry) {
233
246
  onRetry(test.testId, attempts + 1);
234
247
  }
235
- attempts++;
236
248
  // Execute test (simulated - in real implementation, would run actual test)
237
249
  const result = await this.executeTest(test);
250
+ // #1141: a filter that selected no test reran nothing. Report that
251
+ // instead of counting it as a retry, and stop: another attempt would
252
+ // select nothing again.
253
+ if (result.unmatched) {
254
+ logger.warn(`Retry of "${test.testName}" matched no test in ${test.file}; nothing was rerun.`);
255
+ return { testId: test.testId, passed: false, attempts, finalError: lastError, unmatched: true };
256
+ }
257
+ attempts++;
238
258
  if (result.passed) {
239
259
  return {
240
260
  testId: test.testId,
@@ -243,7 +263,7 @@ export class RetryHandlerService {
243
263
  finalError: undefined,
244
264
  };
245
265
  }
246
- lastError = result.error ?? lastError;
266
+ lastError = result.error !== undefined ? redactFailureText(result.error) : lastError;
247
267
  }
248
268
  return {
249
269
  testId: test.testId,
@@ -477,9 +497,16 @@ export class RetryHandlerService {
477
497
  const result = safeJsonParse(vitestMatch[0]);
478
498
  // Vitest's positional file filter uses prefix matching. A passing
479
499
  // sibling must not clear a failure in the requested file (#972).
480
- const targetPassed = !targetFile || result.testResults?.some((file) => typeof file.name === 'string'
481
- && sameTestFile(file.name, targetFile, this.config.cwd ?? process.cwd())
482
- && file.assertionResults?.some(assertion => assertion.status === 'passed'));
500
+ const targetHas = (status) => result.testResults?.some((file) => typeof file.name === 'string'
501
+ && (!targetFile || sameTestFile(file.name, targetFile, this.config.cwd ?? process.cwd()))
502
+ && file.assertionResults?.some(assertion => assertion.status === status)) === true;
503
+ const targetPassed = !targetFile || targetHas('passed');
504
+ const nothingRan = targetFile
505
+ ? Array.isArray(result.testResults) && !targetPassed && !targetHas('failed')
506
+ : result.numPassedTests === 0;
507
+ if (nothingRan && result.numFailedTests === 0 && result.numFailedTestSuites === 0) {
508
+ return UNMATCHED;
509
+ }
483
510
  if (exitCode === 0 && result.success !== false
484
511
  && result.numFailedTests === 0 && result.numFailedTestSuites === 0
485
512
  && Number.isFinite(result.numPassedTests) && result.numPassedTests > 0
@@ -501,6 +528,10 @@ export class RetryHandlerService {
501
528
  const jestMatch = stdout.match(/\{[\s\S]*"numFailedTests"[\s\S]*\}/);
502
529
  if (jestMatch) {
503
530
  const result = safeJsonParse(jestMatch[0]);
531
+ if (result.numPassedTests === 0 && result.numFailedTests === 0
532
+ && result.numFailedTestSuites === 0) {
533
+ return UNMATCHED;
534
+ }
504
535
  if (exitCode === 0 && result.success !== false
505
536
  && result.numFailedTests === 0 && result.numFailedTestSuites === 0
506
537
  && Number.isFinite(result.numPassedTests) && result.numPassedTests > 0) {
@@ -517,6 +548,8 @@ export class RetryHandlerService {
517
548
  const mochaMatch = stdout.match(/\{[\s\S]*"stats"[\s\S]*"failures"[\s\S]*\}/);
518
549
  if (mochaMatch) {
519
550
  const result = safeJsonParse(mochaMatch[0]);
551
+ if (result.stats?.passes === 0 && result.stats?.failures === 0)
552
+ return UNMATCHED;
520
553
  if (exitCode === 0 && result.stats?.failures === 0
521
554
  && Number.isFinite(result.stats?.passes) && result.stats.passes > 0) {
522
555
  return { passed: true };
@@ -538,7 +571,7 @@ export class RetryHandlerService {
538
571
  const errorOutput = stderr || stdout || `Test failed with exit code ${exitCode}`;
539
572
  return {
540
573
  passed: false,
541
- error: errorOutput.substring(0, 1000), // Truncate long error messages
574
+ error: redactFailureText(errorOutput).substring(0, 1000), // Truncate long error messages
542
575
  };
543
576
  }
544
577
  calculateDelay(attempt, backoff, baseDelay, maxDelay) {
@@ -573,6 +606,7 @@ export class RetryHandlerService {
573
606
  attempts: result.attempts,
574
607
  passed: result.passed,
575
608
  error: result.finalError,
609
+ ...(result.unmatched ? { unmatched: true } : {}),
576
610
  timestamp: new Date(),
577
611
  });
578
612
  // Keep last 50 entries
@@ -616,4 +650,9 @@ export class RetryHandlerService {
616
650
  };
617
651
  }
618
652
  }
653
+ const UNMATCHED = {
654
+ passed: false,
655
+ unmatched: true,
656
+ error: 'The retry filter matched no test, so nothing was rerun.',
657
+ };
619
658
  //# sourceMappingURL=retry-handler.js.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * #1170: a run's final outcome after its failed tests were retried.
3
+ *
4
+ * A test that failed and then passed on a retry is passed, and flaky: it
5
+ * leaves `failed`/`failedTests`, its runner test case reads `passed` with
6
+ * `flaky: true`, and the run counts it in `flaky`. A test whose retries all
7
+ * failed, or whose retry matched no test, stays failed.
8
+ */
9
+ import type { IRetryResult, ITestRunResult } from '../interfaces';
10
+ /**
11
+ * Default retries of a failed test, shared by `aqe test execute` and MCP
12
+ * `test_execute_parallel` so both surfaces rerun a failure the same number of
13
+ * times (#1170).
14
+ */
15
+ export declare const DEFAULT_TEST_RETRY_COUNT = 2;
16
+ /** Attach the retry outcome to `run` and move tests that passed on retry from failed to passed. */
17
+ export declare function applyRetryOutcome(run: ITestRunResult, retried: IRetryResult): void;
18
+ //# sourceMappingURL=retry-outcome.d.ts.map
@@ -0,0 +1,53 @@
1
+ /**
2
+ * #1170: a run's final outcome after its failed tests were retried.
3
+ *
4
+ * A test that failed and then passed on a retry is passed, and flaky: it
5
+ * leaves `failed`/`failedTests`, its runner test case reads `passed` with
6
+ * `flaky: true`, and the run counts it in `flaky`. A test whose retries all
7
+ * failed, or whose retry matched no test, stays failed.
8
+ */
9
+ /**
10
+ * Default retries of a failed test, shared by `aqe test execute` and MCP
11
+ * `test_execute_parallel` so both surfaces rerun a failure the same number of
12
+ * times (#1170).
13
+ */
14
+ export const DEFAULT_TEST_RETRY_COUNT = 2;
15
+ /** Attach the retry outcome to `run` and move tests that passed on retry from failed to passed. */
16
+ export function applyRetryOutcome(run, retried) {
17
+ const byId = new Map(run.failedTests.map(t => [t.testId, t]));
18
+ const outcomes = retried.tests ?? [];
19
+ const summary = {
20
+ totalRetries: retried.retried,
21
+ nowPassing: retried.nowPassing,
22
+ stillFailing: retried.stillFailing,
23
+ tests: outcomes.map(({ testId, ...outcome }) => ({
24
+ name: byId.get(testId)?.testName ?? testId,
25
+ file: byId.get(testId)?.file ?? '',
26
+ ...outcome,
27
+ })),
28
+ };
29
+ run.retries = summary;
30
+ const passedOnRetry = new Set(outcomes.filter(o => o.passed && !o.unmatched).map(o => o.testId));
31
+ const recovered = run.failedTests.filter(t => passedOnRetry.has(t.testId));
32
+ if (recovered.length === 0)
33
+ return;
34
+ run.failedTests = run.failedTests.filter(t => !passedOnRetry.has(t.testId));
35
+ run.failed = Math.max(0, run.failed - recovered.length);
36
+ run.passed += recovered.length;
37
+ run.flaky = (run.flaky ?? 0) + recovered.length;
38
+ if (run.failed === 0 && run.status === 'failed')
39
+ run.status = 'passed';
40
+ if (run.testCases) {
41
+ const pending = [...recovered];
42
+ run.testCases = run.testCases.map(testCase => {
43
+ if (testCase.status !== 'failed')
44
+ return testCase;
45
+ const index = pending.findIndex(t => t.testName === testCase.name && t.file === testCase.file);
46
+ if (index < 0)
47
+ return testCase;
48
+ pending.splice(index, 1);
49
+ return { ...testCase, status: 'passed', flaky: true };
50
+ });
51
+ }
52
+ }
53
+ //# sourceMappingURL=retry-outcome.js.map
@@ -6,6 +6,17 @@
6
6
  * derived from aggregate counts.
7
7
  */
8
8
  import type { ITestCaseResult } from '../interfaces';
9
+ /**
10
+ * #1122: failure text goes back over MCP and into saved results, so
11
+ * credential-shaped values (e.g. a connection string) are redacted first.
12
+ * The text is not shortened here; callers apply their own caps.
13
+ */
14
+ export declare function redactFailureText(text: string): string;
15
+ /** Failed tests with `error` and `stack` redacted (#1122). */
16
+ export declare function redactFailedTests<T extends {
17
+ error: string;
18
+ stack?: string;
19
+ }>(tests: T[]): T[];
9
20
  /**
10
21
  * Test cases listed in a runner JSON report, or undefined when the report
11
22
  * has no per-test entries.
@@ -5,19 +5,37 @@
5
5
  * test case with the runner's own name, status and duration; nothing is
6
6
  * derived from aggregate counts.
7
7
  */
8
+ import { redactLogText } from '../../../logging/redaction.js';
8
9
  const SKIPPED_STATUSES = new Set(['skipped', 'pending', 'todo']);
9
10
  /** Upper bound on a reported failure message, so one stack cannot swamp the output. */
10
11
  const MAX_FAILURE_MESSAGE_LENGTH = 4000;
11
12
  function failureMessageOf(assertion) {
12
13
  if (!Array.isArray(assertion.failureMessages))
13
14
  return undefined;
14
- const message = assertion.failureMessages.filter((m) => typeof m === 'string').join('\n').trim();
15
- if (!message)
15
+ const joined = assertion.failureMessages.filter((m) => typeof m === 'string').join('\n').trim();
16
+ if (!joined)
16
17
  return undefined;
18
+ const message = redactFailureText(joined);
17
19
  return message.length > MAX_FAILURE_MESSAGE_LENGTH
18
20
  ? `${message.slice(0, MAX_FAILURE_MESSAGE_LENGTH)}… [truncated]`
19
21
  : message;
20
22
  }
23
+ /**
24
+ * #1122: failure text goes back over MCP and into saved results, so
25
+ * credential-shaped values (e.g. a connection string) are redacted first.
26
+ * The text is not shortened here; callers apply their own caps.
27
+ */
28
+ export function redactFailureText(text) {
29
+ return redactLogText(text, Number.POSITIVE_INFINITY);
30
+ }
31
+ /** Failed tests with `error` and `stack` redacted (#1122). */
32
+ export function redactFailedTests(tests) {
33
+ return tests.map(test => ({
34
+ ...test,
35
+ error: redactFailureText(test.error),
36
+ ...(typeof test.stack === 'string' ? { stack: redactFailureText(test.stack) } : {}),
37
+ }));
38
+ }
21
39
  function toStatus(status) {
22
40
  if (status === 'passed' || status === 'failed')
23
41
  return status;
@@ -17,8 +17,8 @@ import { secureRandom, secureRandomInt } from '../../../shared/utils/crypto-rand
17
17
  import { writeTestRunEvidence } from '../../quality-assessment/quality-evidence.js';
18
18
  import { istanbulLineHits } from '../../../coordination/handlers/handler-utils.js';
19
19
  import { fileCoverageKey } from '../../coverage-analysis/collected-metrics.js';
20
- import { mergeTestCases, testCasesFromRunnerReport } from './runner-test-cases.js';
21
- import { getTestRunnerExecutionError, TestRunnerExecutionError } from '../../../shared/test-runner-verdict.js';
20
+ import { mergeTestCases, redactFailedTests, redactFailureText, testCasesFromRunnerReport } from './runner-test-cases.js';
21
+ import { capDiagnostics, getTestRunnerExecutionError, TestRunnerExecutionError } from '../../../shared/test-runner-verdict.js';
22
22
  import { createVitestJsonReport } from '../../../shared/vitest-json-report.js';
23
23
  import { jestExactPathPattern, runnerFilePath } from '../../../shared/test-runner-args.js';
24
24
  import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
@@ -76,7 +76,7 @@ export class TestExecutorService {
76
76
  failed: results.failed,
77
77
  skipped: results.skipped,
78
78
  duration,
79
- failedTests: results.failedTests,
79
+ failedTests: redactFailedTests(results.failedTests),
80
80
  ...(results.testCases ? { testCases: results.testCases } : {}),
81
81
  coverage: results.coverage,
82
82
  fileCoverages: results.fileCoverages,
@@ -132,7 +132,7 @@ export class TestExecutorService {
132
132
  failed: aggregated.failed,
133
133
  skipped: aggregated.skipped,
134
134
  duration,
135
- failedTests: aggregated.failedTests,
135
+ failedTests: redactFailedTests(aggregated.failedTests),
136
136
  ...(aggregated.testCases ? { testCases: aggregated.testCases } : {}),
137
137
  coverage: aggregated.coverage,
138
138
  fileCoverages: aggregated.fileCoverages,
@@ -260,7 +260,7 @@ export class TestExecutorService {
260
260
  if (!this.isLLMAnalysisAvailable() || failures.length === 0)
261
261
  return null;
262
262
  try {
263
- const failureSummary = failures.slice(0, 5).map(f => `- ${f.testName}: ${f.error?.substring(0, 200) || 'Unknown error'}`).join('\n');
263
+ const failureSummary = failures.slice(0, 5).map(f => `- ${f.testName}: ${f.error ? redactFailureText(f.error).substring(0, 200) : 'Unknown error'}`).join('\n');
264
264
  const response = await this.llmRouter.chat({
265
265
  model: this.getModelForTier(this.config.llmModelTier),
266
266
  messages: [{
@@ -624,7 +624,7 @@ Provide:
624
624
  }
625
625
  catch (error) {
626
626
  return err(new Error(`Failed to parse test output for ${file}: ${toErrorMessage(error)}\n` +
627
- `stdout: ${stdout.slice(0, 500)}\nstderr: ${stderr.slice(0, 500)}`));
627
+ `stdout: ${capDiagnostics(stdout, 500)}\nstderr: ${capDiagnostics(stderr, 500)}`));
628
628
  }
629
629
  }
630
630
  /**
@@ -880,7 +880,7 @@ Provide:
880
880
  ];
881
881
  for (const indicator of errorMessages) {
882
882
  if (combinedOutput.includes(indicator)) {
883
- return err(new Error(`Test execution failed for ${file} (exit code ${exitCode}):\n${combinedOutput.slice(0, 1000)}`));
883
+ return err(new Error(`Test execution failed for ${file} (exit code ${exitCode}):\n${capDiagnostics(combinedOutput, 1000)}`));
884
884
  }
885
885
  }
886
886
  }
@@ -894,7 +894,7 @@ Provide:
894
894
  }
895
895
  // Could not parse output - return error with details
896
896
  return err(new Error(`Unable to parse test results for ${file}. Exit code: ${exitCode}\n` +
897
- `Output: ${combinedOutput.slice(0, 500)}`));
897
+ `Output: ${capDiagnostics(combinedOutput, 500)}`));
898
898
  }
899
899
  /**
900
900
  * Create generic failure entries when we know tests failed but can't parse details
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { LoggerFactory } from '../../logging/index.js';
11
11
  import { v4 as uuidv4 } from 'uuid';
12
- import { readFile } from 'node:fs/promises';
12
+ import { readConfinedText } from '../../shared/io/confined-read.js';
13
13
  import { ok, err, } from '../../shared/types/index.js';
14
14
  import { toError } from '../../shared/error-utils.js';
15
15
  // Opt-in free-tier local test generation (cross-pollination plan 06, D7-wire/D8/D9).
@@ -425,7 +425,7 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
425
425
  return null;
426
426
  let code = '';
427
427
  try {
428
- code = await readFile(src, 'utf8');
428
+ code = await readConfinedText(src, { outsideRoot: 'allow' }); // #1161
429
429
  }
430
430
  catch {
431
431
  return null; // unreadable → fall back
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { err } from '../../shared/types/index.js';
6
6
  import { BaseDomainPlugin } from '../domain-interface.js';
7
+ import { MAX_PAYLOAD_FILE_BYTES, requirePayloadFiles } from '../../shared/io/payload-path-guard.js';
7
8
  import { TestGenerationCoordinator, } from './coordinator.js';
8
9
  // D9: live routing-feedback so free-tier outcomes lift routing confidence.
9
10
  import { RoutingFeedbackCollector } from '../../routing/routing-feedback.js';
@@ -73,12 +74,16 @@ export class TestGenerationPlugin extends BaseDomainPlugin {
73
74
  if (!this.coordinator) {
74
75
  return err(new Error('Coordinator not initialized'));
75
76
  }
76
- const sourceFiles = payload.sourceFiles;
77
77
  const testType = payload.testType;
78
78
  const framework = payload.framework;
79
- if (!sourceFiles || sourceFiles.length === 0) {
79
+ if (!Array.isArray(payload.sourceFiles) || payload.sourceFiles.length === 0) {
80
80
  return err(new Error('Invalid generate-tests payload: missing sourceFiles'));
81
81
  }
82
+ // #1126: the generator reads each file whole, so only project files.
83
+ const confined = await requirePayloadFiles('generate-tests', 'sourceFiles', payload.sourceFiles, { maxBytes: MAX_PAYLOAD_FILE_BYTES });
84
+ if (!confined.success)
85
+ return confined;
86
+ const sourceFiles = confined.value;
82
87
  const request = {
83
88
  sourceFiles,
84
89
  testType: testType ?? 'unit',
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { v4 as uuidv4 } from 'uuid';
9
9
  import ts from 'typescript';
10
- import * as fs from 'fs';
10
+ import { readConfinedTextSync } from '../../../shared/io/confined-read.js';
11
11
  import * as path from 'path';
12
12
  import { ok, err } from '../../../shared/types/index.js';
13
13
  import { NomicEmbedder, EMBEDDING_CONFIG } from '../../../shared/embeddings/index.js';
@@ -45,7 +45,7 @@ export class PatternMatcherService {
45
45
  // Read file content
46
46
  let content;
47
47
  try {
48
- content = fs.readFileSync(filePath, 'utf-8');
48
+ content = readConfinedTextSync(filePath, { outsideRoot: 'allow' }); // #1161
49
49
  }
50
50
  catch {
51
51
  return err(new Error(`Cannot read file: ${filePath}`));
@@ -737,7 +737,7 @@ export class PatternMatcherService {
737
737
  // Read the file content
738
738
  let content;
739
739
  try {
740
- content = fs.readFileSync(file, 'utf-8');
740
+ content = readConfinedTextSync(file, { outsideRoot: 'allow' }); // #1161
741
741
  }
742
742
  catch {
743
743
  // File doesn't exist or can't be read, return empty
@@ -1068,7 +1068,7 @@ class TypeScriptASTParser {
1068
1068
  this.sourceCode = content;
1069
1069
  }
1070
1070
  else {
1071
- this.sourceCode = fs.readFileSync(filePath, 'utf-8');
1071
+ this.sourceCode = readConfinedTextSync(filePath, { outsideRoot: 'allow' }); // #1161
1072
1072
  }
1073
1073
  this.sourceFile = ts.createSourceFile(path.basename(filePath), this.sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
1074
1074
  return this.sourceFile;
@@ -230,7 +230,9 @@ export class TestDataGeneratorService {
230
230
  const parts = methodPath.split('.');
231
231
  let result = f;
232
232
  for (const part of parts) {
233
- if (result && typeof result === 'object' && part in result) {
233
+ // #1136: a member every object inherits (`constructor`, `toString`)
234
+ // is not a faker method.
235
+ if (result && typeof result === 'object' && part in result && !(part in Object.prototype)) {
234
236
  const next = result[part];
235
237
  if (typeof next === 'function') {
236
238
  result = next();
@@ -10,7 +10,7 @@ import { generateBehaviorExamples } from './behavior-examples.js';
10
10
  import { validateBehaviorExamples } from './behavior-example-validation.js';
11
11
  import { LoggerFactory } from '../../../logging/index.js';
12
12
  import { v4 as uuidv4 } from 'uuid';
13
- import * as fs from 'fs';
13
+ import { readConfinedTextSync } from '../../../shared/io/confined-read.js';
14
14
  import * as path from 'path';
15
15
  import ts from 'typescript';
16
16
  import { ok, err } from '../../../shared/types/index.js';
@@ -445,7 +445,7 @@ Return a JSON array of test suggestions, each with: { "name": "test name", "desc
445
445
  let codeAnalysis = null;
446
446
  let sourceContent = '';
447
447
  try {
448
- sourceContent = fs.readFileSync(sourceFile, 'utf-8');
448
+ sourceContent = readConfinedTextSync(sourceFile, { outsideRoot: 'allow' }); // #1161
449
449
  codeAnalysis = await this.analyzeSourceCode(sourceContent, sourceFile);
450
450
  }
451
451
  catch {
@@ -85,7 +85,7 @@ export class AccessibilityAuditor {
85
85
  // Check for vibium
86
86
  try {
87
87
  await loadVibium();
88
- this.toolsAvailable.vibium = isVibiumReady();
88
+ this.toolsAvailable.vibium = await isVibiumReady();
89
89
  }
90
90
  catch {
91
91
  this.toolsAvailable.vibium = false;
@@ -19,6 +19,7 @@
19
19
  import { governanceFlags } from './feature-flags.js';
20
20
  import { getUnifiedMemory } from '../kernel/unified-memory.js';
21
21
  import { toErrorMessage } from '../shared/error-utils.js';
22
+ import { createSafeRecord } from '../shared/utils/safe-record.js';
22
23
  // ============================================================================
23
24
  // Feature Flag Helpers
24
25
  // ============================================================================
@@ -799,7 +800,8 @@ export class EvolutionPipelineIntegration {
799
800
  * Group array by key function
800
801
  */
801
802
  groupBy(array, keyFn) {
802
- const groups = {};
803
+ // #1157: keys come from recorded rule applications.
804
+ const groups = createSafeRecord();
803
805
  for (const item of array) {
804
806
  const key = keyFn(item);
805
807
  if (!groups[key]) {
@@ -12,6 +12,7 @@ import { join } from 'path';
12
12
  import { parse as parseYaml } from 'yaml';
13
13
  import { getCrossPhaseMemory, } from '../memory/cross-phase-memory.js';
14
14
  import { captureHooksConfigSnapshot, validateHookUrl, classifyHookExit, } from './security/index.js';
15
+ import { createSafeRecord } from '../shared/utils/safe-record.js';
15
16
  // =============================================================================
16
17
  // Hook Executor
17
18
  // =============================================================================
@@ -79,7 +80,8 @@ export class CrossPhaseHookExecutor {
79
80
  // IMP-07: Runtime kill-switch check
80
81
  if (process.env.AQE_HOOKS_DISABLED === 'true')
81
82
  return {};
82
- const injectedSignals = {};
83
+ // #1157: agent names come from the hooks YAML file.
84
+ const injectedSignals = createSafeRecord();
83
85
  const matchingHooks = this.filterManagedHooks(Object.entries(this.config.hooks).filter(([_, hook]) => hook.trigger.event === 'phase-start' &&
84
86
  hook.trigger.phase === phaseName));
85
87
  for (const [hookName, hook] of matchingHooks) {
@@ -332,7 +334,8 @@ export class CrossPhaseHookExecutor {
332
334
  }
333
335
  getValueFromPath(obj, path) {
334
336
  return path.split('.').reduce((curr, key) => {
335
- if (curr && typeof curr === 'object' && key in curr) {
337
+ // #1136: own properties only.
338
+ if (curr && typeof curr === 'object' && Object.hasOwn(curr, key)) {
336
339
  return curr[key];
337
340
  }
338
341
  return undefined;