agentic-qe 3.15.9 → 3.15.10

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 (568) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +251 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
  5. package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
  6. package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
  7. package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
  8. package/dist/adapters/ag-ui/json-patch.js +10 -6
  9. package/dist/audit/witness-chain.d.ts +1 -1
  10. package/dist/cli/bundle.js +6 -6
  11. package/dist/cli/chunks/adapter-TR5SLAZC.js +2 -0
  12. package/dist/cli/chunks/agent-booster-wasm-H7ANGXW4.js +2 -0
  13. package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-SVXSHEET.js} +2 -2
  14. package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-WKQH36XL.js} +2 -2
  15. package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +2 -0
  16. package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-EKOOFVST.js} +2 -2
  17. package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-OPS36NFZ.js} +4 -4
  18. package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-AO5NDZRI.js} +3 -3
  19. package/dist/cli/chunks/base-GTB6POYE.js +2 -0
  20. package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-TFLVEMMY.js} +2 -2
  21. package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-ADBBJPYW.js} +3 -3
  22. package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-HGHUYYL5.js} +2 -2
  23. package/dist/cli/chunks/browser-5LU6P4SZ.js +4 -0
  24. package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +2 -0
  25. package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-2SXBBUM6.js} +2 -2
  26. package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-2T7RRL6G.js} +1 -1
  27. package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-2XGVTYVX.js} +2 -2
  28. package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-2ZI5FKSF.js} +2 -2
  29. package/dist/cli/chunks/chunk-2ZMF4NCF.js +4 -0
  30. package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-37OWRCUN.js} +1 -1
  31. package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-3P34JFQH.js} +4 -4
  32. package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-3Y7SPD72.js} +2 -2
  33. package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-4G63WT4F.js} +2 -2
  34. package/dist/cli/chunks/chunk-4SJYIX54.js +3 -0
  35. package/dist/cli/chunks/chunk-5E6GHSTY.js +3 -0
  36. package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-5LPYV3TK.js} +1 -1
  37. package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-62OAY5KJ.js} +1 -1
  38. package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-6C3II5OM.js} +2 -2
  39. package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-6GP6W46M.js} +2 -2
  40. package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-6KIL6CMD.js} +2 -2
  41. package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-6MVVSSID.js} +1 -1
  42. package/dist/cli/chunks/{chunk-JEP4ULR6.js → chunk-6P7424AO.js} +2 -2
  43. package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-6PX4OXQO.js} +2 -2
  44. package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-6S3WJGUV.js} +2 -2
  45. package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-6TB6YOCZ.js} +1 -1
  46. package/dist/cli/chunks/{chunk-VU2EL424.js → chunk-6X5DHU6Q.js} +1 -1
  47. package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-6XCMKIZN.js} +1 -1
  48. package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-7LFZ4CHM.js} +2 -2
  49. package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-7OZVZIBE.js} +2 -2
  50. package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-7PJIR4ST.js} +2 -2
  51. package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-7TB6FK4B.js} +1 -1
  52. package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-7ZCDZHDB.js} +2 -2
  53. package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-A55QKKT2.js} +2 -2
  54. package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ABFFWZPC.js} +428 -433
  55. package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-ACWFKES2.js} +2 -2
  56. package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-AH3ZD3NJ.js} +2 -2
  57. package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-AI4VYSFS.js} +2 -2
  58. package/dist/cli/chunks/chunk-APSRPR4W.js +2 -0
  59. package/dist/cli/chunks/chunk-ATHWDAXB.js +3 -0
  60. package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-B6LTH6YV.js} +2 -2
  61. package/dist/cli/chunks/chunk-BQUAE3CP.js +3 -0
  62. package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-C522H7XR.js} +54 -33
  63. package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-CESIR27V.js} +2 -2
  64. package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-CFBEBXLO.js} +3 -3
  65. package/dist/cli/chunks/{chunk-FJ4VTLLK.js → chunk-CMBLM26R.js} +2 -2
  66. package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-CZ2IF6MC.js} +1 -1
  67. package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-CZGOSJQ4.js} +2 -2
  68. package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-D6DA2KFD.js} +2 -2
  69. package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-DBMNJSBV.js} +1 -1
  70. package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-DE4YJQJF.js} +2 -2
  71. package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-DEF34AFL.js} +2 -2
  72. package/dist/cli/chunks/chunk-DKAC3E3B.js +3 -0
  73. package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-DMFTELBS.js} +2 -2
  74. package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-DNRWGATA.js} +10 -10
  75. package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-DT7SIJOA.js} +2 -2
  76. package/dist/cli/chunks/{chunk-6PXA2BQJ.js → chunk-DURHK377.js} +67 -67
  77. package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EAU5KDFO.js} +1 -1
  78. package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-EDLFX4ZB.js} +2 -2
  79. package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-EN2QSKFF.js} +2 -2
  80. package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-ERQKYIP7.js} +2 -2
  81. package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-ESUO3GTJ.js} +2 -2
  82. package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EWFECZ2U.js} +2 -2
  83. package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-FAUCT5KR.js} +3 -3
  84. package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-FB6TI3BH.js} +2 -2
  85. package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-FBXTQNRH.js} +2 -2
  86. package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-FESZBPUB.js} +2 -2
  87. package/dist/cli/chunks/chunk-FFTPAWM6.js +141 -0
  88. package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-FKL3R5JQ.js} +2 -2
  89. package/dist/cli/chunks/{chunk-N5PDFGCQ.js → chunk-FPUDRSFJ.js} +2 -2
  90. package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-FZOWULMH.js} +1 -1
  91. package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-G3CZCUPM.js} +2 -2
  92. package/dist/cli/chunks/{chunk-FV3NHVC7.js → chunk-G5I6KGMW.js} +3 -3
  93. package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-GHBNRMSJ.js} +2 -2
  94. package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GJHWY3ZX.js} +2 -2
  95. package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-GJMLK5UT.js} +2 -2
  96. package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-GRCIBCJ2.js} +2 -2
  97. package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-GWZZ7DAO.js} +2 -2
  98. package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-GZLZCZ42.js} +2 -2
  99. package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-H2PYU7MN.js} +1 -1
  100. package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-H32EPIR2.js} +1 -1
  101. package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-H74Q7TJN.js} +1 -1
  102. package/dist/cli/chunks/chunk-HOZUDE4C.js +2 -0
  103. package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-I33O4BRQ.js} +2 -2
  104. package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-IKISCIGH.js} +2 -2
  105. package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-IPJ7Q3AJ.js} +1 -1
  106. package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-IU2IV4NE.js} +1 -1
  107. package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-JHIY4VCC.js} +2 -2
  108. package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-KG336OV3.js} +2 -2
  109. package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-KI73QCR5.js} +2 -2
  110. package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-KNQ2ERFX.js} +2 -2
  111. package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-KOBVYY6H.js} +2 -2
  112. package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-KSIWGGJI.js} +8 -8
  113. package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LMS3Y7JD.js} +2 -2
  114. package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-LQEURY7C.js} +1 -1
  115. package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-LRZY4KS2.js} +2 -2
  116. package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-M2QV7PT7.js} +2 -2
  117. package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-MA7JIQ6U.js} +2 -2
  118. package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-MG27QY4D.js} +2 -2
  119. package/dist/cli/chunks/chunk-MNN5J4GU.js +12 -0
  120. package/dist/cli/chunks/chunk-N6PIIK6G.js +3 -0
  121. package/dist/cli/chunks/chunk-NAXGWDVM.js +12 -0
  122. package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-NGKNYIQZ.js} +1 -1
  123. package/dist/cli/chunks/chunk-NNFZUTDH.js +2 -0
  124. package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-NPPHWFA2.js} +3 -3
  125. package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-NSHU347M.js} +1 -1
  126. package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-NVYIZCSR.js} +2 -2
  127. package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-NW5JUCCG.js} +1 -1
  128. package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-NZYLNXT6.js} +3 -3
  129. package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-OBAREPDC.js} +2 -2
  130. package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-ODJNUMV3.js} +2 -2
  131. package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-OEKP73MC.js} +2 -2
  132. package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-OPFGRS5S.js} +2 -2
  133. package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-OY2AHLSF.js} +1 -1
  134. package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-OY3NJNP2.js} +1 -1
  135. package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-PCEW6Q2C.js} +1 -1
  136. package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-PFG6VQ5Z.js} +2 -2
  137. package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-PGYMKGOE.js} +2 -2
  138. package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-PPSAMXYN.js} +3 -3
  139. package/dist/cli/chunks/chunk-RK73HB2F.js +2 -0
  140. package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-RPHY2DU6.js} +2 -2
  141. package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-RWWOHCMG.js} +25 -20
  142. package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-S75EYIJG.js} +1 -1
  143. package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-SKQUUE4F.js} +5 -5
  144. package/dist/cli/chunks/chunk-SO45NA4D.js +180 -0
  145. package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-SU5H66SD.js} +2 -2
  146. package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-SY2IB442.js} +2 -2
  147. package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-TBLI254A.js} +2 -2
  148. package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-TNMBRDCA.js} +3 -3
  149. package/dist/cli/chunks/{chunk-P2CXVNKK.js → chunk-TYFZXDGZ.js} +2 -2
  150. package/dist/cli/chunks/{chunk-2XITOPYV.js → chunk-U4OICXV2.js} +2 -2
  151. package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-U53ZB4IX.js} +2 -2
  152. package/dist/cli/chunks/chunk-UARKIZAS.js +2 -0
  153. package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-UCJMVXO4.js} +2 -2
  154. package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-UHTTW3IT.js} +2 -2
  155. package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-V2M2XCR5.js} +1 -1
  156. package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-V2RSNVMW.js} +1 -1
  157. package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-V6JBOIMX.js} +1 -1
  158. package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-VFKF2XO7.js} +1 -1
  159. package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-VFSYMOAL.js} +2 -2
  160. package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-VJQYDYAJ.js} +2 -2
  161. package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-VKRTTFB6.js} +2 -2
  162. package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-VWNFAW2M.js} +2 -2
  163. package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-WBM6N6IM.js} +1 -1
  164. package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-WDQ7IEZY.js} +2 -2
  165. package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-WDVRE6GN.js} +2 -2
  166. package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-WQ4PYWSW.js} +1 -1
  167. package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-WSF24I3D.js} +2 -2
  168. package/dist/cli/chunks/{chunk-6YL6JOQB.js → chunk-XBVUVFJK.js} +2 -2
  169. package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-XEB3NLJR.js} +2 -2
  170. package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-XFVTGAAJ.js} +2 -2
  171. package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-XLZYRTNO.js} +2 -2
  172. package/dist/cli/chunks/{chunk-AR2E4B7K.js → chunk-XUZDBQ5X.js} +5 -5
  173. package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-Y76IAYQD.js} +1 -1
  174. package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-YAKGBHO4.js} +2 -2
  175. package/dist/cli/chunks/{chunk-JK2ME6IT.js → chunk-YBSBABOS.js} +2 -2
  176. package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-YCGP5VFP.js} +2 -2
  177. package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-YDAQK5UF.js} +1 -1
  178. package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-YK3BVZY6.js} +2 -2
  179. package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-YK7JN5N7.js} +4 -4
  180. package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-YKMU4LBV.js} +1 -1
  181. package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-YYTGXD3R.js} +2 -2
  182. package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-Z2O2YJAF.js} +2 -2
  183. package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-Z7IYW5U7.js} +1 -1
  184. package/dist/cli/chunks/{chunk-XZJ2O3VC.js → chunk-ZG5666GJ.js} +1 -1
  185. package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-ZXPY654C.js} +1 -1
  186. package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-MSKMVH5X.js} +2 -2
  187. package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-7ODMNAUM.js} +2 -2
  188. package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-FXZ7ZZW3.js} +2 -2
  189. package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-4VOUEPOX.js} +2 -2
  190. package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-7D4SGLM4.js} +2 -2
  191. package/dist/cli/chunks/client-POSVREVS.js +2 -0
  192. package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-WRRT7BGQ.js} +2 -2
  193. package/dist/cli/chunks/{code-ONKLMVQ2.js → code-ZDJRIL3S.js} +3 -3
  194. package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4S4SHM56.js} +2 -2
  195. package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-YTRHNDWR.js} +2 -2
  196. package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-6N64JUXJ.js} +2 -2
  197. package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-I4A26VCJ.js} +2 -2
  198. package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-IIDR66LB.js} +2 -2
  199. package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-SVVFY3S2.js} +2 -2
  200. package/dist/cli/chunks/core-handlers-V243GY7X.js +2 -0
  201. package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-VGFS6IBX.js} +2 -2
  202. package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B7MCGNTE.js} +3 -3
  203. package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +2 -0
  204. package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-UPETT57E.js} +2 -2
  205. package/dist/cli/chunks/daemon-7BDJHEIJ.js +18 -0
  206. package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-CQFNZLXU.js} +3 -3
  207. package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-PJVABHON.js} +2 -2
  208. package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-56SKAGWX.js} +2 -2
  209. package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-UYTYUMLN.js} +2 -2
  210. package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-YOYLBYJE.js} +2 -2
  211. package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-7TARX2XF.js} +2 -2
  212. package/dist/cli/chunks/domain-transfer-AKVSBD6E.js +2 -0
  213. package/dist/cli/chunks/dream-UA7MKOPQ.js +2 -0
  214. package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-IS6HSR66.js} +2 -2
  215. package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-GNB574IM.js} +2 -2
  216. package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-RCAOCKM7.js} +3 -3
  217. package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-KTZ5SF54.js} +2 -2
  218. package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-ITX5LQ57.js} +2 -2
  219. package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-KFHSR5YF.js} +2 -2
  220. package/dist/cli/chunks/file-discovery-YCMNKZAK.js +2 -0
  221. package/dist/cli/chunks/fleet-2Y3ZE6CE.js +46 -0
  222. package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-RLFW3GSX.js} +2 -2
  223. package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-EM2URCYZ.js} +4 -4
  224. package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +2 -0
  225. package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +2 -0
  226. package/dist/cli/chunks/hnsw-index-DFUNARVD.js +2 -0
  227. package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-JMHEOIBH.js} +2 -2
  228. package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-CBP73QHY.js} +2 -2
  229. package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-IP7XE34Z.js} +34 -34
  230. package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +2 -0
  231. package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-ONAYHU25.js} +2 -2
  232. package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-VINJRAID.js} +3 -3
  233. package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +2 -0
  234. package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-RYVV5R3Z.js} +2 -2
  235. package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-MPRGWMOE.js} +6 -6
  236. package/dist/cli/chunks/init-wizard-NIMZ4J55.js +2 -0
  237. package/dist/cli/chunks/kernel-JQK7PRAI.js +2 -0
  238. package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-OPD7JBRL.js} +2 -2
  239. package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-M4OPUNK2.js} +2 -2
  240. package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +2 -0
  241. package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-4UWTQLMF.js} +24 -24
  242. package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-SQ56FF6Z.js} +4 -4
  243. package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +2 -0
  244. package/dist/cli/chunks/{load-ZM43WGDO.js → load-HPHKDGGL.js} +2 -2
  245. package/dist/cli/chunks/load-test-UKNV5MWW.js +2 -0
  246. package/dist/cli/chunks/mcp-TELMAC7Z.js +2 -0
  247. package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-PFQ3KPVJ.js} +5 -5
  248. package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +2 -0
  249. package/dist/cli/chunks/memory-handlers-FCXN437E.js +2 -0
  250. package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-3VDRX6TZ.js} +2 -2
  251. package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-PJ576R63.js} +2 -2
  252. package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-72QP4UU7.js} +63 -19
  253. package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +2 -0
  254. package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-754YQW7C.js} +2 -2
  255. package/dist/cli/chunks/pipeline-AVXY4MVB.js +19 -0
  256. package/dist/cli/chunks/{platform-KJDABL5C.js → platform-3E3DXLYB.js} +2 -2
  257. package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-7FUQAKRE.js} +2 -2
  258. package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-NIB4F5NV.js} +2 -2
  259. package/dist/cli/chunks/project-root-JCAUNL6O.js +2 -0
  260. package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +2 -0
  261. package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-BQRYMUTG.js} +2 -2
  262. package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-H52QGC6B.js} +2 -2
  263. package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +2 -0
  264. package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-QO4XPAUM.js} +2 -2
  265. package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-FBKE5E6F.js} +3 -3
  266. package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +2 -0
  267. package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RWGOVOXO.js} +2 -2
  268. package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-LF76ZOBD.js} +2 -2
  269. package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-3BYEBTQ7.js} +2 -2
  270. package/dist/cli/chunks/router-3DIS5X4R.js +2 -0
  271. package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +2 -0
  272. package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-DST7BVCU.js} +2 -2
  273. package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-XE32PGKC.js} +2 -2
  274. package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +2 -0
  275. package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +2 -0
  276. package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-VP32XC75.js} +2 -2
  277. package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +2 -0
  278. package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-SH2AMVI7.js} +2 -2
  279. package/dist/cli/chunks/safe-db-EVB4ZC7T.js +2 -0
  280. package/dist/cli/chunks/schedule-ORDDXXY4.js +2 -0
  281. package/dist/cli/chunks/scheduler-XFLJSFIU.js +2 -0
  282. package/dist/cli/chunks/{security-AUDTRX3I.js → security-VSPNKCDS.js} +3 -3
  283. package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-HX6AHL3P.js} +2 -2
  284. package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-MX4FC2JE.js} +2 -2
  285. package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +2 -0
  286. package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-O4QUTK6L.js} +2 -2
  287. package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-Z2BP6EOG.js} +2 -2
  288. package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-R36WNLQG.js} +2 -2
  289. package/dist/cli/chunks/sync-2ELWUFQU.js +2 -0
  290. package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-QF5Y3EMZ.js} +2 -2
  291. package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-43PYE75J.js} +2 -2
  292. package/dist/cli/chunks/task-handlers-KPWAEMKH.js +9 -0
  293. package/dist/cli/chunks/{test-XFSGQELD.js → test-UWA377D4.js} +16 -16
  294. package/dist/cli/chunks/test-runner-process-3XZUYST2.js +2 -0
  295. package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-YQZPJRRN.js} +3 -3
  296. package/dist/cli/chunks/token-bootstrap-F7C6UKTC.js +2 -0
  297. package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-DO6WLMXP.js} +2 -2
  298. package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-H5RGFKVO.js} +2 -2
  299. package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +2 -0
  300. package/dist/cli/chunks/{types-JTWLBAZJ.js → types-PJS2FGPF.js} +2 -2
  301. package/dist/cli/chunks/unified-memory-EHD4VNFW.js +2 -0
  302. package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +2 -0
  303. package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +2 -0
  304. package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-4IC4F6AB.js} +2 -2
  305. package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-DHUWW7PF.js} +2 -2
  306. package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-OERQNOX5.js} +2 -2
  307. package/dist/cli/chunks/visual-security-54MLFKWY.js +2 -0
  308. package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-TV7DMKES.js} +2 -2
  309. package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-QZPWSH37.js} +2 -2
  310. package/dist/cli/chunks/witness-chain-LC6Q2W27.js +2 -0
  311. package/dist/cli/chunks/witness-chain-QUIBAF3W.js +2 -0
  312. package/dist/cli/chunks/witness-chain-repair-RUXIOE7F.js +2 -0
  313. package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-YXENHB42.js} +2 -2
  314. package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-HL26AGFO.js} +2 -2
  315. package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-EOVVCN2E.js} +4 -4
  316. package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +2 -0
  317. package/dist/cli/chunks/wrappers-AGODHBOO.js +2 -0
  318. package/dist/cli/commands/fleet.js +19 -12
  319. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
  320. package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
  321. package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
  322. package/dist/cli/commands/learning.js +5 -3
  323. package/dist/cli/commands/ruvector-commands.js +2 -1
  324. package/dist/cli/commands/test.js +6 -0
  325. package/dist/cli/utils/ci-output.d.ts +9 -0
  326. package/dist/cli/utils/fleet-operation.d.ts +32 -0
  327. package/dist/cli/utils/fleet-operation.js +71 -0
  328. package/dist/cli/utils/fleet-result.d.ts +31 -0
  329. package/dist/cli/utils/fleet-result.js +124 -0
  330. package/dist/context/sources/git-source.js +6 -2
  331. package/dist/coordination/handlers/code-intelligence-handlers.js +60 -5
  332. package/dist/coordination/handlers/coverage-handlers.js +10 -1
  333. package/dist/coordination/handlers/requirements-handlers.js +16 -2
  334. package/dist/coordination/handlers/security-handlers.js +11 -1
  335. package/dist/coordination/handlers/test-execution-handlers.js +25 -7
  336. package/dist/coordination/mincut/queen-integration.d.ts +39 -1
  337. package/dist/coordination/mincut/queen-integration.js +83 -6
  338. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
  339. package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
  340. package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
  341. package/dist/coordination/protocols/learning-consolidation.js +71 -22
  342. package/dist/coordination/queen-coordinator.d.ts +1 -1
  343. package/dist/coordination/queen-coordinator.js +19 -7
  344. package/dist/coordination/queen-event-handlers.js +13 -0
  345. package/dist/coordination/queen-task-management.d.ts +18 -24
  346. package/dist/coordination/queen-task-management.js +62 -168
  347. package/dist/coordination/queen-task-queue.d.ts +41 -0
  348. package/dist/coordination/queen-task-queue.js +194 -0
  349. package/dist/coordination/queen-types.d.ts +1 -1
  350. package/dist/coordination/queen-work-stealing.d.ts +6 -1
  351. package/dist/coordination/queen-work-stealing.js +7 -4
  352. package/dist/coordination/result-saver-adapters.d.ts +15 -0
  353. package/dist/coordination/result-saver-adapters.js +57 -0
  354. package/dist/coordination/result-saver.d.ts +1 -1
  355. package/dist/coordination/result-saver.js +8 -5
  356. package/dist/coordination/yaml-pipeline-loader.js +5 -2
  357. package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
  358. package/dist/domains/code-intelligence/index-path-guard.js +20 -50
  359. package/dist/domains/code-intelligence/plugin.js +5 -1
  360. package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
  361. package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
  362. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
  363. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
  364. package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
  365. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
  366. package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
  367. package/dist/domains/contract-testing/services/contract-validator.js +6 -4
  368. package/dist/domains/contract-testing/services/schema-validator.js +8 -5
  369. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  370. package/dist/domains/defect-intelligence/plugin.js +11 -2
  371. package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
  372. package/dist/domains/defect-intelligence/prediction-history.js +68 -0
  373. package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
  374. package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
  375. package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
  376. package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
  377. package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
  378. package/dist/domains/learning-optimization/active-patterns.js +2 -2
  379. package/dist/domains/learning-optimization/coordinator.js +9 -5
  380. package/dist/domains/learning-optimization/interfaces.d.ts +6 -2
  381. package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
  382. package/dist/domains/learning-optimization/pattern-archive.js +56 -0
  383. package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
  384. package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
  385. package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
  386. package/dist/domains/learning-optimization/reward-source.js +8 -1
  387. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
  388. package/dist/domains/learning-optimization/services/learning-coordinator.js +45 -58
  389. package/dist/domains/security-compliance/plugin.js +17 -3
  390. package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
  391. package/dist/domains/security-compliance/sast-path-guard.js +17 -0
  392. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
  393. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
  394. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
  395. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
  396. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
  397. package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
  398. package/dist/domains/test-execution/coordinator.d.ts +5 -0
  399. package/dist/domains/test-execution/coordinator.js +35 -20
  400. package/dist/domains/test-execution/interfaces.d.ts +25 -0
  401. package/dist/domains/test-execution/plugin.js +19 -4
  402. package/dist/domains/test-execution/services/flaky-detector.js +9 -7
  403. package/dist/domains/test-execution/services/retry-handler.js +46 -7
  404. package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
  405. package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
  406. package/dist/domains/test-execution/services/test-executor.js +8 -8
  407. package/dist/domains/test-generation/plugin.js +7 -2
  408. package/dist/domains/test-generation/services/test-data-generator.js +3 -1
  409. package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
  410. package/dist/hooks/cross-phase-hooks.js +2 -1
  411. package/dist/init/phases/10-workers.js +50 -6
  412. package/dist/integrations/browser/agent-browser/client.js +37 -52
  413. package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
  414. package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
  415. package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
  416. package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
  417. package/dist/integrations/browser/web-content-fetcher.js +9 -3
  418. package/dist/integrations/vibium/client.js +2 -2
  419. package/dist/integrations/vibium/runtime.d.ts +1 -1
  420. package/dist/integrations/vibium/runtime.js +14 -11
  421. package/dist/kernel/unified-memory-schemas.d.ts +3 -2
  422. package/dist/kernel/unified-memory-schemas.js +3 -2
  423. package/dist/kernel/unified-memory.js +25 -6
  424. package/dist/learning/dream/dream-commit.d.ts +65 -0
  425. package/dist/learning/dream/dream-commit.js +104 -0
  426. package/dist/learning/dream/dream-engine.d.ts +81 -31
  427. package/dist/learning/dream/dream-engine.js +225 -168
  428. package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
  429. package/dist/learning/dream/dream-insights-pruner.js +16 -30
  430. package/dist/learning/dream/index.d.ts +3 -2
  431. package/dist/learning/dream/index.js +3 -1
  432. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
  433. package/dist/learning/dream/rvcow-branch-manager.js +8 -1
  434. package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
  435. package/dist/learning/dream/speculative-dreamer.js +64 -111
  436. package/dist/learning/dream/spreading-activation.d.ts +2 -1
  437. package/dist/learning/dream/spreading-activation.js +15 -6
  438. package/dist/learning/experience-capture.d.ts +9 -0
  439. package/dist/learning/experience-capture.js +18 -4
  440. package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
  441. package/dist/learning/qe-reasoning-bank.js +22 -11
  442. package/dist/learning/sqlite-persistence.d.ts +6 -0
  443. package/dist/learning/sqlite-persistence.js +16 -2
  444. package/dist/learning/usage-outcome.d.ts +68 -0
  445. package/dist/learning/usage-outcome.js +84 -0
  446. package/dist/mcp/background-workers.d.ts +13 -1
  447. package/dist/mcp/background-workers.js +17 -3
  448. package/dist/mcp/bundle.js +607 -580
  449. package/dist/mcp/handlers/core-handlers.js +11 -0
  450. package/dist/mcp/handlers/domain-handler-configs.d.ts +5 -0
  451. package/dist/mcp/handlers/domain-handler-configs.js +11 -3
  452. package/dist/mcp/handlers/handler-factory.d.ts +2 -1
  453. package/dist/mcp/handlers/handler-factory.js +36 -15
  454. package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
  455. package/dist/mcp/handlers/orchestrate-routes.js +88 -0
  456. package/dist/mcp/handlers/task-handlers.d.ts +3 -0
  457. package/dist/mcp/handlers/task-handlers.js +35 -8
  458. package/dist/mcp/handlers/validation-pipeline-handler.js +6 -2
  459. package/dist/mcp/protocol-server.js +2 -0
  460. package/dist/mcp/security/schema-validator.js +3 -2
  461. package/dist/mcp/tools/code-intelligence/c4.js +11 -1
  462. package/dist/mcp/tools/coverage-analysis/index.js +31 -2
  463. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
  464. package/dist/mcp/tools/learning-optimization/dream.js +38 -34
  465. package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
  466. package/dist/mcp/tools/learning-optimization/optimize.js +58 -10
  467. package/dist/mcp/tools/quality-assessment/gate.js +12 -1
  468. package/dist/mcp/tools/requirements-validation/quality-criteria.js +9 -2
  469. package/dist/migration/agent-compat.js +7 -5
  470. package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
  471. package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
  472. package/dist/shared/git/git-analyzer.d.ts +49 -0
  473. package/dist/shared/git/git-analyzer.js +159 -319
  474. package/dist/shared/git/git-process.d.ts +22 -0
  475. package/dist/shared/git/git-process.js +37 -0
  476. package/dist/shared/git/index.d.ts +1 -0
  477. package/dist/shared/git/index.js +1 -0
  478. package/dist/shared/io/payload-path-guard.d.ts +75 -0
  479. package/dist/shared/io/payload-path-guard.js +190 -0
  480. package/dist/shared/llm/router/agent-router-config.js +2 -1
  481. package/dist/shared/llm/translation/tool-translator.js +2 -1
  482. package/dist/shared/test-runner-args.d.ts +5 -0
  483. package/dist/shared/test-runner-args.js +6 -1
  484. package/dist/shared/test-runner-process.d.ts +6 -0
  485. package/dist/shared/test-runner-process.js +14 -0
  486. package/dist/shared/test-runner-verdict.d.ts +9 -1
  487. package/dist/shared/test-runner-verdict.js +15 -4
  488. package/dist/shared/utils/namespaced-search.d.ts +14 -0
  489. package/dist/shared/utils/namespaced-search.js +19 -1
  490. package/dist/shared/utils/safe-expression-evaluator.js +4 -3
  491. package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
  492. package/dist/validation/gate-reexecute.js +7 -4
  493. package/dist/workers/daemon.js +13 -1
  494. package/dist/workers/quality-daemon/git-watcher.js +9 -9
  495. package/dist/workers/workers/defect-predictor.d.ts +8 -3
  496. package/dist/workers/workers/defect-predictor.js +48 -49
  497. package/dist/workers/workers/learning-consolidation.d.ts +2 -0
  498. package/dist/workers/workers/learning-consolidation.js +12 -1
  499. package/dist/workflows/browser/workflow-loader.js +8 -5
  500. package/package.json +1 -1
  501. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
  502. package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
  503. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
  504. package/dist/cli/chunks/base-67DXSAYM.js +0 -2
  505. package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
  506. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
  507. package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
  508. package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
  509. package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
  510. package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
  511. package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
  512. package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
  513. package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
  514. package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
  515. package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
  516. package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
  517. package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
  518. package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
  519. package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
  520. package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
  521. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
  522. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
  523. package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
  524. package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
  525. package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
  526. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
  527. package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
  528. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
  529. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
  530. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
  531. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
  532. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
  533. package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
  534. package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
  535. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
  536. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
  537. package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
  538. package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
  539. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
  540. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
  541. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
  542. package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
  543. package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
  544. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
  545. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
  546. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
  547. package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
  548. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
  549. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
  550. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
  551. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
  552. package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
  553. package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
  554. package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
  555. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
  556. package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
  557. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
  558. package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
  559. package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
  560. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
  561. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
  562. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
  563. package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
  564. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
  565. package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
  566. package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
  567. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
  568. package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
@@ -6,12 +6,12 @@
6
6
  * 'next' priority analysis tasks into the daemon queue.
7
7
  */
8
8
  import { watch } from 'fs';
9
- import { execFile } from 'child_process';
10
- import { promisify } from 'util';
11
9
  import { resolve, join } from 'path';
12
10
  import { existsSync, readFileSync } from 'fs';
13
11
  import { getGitRefError } from '../../shared/git/ref-validation.js';
14
- const execFileAsync = promisify(execFile);
12
+ import { runGit } from '../../shared/git/git-process.js';
13
+ /** A hung git must not stall the watcher; its process group is stopped (#1115). */
14
+ const GIT_TIMEOUT_MS = 10_000;
15
15
  const DEFAULTS = {
16
16
  repoRoot: process.cwd(),
17
17
  debounceMs: 500,
@@ -100,11 +100,11 @@ export class GitWatcher {
100
100
  this._polling = true;
101
101
  const changedBranches = [];
102
102
  try {
103
- const { stdout } = await execFileAsync('git', [
103
+ const stdout = await runGit([
104
104
  'for-each-ref',
105
105
  '--format=%(refname:short) %(objectname:short)',
106
106
  'refs/heads/',
107
- ], { cwd: this.options.repoRoot });
107
+ ], { cwd: this.options.repoRoot, timeout: GIT_TIMEOUT_MS });
108
108
  for (const line of stdout.trim().split('\n')) {
109
109
  if (!line)
110
110
  continue;
@@ -162,13 +162,13 @@ export class GitWatcher {
162
162
  return;
163
163
  let changedFiles = [];
164
164
  try {
165
- const { stdout } = await execFileAsync('git', [
165
+ const stdout = await runGit([
166
166
  'diff-tree',
167
167
  '--no-commit-id',
168
168
  '--name-only',
169
169
  '-r',
170
170
  commitHash,
171
- ], { cwd: this.options.repoRoot });
171
+ ], { cwd: this.options.repoRoot, timeout: GIT_TIMEOUT_MS });
172
172
  changedFiles = stdout
173
173
  .trim()
174
174
  .split('\n')
@@ -196,11 +196,11 @@ export class GitWatcher {
196
196
  }
197
197
  async snapshotHeads() {
198
198
  try {
199
- const { stdout } = await execFileAsync('git', [
199
+ const stdout = await runGit([
200
200
  'for-each-ref',
201
201
  '--format=%(refname:short) %(objectname:short)',
202
202
  'refs/heads/',
203
- ], { cwd: this.options.repoRoot });
203
+ ], { cwd: this.options.repoRoot, timeout: GIT_TIMEOUT_MS });
204
204
  for (const line of stdout.trim().split('\n')) {
205
205
  if (!line)
206
206
  continue;
@@ -8,10 +8,14 @@
8
8
  *
9
9
  * #1043: every prediction comes from a run of the defect-intelligence
10
10
  * predictor (`defect-intelligence:predictor:prediction:<id>` in the
11
- * `defect-intelligence` namespace, written by DefectPredictorService), and
11
+ * `defect-intelligence` namespace, written by DefectPredictorService or the
12
+ * public MCP handler), and
12
13
  * only files that exist in the project are kept. Code hotspots have no
13
14
  * measured source and are reported unmeasured. Nothing predicted → nothing
14
- * stored, an "unmeasured" info finding. A `defect:predictions` record without
15
+ * stored, an "unmeasured" info finding. A recorded static scan is labelled
16
+ * `estimated: true` with its prediction method: `measured` means an actual
17
+ * analysis ran, not that its risk estimate is a calibrated probability.
18
+ * A `defect:predictions` record without
15
19
  * the measured stamp (the invented one written by <= 3.15.6) is ignored and
16
20
  * replaced by the next measured run.
17
21
  */
@@ -30,7 +34,8 @@ export declare class DefectPredictorWorker extends BaseWorker {
30
34
  * #1043: the most recent prediction run the defect-intelligence predictor
31
35
  * recorded, restricted to regular files whose real path is inside the
32
36
  * project root. `measured` is `null` when there is no such prediction;
33
- * `unusable` describes a newest prediction none of whose files qualify.
37
+ * `unusable` describes an ambiguous newest timestamp or a newest prediction
38
+ * none of whose files qualify.
34
39
  */
35
40
  private readLatestPrediction;
36
41
  private analyzeHighRiskPredictions;
@@ -8,16 +8,21 @@
8
8
  *
9
9
  * #1043: every prediction comes from a run of the defect-intelligence
10
10
  * predictor (`defect-intelligence:predictor:prediction:<id>` in the
11
- * `defect-intelligence` namespace, written by DefectPredictorService), and
11
+ * `defect-intelligence` namespace, written by DefectPredictorService or the
12
+ * public MCP handler), and
12
13
  * only files that exist in the project are kept. Code hotspots have no
13
14
  * measured source and are reported unmeasured. Nothing predicted → nothing
14
- * stored, an "unmeasured" info finding. A `defect:predictions` record without
15
+ * stored, an "unmeasured" info finding. A recorded static scan is labelled
16
+ * `estimated: true` with its prediction method: `measured` means an actual
17
+ * analysis ran, not that its risk estimate is a calibrated probability.
18
+ * A `defect:predictions` record without
15
19
  * the measured stamp (the invented one written by <= 3.15.6) is ignored and
16
20
  * replaced by the next measured run.
17
21
  */
18
22
  import * as fs from 'fs';
19
23
  import * as path from 'path';
20
24
  import { bareSearchKey } from '../namespaced-keys.js';
25
+ import { parsePredictionRecord } from '../../domains/defect-intelligence/prediction-history.js';
21
26
  import { BaseWorker } from '../base-worker.js';
22
27
  import { findProjectRoot } from '../../kernel/project-root.js';
23
28
  const CONFIG = {
@@ -36,10 +41,6 @@ const DEFECT_NAMESPACE = 'defect-intelligence';
36
41
  const PREDICTION_KEY_PATTERN = 'defect-intelligence:predictor:prediction:*';
37
42
  const PREDICTIONS_KEY = 'defect:predictions';
38
43
  const SCHEMA_VERSION = 1;
39
- /** The predictor keeps its records for 7 days; nothing older is current. */
40
- const MAX_PREDICTION_AGE_MS = 7 * 24 * 60 * 60 * 1000;
41
- const MAX_PREDICTION_RECORDS = 1000;
42
- const RISK_LEVELS = ['critical', 'high', 'medium', 'low', 'info'];
43
44
  /**
44
45
  * Where a predicted path lies, resolved against the project root with
45
46
  * symlinks followed: only a regular file whose real path is inside the
@@ -75,39 +76,6 @@ function realProjectRoot() {
75
76
  return path.resolve(root);
76
77
  }
77
78
  }
78
- const isRecord = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
79
- function parseFilePrediction(raw) {
80
- if (!isRecord(raw))
81
- return null;
82
- const { file, probability, riskLevel } = raw;
83
- if (typeof file !== 'string' || file.length === 0)
84
- return null;
85
- if (typeof probability !== 'number' || !Number.isFinite(probability) || probability < 0 || probability > 1)
86
- return null;
87
- if (!RISK_LEVELS.includes(riskLevel))
88
- return null;
89
- const factors = Array.isArray(raw.factors)
90
- ? raw.factors.filter((f) => isRecord(f) && typeof f.name === 'string' && typeof f.contribution === 'number' && Number.isFinite(f.contribution))
91
- : [];
92
- const recommendations = Array.isArray(raw.recommendations)
93
- ? raw.recommendations.filter((r) => typeof r === 'string')
94
- : [];
95
- return { file, probability, riskLevel: riskLevel, factors, recommendations };
96
- }
97
- /** A recorded prediction run, or `null` when the record is not a usable one. */
98
- function parsePredictionRecord(raw, now) {
99
- if (!isRecord(raw) || typeof raw.id !== 'string' || typeof raw.timestamp !== 'string')
100
- return null;
101
- const t = Date.parse(raw.timestamp);
102
- if (!Number.isFinite(t) || t > now + 60_000 || now - t > MAX_PREDICTION_AGE_MS)
103
- return null;
104
- if (!Array.isArray(raw.predictions) || raw.predictions.length === 0)
105
- return null;
106
- const predictions = raw.predictions.map(parseFilePrediction);
107
- if (predictions.some((p) => p === null))
108
- return null;
109
- return { id: raw.id, timestamp: raw.timestamp, predictions: predictions };
110
- }
111
79
  export class DefectPredictorWorker extends BaseWorker {
112
80
  constructor() {
113
81
  super(CONFIG);
@@ -124,10 +92,12 @@ export class DefectPredictorWorker extends BaseWorker {
124
92
  severity: 'info',
125
93
  domain: 'defect-intelligence',
126
94
  title: 'Defect Prediction Unmeasured',
127
- description: (unusable
128
- ? `The latest defect prediction (${unusable.id}) names no file inside this project ` +
129
- `(${unusable.outside} outside the project root, ${unusable.missing} missing), so no risk is reported. `
130
- : 'No defect prediction for files in this project has been recorded in the last 7 days, so no risk is reported. ') +
95
+ description: (unusable?.ambiguous
96
+ ? 'Multiple defect predictions have the same timestamp, so no unique latest analysis can be identified. No risk is reported. '
97
+ : unusable
98
+ ? `The latest defect prediction (${unusable.id}) names no file inside this project ` +
99
+ `(${unusable.outside} outside the project root, ${unusable.missing} missing), so no risk is reported. `
100
+ : 'No defect prediction for files in this project has been recorded in the last 7 days, so no risk is reported. ') +
131
101
  'Run defect_predict on the files to assess.',
132
102
  });
133
103
  if (unusable)
@@ -147,7 +117,14 @@ export class DefectPredictorWorker extends BaseWorker {
147
117
  }, findings, recommendations);
148
118
  }
149
119
  const { predictions } = latest;
150
- this.analyzeHighRiskPredictions(predictions, findings, recommendations);
120
+ if (latest.filesSkipped) {
121
+ findings.push({
122
+ type: 'defect-prediction-partial', severity: 'info', domain: 'defect-intelligence',
123
+ title: 'Partial Defect Prediction',
124
+ description: `${latest.filesSkipped} source files could not be read; risk estimates cover only ${predictions.length} successfully analyzed files.`,
125
+ });
126
+ }
127
+ this.analyzeHighRiskPredictions(predictions, findings, recommendations, latest.estimated === true);
151
128
  await context.memory.set(PREDICTIONS_KEY, latest);
152
129
  await context.memory.set('defect:lastAnalysis', latest.evaluatedAt);
153
130
  const healthScore = this.calculateHealthScore(predictions);
@@ -165,6 +142,8 @@ export class DefectPredictorWorker extends BaseWorker {
165
142
  trend: 'stable',
166
143
  domainMetrics: {
167
144
  filesAnalyzed: predictions.length,
145
+ filesSkipped: latest.filesSkipped ?? 0,
146
+ scanStatus: latest.filesSkipped ? 'partial' : 'complete',
168
147
  highRiskFiles: highRisk,
169
148
  missingFilesSkipped: latest.missingFilesSkipped,
170
149
  outsideProjectSkipped: latest.outsideProjectSkipped,
@@ -192,21 +171,37 @@ export class DefectPredictorWorker extends BaseWorker {
192
171
  * #1043: the most recent prediction run the defect-intelligence predictor
193
172
  * recorded, restricted to regular files whose real path is inside the
194
173
  * project root. `measured` is `null` when there is no such prediction;
195
- * `unusable` describes a newest prediction none of whose files qualify.
174
+ * `unusable` describes an ambiguous newest timestamp or a newest prediction
175
+ * none of whose files qualify.
196
176
  */
197
177
  async readLatestPrediction(context) {
198
- const keys = await context.memory.search(PREDICTION_KEY_PATTERN, MAX_PREDICTION_RECORDS, { namespace: DEFECT_NAMESPACE });
178
+ const keys = await context.memory.search(PREDICTION_KEY_PATTERN, Number.MAX_SAFE_INTEGER, { namespace: DEFECT_NAMESPACE });
199
179
  const now = Date.now();
200
180
  let latest = null;
181
+ let ambiguous = false;
201
182
  for (const found of keys) {
202
183
  // #1049: the in-memory backend returns `<namespace>:<key>` from a namespaced search.
203
184
  const key = bareSearchKey(found, DEFECT_NAMESPACE, PREDICTION_KEY_PATTERN);
204
185
  const parsed = parsePredictionRecord(await context.memory.get(key, { namespace: DEFECT_NAMESPACE }), now);
205
- if (parsed && (!latest || Date.parse(parsed.timestamp) > Date.parse(latest.timestamp)))
186
+ if (!parsed)
187
+ continue;
188
+ if (!latest || Date.parse(parsed.timestamp) > Date.parse(latest.timestamp)) {
206
189
  latest = parsed;
190
+ ambiguous = false;
191
+ }
192
+ else if (Date.parse(parsed.timestamp) === Date.parse(latest.timestamp) && parsed.id !== latest.id) {
193
+ ambiguous = true;
194
+ }
207
195
  }
208
196
  if (!latest)
209
197
  return { measured: null, unusable: null };
198
+ // Timestamp precision cannot establish ordering between concurrent runs.
199
+ // Never let backend key ordering decide whether the current scan is clean.
200
+ if (ambiguous)
201
+ return {
202
+ measured: null,
203
+ unusable: { id: `ambiguous:${latest.timestamp}`, outside: 0, missing: 0, ambiguous: true },
204
+ };
210
205
  const realRoot = realProjectRoot();
211
206
  const disposition = latest.predictions.map((p) => classifyPredictedFile(p.file, realRoot));
212
207
  const existing = latest.predictions.filter((_, i) => disposition[i] === 'inside');
@@ -224,6 +219,7 @@ export class DefectPredictorWorker extends BaseWorker {
224
219
  schemaVersion: SCHEMA_VERSION,
225
220
  source: 'defect-intelligence',
226
221
  predictionId: latest.id,
222
+ ...(latest.estimated ? { estimated: true, predictionMethod: latest.predictionMethod, filesSkipped: latest.filesSkipped } : {}),
227
223
  predictedAt: latest.timestamp,
228
224
  evaluatedAt: new Date().toISOString(),
229
225
  predictions: existing,
@@ -231,7 +227,7 @@ export class DefectPredictorWorker extends BaseWorker {
231
227
  outsideProjectSkipped: outside,
232
228
  } };
233
229
  }
234
- analyzeHighRiskPredictions(predictions, findings, recommendations) {
230
+ analyzeHighRiskPredictions(predictions, findings, recommendations, estimated = false) {
235
231
  const critical = predictions.filter(p => p.riskLevel === 'critical');
236
232
  const high = predictions.filter(p => p.riskLevel === 'high');
237
233
  for (const prediction of [...critical, ...high]) {
@@ -241,10 +237,13 @@ export class DefectPredictorWorker extends BaseWorker {
241
237
  severity: prediction.riskLevel,
242
238
  domain: 'defect-intelligence',
243
239
  title: `${prediction.riskLevel === 'critical' ? 'Critical' : 'High'} Defect Risk: ${name}`,
244
- description: `${(prediction.probability * 100).toFixed(0)}% predicted defect probability (defect-intelligence predictor)`,
240
+ description: estimated
241
+ ? `${(prediction.probability * 100).toFixed(0)}% estimated code-risk score (static-code-indicators); not a calibrated defect probability`
242
+ : `${(prediction.probability * 100).toFixed(0)}% predicted defect probability (defect-intelligence predictor)`,
245
243
  resource: prediction.file,
246
244
  context: {
247
245
  probability: prediction.probability,
246
+ ...(estimated ? { estimated: true, predictionMethod: 'static-code-indicators' } : {}),
248
247
  factors: prediction.factors,
249
248
  recommendations: prediction.recommendations,
250
249
  },
@@ -31,6 +31,8 @@ export declare class LearningConsolidationWorker extends BaseWorker {
31
31
  private readonly dreamInsightsPruneNotBefore;
32
32
  /** #1061: an invalid retention value is reported once per process. */
33
33
  private retentionWarningLogged;
34
+ /** #1116: NULL-id stale rows last reported, so the warning is not repeated every tick. */
35
+ private nullIdRowsReported;
34
36
  constructor();
35
37
  /**
36
38
  * Initialize or get the pattern lifecycle manager
@@ -61,6 +61,8 @@ export class LearningConsolidationWorker extends BaseWorker {
61
61
  dreamInsightsPruneNotBefore = Date.now() + CONFIG.intervalMs;
62
62
  /** #1061: an invalid retention value is reported once per process. */
63
63
  retentionWarningLogged = false;
64
+ /** #1116: NULL-id stale rows last reported, so the warning is not repeated every tick. */
65
+ nullIdRowsReported = 0;
64
66
  constructor() {
65
67
  super(CONFIG);
66
68
  }
@@ -252,7 +254,16 @@ export class LearningConsolidationWorker extends BaseWorker {
252
254
  return 0;
253
255
  const db = getUnifiedMemory().getDatabase();
254
256
  // #1066: rows are copied to dream_insights_archive and verified first.
255
- const { pruned, archived } = pruneStaleDreamInsights(db, { retentionDays });
257
+ const { pruned, archived, skippedNullId } = pruneStaleDreamInsights(db, { retentionDays });
258
+ // #1116: rows with a NULL id cannot be archived and are left in place.
259
+ // Warn when their number changes, not on every tick.
260
+ if (skippedNullId !== this.nullIdRowsReported) {
261
+ this.nullIdRowsReported = skippedNullId;
262
+ if (skippedNullId > 0) {
263
+ process.stderr.write(`[AQE] WARN dream_insights retention: ${skippedNullId} stale insight(s) have no id and were ` +
264
+ 'left in place (they cannot be archived); the other stale insights were archived as usual\n');
265
+ }
266
+ }
256
267
  if (pruned > 0) {
257
268
  // Default log level, stderr only: MCP stdout carries JSON-RPC.
258
269
  process.stderr.write(`[AQE] dream_insights retention: moved ${pruned} unapplied insight(s) ` +
@@ -3,6 +3,7 @@ import { join, basename, dirname } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
4
  import { parse as parseYaml } from 'yaml';
5
5
  import { safeEvaluateBoolean } from '../../shared/utils/safe-expression-evaluator.js';
6
+ import { setOwn } from '../../shared/utils/safe-record.js';
6
7
  const __filename = fileURLToPath(import.meta.url);
7
8
  const __dirname = dirname(__filename);
8
9
  /**
@@ -142,8 +143,9 @@ export class WorkflowLoader {
142
143
  async createContext(templateName, variables) {
143
144
  const workflow = await this.load(templateName);
144
145
  // Validate required variables
146
+ // #1136: a variable counts as given only when it is an own property.
145
147
  const missingVars = workflow.variables
146
- .filter(v => v.required && !(v.name in variables))
148
+ .filter(v => v.required && !Object.hasOwn(variables, v.name))
147
149
  .map(v => v.name);
148
150
  if (missingVars.length > 0) {
149
151
  throw new Error(`Missing required variables: ${missingVars.join(', ')}`);
@@ -151,11 +153,11 @@ export class WorkflowLoader {
151
153
  // Resolve variables with defaults
152
154
  const resolvedVariables = {};
153
155
  workflow.variables.forEach(varDef => {
154
- if (varDef.name in variables) {
155
- resolvedVariables[varDef.name] = variables[varDef.name];
156
+ if (Object.hasOwn(variables, varDef.name)) {
157
+ setOwn(resolvedVariables, varDef.name, variables[varDef.name]);
156
158
  }
157
159
  else if ('default' in varDef) {
158
- resolvedVariables[varDef.name] = varDef.default;
160
+ setOwn(resolvedVariables, varDef.name, varDef.default);
159
161
  }
160
162
  });
161
163
  return {
@@ -217,7 +219,8 @@ export function interpolateVariables(template, variables) {
217
219
  const keys = trimmedKey.split('.');
218
220
  let value = variables;
219
221
  for (const k of keys) {
220
- if (value && typeof value === 'object' && k in value) {
222
+ // #1136: own properties only; {{constructor}} is not a variable.
223
+ if (value && typeof value === 'object' && Object.hasOwn(value, k)) {
221
224
  value = value[k];
222
225
  }
223
226
  else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "3.15.9",
3
+ "version": "3.15.10",
4
4
  "description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- import{a,b,c}from"./chunk-PBZI2ZPV.js";import"./chunk-A6YIH4C4.js";import"./chunk-KIXYKUCI.js";import"./chunk-PVIA2FPD.js";import"./chunk-N3KEY4XJ.js";import"./chunk-HZ5NC6U5.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- import{a as x}from"./chunk-KTSLTZSG.js";import{e as f}from"./chunk-O3JLOVZX.js";import"./chunk-DGTLJNJH.js";import"./chunk-HZ5NC6U5.js";x();import{createRequire as w}from"module";var S=f.create("agent-booster-wasm"),t={JavaScript:0,TypeScript:1,Python:2,Rust:3,Go:4,Java:5,C:6,Cpp:7},l={ExactReplace:0,FuzzyReplace:1,InsertAfter:2,InsertBefore:3,Append:4},v={0:"JavaScript",1:"TypeScript",2:"Python",3:"Rust",4:"Go",5:"Java",6:"C",7:"Cpp"},a=null,u=null,p=null;async function g(){if(a)return!0;if(p)return!1;try{if(a=w(import.meta.url)("./agent_booster_wasm.js"),!a)throw new Error("WASM module loaded but is null");return u=new a.AgentBoosterWasm,!0}catch(e){return p=e,console.warn("[AgentBoosterWASM] Failed to load WASM module:",e),!1}}function A(e){return{".js":t.JavaScript,".mjs":t.JavaScript,".cjs":t.JavaScript,".jsx":t.JavaScript,".ts":t.TypeScript,".tsx":t.TypeScript,".mts":t.TypeScript,".cts":t.TypeScript,".py":t.Python,".rs":t.Rust,".go":t.Go,".java":t.Java,".c":t.C,".h":t.C,".cpp":t.Cpp,".cc":t.Cpp,".cxx":t.Cpp,".hpp":t.Cpp}[e.toLowerCase()]??t.JavaScript}var M=[{name:"var-to-const",detect:(e,r)=>e.includes("var ")&&r.includes("const "),apply:(e,r)=>e.replace(/\bvar\s+/g,"const ")},{name:"var-to-let",detect:(e,r)=>e.includes("var ")&&r.includes("let "),apply:(e,r)=>e.replace(/\bvar\s+/g,"let ")},{name:"add-types-function",detect:(e,r)=>e.includes("function")&&!e.includes(":")&&r.includes(":"),apply:(e,r)=>r},{name:"async-wrapper",detect:(e,r)=>!e.includes("async")&&r.includes("async")&&r.includes("await"),apply:(e,r)=>r},{name:"try-catch-wrapper",detect:(e,r)=>!e.includes("try {")&&r.includes("try {"),apply:(e,r)=>r},{name:"null-check",detect:(e,r)=>!e.includes("if (!")&&!e.includes("if (!")&&(r.includes("if (!")||r.includes("?.")),apply:(e,r)=>r},{name:"test-assertion",detect:(e,r)=>e.includes("test(")&&!e.includes("expect(")&&r.includes("expect("),apply:(e,r)=>r}];function y(e,r){for(let n of M)if(n.detect(e,r))try{return{success:!0,code:n.apply(e,r),pattern:n.name}}catch(s){S.debug("Pattern transform failed, trying next",{pattern:n.name,error:s instanceof Error?s.message:String(s)});continue}return{success:!1,code:r}}async function b(e,r,n,s={}){let o=performance.now(),{confidenceThreshold:T=.5,allowFallback:d=!0}=s;if(!e.trim())return{success:!0,mergedCode:r,confidence:1,strategy:l.Append,syntaxValid:!0,source:"fallback",latencyMs:performance.now()-o};if(await g()&&u&&a)try{let c=a.WasmLanguage[v[n]],i=u.apply_edit(e,r,c);return{success:!0,mergedCode:i.merged_code,confidence:i.confidence,strategy:i.strategy,syntaxValid:i.syntax_valid,source:"wasm",latencyMs:performance.now()-o}}catch(c){let i=c;if(d){let m=y(e,r);if(m.success)return{success:!0,mergedCode:m.code,confidence:.7,strategy:l.FuzzyReplace,syntaxValid:!0,source:"pattern",latencyMs:performance.now()-o}}return{success:!1,mergedCode:r,confidence:0,strategy:l.Append,syntaxValid:!1,source:"fallback",latencyMs:performance.now()-o,error:i.message}}if(d){let c=y(e,r);return{success:c.success,mergedCode:c.code,confidence:c.success?.7:0,strategy:l.FuzzyReplace,syntaxValid:!0,source:"pattern",latencyMs:performance.now()-o}}return{success:!1,mergedCode:r,confidence:0,strategy:l.Append,syntaxValid:!1,source:"fallback",latencyMs:performance.now()-o,error:p?.message??"WASM not available"}}async function W(e,r={}){return Promise.all(e.map(({original:n,edit:s,language:o})=>b(n,s,o,r)))}async function C(){return g()}async function L(){return await g()&&a?a.AgentBoosterWasm.version():"unavailable"}async function R(){if(await g(),u&&a)try{u.apply_edit("function x() {}","function x() {}",a.WasmLanguage.JavaScript)}catch(e){console.debug("[AgentBoosterWASM] Warmup error:",e instanceof Error?e.message:e)}}var _={transform:b,batchTransform:W,isWasmAvailable:C,getVersion:L,warmup:R,Language:t,MergeStrategy:l,languageFromExtension:A};export{t as Language,l as MergeStrategy,W as batchTransform,_ as default,L as getVersion,C as isWasmAvailable,A as languageFromExtension,b as transform,R as warmup};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- import{a,b,c,d,e,f}from"./chunk-VYLM2YV5.js";import"./chunk-3LYU7BLY.js";import"./chunk-KLGYIEJK.js";import"./chunk-MZS32SYS.js";import"./chunk-GCWSX2NY.js";import"./chunk-2TDIS6YK.js";import"./chunk-F3PQZX44.js";import"./chunk-XWIUFYM3.js";import"./chunk-DDPPSSHW.js";import"./chunk-D6XVGFTI.js";import"./chunk-VRGCKBF7.js";import"./chunk-7JKB3Q7O.js";import"./chunk-UYLYMWV5.js";import"./chunk-XDBD4GXO.js";import"./chunk-7X2Y727E.js";import"./chunk-AVB5QY2Q.js";import"./chunk-OCESWNAZ.js";import"./chunk-ICP2ORGI.js";import"./chunk-PVIA2FPD.js";import"./chunk-OG2UI6A3.js";import"./chunk-V5PXQSFS.js";import"./chunk-5D2I7JUP.js";import"./chunk-EFBLP43U.js";import"./chunk-7KII4CQG.js";import"./chunk-4SUOVLJ6.js";import"./chunk-ZXBCCO2H.js";import"./chunk-BXO536GT.js";import"./chunk-SVHUYVUR.js";import"./chunk-FV7VAG74.js";import"./chunk-JNNZK7KH.js";import"./chunk-2BA45H64.js";import"./chunk-KTSLTZSG.js";import"./chunk-O3JLOVZX.js";import"./chunk-DGTLJNJH.js";import"./chunk-N3KEY4XJ.js";import"./chunk-2I2UPJS7.js";import"./chunk-PX2B5TS2.js";import"./chunk-4V27J6YN.js";import"./chunk-H3KBIWTO.js";import"./chunk-OXZLKP6C.js";import"./chunk-SNBYYO6F.js";import"./chunk-6YL6JOQB.js";import"./chunk-6OOYIO3W.js";import"./chunk-HZ5NC6U5.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-JK2ME6IT.js";import"./chunk-IFEIY3NQ.js";import"./chunk-3CJCROMW.js";import"./chunk-OCESWNAZ.js";import"./chunk-ICP2ORGI.js";import"./chunk-PVIA2FPD.js";import"./chunk-OG2UI6A3.js";import"./chunk-V5PXQSFS.js";import"./chunk-5D2I7JUP.js";import"./chunk-EFBLP43U.js";import"./chunk-7KII4CQG.js";import"./chunk-4SUOVLJ6.js";import"./chunk-ZXBCCO2H.js";import"./chunk-SVHUYVUR.js";import"./chunk-FV7VAG74.js";import"./chunk-2BA45H64.js";import"./chunk-KTSLTZSG.js";import"./chunk-O3JLOVZX.js";import"./chunk-DGTLJNJH.js";import"./chunk-N3KEY4XJ.js";import"./chunk-2I2UPJS7.js";import"./chunk-4V27J6YN.js";import"./chunk-H3KBIWTO.js";import"./chunk-6YL6JOQB.js";import"./chunk-6OOYIO3W.js";import"./chunk-HZ5NC6U5.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
@@ -1,4 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- import{a as p}from"./chunk-TSYQDRNK.js";import"./chunk-HZ5NC6U5.js";import{readFile as m,readdir as k}from"fs/promises";import{join as c,basename as y,dirname as W}from"path";import{fileURLToPath as v}from"url";import{parse as d}from"yaml";var b=v(import.meta.url),E=W(b),l=class{templatesDir;cache=new Map;constructor(r){this.templatesDir=r||c(E,"templates")}async load(r){if(this.cache.has(r))return this.cache.get(r);try{let e=c(this.templatesDir,`${r}.yaml`),n=await m(e,"utf-8"),o=d(n),i=await this.validate(o);if(!i.valid)throw new Error(`Invalid workflow template ${r}:
3
- ${i.errors.join(`
4
- `)}`);return this.cache.set(r,o),o}catch(e){throw e.code==="ENOENT"?new Error(`Workflow template not found: ${r}`):e}}async list(){try{return(await k(this.templatesDir)).filter(e=>e.endsWith(".yaml")||e.endsWith(".yml")).map(e=>y(e,e.endsWith(".yaml")?".yaml":".yml")).sort()}catch(r){if(r.code==="ENOENT")return[];throw r}}async validate(r){let e=[],n=[];if(r.name||e.push("Workflow must have a name"),r.version||e.push("Workflow must have a version"),r.description||n.push("Workflow should have a description"),Array.isArray(r.variables)?r.variables.forEach((o,i)=>{o.name||e.push(`Variable at index ${i} must have a name`),o.type||e.push(`Variable ${o.name} must have a type`),o.required===void 0&&n.push(`Variable ${o.name} should specify if it's required`)}):e.push("Workflow must have a variables array"),!Array.isArray(r.steps))e.push("Workflow must have a steps array");else if(r.steps.length===0)e.push("Workflow must have at least one step");else{r.steps.forEach((t,s)=>{t.name||e.push(`Step at index ${s} must have a name`),t.action||e.push(`Step ${t.name||s} must have an action`),(!t.config||typeof t.config!="object")&&e.push(`Step ${t.name||s} must have a config object`),t.assertions&&Array.isArray(t.assertions)&&t.assertions.forEach((f,u)=>{f.condition||e.push(`Assertion ${u} in step ${t.name||s} must have a condition`),f.message||n.push(`Assertion ${u} in step ${t.name||s} should have a message`)})});let o=r.steps.map(t=>t.name),i=o.filter((t,s)=>o.indexOf(t)!==s);i.length>0&&e.push(`Duplicate step names found: ${i.join(", ")}`)}return{valid:e.length===0,errors:e,warnings:n}}async createContext(r,e){let n=await this.load(r),o=n.variables.filter(t=>t.required&&!(t.name in e)).map(t=>t.name);if(o.length>0)throw new Error(`Missing required variables: ${o.join(", ")}`);let i={};return n.variables.forEach(t=>{t.name in e?i[t.name]=e[t.name]:"default"in t&&(i[t.name]=t.default)}),{variables:i,results:new Map,metadata:{startTime:Date.now(),workflow:n.name,templateName:r}}}async getMetadata(r){try{let e=c(this.templatesDir,`${r}.yaml`),n=await m(e,"utf-8"),o=d(n);return{name:o.name,version:o.version,description:o.description}}catch(e){throw e.code==="ENOENT"?new Error(`Workflow template not found: ${r}`):e}}clearCache(){this.cache.clear()}async reload(r){return this.cache.delete(r),this.load(r)}},x=new l;function w(a,r){return a.replace(/\{\{([^}]+)\}\}/g,(e,n)=>{let i=n.trim().split("."),t=r;for(let s of i)if(t&&typeof t=="object"&&s in t)t=t[s];else return e;return t!=null?String(t):e})}function T(a,r){let e={...r.variables,result:r.results.get("__last_result__")},n=w(a,e);return p(n,e,!1)}var g=["login-flow","oauth-flow","scraping-workflow","visual-regression","form-validation","navigation-flow","api-integration","performance-audit","accessibility-audit"],A={"login-flow":"Authentication testing workflow for login forms with credential validation","oauth-flow":"OAuth2/OIDC authentication testing workflow with provider integration","scraping-workflow":"Data extraction workflow for web scraping with pagination and structured output","visual-regression":"Screenshot comparison workflow for visual regression testing across breakpoints","form-validation":"Input validation testing workflow for form fields with error handling","navigation-flow":"Multi-page navigation workflow for testing user journeys and state persistence","api-integration":"Browser-API hybrid testing workflow for validating frontend-backend integration","performance-audit":"Lighthouse-style performance audit workflow with Core Web Vitals","accessibility-audit":"WCAG 2.1 Level AA compliance audit workflow with automated accessibility testing"},h={authentication:["login-flow","oauth-flow"],testing:["form-validation","navigation-flow","api-integration"],quality:["visual-regression","performance-audit","accessibility-audit"],automation:["scraping-workflow"]};function _(a){return h[a]}function P(a){return g.includes(a)}function L(){return g.map(a=>{let r=Object.entries(h).find(([e,n])=>n.includes(a))?.[0]||"other";return{name:a,description:A[a],category:r}})}export{h as WORKFLOW_CATEGORIES,A as WORKFLOW_DESCRIPTIONS,g as WORKFLOW_TEMPLATES,l as WorkflowLoader,x as defaultWorkflowLoader,T as evaluateCondition,L as getAllWorkflowTemplates,_ as getWorkflowsByCategory,w as interpolateVariables,P as isValidWorkflowTemplate};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- import{a}from"./chunk-763SUL4B.js";import"./chunk-JK2ME6IT.js";import"./chunk-IFEIY3NQ.js";import"./chunk-3CJCROMW.js";import"./chunk-OCESWNAZ.js";import"./chunk-ICP2ORGI.js";import"./chunk-PVIA2FPD.js";import"./chunk-OG2UI6A3.js";import"./chunk-V5PXQSFS.js";import"./chunk-5D2I7JUP.js";import"./chunk-EFBLP43U.js";import"./chunk-7KII4CQG.js";import"./chunk-4SUOVLJ6.js";import"./chunk-ZXBCCO2H.js";import"./chunk-SVHUYVUR.js";import"./chunk-FV7VAG74.js";import"./chunk-2BA45H64.js";import"./chunk-KTSLTZSG.js";import"./chunk-O3JLOVZX.js";import"./chunk-DGTLJNJH.js";import"./chunk-N3KEY4XJ.js";import"./chunk-2I2UPJS7.js";import"./chunk-4V27J6YN.js";import"./chunk-H3KBIWTO.js";import"./chunk-6YL6JOQB.js";import"./chunk-6OOYIO3W.js";import"./chunk-HZ5NC6U5.js";export{a as BrowserWorkflowTool};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- var r=n=>typeof n=="number"&&Number.isFinite(n)&&n>=0&&n<=100,t=n=>n===null||r(n);function s(n){if(!n||typeof n!="object")return null;let e=n;if(e.measured!==!0||!r(e.line)||!t(e.statement)||!t(e.branch)||!t(e.function))return null;let u=typeof e.files=="number"&&Number.isInteger(e.files)&&e.files>=0?e.files:null;return u===null?null:{line:e.line,branch:e.branch,function:e.function,statement:e.statement,files:u,measured:!0,...e.runStatus==="passed"||e.runStatus==="failed"?{runStatus:e.runStatus}:{}}}function i(n){if(!n||typeof n!="object")return null;let e=n;if(e.measured!==!0||!r(e.line))return null;let u=l=>r(l)?l:null;return{line:e.line,branch:u(e.branch),function:u(e.function),statement:u(e.statement),measured:!0}}export{s as a,i as b};
@@ -1,4 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- import{c as H}from"./chunk-7QGYJ5OY.js";import{b as G,d as K}from"./chunk-PVIA2FPD.js";import*as R from"fs/promises";import*as w from"path";K();async function le(t){let i=[w.join(t,"coverage","coverage-final.json"),w.join(t,"coverage","lcov.info"),w.join(t,".nyc_output","coverage-final.json"),w.join(t,"coverage-final.json"),w.join(t,"coverage","coverage-summary.json"),w.join(t,"coverage.xml"),w.join(t,"htmlcov","status.json"),w.join(t,"cobertura-coverage.xml")];for(let s of i)try{let o=await R.readFile(s,"utf-8");if(s.endsWith("coverage-summary.json"))return q(o);if(s.endsWith(".json"))return Z(o);if(s.endsWith(".info"))return Q(o);if(s.endsWith(".xml"))return V(o)}catch{}return null}function X(t){let i=new Map,s=t.statementMap||{};for(let[o,u]of Object.entries(t.s||{})){let c=s[o]?.start?.line;if(typeof c!="number")continue;let e=i.get(c);(e===void 0||e<u)&&i.set(c,u)}return i}function Z(t){let i=G(t),s=[],o=0,u=0,c=0,e=0,l=0,r=0,g=0,f=0;for(let[d,v]of Object.entries(i)){let m=v,p=m.s||{},S=m.branchMap||{},b=m.b||{},a=m.f||{},n=X(m),h=n.size,x=[...n.values()].filter(y=>y>0).length,E=Object.values(b).flat().length,N=Object.values(b).flat().filter(y=>y>0).length,F=Object.keys(a).length,j=Object.values(a).filter(y=>y>0).length,I=Object.keys(p).length,L=Object.values(p).filter(y=>y>0).length,P=[...n.entries()].filter(([,y])=>y===0).map(([y])=>y),M=[];for(let[y,T]of Object.entries(b)){let D=S[y];T.forEach((_,C)=>{_===0&&D?.locations?.[C]?.start?.line&&M.push(D.locations[C].start.line)})}s.push({path:d,lines:{covered:x,total:h},branches:{covered:N,total:E},functions:{covered:j,total:F},statements:{covered:L,total:I},uncoveredLines:P.sort((y,T)=>y-T),uncoveredBranches:Array.from(new Set(M)).sort((y,T)=>y-T)}),o+=h,u+=x,c+=E,e+=N,l+=F,r+=j,g+=I,f+=L}return{files:s,summary:{line:o>0?u/o*100:0,branch:c>0?e/c*100:0,function:l>0?r/l*100:0,statement:g>0?f/g*100:0,files:s.length}}}function q(t){let i=G(t),s=e=>({covered:Number(e?.covered)||0,total:Number(e?.total)||0}),o=[];for(let[e,l]of Object.entries(i))e==="total"||typeof l!="object"||l===null||!l.lines||o.push({path:e,lines:s(l.lines),branches:s(l.branches),functions:s(l.functions),statements:s(l.statements??l.lines),uncoveredLines:[],uncoveredBranches:[]});let u=e=>o.reduce((l,r)=>({covered:l.covered+e(r).covered,total:l.total+e(r).total}),{covered:0,total:0}),c=e=>e.total>0?e.covered/e.total*100:0;return{files:o,summary:{line:c(u(e=>e.lines)),branch:c(u(e=>e.branches)),function:c(u(e=>e.functions)),statement:c(u(e=>e.statements)),files:o.length}}}function Q(t){let i=[],s=t.split(`
3
- `),o=null,u=0,c=0,e=0,l=0,r=0,g=0,f=[],d=[];for(let n of s)if(n.startsWith("SF:"))o=n.slice(3);else if(n.startsWith("LF:"))u=parseInt(n.slice(3),10);else if(n.startsWith("LH:"))c=parseInt(n.slice(3),10);else if(n.startsWith("BRF:"))e=parseInt(n.slice(4),10);else if(n.startsWith("BRH:"))l=parseInt(n.slice(4),10);else if(n.startsWith("FNF:"))r=parseInt(n.slice(4),10);else if(n.startsWith("FNH:"))g=parseInt(n.slice(4),10);else if(n.startsWith("DA:")){let[h,x]=n.slice(3).split(",").map(E=>parseInt(E,10));x===0&&f.push(h)}else if(n.startsWith("BRDA:")){let h=n.slice(5).split(","),x=parseInt(h[0],10),E=h[3];(E==="0"||E==="-")&&d.push(x)}else n==="end_of_record"&&o&&(i.push({path:o,lines:{covered:c,total:u},branches:{covered:l,total:e},functions:{covered:g,total:r},statements:{covered:0,total:0},uncoveredLines:Array.from(new Set(f)),uncoveredBranches:Array.from(new Set(d))}),o=null,u=c=0,e=l=0,r=g=0,f.length=0,d.length=0);let v=0,m=0,p=0,S=0,b=0,a=0;for(let n of i)v+=n.lines.total,m+=n.lines.covered,p+=n.branches.total,S+=n.branches.covered,b+=n.functions.total,a+=n.functions.covered;return{files:i,summary:{line:v>0?m/v*100:0,branch:p>0?S/p*100:0,function:b>0?a/b*100:0,statement:v>0?m/v*100:0,files:i.length}}}function V(t){let i=[];function s(p,S){let b=p.match(new RegExp(`${S}=["']([^"']*)["']`));return b?b[1]:null}let o=/<class\s[^>]*?>/g,u;for(;(u=o.exec(t))!==null;){let p=u[0],S=s(p,"filename");if(!S)continue;let b=parseFloat(s(p,"line-rate")||"NaN"),a=parseFloat(s(p,"branch-rate")||"NaN"),n=u.index,h=t.indexOf("</class>",n),x=h>n?t.slice(n,h):"",E=0,N=0,F=0,j=0,I=0,L=0,P=[],M=[],y=/<line\s([^>]*?)\/>/g,T;for(;(T=y.exec(x))!==null;){let C=T[1],k=parseInt(s(C,"number")||"0",10),A=parseInt(s(C,"hits")||"0",10),J=s(C,"branch")==="true",B=s(C,"condition-coverage");E++,A>0?N++:P.push(k),J&&(F++,(B?parseInt(B,10):A>0?100:0)===100?j++:M.push(k))}let D=/<method\s([^>]*?)>/g,_;for(;(_=D.exec(x))!==null;){I++;let C=_.index,k=x.indexOf("</method>",C);if(k>C){let A=x.slice(C,k),J=/<line\s([^>]*?)\/>/g,B=!1,W;for(;(W=J.exec(A))!==null;)if(parseInt(s(W[1],"hits")||"0",10)>0){B=!0;break}B&&L++}}E===0&&!isNaN(b)&&(E=100,N=Math.round(Math.max(0,Math.min(1,b))*100)),i.push({path:S,lines:{covered:N,total:E},branches:{covered:j,total:F},functions:{covered:L,total:I},statements:{covered:0,total:0},uncoveredLines:P,uncoveredBranches:M})}let c=0,e=0,l=0,r=0,g=0,f=0;for(let p of i)c+=p.lines.total,e+=p.lines.covered,l+=p.branches.total,r+=p.branches.covered,g+=p.functions.total,f+=p.functions.covered;let d=t.match(/<coverage\s[^>]*?>/),v=d?parseFloat(s(d[0],"line-rate")||"NaN")*100:NaN,m=d?parseFloat(s(d[0],"branch-rate")||"NaN")*100:NaN;return{files:i,summary:{line:isNaN(v)?c>0?e/c*100:0:v,branch:isNaN(m)?l>0?r/l*100:0:m,function:g>0?f/g*100:0,statement:c>0?e/c*100:0,files:i.length}}}async function ue(t,i={}){let s=[],{includeTests:o=!0,languages:u,maxFiles:c=5e3}=i,e=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".pyw",".go",".rs",".java",".kt",".kts",".rb",".cs",".php",".swift",".c",".h",".cpp",".hpp",".cc",".scala"];if(u&&u.length>0){e=[];for(let r of u)r==="typescript"&&e.push(".ts",".tsx"),r==="javascript"&&e.push(".js",".jsx",".mjs",".cjs"),r==="python"&&e.push(".py",".pyw"),r==="go"&&e.push(".go"),r==="rust"&&e.push(".rs"),r==="java"&&e.push(".java"),r==="kotlin"&&e.push(".kt",".kts"),r==="ruby"&&e.push(".rb"),(r==="csharp"||r==="c#")&&e.push(".cs"),r==="php"&&e.push(".php"),r==="swift"&&e.push(".swift"),(r==="c"||r==="cpp"||r==="c++")&&e.push(".c",".h",".cpp",".hpp",".cc"),r==="scala"&&e.push(".scala")}async function l(r){try{let g=await R.readdir(r,{withFileTypes:!0});for(let f of g){let d=w.join(r,f.name);if(f.isDirectory()){if(["node_modules",".git","dist","build","coverage",".nyc_output","__pycache__",".venv","venv",".tox",".mypy_cache","target",".gradle","vendor",".bundle",".cache",".npm",".yarn",".next",".nuxt",".svelte-kit","out",".turbo","tmp","temp",".tmp"].includes(f.name)||H(r,f.name,r===t))continue;if(s.length>=c)return;await l(d)}else if(f.isFile()){let v=w.extname(f.name);if(!e.includes(v)||!o&&(f.name.includes(".test.")||f.name.includes(".spec.")||f.name.endsWith("_test.ts")||f.name.endsWith("_test.js")||d.includes("/__tests__/")||d.includes("/test/")||d.includes("/tests/")))continue;if(s.length>=c)return;s.push(d)}}}catch{}}try{if((await R.stat(t)).isFile())return[t];await l(t)}catch{}return s}function de(t){let i=new Set,s={injection:"Use parameterized queries and input validation to prevent injection attacks",xss:"Sanitize user input and use Content-Security-Policy headers","sensitive-data":"Never hardcode secrets; use environment variables or secret managers","access-control":"Implement proper authentication and authorization checks","security-misconfiguration":"Review and harden security configurations","insecure-deserialization":"Avoid deserializing untrusted data; use safe alternatives","broken-auth":"Use strong authentication mechanisms and secure session management",dependencies:"Keep dependencies updated and regularly audit for vulnerabilities"};for(let c of t){let e=s[c.category];e&&i.add(e)}let o=t.some(c=>c.severity==="critical"),u=t.some(c=>c.severity==="high");return o&&i.add("CRITICAL: Address critical vulnerabilities immediately before deployment"),u&&i.add("Prioritize fixing high-severity issues in the next sprint"),i.size===0&&t.length===0&&i.add("No vulnerabilities found - maintain current security practices"),Array.from(i)}import{execFileSync as Y,spawn as U}from"node:child_process";import{readdirSync as ee,readFileSync as te}from"node:fs";function $(t){for(let i of ee("/proc")){if(!/^\d+$/.test(i))continue;let s;try{s=te(`/proc/${i}/stat`,"utf8")}catch(u){if(["ENOENT","ESRCH"].includes(u.code??""))continue;throw u}let o=s.slice(s.lastIndexOf(")")+1).trim().split(/\s+/);if(o.length<3||!/^\d+$/.test(o[2]))throw new Error(`Invalid process stat for ${i}`);if(Number(o[2])===t&&o[0]!=="Z"&&o[0]!=="X")return!0}return!1}function ne(t){let i=Y("ps",["-axo","pgid=,stat="],{encoding:"utf8",timeout:1e3,maxBuffer:1048576});for(let s of i.split(`
4
- `)){if(!s.trim())continue;let o=/^\s*(\d+)\s+([A-Z?])\S*\s*$/.exec(s);if(!o)throw new Error("Could not determine Darwin process group state");if(Number(o[1])===t&&o[2]!=="Z")return!0}return!1}var O=new Set,z=()=>{for(let t of O)try{process.kill(-t,"SIGKILL")}catch{}};function se(t){let i=t.pid;return process.platform==="win32"||i===void 0?()=>{}:(O.size===0&&process.once("exit",z),O.add(i),()=>{O.delete(i),O.size===0&&process.off("exit",z)})}function re(t){return new Promise((i,s)=>{let o=process.platform,u=o==="linux",c=process.platform!=="win32"&&t.pid!==void 0,e=process.platform==="win32"&&t.pid!==void 0,l,r=!1,g=!1,f=!1,d=!1,v=()=>{r||(r=!0,clearTimeout(l),t.off("close",b),i())},m=a=>{r||(r=!0,clearTimeout(l),t.off("close",b),s(a))},p=()=>{try{return process.kill(-t.pid,0),g&&u?$(t.pid):!0}catch(a){if(a.code==="ESRCH")return!1;if(o==="darwin"&&a.code==="EPERM")return ne(t.pid);if(g&&u&&a.code==="EPERM")return $(t.pid);throw a}},S=a=>{try{return process.kill(-t.pid,a),!0}catch(n){if(n.code==="ESRCH")return!1;throw n}},b=()=>{f=!0;try{if(e){d&&v();return}(!c||!p())&&v()}catch(a){m(a)}};t.once("close",b);try{if(c){if(!S("SIGTERM")){v();return}l=setTimeout(()=>{try{if(!S("SIGKILL")){v();return}g=!0;let a=Date.now()+1e3,n=()=>{try{p()?Date.now()>=a?m(new Error(`Test runner group ${t.pid} survived SIGKILL.`)):l=setTimeout(n,20):v()}catch(h){m(h)}};n()}catch(a){m(a)}},1e3)}else if(e){let a=U("taskkill",["/PID",String(t.pid),"/T","/F"],{stdio:"ignore",windowsHide:!0,timeout:2e3});a.once("error",m),a.once("close",n=>{n!==0?m(new Error(`Test runner tree termination failed (taskkill exit ${n}).`)):(d=!0,f&&v())})}else{if(t.kill("SIGTERM"),r)return;l=setTimeout(()=>{t.kill("SIGKILL")},1e3)}}catch(a){m(a)}})}var oe=1024*1024,ie=3e3;function he(t,i,s){let o=s.maxBuffer??oe;return new Promise(u=>{let c="",e="",l,r,g,f=!1,d;try{d=U(t,[...i],{cwd:s.cwd,env:s.env??process.env,detached:process.platform!=="win32",stdio:["ignore","pipe","pipe"]})}catch(a){u({status:null,signal:null,stdout:c,stderr:e,error:a});return}let v=se(d),m=(a,n)=>{if(f)return;f=!0,clearTimeout(S),clearTimeout(g);let x={status:r?null:a,signal:r&&!n?"SIGTERM":n,stdout:c,stderr:e,error:l},E=()=>{v(),u(x)};r?r.then(E,E):E()},p=(a,n)=>{if(r)return;l=Object.assign(new Error(n),{code:a,syscall:`spawnSync ${t}`}),r=re(d);let h=()=>{d.stdout?.destroy(),d.stderr?.destroy()};r.then(h,h),g=setTimeout(h,ie)},S=setTimeout(()=>p("ETIMEDOUT",`spawnSync ${t} ETIMEDOUT`),s.timeout),b=a=>n=>{if(r)return;let h=(a==="stdout"?c:e)+n,x=h.length>o?h.slice(0,o):h;a==="stdout"?c=x:e=x,h.length>o&&p("ENOBUFS",`spawnSync ${t} ENOBUFS`)};d.stdout?.setEncoding("utf8").on("data",b("stdout")),d.stderr?.setEncoding("utf8").on("data",b("stderr")),d.once("error",a=>{l??=a,d.pid===void 0&&m(null,null)}),d.once("close",(a,n)=>m(a,n))})}export{le as a,X as b,Z as c,q as d,Q as e,V as f,ue as g,de as h,se as i,re as j,he as k};
@@ -1,4 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- var a=class extends Error{constructor(r){super(r),this.name="TestRunnerExecutionError"}};function N(e,r,t,n,s,i){let c=(i?.testResults??[]).filter(u=>u.status==="failed"&&(e==="vitest"&&u.message||!u.assertionResults?.some(f=>f.status==="failed"))),o;if(t===null?o="terminated without an exit code":n.passed+n.failed+n.skipped===0?o="reported zero tests":c.length>0||(i?.numRuntimeErrorTestSuites??0)>0||(i?.numFailedTestSuites??0)>0&&n.failed===0?o="reported a suite execution error":(t!==0||i?.success===!1)&&n.failed===0&&(o="failed without a failed assertion"),!o)return;let l=[...c.map(u=>u.message).filter(Boolean),s.trim()].filter(Boolean).join(`
3
- `).slice(0,4e3);return new a(`${e} ${o} for ${r} (exit code ${t??"unknown"}).`+(l?`
4
- ${l}`:""))}import{mkdtempSync as g,readFileSync as R,rmSync as y}from"node:fs";import{tmpdir as h}from"node:os";import{join as d}from"node:path";function x(e,r){if(!r)return;let t;try{t=R(r,"utf-8")}catch(n){if(n.code==="ENOENT")return;throw new Error("Could not read the current Vitest JSON report.")}try{let n=JSON.parse(t);if(!n||!Array.isArray(n.testResults))throw new Error("Invalid report")}catch{throw new Error("The current Vitest JSON report is malformed.")}return t}function k(){let e=g(d(h(),"aqe-vitest-report-")),r=d(e,"report.json"),t=!1;return{path:r,args:[`--outputFile=${r}`],read:n=>x(n,r),cleanup:()=>{if(!t){t=!0;try{y(e,{recursive:!0,force:!0})}catch{}}}}}function z(e){let r=e.some(s=>/(^|[\\/])vitest(\.cmd|\.js|\.mjs)?$/i.test(s)),t=e.some((s,i)=>s==="--reporter=json"||s==="--reporter"&&e[i+1]==="json"),n=e.some(s=>s.startsWith("--outputFile"));return r&&t&&!n}import{realpathSync as E,statSync as $}from"node:fs";import{basename as j,dirname as S,extname as b,resolve as p,sep as w}from"node:path";function m(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function F(e,r=process.cwd()){let t=p(r,e);try{return p(E(S(t)),j(t))}catch{return t}}function J(e){try{return $(e).isDirectory()}catch{return b(e)===""}}function P(e,r=process.cwd()){let t=F(e,r),n=t.split(w).join("/"),s=J(t)?"(?:/|$)":"$";return`^${m(n)}${s}`}function q(e,r){let t=m(r);return e==="mocha"?`--grep=${t}`:`--testNamePattern=${t}`}function I(e){return e.some(r=>/(^|[\\/])jest(\.cmd|\.js|\.mjs)?$/i.test(r))}export{a,N as b,k as c,z as d,F as e,P as f,q as g,I as h};
@@ -1,4 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- import{b as M}from"./chunk-XOLDMK23.js";import{j as D,k as x,l as k,n as h}from"./chunk-AR2E4B7K.js";import{c as y}from"./chunk-5LAAZLUC.js";import N from"chalk";import*as m from"fs";import*as d from"path";var T=["coverage/coverage-final.json","coverage/coverage-summary.json",".coverage/coverage-final.json"];function E(e){for(let t of T){let n=d.join(e,t);if(m.existsSync(n))try{let r=m.readFileSync(n,"utf-8"),a=JSON.parse(r);if(a.total&&a.total.lines)return w(a,e);let o=new Map;for(let s of y(r).files)o.set(s.path,s);return o.size>0?o:null}catch{continue}}return null}function w(e,t){let n=new Map;for(let[r,a]of Object.entries(e)){if(r==="total")continue;let o=a;n.set(r,{path:r,lines:{covered:o.lines.covered,total:o.lines.total},branches:{covered:o.branches.covered,total:o.branches.total},functions:{covered:o.functions.covered,total:o.functions.total},statements:{covered:o.statements.covered,total:o.statements.total},uncoveredLines:[],uncoveredBranches:[]})}return n.size>0?n:null}function j(e,t){let r=t.split(`
3
- `).length,o=[e.replace(".ts",".test.ts").replace("/src/","/tests/"),e.replace(".ts",".spec.ts").replace("/src/","/tests/"),e.replace(".ts",".test.ts"),e.replace("/src/","/test/").replace(".ts",".test.ts")].some(g=>m.existsSync(g)),s=(t.match(/\bexport\b/g)||[]).length,i=(t.match(/\b(function|=>)\b/g)||[]).length,c=(t.match(/\b(if|switch|case|\?\?|\|\|)\b/g)||[]).length,l;if(o){let g=Math.min(c*.005,.15),b=Math.min(r*1e-4,.1);l=.85-g-b}else l=.2+(s>5?.1:0);l=Math.max(.05,Math.min(.95,l));let u=Math.floor(r*l),f=Math.max(i,1),C=Math.max(c,1),F=Math.floor(u*.7),S=Math.floor(f*l*.9),v=Array.from({length:r-u},(g,b)=>b+u+1);return{path:e,lines:{covered:u,total:r},branches:{covered:Math.min(F,C),total:C},functions:{covered:Math.min(S,f),total:f},statements:{covered:u,total:r},uncoveredLines:v,uncoveredBranches:v.slice(0,Math.floor(v.length/2))}}function p(e){let t=s=>e.reduce((i,c)=>i+s(c),0),n=(s,i)=>i>0?Math.round(s/i*100):0,r=t(s=>s.lines.total),a=t(s=>s.lines.covered),o=t(s=>s.statements.total);return{line:n(a,r),branch:n(t(s=>s.branches.covered),t(s=>s.branches.total)),function:n(t(s=>s.functions.covered),t(s=>s.functions.total)),statement:o>0?n(t(s=>s.statements.covered),o):n(a,r),files:e.length}}function R(e,t){let n=t||process.cwd(),r=E(n),a=[],o=[],s=!1;if(r&&r.size>0){s=!0;for(let i of e){let c=d.resolve(i),l=r.get(c)||r.get(i)||r.get(d.relative(n,c));l?a.push({...l,path:i}):o.push(i)}}else for(let i of e){let c=m.existsSync(i)?m.readFileSync(i,"utf-8"):"";a.push(j(i,c))}return{files:a,summary:p(a),instrumented:s,...o.length>0?{unmeasuredFiles:o}:{}}}var A=3,z="instrumented-report",O="static-estimation";async function I(e,t=n=>console.log(n)){let n=await D(e);if(n.status==="target-missing")return{kind:"no-data",reason:"target-missing",message:h("target-missing",e,null)};if(n.status==="evaluated"){let{evaluation:a,projectRoot:o}=n;if(a.status==="measured"){let s=a.files;return{kind:"data",data:{files:s,summary:p(s),instrumented:!0},projectRoot:o}}return{kind:"no-data",reason:a.reason,message:h(a.reason,e,o)}}let r=M(n.target,{includeTests:!1});return r.length===0?{kind:"no-sources"}:(t(N.gray(` Analyzing ${r.length} files...
4
- `)),{kind:"data",data:R(r,n.projectRoot),projectRoot:n.projectRoot})}function P(e){return{branch:e.files.some(t=>t.branches.total>0),function:e.files.some(t=>t.functions.total>0),statement:e.files.some(t=>t.statements.total>0)}}var L=e=>e==="target-missing"||e==="unreadable-report";function _(){return"UNMEASURED: no coverage report exists for this project, so these figures are a STATIC ESTIMATE derived from source shape \u2014 not measured coverage. No threshold verdict is given and nothing is stored as evidence. Run your tests with coverage first (e.g. `npm test -- --coverage`) and re-run."}async function G(e,t,n,r){let a=await I(t,r);if(a.kind==="no-sources")return a;if(a.kind==="no-data")return L(a.reason)?{kind:"error",reason:a.reason,message:a.message}:{kind:"unmeasured",reason:a.reason,message:a.message};let o=a.data,s=o.instrumented,i=await e.analyze({coverageData:o,threshold:n,includeFileDetails:!0,measured:s,...a.projectRoot?{projectRoot:a.projectRoot}:{}});if(!i.success||!i.value)return{kind:"analysis-failed",message:i.error?.message||"Coverage analysis failed"};let c=i.value;if(!s)return{kind:"estimate",data:o,summary:{...c.summary},message:_()};let l=P(o),u=x(c.summary,n,l);return{kind:"measured",data:o,collected:l,verdict:u,summary:{...c.summary,branch:l.branch?c.summary.branch:null,function:l.function?c.summary.function:null,statement:l.statement?c.summary.statement:null},recommendations:k(c.recommendations??[],u,n,l)}}function X(e,t){switch(e.kind){case"measured":{let{overall:n,meetsThreshold:r}=e.verdict;return r?n<t+5?2:0:1}case"estimate":case"unmeasured":return A;case"no-sources":return 0;default:return 1}}function $(e,t,n){let r={line:null,branch:null,function:null,statement:null};switch(e.kind){case"measured":return{summary:e.summary,meetsThreshold:e.verdict.meetsThreshold,threshold:t,recommendations:e.recommendations,measured:!0,estimated:!1,coverageMethod:z,branchDataCollected:e.collected.branch,functionDataCollected:e.collected.function,statementDataCollected:e.collected.statement,...e.data.unmeasuredFiles?.length?{unmeasuredFiles:e.data.unmeasuredFiles}:{}};case"estimate":return{summary:e.summary,meetsThreshold:null,threshold:t,measured:!1,estimated:!0,unmeasured:!0,coverageMethod:O,reason:"no-coverage-report",target:n,warning:e.message};case"unmeasured":case"error":return{summary:r,meetsThreshold:null,threshold:t,measured:!1,unmeasured:e.kind==="unmeasured",reason:e.reason,target:n,warning:e.message};case"analysis-failed":return{summary:r,meetsThreshold:null,threshold:t,measured:!1,target:n,error:e.message};case"no-sources":return{summary:r,meetsThreshold:null,threshold:t,measured:!1,target:n,warning:"No source files found"}}}export{A as a,I as b,G as c,X as d,$ as e};