agentic-qe 3.15.8 → 3.15.9

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 (479) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +183 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/agents/claim-verifier/claim-verifier-service.js +13 -8
  5. package/dist/bridge/captured-experience-bridge.js +12 -13
  6. package/dist/cli/bundle.js +6 -6
  7. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-W3V5P7LE.js → agent-booster-wasm-427FRKWG.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-2NQFHAWE.js → agent-handler-RIYHTHVZ.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-457ECHHK.js → agent-memory-branch-WSUCUHOO.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +2 -0
  12. package/dist/cli/chunks/{arena-JV3WSEHU.js → arena-KRIBMIXX.js} +2 -2
  13. package/dist/cli/chunks/{arena-IYBQ3GPY.js → arena-YAJZX6MC.js} +4 -4
  14. package/dist/cli/chunks/{audit-5OS3T3K6.js → audit-7ZNOXWP3.js} +3 -3
  15. package/dist/cli/chunks/base-67DXSAYM.js +2 -0
  16. package/dist/cli/chunks/{better-sqlite3-IQKBFVAO.js → better-sqlite3-ZQAT4I6H.js} +2 -2
  17. package/dist/cli/chunks/{brain-handler-KA3SGAFM.js → brain-handler-452WCPZC.js} +3 -3
  18. package/dist/cli/chunks/{branch-enumerator-QZDU2VOQ.js → branch-enumerator-IJFXJRPN.js} +2 -2
  19. package/dist/cli/chunks/{browser-ZL7OLKJQ.js → browser-CT3MTV6G.js} +2 -2
  20. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +2 -0
  21. package/dist/cli/chunks/{chunk-IJSFZO7P.js → chunk-2BA45H64.js} +2 -2
  22. package/dist/cli/chunks/{chunk-6GIC2263.js → chunk-2HL3UM5P.js} +2 -2
  23. package/dist/cli/chunks/{chunk-KVMKYUOE.js → chunk-2I2UPJS7.js} +2 -2
  24. package/dist/cli/chunks/{chunk-22DOS3PM.js → chunk-2TDIS6YK.js} +2 -2
  25. package/dist/cli/chunks/{chunk-5MBNRTT5.js → chunk-2URBI52G.js} +2 -2
  26. package/dist/cli/chunks/{chunk-A6GCO6ZU.js → chunk-2XITOPYV.js} +2 -2
  27. package/dist/cli/chunks/{chunk-I77D65X5.js → chunk-2YH62JCN.js} +2 -2
  28. package/dist/cli/chunks/{chunk-2JCLACCS.js → chunk-32UTLDNY.js} +2 -2
  29. package/dist/cli/chunks/{chunk-UTNKMPTC.js → chunk-37BIGMJI.js} +1 -1
  30. package/dist/cli/chunks/{chunk-767SR7WH.js → chunk-3CJCROMW.js} +2 -2
  31. package/dist/cli/chunks/{chunk-LVHZK7GW.js → chunk-3LYU7BLY.js} +2 -2
  32. package/dist/cli/chunks/{chunk-5DZDLOY6.js → chunk-47TYABPD.js} +3 -3
  33. package/dist/cli/chunks/{chunk-SWY6KGMF.js → chunk-47V7FQGX.js} +2 -2
  34. package/dist/cli/chunks/{chunk-KMZW2P3R.js → chunk-4JCY45KV.js} +2 -2
  35. package/dist/cli/chunks/{chunk-D4IBIMWI.js → chunk-4SUOVLJ6.js} +2 -2
  36. package/dist/cli/chunks/{chunk-J7RCI25Q.js → chunk-4URT6JO2.js} +1 -1
  37. package/dist/cli/chunks/{chunk-SHEVM5PF.js → chunk-4V27J6YN.js} +2 -2
  38. package/dist/cli/chunks/{chunk-JWPYMRIX.js → chunk-4W4DYVSH.js} +1 -1
  39. package/dist/cli/chunks/chunk-55HRSNGN.js +2 -0
  40. package/dist/cli/chunks/{chunk-R2NHGESM.js → chunk-5D2I7JUP.js} +2 -2
  41. package/dist/cli/chunks/{chunk-GGSTLKY5.js → chunk-5JWGCIQW.js} +1 -1
  42. package/dist/cli/chunks/chunk-5LAAZLUC.js +4 -0
  43. package/dist/cli/chunks/{chunk-YNQPHRUZ.js → chunk-5NS3USRW.js} +1 -1
  44. package/dist/cli/chunks/{chunk-4YUBWU3E.js → chunk-6EPHNJTL.js} +1 -1
  45. package/dist/cli/chunks/{chunk-ZBI7PJFX.js → chunk-6OOYIO3W.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ST7ASEJO.js → chunk-6PXA2BQJ.js} +58 -58
  47. package/dist/cli/chunks/{chunk-LPSMVBB3.js → chunk-6YL6JOQB.js} +2 -2
  48. package/dist/cli/chunks/{chunk-DY37YMMQ.js → chunk-72AMFDC7.js} +1 -1
  49. package/dist/cli/chunks/{chunk-OWBFVAEH.js → chunk-763SUL4B.js} +2 -2
  50. package/dist/cli/chunks/{chunk-4GYFONJB.js → chunk-7DMA5NYL.js} +1 -1
  51. package/dist/cli/chunks/{chunk-4GUVVGJX.js → chunk-7JKB3Q7O.js} +1 -1
  52. package/dist/cli/chunks/{chunk-DN3AKAPY.js → chunk-7KII4CQG.js} +2 -2
  53. package/dist/cli/chunks/{chunk-VKFVJCIH.js → chunk-7QGYJ5OY.js} +1 -1
  54. package/dist/cli/chunks/{chunk-HNGNRIZZ.js → chunk-7QTB5VJZ.js} +2 -2
  55. package/dist/cli/chunks/{chunk-GSOK4M6V.js → chunk-7X2Y727E.js} +1 -1
  56. package/dist/cli/chunks/{chunk-PZ7FJ4UG.js → chunk-A4RU67VX.js} +2 -2
  57. package/dist/cli/chunks/{chunk-VWSGWYRB.js → chunk-A6YIH4C4.js} +2 -2
  58. package/dist/cli/chunks/{chunk-4I35ARWW.js → chunk-ABFDB4X3.js} +1 -1
  59. package/dist/cli/chunks/{chunk-NQDYOF35.js → chunk-AJ4YDSOI.js} +2 -2
  60. package/dist/cli/chunks/{chunk-CDLG3Q2O.js → chunk-AOFO4N32.js} +2 -2
  61. package/dist/cli/chunks/{chunk-WAWKAYPY.js → chunk-AQTVVLNP.js} +1 -1
  62. package/dist/cli/chunks/chunk-AR2E4B7K.js +6 -0
  63. package/dist/cli/chunks/{chunk-HXCGV5UJ.js → chunk-AVB5QY2Q.js} +2 -2
  64. package/dist/cli/chunks/{chunk-JFWQFB3S.js → chunk-BHKXMIWX.js} +2 -2
  65. package/dist/cli/chunks/{chunk-BEVWCF3Q.js → chunk-BXO536GT.js} +3 -3
  66. package/dist/cli/chunks/{chunk-IMSRWNWF.js → chunk-C6RTMTEH.js} +1 -1
  67. package/dist/cli/chunks/{chunk-UKKFZJME.js → chunk-CTZJUV5I.js} +1 -1
  68. package/dist/cli/chunks/{chunk-MV4S3TEC.js → chunk-D6XVGFTI.js} +2 -2
  69. package/dist/cli/chunks/{chunk-5YOO5QSE.js → chunk-DDPPSSHW.js} +1 -1
  70. package/dist/cli/chunks/{chunk-NHOMVBCI.js → chunk-DGTLJNJH.js} +2 -2
  71. package/dist/cli/chunks/{chunk-NWFBF3KT.js → chunk-DINZR5CF.js} +1 -1
  72. package/dist/cli/chunks/{chunk-RG42LDOB.js → chunk-EFBLP43U.js} +2 -2
  73. package/dist/cli/chunks/chunk-ETG7O5E5.js +5 -0
  74. package/dist/cli/chunks/{chunk-KNHLOANK.js → chunk-F2SQPP6U.js} +2 -2
  75. package/dist/cli/chunks/{chunk-62T7U25U.js → chunk-F3PQZX44.js} +1 -1
  76. package/dist/cli/chunks/{chunk-X3HM7SV4.js → chunk-F4JYIRW2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-NZATJ2C6.js → chunk-FJ4VTLLK.js} +2 -2
  78. package/dist/cli/chunks/{chunk-TMNEK7TP.js → chunk-FL3OYGCS.js} +2 -2
  79. package/dist/cli/chunks/{chunk-HI6OBDDY.js → chunk-FLASM2XB.js} +2 -2
  80. package/dist/cli/chunks/{chunk-GENNJRNK.js → chunk-FV3NHVC7.js} +22 -22
  81. package/dist/cli/chunks/{chunk-PICEGWGB.js → chunk-FV7VAG74.js} +1 -1
  82. package/dist/cli/chunks/{chunk-PWA6XBW4.js → chunk-G3BKZNFL.js} +5 -5
  83. package/dist/cli/chunks/{chunk-T2TDTBFV.js → chunk-GBUIG3FS.js} +1 -1
  84. package/dist/cli/chunks/{chunk-QFYUZYRA.js → chunk-GCWSX2NY.js} +4 -4
  85. package/dist/cli/chunks/{chunk-KJNUETCB.js → chunk-GII5WVAK.js} +1 -1
  86. package/dist/cli/chunks/{chunk-YVWMJZ6O.js → chunk-GKPQ2GRR.js} +2 -2
  87. package/dist/cli/chunks/chunk-GR3JYE5A.js +2 -0
  88. package/dist/cli/chunks/{chunk-CQ5G64EA.js → chunk-H3KBIWTO.js} +2 -2
  89. package/dist/cli/chunks/{chunk-V4QJ3MMT.js → chunk-HAROIAJE.js} +1 -1
  90. package/dist/cli/chunks/{chunk-OJWEZYLR.js → chunk-HCYQHWI2.js} +2 -2
  91. package/dist/cli/chunks/{chunk-FAYXES7R.js → chunk-HGTWAZWU.js} +2 -2
  92. package/dist/cli/chunks/{chunk-LHRVSK44.js → chunk-HTZJSQ3C.js} +2 -2
  93. package/dist/cli/chunks/{chunk-DAFMHM64.js → chunk-HWK5L7IJ.js} +2 -2
  94. package/dist/cli/chunks/{chunk-K5R3WUJP.js → chunk-HZ5NC6U5.js} +1 -1
  95. package/dist/cli/chunks/{chunk-Y5ZBF7MA.js → chunk-I6S35FRO.js} +2 -2
  96. package/dist/cli/chunks/{chunk-UDCYQLTD.js → chunk-ICP2ORGI.js} +2 -2
  97. package/dist/cli/chunks/{chunk-KMVFBYJO.js → chunk-IFEIY3NQ.js} +2 -2
  98. package/dist/cli/chunks/{chunk-NW7HTOSN.js → chunk-J3DTDJDT.js} +2 -2
  99. package/dist/cli/chunks/chunk-J3WGK22W.js +2 -0
  100. package/dist/cli/chunks/{chunk-5ONJ7AV6.js → chunk-J5KNRVXR.js} +1 -1
  101. package/dist/cli/chunks/{chunk-G77Q22EN.js → chunk-JAV5WPSY.js} +2 -2
  102. package/dist/cli/chunks/{chunk-VVK4ECVJ.js → chunk-JEP4ULR6.js} +2 -2
  103. package/dist/cli/chunks/{chunk-TC52M542.js → chunk-JK2ME6IT.js} +2 -2
  104. package/dist/cli/chunks/chunk-JNNZK7KH.js +2 -0
  105. package/dist/cli/chunks/{chunk-NLYUC63R.js → chunk-JP4P3P3D.js} +2 -2
  106. package/dist/cli/chunks/{chunk-BTMEOZYY.js → chunk-JUVHZG7I.js} +1 -1
  107. package/dist/cli/chunks/{chunk-PUYQ6EKC.js → chunk-JWGRWMZP.js} +2 -2
  108. package/dist/cli/chunks/{chunk-OCLAMZJG.js → chunk-K5DJXMAA.js} +2 -2
  109. package/dist/cli/chunks/{chunk-X7ZQIFES.js → chunk-KFUUIAR4.js} +2 -2
  110. package/dist/cli/chunks/chunk-KHSRIPBP.js +180 -0
  111. package/dist/cli/chunks/{chunk-U3BWBP6B.js → chunk-KIKWJM6J.js} +2 -2
  112. package/dist/cli/chunks/{chunk-MUDBF2JC.js → chunk-KIXYKUCI.js} +1 -1
  113. package/dist/cli/chunks/{chunk-P4UT4LBE.js → chunk-KLGYIEJK.js} +3 -3
  114. package/dist/cli/chunks/{chunk-G6CLO74Q.js → chunk-KR3M44CF.js} +3 -3
  115. package/dist/cli/chunks/chunk-KTSLTZSG.js +2 -0
  116. package/dist/cli/chunks/{chunk-FJAO4UX2.js → chunk-KVBEGOJE.js} +2 -2
  117. package/dist/cli/chunks/{chunk-BLZEOGQE.js → chunk-L42JPFCC.js} +2 -2
  118. package/dist/cli/chunks/{chunk-ZOVAZTXE.js → chunk-LCJTEUDC.js} +370 -370
  119. package/dist/cli/chunks/{chunk-JLTGO5BB.js → chunk-LEAKYZ37.js} +2 -2
  120. package/dist/cli/chunks/{chunk-RSMPJWQH.js → chunk-LMU5DUDK.js} +1 -1
  121. package/dist/cli/chunks/{chunk-FEN2DHFM.js → chunk-MZS32SYS.js} +1 -1
  122. package/dist/cli/chunks/{chunk-J7FLNP5L.js → chunk-N3KEY4XJ.js} +2 -2
  123. package/dist/cli/chunks/{chunk-ZG7UKWBB.js → chunk-N3NP6PTT.js} +2 -2
  124. package/dist/cli/chunks/{chunk-2DPHFCMW.js → chunk-N5PDFGCQ.js} +2 -2
  125. package/dist/cli/chunks/{chunk-BQUIZ5QT.js → chunk-NDKLQW6N.js} +2 -2
  126. package/dist/cli/chunks/{chunk-52YRSWPS.js → chunk-NHZIWIQZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-ZOHS32SI.js → chunk-NTAD5UX4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-7H3GNRNA.js → chunk-O3JLOVZX.js} +2 -2
  129. package/dist/cli/chunks/{chunk-7XGM7Q2N.js → chunk-OCESWNAZ.js} +3 -3
  130. package/dist/cli/chunks/{chunk-7SLEUVPZ.js → chunk-OG2UI6A3.js} +2 -2
  131. package/dist/cli/chunks/{chunk-4TZLZRZ4.js → chunk-OXTFSIGN.js} +1 -1
  132. package/dist/cli/chunks/{chunk-2QRGIEQV.js → chunk-OXZLKP6C.js} +1 -1
  133. package/dist/cli/chunks/{chunk-FEPFXXI7.js → chunk-P2CXVNKK.js} +2 -2
  134. package/dist/cli/chunks/{chunk-P2EA62YS.js → chunk-P73W2K7T.js} +1 -1
  135. package/dist/cli/chunks/{chunk-V7VZSNDK.js → chunk-PBZI2ZPV.js} +3 -3
  136. package/dist/cli/chunks/{chunk-MMY52Y6R.js → chunk-PMCRCEW5.js} +2 -2
  137. package/dist/cli/chunks/{chunk-FWXNFPLS.js → chunk-PVIA2FPD.js} +2 -2
  138. package/dist/cli/chunks/{chunk-NF63NHJH.js → chunk-PX2B5TS2.js} +2 -2
  139. package/dist/cli/chunks/{chunk-SFPGLUXS.js → chunk-Q3JVJRVJ.js} +1 -1
  140. package/dist/cli/chunks/{chunk-XOOBLZXR.js → chunk-QQ5SZH4D.js} +2 -2
  141. package/dist/cli/chunks/{chunk-KITKQUBX.js → chunk-QTVWUQTB.js} +1 -1
  142. package/dist/cli/chunks/{chunk-2UN4JOTN.js → chunk-REUFWGMA.js} +2 -2
  143. package/dist/cli/chunks/{chunk-CQ3SBRDP.js → chunk-SNBYYO6F.js} +2 -2
  144. package/dist/cli/chunks/{chunk-A2UGPKCS.js → chunk-SVHUYVUR.js} +2 -2
  145. package/dist/cli/chunks/{chunk-PIEKGKW6.js → chunk-THAY7WHO.js} +2 -2
  146. package/dist/cli/chunks/{chunk-WLXGUQOZ.js → chunk-TNMQVG4A.js} +2 -2
  147. package/dist/cli/chunks/{chunk-2GSAAUW3.js → chunk-TSYQDRNK.js} +1 -1
  148. package/dist/cli/chunks/{chunk-7DHSHD5B.js → chunk-TUYJ53V4.js} +2 -2
  149. package/dist/cli/chunks/{chunk-U7CIY3YR.js → chunk-UNUTC6TX.js} +2 -2
  150. package/dist/cli/chunks/{chunk-CRUQ6RXU.js → chunk-UOJBR4J3.js} +2 -2
  151. package/dist/cli/chunks/{chunk-3LFLO2WK.js → chunk-UOWHE77F.js} +2 -2
  152. package/dist/cli/chunks/{chunk-O4RRVTXN.js → chunk-UYLYMWV5.js} +2 -2
  153. package/dist/cli/chunks/{chunk-D4O3TJI7.js → chunk-V5PXQSFS.js} +2 -2
  154. package/dist/cli/chunks/{chunk-VQRBBR27.js → chunk-VCMINU7K.js} +2 -2
  155. package/dist/cli/chunks/{chunk-3N627QRU.js → chunk-VQHVHVSF.js} +2 -2
  156. package/dist/cli/chunks/{chunk-J6LL25QJ.js → chunk-VRGCKBF7.js} +2 -2
  157. package/dist/cli/chunks/{chunk-VWRNG3UK.js → chunk-VU2EL424.js} +1 -1
  158. package/dist/cli/chunks/{chunk-KNQUHGNY.js → chunk-VXZJOKOX.js} +2 -2
  159. package/dist/cli/chunks/{chunk-EUVSSIGR.js → chunk-VYLM2YV5.js} +3 -3
  160. package/dist/cli/chunks/{chunk-PJGQ2TKN.js → chunk-W32YU3VI.js} +2 -2
  161. package/dist/cli/chunks/{chunk-YRH7KMTU.js → chunk-W5VJRDDG.js} +2 -2
  162. package/dist/cli/chunks/{chunk-PPIM7B5G.js → chunk-WGDR2KIR.js} +2 -2
  163. package/dist/cli/chunks/{chunk-2ZRNXEVI.js → chunk-WRRCQ2UE.js} +1 -1
  164. package/dist/cli/chunks/{chunk-7C6FMLQR.js → chunk-XDBD4GXO.js} +2 -2
  165. package/dist/cli/chunks/{chunk-W5A36V3Z.js → chunk-XOLDMK23.js} +2 -2
  166. package/dist/cli/chunks/{chunk-DCYUHCPK.js → chunk-XOVNZT7F.js} +1 -1
  167. package/dist/cli/chunks/{chunk-4C7KE2EL.js → chunk-XQ3DDY7X.js} +2 -2
  168. package/dist/cli/chunks/{chunk-K4N2MBCE.js → chunk-XUIA5KMS.js} +2 -2
  169. package/dist/cli/chunks/{chunk-YUP3APSN.js → chunk-XWIUFYM3.js} +1 -1
  170. package/dist/cli/chunks/{chunk-SJMZZMHP.js → chunk-XYCKHYBM.js} +2 -2
  171. package/dist/cli/chunks/{chunk-4NTLGGXO.js → chunk-XZJ2O3VC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-UQLAN5TX.js → chunk-YRBBBUJX.js} +5 -5
  173. package/dist/cli/chunks/{chunk-XZQVC3GD.js → chunk-YZGSJG34.js} +1 -1
  174. package/dist/cli/chunks/{chunk-7CVMT64N.js → chunk-YZYDTABJ.js} +1 -1
  175. package/dist/cli/chunks/{chunk-4C3RYBTT.js → chunk-ZANDSVCK.js} +2 -2
  176. package/dist/cli/chunks/{chunk-6E7EOHMN.js → chunk-ZBDRLF43.js} +2 -2
  177. package/dist/cli/chunks/{chunk-UTFMMZ57.js → chunk-ZVSLCEVC.js} +3 -3
  178. package/dist/cli/chunks/{chunk-DKFSCJEF.js → chunk-ZXBCCO2H.js} +2 -2
  179. package/dist/cli/chunks/{ci-7NUCRGWO.js → ci-7SGRCFPS.js} +2 -2
  180. package/dist/cli/chunks/{ci-config-VQVECCFI.js → ci-config-MX3URPZA.js} +2 -2
  181. package/dist/cli/chunks/{ci-output-P7GQ6TKF.js → ci-output-M47NJY6D.js} +2 -2
  182. package/dist/cli/chunks/{circuit-breaker-5YP6N6HE.js → circuit-breaker-5GAK45SW.js} +2 -2
  183. package/dist/cli/chunks/{claude-flow-setup-W5H7CMU6.js → claude-flow-setup-YXYSRH4Y.js} +2 -2
  184. package/dist/cli/chunks/client-ZP3CTVRF.js +2 -0
  185. package/dist/cli/chunks/{cline-installer-OYANSZ54.js → cline-installer-DLJ5QD5N.js} +2 -2
  186. package/dist/cli/chunks/{code-OMT4UEZI.js → code-ONKLMVQ2.js} +25 -24
  187. package/dist/cli/chunks/{code-index-extractor-M2JEWKNF.js → code-index-extractor-2232LGZN.js} +2 -2
  188. package/dist/cli/chunks/{codex-installer-YBS6N5O3.js → codex-installer-UOWLYCMH.js} +2 -2
  189. package/dist/cli/chunks/{completions-U7GS5RG6.js → completions-MHX7GCC7.js} +2 -2
  190. package/dist/cli/chunks/{complexity-analyzer-QSXPIUIU.js → complexity-analyzer-43ZUJKZU.js} +2 -2
  191. package/dist/cli/chunks/{continuedev-installer-W5TTT743.js → continuedev-installer-6Q5JR4FF.js} +2 -2
  192. package/dist/cli/chunks/{copilot-installer-KC2RT24C.js → copilot-installer-CZUMVHSI.js} +2 -2
  193. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +2 -0
  194. package/dist/cli/chunks/{cost-tracker-OQPVR6V4.js → cost-tracker-VS5ZW3XN.js} +2 -2
  195. package/dist/cli/chunks/{coverage-TCO2A2NX.js → coverage-VWKTWZ6D.js} +3 -3
  196. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +2 -0
  197. package/dist/cli/chunks/{cursor-installer-MH7GWD4L.js → cursor-installer-YIFEMORH.js} +2 -2
  198. package/dist/cli/chunks/{daemon-UJEARJZ2.js → daemon-SHWJSJW5.js} +7 -7
  199. package/dist/cli/chunks/daemon-YIFT46FH.js +34 -0
  200. package/dist/cli/chunks/{dag-attention-scheduler-F3SUJU5O.js → dag-attention-scheduler-TCC2WM46.js} +2 -2
  201. package/dist/cli/chunks/{detect-5QTCRB32.js → detect-IGTWSQMA.js} +2 -2
  202. package/dist/cli/chunks/{dist-node-XKZPHDBO.js → dist-node-TCOTJVQX.js} +2 -2
  203. package/dist/cli/chunks/{domain-handler-V3UEADKW.js → domain-handler-55ZVYODR.js} +2 -2
  204. package/dist/cli/chunks/{domain-plugins-7PES4UHZ.js → domain-plugins-GJRWOHQP.js} +2 -2
  205. package/dist/cli/chunks/{domain-transfer-NF7UJW7B.js → domain-transfer-6EF75EKU.js} +2 -2
  206. package/dist/cli/chunks/dream-UDLM6M55.js +2 -0
  207. package/dist/cli/chunks/{embed-and-insert-pattern-D2HWORHF.js → embed-and-insert-pattern-XAMNIKQL.js} +2 -2
  208. package/dist/cli/chunks/{eval-UF2UBAUC.js → eval-GO22R4OZ.js} +2 -2
  209. package/dist/cli/chunks/{experience-capture-middleware-2OUCEHHM.js → experience-capture-middleware-F2BRMJ3Y.js} +3 -3
  210. package/dist/cli/chunks/{fast-paths-KV5DKKHC.js → fast-paths-6RGPYALD.js} +2 -2
  211. package/dist/cli/chunks/{feature-flags-6YWMTNO5.js → feature-flags-MIWQIOHU.js} +2 -2
  212. package/dist/cli/chunks/{feature-flags-MTW6NMR3.js → feature-flags-ZGS3KLPH.js} +2 -2
  213. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +2 -0
  214. package/dist/cli/chunks/fleet-ADL57COA.js +44 -0
  215. package/dist/cli/chunks/{gnn-wrapper-52V6ANOY.js → gnn-wrapper-ALBJVW6T.js} +2 -2
  216. package/dist/cli/chunks/{heartbeat-handler-X7NHNRC7.js → heartbeat-handler-ZMM53NDY.js} +4 -4
  217. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +2 -0
  218. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +2 -0
  219. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +2 -0
  220. package/dist/cli/chunks/{hnsw-legacy-bridge-DZBE3KMK.js → hnsw-legacy-bridge-RYUJPA7B.js} +2 -2
  221. package/dist/cli/chunks/{hnswlib-node-2AWWUJAZ.js → hnswlib-node-XM6XF3YV.js} +2 -2
  222. package/dist/cli/chunks/{hooks-XLPVROL3.js → hooks-X62O7TJO.js} +10 -10
  223. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +2 -0
  224. package/dist/cli/chunks/{hypergraph-engine-6TI7YP6P.js → hypergraph-engine-ZBWUPTVD.js} +2 -2
  225. package/dist/cli/chunks/{hypergraph-handler-DBIBBOXS.js → hypergraph-handler-DUMF6SJV.js} +3 -3
  226. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +2 -0
  227. package/dist/cli/chunks/{init-guard-OSO6MIDD.js → init-guard-S4I2R46S.js} +2 -2
  228. package/dist/cli/chunks/{init-handler-7S7IHMUF.js → init-handler-L4KJHVWS.js} +6 -6
  229. package/dist/cli/chunks/init-wizard-422UZYQ5.js +2 -0
  230. package/dist/cli/chunks/kernel-N7PJ6FCE.js +2 -0
  231. package/dist/cli/chunks/{kilocode-installer-2KBRFXMA.js → kilocode-installer-GNNB5FCZ.js} +2 -2
  232. package/dist/cli/chunks/{kiro-installer-5VFR4OQZ.js → kiro-installer-HR6ZAH7T.js} +2 -2
  233. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +2 -0
  234. package/dist/cli/chunks/{learning-G5NHL3DV.js → learning-4IEEOHJS.js} +3 -3
  235. package/dist/cli/chunks/{llm-router-4EAPPMHS.js → llm-router-ZFMORP36.js} +4 -4
  236. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +2 -0
  237. package/dist/cli/chunks/{load-UYMZPEY6.js → load-ZM43WGDO.js} +2 -2
  238. package/dist/cli/chunks/load-test-POMIF4Q4.js +2 -0
  239. package/dist/cli/chunks/{mcp-NOTDZBW5.js → mcp-CRZKZE37.js} +2 -2
  240. package/dist/cli/chunks/{memory-QL53YIHP.js → memory-W5FZGVAD.js} +5 -5
  241. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +2 -0
  242. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +2 -0
  243. package/dist/cli/chunks/{multi-model-executor-PDDDXF2B.js → multi-model-executor-SXXGAQ2G.js} +2 -2
  244. package/dist/cli/chunks/{opencode-installer-75D2SKOT.js → opencode-installer-PIRBUAB5.js} +2 -2
  245. package/dist/cli/chunks/{orchestrator-3WIZBV4T.js → orchestrator-H5SQCQTB.js} +11 -10
  246. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +2 -0
  247. package/dist/cli/chunks/{pattern-usage-recorder-TEX2JGHA.js → pattern-usage-recorder-XZTWDI2T.js} +2 -2
  248. package/dist/cli/chunks/{pipeline-7ATPA6LU.js → pipeline-5LMLBIJ7.js} +2 -2
  249. package/dist/cli/chunks/{platform-WPSKRJE7.js → platform-KJDABL5C.js} +2 -2
  250. package/dist/cli/chunks/{plugin-UUFOVVMU.js → plugin-V4KSBVVM.js} +2 -2
  251. package/dist/cli/chunks/{prime-radiant-advanced-wasm-PDFSYWKZ.js → prime-radiant-advanced-wasm-JDHTKQAT.js} +2 -2
  252. package/dist/cli/chunks/project-root-X72FSM2F.js +2 -0
  253. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +2 -0
  254. package/dist/cli/chunks/{protocol-handler-3VRYRIQB.js → protocol-handler-BNRONTQV.js} +2 -2
  255. package/dist/cli/chunks/{prove-2NAUROGF.js → prove-ELLL6XMX.js} +2 -2
  256. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +2 -0
  257. package/dist/cli/chunks/{quality-ZIEI2WGA.js → quality-NH2QA4D4.js} +2 -2
  258. package/dist/cli/chunks/{quality-gate-KWJO4SWQ.js → quality-gate-JTKLF7GW.js} +3 -3
  259. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +2 -0
  260. package/dist/cli/chunks/{real-embeddings-TSZ4UIAE.js → real-embeddings-J3KCKLPB.js} +2 -2
  261. package/dist/cli/chunks/{ref-validation-DWFFRETJ.js → ref-validation-HNXQRP4F.js} +2 -2
  262. package/dist/cli/chunks/{roocode-installer-XTZHLUBO.js → roocode-installer-COJ6CX6S.js} +2 -2
  263. package/dist/cli/chunks/router-CXZKOOTR.js +2 -0
  264. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +2 -0
  265. package/dist/cli/chunks/{routing-handler-GG525TDM.js → routing-handler-WM33ZILE.js} +2 -2
  266. package/dist/cli/chunks/{ruvector-commands-QKRJDM7Z.js → ruvector-commands-BBLXEA7A.js} +2 -2
  267. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +2 -0
  268. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +2 -0
  269. package/dist/cli/chunks/{rvf-migration-coordinator-FF52OS6Q.js → rvf-migration-coordinator-P7H6HCAG.js} +2 -2
  270. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +2 -0
  271. package/dist/cli/chunks/{rvf-store-integrity-M6DXTAZ4.js → rvf-store-integrity-R5SPVRFP.js} +2 -2
  272. package/dist/cli/chunks/safe-db-WFODRGVZ.js +2 -0
  273. package/dist/cli/chunks/schedule-RO55OQXG.js +2 -0
  274. package/dist/cli/chunks/scheduler-XXMJCH24.js +2 -0
  275. package/dist/cli/chunks/{security-EHXSW22U.js → security-AUDTRX3I.js} +3 -3
  276. package/dist/cli/chunks/{shared-rvf-adapter-6EH7UVJL.js → shared-rvf-adapter-PVDGBGI2.js} +2 -2
  277. package/dist/cli/chunks/{shared-rvf-dual-writer-WML274E7.js → shared-rvf-dual-writer-LZ2GMSS2.js} +2 -2
  278. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +2 -0
  279. package/dist/cli/chunks/{standalone-memory-C7QKAXS4.js → standalone-memory-XNOAI4G4.js} +2 -2
  280. package/dist/cli/chunks/{status-handler-VLI7MRLM.js → status-handler-K72XZE4T.js} +2 -2
  281. package/dist/cli/chunks/{structural-health-3LPG6MQN.js → structural-health-NF3YY7U5.js} +2 -2
  282. package/dist/cli/chunks/{sync-4IMMQEPT.js → sync-UVXA6CT2.js} +2 -2
  283. package/dist/cli/chunks/{sync-JFJEJBVK.js → sync-VBD5Y3E2.js} +2 -2
  284. package/dist/cli/chunks/{task-handler-IED3K6E4.js → task-handler-24S3WFVJ.js} +13 -7
  285. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +9 -0
  286. package/dist/cli/chunks/{test-GPKT3CKZ.js → test-XFSGQELD.js} +4 -4
  287. package/dist/cli/chunks/{test-scheduling-Z42XXZP6.js → test-scheduling-VYUQ4CDE.js} +3 -3
  288. package/dist/cli/chunks/{token-bootstrap-HMM3AHXM.js → token-bootstrap-EDK6FNQ3.js} +2 -2
  289. package/dist/cli/chunks/{token-usage-6Y2ERYIY.js → token-usage-VLQ6WO2L.js} +2 -2
  290. package/dist/cli/chunks/{transformers-MB63T2XO.js → transformers-TOFMWWNM.js} +2 -2
  291. package/dist/cli/chunks/{tree-sitter-wasm-parser-56GDQCMR.js → tree-sitter-wasm-parser-MI3NZKUD.js} +2 -2
  292. package/dist/cli/chunks/{types-J4J6QV3I.js → types-JTWLBAZJ.js} +2 -2
  293. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +2 -0
  294. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +2 -0
  295. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +2 -0
  296. package/dist/cli/chunks/{upgrade-U4XU7LFM.js → upgrade-4ABM72T4.js} +2 -2
  297. package/dist/cli/chunks/{validate-B57HA4YK.js → validate-UDJCWKXI.js} +2 -2
  298. package/dist/cli/chunks/{validate-swarm-UPPA4M6T.js → validate-swarm-TODOUWNN.js} +2 -2
  299. package/dist/cli/chunks/visual-security-6VZNQLH7.js +2 -0
  300. package/dist/cli/chunks/{web-tree-sitter-GDZMUKOZ.js → web-tree-sitter-WBMAJPM5.js} +2 -2
  301. package/dist/cli/chunks/{windsurf-installer-VJRWCHXP.js → windsurf-installer-BTT53TUL.js} +2 -2
  302. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +2 -0
  303. package/dist/cli/chunks/{witness-chain-LFASSMZK.js → witness-chain-TATPXQRK.js} +2 -2
  304. package/dist/cli/chunks/{witness-chain-repair-TPHN4DXN.js → witness-chain-repair-2HGJGE7O.js} +2 -2
  305. package/dist/cli/chunks/{witness-chain-verifier-Z23FVABW.js → witness-chain-verifier-FRY3LMGH.js} +2 -2
  306. package/dist/cli/chunks/{witness-key-manager-745MJ7WO.js → witness-key-manager-X7QHQQWL.js} +2 -2
  307. package/dist/cli/chunks/{workflow-T245QNQM.js → workflow-QMZPAWQW.js} +4 -4
  308. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +2 -0
  309. package/dist/cli/chunks/{wrappers-WCAYIQUX.js → wrappers-ZD5NBHYI.js} +2 -2
  310. package/dist/cli/commands/code.js +8 -0
  311. package/dist/cli/commands/daemon.js +8 -0
  312. package/dist/cli/commands/fleet.js +14 -9
  313. package/dist/cli/handlers/task-handler.js +21 -1
  314. package/dist/coordination/handlers/code-intelligence-handlers.js +14 -2
  315. package/dist/coordination/handlers/coverage-collection.js +9 -10
  316. package/dist/coordination/handlers/coverage-handlers.js +21 -3
  317. package/dist/coordination/handlers/coverage-runner.d.ts +2 -1
  318. package/dist/coordination/handlers/coverage-runner.js +9 -2
  319. package/dist/coordination/handlers/coverage-target.d.ts +13 -3
  320. package/dist/coordination/handlers/coverage-target.js +224 -7
  321. package/dist/coordination/handlers/handler-types.d.ts +2 -0
  322. package/dist/coordination/handlers/test-execution-handlers.js +32 -5
  323. package/dist/coordination/index.d.ts +2 -2
  324. package/dist/coordination/index.js +1 -1
  325. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +39 -0
  326. package/dist/coordination/protocols/learning-consolidation-archive.js +57 -0
  327. package/dist/coordination/protocols/learning-consolidation.d.ts +38 -3
  328. package/dist/coordination/protocols/learning-consolidation.js +128 -50
  329. package/dist/coordination/queen-coordinator.d.ts +12 -1
  330. package/dist/coordination/queen-coordinator.js +24 -1
  331. package/dist/coordination/queen-event-handlers.js +2 -1
  332. package/dist/coordination/queen-lifecycle.js +9 -0
  333. package/dist/coordination/queen-task-management.js +113 -40
  334. package/dist/coordination/queen-types.d.ts +10 -0
  335. package/dist/coordination/queen-types.js +8 -0
  336. package/dist/coordination/task-dag/dag-algorithms.d.ts +33 -0
  337. package/dist/coordination/task-dag/dag-algorithms.js +162 -0
  338. package/dist/coordination/task-dag/dag-obligations.d.ts +21 -0
  339. package/dist/coordination/task-dag/dag-obligations.js +83 -0
  340. package/dist/coordination/task-dag/dag.d.ts +69 -19
  341. package/dist/coordination/task-dag/dag.js +215 -269
  342. package/dist/coordination/task-dag/index.d.ts +12 -4
  343. package/dist/coordination/task-dag/index.js +11 -3
  344. package/dist/coordination/task-dag/prerequisite-ledger.d.ts +84 -0
  345. package/dist/coordination/task-dag/prerequisite-ledger.js +252 -0
  346. package/dist/coordination/task-dag/scheduler.d.ts +19 -9
  347. package/dist/coordination/task-dag/scheduler.js +36 -12
  348. package/dist/coordination/task-dag/types.d.ts +160 -1
  349. package/dist/coordination/task-dag/types.js +2 -1
  350. package/dist/coordination/task-executability.d.ts +18 -0
  351. package/dist/coordination/task-executability.js +31 -0
  352. package/dist/coordination/task-executor.d.ts +1 -0
  353. package/dist/coordination/task-executor.js +5 -0
  354. package/dist/domains/code-intelligence/coordinator.js +35 -9
  355. package/dist/domains/code-intelligence/index-path-guard.d.ts +49 -0
  356. package/dist/domains/code-intelligence/index-path-guard.js +125 -0
  357. package/dist/domains/code-intelligence/interfaces.d.ts +12 -0
  358. package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +6 -0
  359. package/dist/domains/code-intelligence/services/knowledge-graph.js +42 -5
  360. package/dist/domains/contract-testing/coordinator.js +3 -1
  361. package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -2
  362. package/dist/domains/learning-optimization/active-patterns.d.ts +12 -12
  363. package/dist/domains/learning-optimization/active-patterns.js +15 -12
  364. package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
  365. package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
  366. package/dist/domains/learning-optimization/coordinator.js +43 -102
  367. package/dist/domains/learning-optimization/index.d.ts +1 -1
  368. package/dist/domains/learning-optimization/interfaces.d.ts +56 -4
  369. package/dist/domains/learning-optimization/plugin.js +11 -1
  370. package/dist/domains/learning-optimization/reward-source.d.ts +37 -0
  371. package/dist/domains/learning-optimization/reward-source.js +58 -0
  372. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +4 -4
  373. package/dist/domains/learning-optimization/services/learning-coordinator.js +59 -23
  374. package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
  375. package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
  376. package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
  377. package/dist/domains/test-execution/interfaces.d.ts +16 -0
  378. package/dist/domains/test-execution/services/runner-test-cases.d.ts +21 -0
  379. package/dist/domains/test-execution/services/runner-test-cases.js +69 -0
  380. package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
  381. package/dist/domains/test-execution/services/test-executor.js +24 -2
  382. package/dist/init/fleet-integration.js +2 -0
  383. package/dist/init/init-wizard-steps.js +2 -0
  384. package/dist/init/phases/06-code-intelligence.js +2 -0
  385. package/dist/init/phases/10-workers.js +2 -1
  386. package/dist/kernel/anti-drift-middleware.d.ts +44 -5
  387. package/dist/kernel/anti-drift-middleware.js +147 -11
  388. package/dist/kernel/interfaces.d.ts +5 -0
  389. package/dist/learning/dream/dream-insights-pruner.d.ts +18 -4
  390. package/dist/learning/dream/dream-insights-pruner.js +99 -11
  391. package/dist/learning/skill-validation-learner.d.ts +2 -0
  392. package/dist/learning/skill-validation-learner.js +29 -21
  393. package/dist/mcp/background-workers.js +8 -2
  394. package/dist/mcp/bundle.js +507 -483
  395. package/dist/mcp/handlers/domain-handler-configs.d.ts +14 -0
  396. package/dist/mcp/handlers/domain-handler-configs.js +68 -30
  397. package/dist/mcp/handlers/handler-factory.js +1 -0
  398. package/dist/mcp/handlers/task-handlers.js +37 -1
  399. package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
  400. package/dist/mcp/metrics/metrics-collector.js +13 -26
  401. package/dist/mcp/protocol-server.js +8 -3
  402. package/dist/mcp/tools/learning-optimization/optimize.d.ts +34 -3
  403. package/dist/mcp/tools/learning-optimization/optimize.js +106 -70
  404. package/dist/memory/crdt/lww-register.js +11 -1
  405. package/dist/routing/calibration/ema-calibrator.js +3 -1
  406. package/dist/shared/base-domain-plugin.d.ts +4 -0
  407. package/dist/shared/base-domain-plugin.js +6 -0
  408. package/dist/shared/llm/cache.js +4 -1
  409. package/dist/shared/security/compliance-patterns.js +3 -1
  410. package/dist/shared/test-runner-process.d.ts +26 -0
  411. package/dist/shared/test-runner-process.js +91 -0
  412. package/dist/shared/types/index.d.ts +9 -0
  413. package/dist/shared/types/index.js +13 -0
  414. package/dist/shared/utils/namespaced-search.d.ts +42 -0
  415. package/dist/shared/utils/namespaced-search.js +53 -0
  416. package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
  417. package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
  418. package/dist/workers/daemon.d.ts +2 -0
  419. package/dist/workers/daemon.js +10 -5
  420. package/dist/workers/namespaced-keys.d.ts +4 -7
  421. package/dist/workers/namespaced-keys.js +4 -15
  422. package/dist/workers/quality-daemon/ci-monitor.js +9 -5
  423. package/dist/workers/worker-env.d.ts +16 -8
  424. package/dist/workers/worker-env.js +25 -12
  425. package/dist/workers/worker-manager.js +4 -0
  426. package/dist/workers/workers/learning-consolidation.d.ts +1 -1
  427. package/dist/workers/workers/learning-consolidation.js +11 -8
  428. package/package.json +1 -1
  429. package/dist/cli/chunks/adapter-FC4EY447.js +0 -2
  430. package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +0 -2
  431. package/dist/cli/chunks/base-2XML4WH7.js +0 -2
  432. package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +0 -2
  433. package/dist/cli/chunks/chunk-6CKTLVYV.js +0 -2
  434. package/dist/cli/chunks/chunk-I4U7YCXG.js +0 -180
  435. package/dist/cli/chunks/chunk-LZWBUVCK.js +0 -5
  436. package/dist/cli/chunks/chunk-X6VYQVUM.js +0 -2
  437. package/dist/cli/chunks/chunk-YTYS2XSY.js +0 -2
  438. package/dist/cli/chunks/chunk-Z3LDUPLQ.js +0 -6
  439. package/dist/cli/chunks/chunk-ZWMFKZEQ.js +0 -3
  440. package/dist/cli/chunks/client-RFUSQRUZ.js +0 -2
  441. package/dist/cli/chunks/core-handlers-ZC7QB432.js +0 -2
  442. package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +0 -2
  443. package/dist/cli/chunks/daemon-JER6HE2J.js +0 -12
  444. package/dist/cli/chunks/dream-VALD726W.js +0 -2
  445. package/dist/cli/chunks/file-discovery-VL73ASNI.js +0 -2
  446. package/dist/cli/chunks/fleet-GJ66QFXK.js +0 -43
  447. package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +0 -2
  448. package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +0 -2
  449. package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +0 -2
  450. package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +0 -2
  451. package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +0 -2
  452. package/dist/cli/chunks/init-wizard-VH34J4TL.js +0 -2
  453. package/dist/cli/chunks/kernel-KJD24NO7.js +0 -2
  454. package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +0 -2
  455. package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +0 -2
  456. package/dist/cli/chunks/load-test-OTQ2JQ5F.js +0 -2
  457. package/dist/cli/chunks/memory-backend-4QSNRRV6.js +0 -2
  458. package/dist/cli/chunks/memory-handlers-YFFYRSM6.js +0 -2
  459. package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +0 -2
  460. package/dist/cli/chunks/project-root-SRTA6TBL.js +0 -2
  461. package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +0 -2
  462. package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +0 -2
  463. package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +0 -2
  464. package/dist/cli/chunks/router-AUD4GATI.js +0 -2
  465. package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +0 -2
  466. package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +0 -2
  467. package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +0 -2
  468. package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +0 -2
  469. package/dist/cli/chunks/safe-db-Q6JUKG2A.js +0 -2
  470. package/dist/cli/chunks/schedule-44OSMGE5.js +0 -2
  471. package/dist/cli/chunks/scheduler-V3HO2QQT.js +0 -2
  472. package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +0 -2
  473. package/dist/cli/chunks/task-handlers-FH6DNTHW.js +0 -9
  474. package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +0 -2
  475. package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +0 -2
  476. package/dist/cli/chunks/unified-persistence-72OCJJKK.js +0 -2
  477. package/dist/cli/chunks/visual-security-7F5UV23J.js +0 -2
  478. package/dist/cli/chunks/witness-chain-KZ57QUFE.js +0 -2
  479. package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +0 -2
@@ -40,6 +40,15 @@ export async function loadState(memory, tasks, enqueueTask) {
40
40
  if (state) {
41
41
  for (const [id, execution] of state.tasks) {
42
42
  if (execution.status === 'queued') {
43
+ if (execution.task.executionOwner === 'caller') {
44
+ tasks.set(id, {
45
+ ...execution,
46
+ status: 'failed',
47
+ error: 'Caller-owned task was interrupted before completion; submit a new request.',
48
+ completedAt: new Date(),
49
+ });
50
+ continue;
51
+ }
43
52
  tasks.set(id, execution);
44
53
  enqueueTask(execution.task);
45
54
  }
@@ -3,11 +3,11 @@
3
3
  * Extracted from queen-coordinator.ts - Task assignment, domain routing,
4
4
  * TinyDancer integration, queue operations, and domain plugin execution.
5
5
  */
6
- import { v4 as uuidv4 } from 'uuid';
7
6
  import { ok, err } from '../shared/types/index.js';
8
7
  import { binaryInsert, createdAtComparator } from '../shared/utils/index.js';
9
- import { TASK_DOMAIN_MAP } from './queen-types.js';
8
+ import { getTaskDomains } from './queen-types.js';
10
9
  import { settleCancelledTask } from './cancelled-task-settlement.js';
10
+ import { findDomainsWithoutHandler, describeMissingHandler } from './task-executability.js';
11
11
  // ============================================================================
12
12
  // Task comparator for priority queue binary insertion
13
13
  // ============================================================================
@@ -81,27 +81,71 @@ export async function processQueue(ctx) {
81
81
  if (ctx.runningTaskCounter >= ctx.config.maxConcurrentTasks) {
82
82
  return;
83
83
  }
84
- for (const priority of ['p0', 'p1', 'p2', 'p3']) {
85
- const queue = ctx.taskQueue.get(priority);
86
- if (!queue || queue.length === 0)
87
- continue;
88
- const task = queue.shift();
89
- if (task) {
90
- removeFromQueues(ctx.taskQueue, ctx.domainQueues, task);
91
- // CC-002 FIX: Increment counter before assigning queued task
92
- ctx.runningTaskCounter++;
93
- try {
94
- await assignTask(ctx, task);
95
- }
96
- catch (error) {
97
- ctx.runningTaskCounter--;
98
- throw error;
99
- }
100
- if (ctx.runningTaskCounter >= ctx.config.maxConcurrentTasks) {
101
- return;
84
+ // #1081: while this drain runs, a task failed at dispatch frees its slot
85
+ // here instead of starting a nested drain (one stack frame per failed task).
86
+ drainDepth.set(ctx.tasks, (drainDepth.get(ctx.tasks) ?? 0) + 1);
87
+ try {
88
+ for (const priority of ['p0', 'p1', 'p2', 'p3']) {
89
+ const queue = ctx.taskQueue.get(priority);
90
+ if (!queue || queue.length === 0)
91
+ continue;
92
+ let task = shiftDispatchableTask(ctx, queue);
93
+ while (task) {
94
+ removeFromQueues(ctx.taskQueue, ctx.domainQueues, task);
95
+ // CC-002 FIX: Increment counter before assigning queued task
96
+ ctx.runningTaskCounter++;
97
+ let assigned;
98
+ try {
99
+ assigned = await assignTask(ctx, task);
100
+ }
101
+ catch (error) {
102
+ ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
103
+ throw error;
104
+ }
105
+ // #1081: a queued task that cannot be assigned (no healthy domain, open
106
+ // breaker) has no caller waiting on the result. Fail it with the reason
107
+ // rather than leave it queued forever on a held slot.
108
+ if (!assigned.success && (ctx.tasks.get(task.id)?.status ?? 'queued') === 'queued') {
109
+ settleFailedBeforeRun(ctx, task, undefined, assigned.error.message);
110
+ }
111
+ if (ctx.runningTaskCounter >= ctx.config.maxConcurrentTasks) {
112
+ return;
113
+ }
114
+ // A task that failed without starting gave its slot back; let the
115
+ // next task of this priority have it.
116
+ task = ctx.tasks.get(task.id)?.status === 'failed' ? shiftDispatchableTask(ctx, queue) : undefined;
102
117
  }
103
118
  }
104
119
  }
120
+ finally {
121
+ const depth = (drainDepth.get(ctx.tasks) ?? 1) - 1;
122
+ if (depth > 0)
123
+ drainDepth.set(ctx.tasks, depth);
124
+ else
125
+ drainDepth.delete(ctx.tasks);
126
+ }
127
+ }
128
+ /**
129
+ * Drains in progress per Queen, keyed by its task map (the task context
130
+ * object is rebuilt for every call).
131
+ */
132
+ const drainDepth = new WeakMap();
133
+ /**
134
+ * Take the next task that is still waiting to run. A queued task can reach a
135
+ * terminal state without being dequeued, e.g. when its caller executes it
136
+ * directly (#1070). Dispatching it again would flip it back to running and
137
+ * leak a capacity slot, so such entries are dropped from the queues instead.
138
+ */
139
+ function shiftDispatchableTask(ctx, queue) {
140
+ let task = queue.shift();
141
+ while (task) {
142
+ const status = ctx.tasks.get(task.id)?.status;
143
+ if (status === undefined || status === 'queued')
144
+ return task;
145
+ removeFromQueues(ctx.taskQueue, ctx.domainQueues, task);
146
+ task = queue.shift();
147
+ }
148
+ return undefined;
105
149
  }
106
150
  // ============================================================================
107
151
  // Task filtering
@@ -142,7 +186,7 @@ export function listTasks(tasks, filter) {
142
186
  export async function assignTask(ctx, task) {
143
187
  const targetDomains = task.targetDomains.length > 0
144
188
  ? task.targetDomains
145
- : TASK_DOMAIN_MAP[task.type] || [];
189
+ : getTaskDomains(task.type);
146
190
  if (targetDomains.length === 0) {
147
191
  return err(new Error(`No domains configured for task type: ${task.type}`));
148
192
  }
@@ -166,6 +210,16 @@ export async function assignTask(ctx, task) {
166
210
  * circuit breaker checks, team management, and domain plugin execution.
167
211
  */
168
212
  export async function assignTaskToDomain(ctx, task, domain) {
213
+ // #1081: a Queen-owned task runs only through its domain plugin's handler.
214
+ // Without one nothing would ever report a result, so fail it now with the
215
+ // reason instead of leaving it running on a held slot. Caller-owned tasks
216
+ // are executed by their caller (#1065) and need no handler here.
217
+ if (task.executionOwner !== 'caller' && ctx.domainPlugins) {
218
+ const gaps = findDomainsWithoutHandler(ctx.domainPlugins, task.type, [domain]);
219
+ if (gaps.length > 0) {
220
+ return failUnexecutableTask(ctx, task, domain, describeMissingHandler(task.type, gaps));
221
+ }
222
+ }
169
223
  // V3 Integration: Use TinyDancer for intelligent model routing
170
224
  let routeDecision;
171
225
  if (ctx.tinyDancerRouter) {
@@ -179,7 +233,7 @@ export async function assignTaskToDomain(ctx, task, domain) {
179
233
  description: `${task.type}: ${JSON.stringify(task.payload).slice(0, 200)}`,
180
234
  type: task.type,
181
235
  domain: domain,
182
- priority: priorityMap[task.priority],
236
+ priority: Object.hasOwn(priorityMap, task.priority) ? priorityMap[task.priority] : 'normal',
183
237
  };
184
238
  routeDecision = await ctx.tinyDancerRouter.route(classifiableTask);
185
239
  if (ctx.config.enableMetrics) {
@@ -247,6 +301,10 @@ export async function assignTaskToDomain(ctx, task, domain) {
247
301
  domain,
248
302
  agentIds,
249
303
  });
304
+ // The MCP factory executes caller-owned tasks itself and publishes their result.
305
+ // Dispatching the plugin here as well would run the same workload twice.
306
+ if (task.executionOwner === 'caller')
307
+ return ok(task.id);
250
308
  // INTEGRATION FIX: Invoke domain plugin directly for task execution
251
309
  if (ctx.domainPlugins) {
252
310
  const plugin = ctx.domainPlugins.get(domain);
@@ -282,26 +340,41 @@ export async function assignTaskToDomain(ctx, task, domain) {
282
340
  }
283
341
  return ok(task.id);
284
342
  }
285
- // Fallback: Send event to plugin (for domains not yet updated)
286
- if (plugin) {
287
- try {
288
- await plugin.handleEvent({
289
- id: uuidv4(),
290
- type: 'TaskAssigned',
291
- timestamp: new Date(),
292
- source: 'queen-coordinator',
293
- correlationId: task.correlationId,
294
- payload: { task },
295
- });
296
- console.warn(`[Queen] Domain ${domain} has no executeTask handler, using event fallback`);
297
- }
298
- catch (error) {
299
- console.warn(`[Queen] Failed to invoke domain ${domain} event handler:`, error);
300
- }
301
- }
302
343
  }
303
344
  return ok(task.id);
304
345
  }
346
+ /**
347
+ * #1081: settle a Queen-owned task that no handler will execute. It is marked
348
+ * failed with the reason, its slot is released and the queue moves on.
349
+ */
350
+ async function failUnexecutableTask(ctx, task, domain, reason) {
351
+ settleFailedBeforeRun(ctx, task, domain, reason);
352
+ const traceCtx = ctx.taskTraceContexts.get(task.id);
353
+ if (ctx.traceCollector && traceCtx) {
354
+ ctx.traceCollector.failSpan(traceCtx.spanId, reason);
355
+ ctx.taskTraceContexts.delete(task.id);
356
+ }
357
+ // Inside a drain, the drain itself hands the freed slot on.
358
+ if (!drainDepth.has(ctx.tasks))
359
+ await processQueue(ctx);
360
+ return ok(task.id);
361
+ }
362
+ /** Mark a task that never started as failed and release the slot it held. */
363
+ function settleFailedBeforeRun(ctx, task, domain, reason) {
364
+ ctx.tasks.set(task.id, {
365
+ taskId: task.id,
366
+ task,
367
+ status: 'failed',
368
+ assignedDomain: domain,
369
+ assignedAgents: [],
370
+ retryCount: ctx.tasks.get(task.id)?.retryCount ?? 0,
371
+ error: reason,
372
+ completedAt: new Date(),
373
+ });
374
+ ctx.runningTaskCounter = Math.max(0, ctx.runningTaskCounter - 1);
375
+ ctx.tasksFailed++;
376
+ ctx.auditLogger.logFail(task.id, undefined, reason);
377
+ }
305
378
  // ============================================================================
306
379
  // Task completion callback (from domain plugin)
307
380
  // ============================================================================
@@ -369,7 +442,7 @@ async function handleTaskCompletionCallback(ctx, result) {
369
442
  * Check if a domain can handle a given task type.
370
443
  */
371
444
  export function canDomainHandleTask(domain, task) {
372
- const compatibleDomains = TASK_DOMAIN_MAP[task.type] || [];
445
+ const compatibleDomains = getTaskDomains(task.type);
373
446
  return compatibleDomains.includes(domain);
374
447
  }
375
448
  //# sourceMappingURL=queen-task-management.js.map
@@ -29,6 +29,8 @@ export interface QueenTask {
29
29
  readonly createdAt: Date;
30
30
  readonly requester?: string;
31
31
  readonly correlationId?: string;
32
+ /** Trusted caller executes and reports results; Queen still tracks assignment. */
33
+ readonly executionOwner?: 'queen' | 'caller';
32
34
  }
33
35
  export type TaskType = 'generate-tests' | 'execute-tests' | 'analyze-coverage' | 'assess-quality' | 'predict-defects' | 'validate-requirements' | 'index-code' | 'scan-security' | 'validate-contracts' | 'test-accessibility' | 'run-chaos' | 'optimize-learning' | 'cross-domain-workflow' | 'protocol-execution' | 'ideation-assessment';
34
36
  /**
@@ -134,6 +136,8 @@ export interface HealthIssue {
134
136
  export interface IQueenCoordinator {
135
137
  initialize(): Promise<void>;
136
138
  dispose(): Promise<void>;
139
+ /** #1075: reject a task type that no candidate domain plugin executes. */
140
+ validateTaskExecutable(type: TaskType, targetDomains?: readonly DomainName[]): Result<void, Error>;
137
141
  submitTask(task: Omit<QueenTask, 'id' | 'createdAt'>): Promise<Result<string, Error>>;
138
142
  cancelTask(taskId: string): Promise<Result<void, Error>>;
139
143
  getTaskStatus(taskId: string): TaskExecution | undefined;
@@ -176,6 +180,12 @@ export interface TaskFilter {
176
180
  export declare const DOMAIN_GROUPS: DomainGroup[];
177
181
  export declare const TASK_DOMAIN_MAP: Record<TaskType, DomainName[]>;
178
182
  export declare const DEFAULT_QUEEN_CONFIG: QueenConfig;
183
+ /**
184
+ * Domains configured for a task type, or [] when the type is unknown.
185
+ * Task types arrive from MCP/CLI callers, so the lookup uses own properties
186
+ * only: `constructor` or `__proto__` must not resolve through Object.prototype.
187
+ */
188
+ export declare function getTaskDomains(type: string): readonly DomainName[];
179
189
  /**
180
190
  * Initialize the TASK_DOMAIN_MAP entries that need ALL_DOMAINS at runtime.
181
191
  * Must be called once ALL_DOMAINS is available.
@@ -69,6 +69,14 @@ export const DEFAULT_QUEEN_CONFIG = {
69
69
  // V3 Integration: Enable intelligent model routing by default
70
70
  enableRouting: true,
71
71
  };
72
+ /**
73
+ * Domains configured for a task type, or [] when the type is unknown.
74
+ * Task types arrive from MCP/CLI callers, so the lookup uses own properties
75
+ * only: `constructor` or `__proto__` must not resolve through Object.prototype.
76
+ */
77
+ export function getTaskDomains(type) {
78
+ return Object.hasOwn(TASK_DOMAIN_MAP, type) ? TASK_DOMAIN_MAP[type] : [];
79
+ }
72
80
  /**
73
81
  * Initialize the TASK_DOMAIN_MAP entries that need ALL_DOMAINS at runtime.
74
82
  * Must be called once ALL_DOMAINS is available.
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Agentic QE v3 - Task DAG Graph Algorithms
3
+ * ADR-064 Phase 1E: topological sort (Kahn), cycle detection (DFS
4
+ * coloring) and critical path (longest-path DP) over a TaskDAG's edges.
5
+ *
6
+ * Edges that point at IDs not present in `nodes` (missing or removed
7
+ * prerequisites) are ignored for ordering purposes.
8
+ */
9
+ import type { DAGTask } from './types.js';
10
+ /** Read-only view of the graph used by the algorithms */
11
+ export interface DAGGraphView {
12
+ readonly nodes: ReadonlyMap<string, DAGTask>;
13
+ /** taskId -> prerequisite IDs */
14
+ readonly forwardEdges: ReadonlyMap<string, ReadonlySet<string>>;
15
+ /** prerequisiteId -> dependent IDs */
16
+ readonly reverseEdges: ReadonlyMap<string, ReadonlySet<string>>;
17
+ }
18
+ /**
19
+ * Topological sort using Kahn's algorithm.
20
+ * @throws Error if cycles exist
21
+ */
22
+ export declare function topologicalSort(graph: DAGGraphView): DAGTask[];
23
+ /**
24
+ * Detect cycles using DFS with white/gray/black coloring.
25
+ * @returns Array of cycles (empty if acyclic)
26
+ */
27
+ export declare function findCycles(graph: DAGGraphView): string[][];
28
+ /**
29
+ * Find the critical path (longest path through the DAG).
30
+ * @returns Tasks on the critical path in execution order
31
+ */
32
+ export declare function criticalPath(graph: DAGGraphView): DAGTask[];
33
+ //# sourceMappingURL=dag-algorithms.d.ts.map
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Agentic QE v3 - Task DAG Graph Algorithms
3
+ * ADR-064 Phase 1E: topological sort (Kahn), cycle detection (DFS
4
+ * coloring) and critical path (longest-path DP) over a TaskDAG's edges.
5
+ *
6
+ * Edges that point at IDs not present in `nodes` (missing or removed
7
+ * prerequisites) are ignored for ordering purposes.
8
+ */
9
+ /** DFS node coloring for cycle detection */
10
+ var NodeColor;
11
+ (function (NodeColor) {
12
+ NodeColor[NodeColor["White"] = 0] = "White";
13
+ NodeColor[NodeColor["Gray"] = 1] = "Gray";
14
+ NodeColor[NodeColor["Black"] = 2] = "Black";
15
+ })(NodeColor || (NodeColor = {}));
16
+ /**
17
+ * Topological sort using Kahn's algorithm.
18
+ * @throws Error if cycles exist
19
+ */
20
+ export function topologicalSort(graph) {
21
+ const { nodes, forwardEdges, reverseEdges } = graph;
22
+ const inDegree = new Map();
23
+ for (const nodeId of nodes.keys()) {
24
+ let count = 0;
25
+ const fwd = forwardEdges.get(nodeId);
26
+ if (fwd) {
27
+ for (const dep of fwd) {
28
+ if (nodes.has(dep))
29
+ count++;
30
+ }
31
+ }
32
+ inDegree.set(nodeId, count);
33
+ }
34
+ const queue = [];
35
+ for (const [id, deg] of inDegree) {
36
+ if (deg === 0)
37
+ queue.push(id);
38
+ }
39
+ const sorted = [];
40
+ while (queue.length > 0) {
41
+ const nodeId = queue.shift();
42
+ const task = nodes.get(nodeId);
43
+ if (task)
44
+ sorted.push(task);
45
+ const dependents = reverseEdges.get(nodeId);
46
+ if (dependents) {
47
+ for (const depId of dependents) {
48
+ if (!nodes.has(depId))
49
+ continue;
50
+ const newDeg = (inDegree.get(depId) ?? 0) - 1;
51
+ inDegree.set(depId, newDeg);
52
+ if (newDeg === 0)
53
+ queue.push(depId);
54
+ }
55
+ }
56
+ }
57
+ if (sorted.length !== nodes.size) {
58
+ throw new Error(`Cycle detected: sorted ${sorted.length} of ${nodes.size} tasks`);
59
+ }
60
+ return sorted;
61
+ }
62
+ /**
63
+ * Detect cycles using DFS with white/gray/black coloring.
64
+ * @returns Array of cycles (empty if acyclic)
65
+ */
66
+ export function findCycles(graph) {
67
+ const color = new Map();
68
+ const parent = new Map();
69
+ const cycles = [];
70
+ for (const id of graph.nodes.keys())
71
+ color.set(id, NodeColor.White);
72
+ for (const id of graph.nodes.keys()) {
73
+ if (color.get(id) === NodeColor.White) {
74
+ dfsCycles(graph, id, color, parent, cycles);
75
+ }
76
+ }
77
+ return cycles;
78
+ }
79
+ /**
80
+ * Find the critical path (longest path through the DAG).
81
+ * @returns Tasks on the critical path in execution order
82
+ */
83
+ export function criticalPath(graph) {
84
+ const { nodes, reverseEdges } = graph;
85
+ if (nodes.size === 0)
86
+ return [];
87
+ let sorted;
88
+ try {
89
+ sorted = topologicalSort(graph);
90
+ }
91
+ catch {
92
+ return [];
93
+ }
94
+ const dist = new Map();
95
+ const pred = new Map();
96
+ for (const t of sorted) {
97
+ dist.set(t.id, 1);
98
+ pred.set(t.id, null);
99
+ }
100
+ for (const task of sorted) {
101
+ const d = dist.get(task.id);
102
+ const deps = reverseEdges.get(task.id);
103
+ if (deps) {
104
+ for (const depId of deps) {
105
+ if (!nodes.has(depId))
106
+ continue;
107
+ if (d + 1 > (dist.get(depId) ?? 1)) {
108
+ dist.set(depId, d + 1);
109
+ pred.set(depId, task.id);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ let maxDist = 0;
115
+ let endNode = null;
116
+ for (const [id, d] of dist) {
117
+ if (d > maxDist) {
118
+ maxDist = d;
119
+ endNode = id;
120
+ }
121
+ }
122
+ if (!endNode)
123
+ return [];
124
+ const path = [];
125
+ let cur = endNode;
126
+ while (cur !== null) {
127
+ const t = nodes.get(cur);
128
+ if (t)
129
+ path.unshift(t);
130
+ cur = pred.get(cur) ?? null;
131
+ }
132
+ return path;
133
+ }
134
+ function dfsCycles(graph, nodeId, color, parent, cycles) {
135
+ color.set(nodeId, NodeColor.Gray);
136
+ const dependencies = graph.forwardEdges.get(nodeId);
137
+ if (dependencies) {
138
+ for (const depId of dependencies) {
139
+ if (!graph.nodes.has(depId))
140
+ continue;
141
+ const c = color.get(depId);
142
+ if (c === NodeColor.White) {
143
+ parent.set(depId, nodeId);
144
+ dfsCycles(graph, depId, color, parent, cycles);
145
+ }
146
+ else if (c === NodeColor.Gray) {
147
+ const cycle = [depId, nodeId];
148
+ let cur = nodeId;
149
+ while (cur !== depId) {
150
+ const p = parent.get(cur);
151
+ if (p === null || p === undefined || p === depId)
152
+ break;
153
+ cycle.push(p);
154
+ cur = p;
155
+ }
156
+ cycles.push(cycle);
157
+ }
158
+ }
159
+ }
160
+ color.set(nodeId, NodeColor.Black);
161
+ }
162
+ //# sourceMappingURL=dag-algorithms.js.map
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Agentic QE v3 - Task DAG Obligation Helpers
3
+ * Issue #1069: pure helpers for initial edge dispositions, waiver
4
+ * authorization and status counting, kept out of dag.ts for size.
5
+ */
6
+ import type { DAGStats, DAGTask, PrerequisiteDisposition, WaivePrerequisiteInput, WaiverPolicy } from './types.js';
7
+ import { type PrerequisiteLedger } from './prerequisite-ledger.js';
8
+ /** Disposition of a new edge given the prerequisite's current state. */
9
+ export declare function initialDisposition(blocker: DAGTask | undefined, tombstoned: boolean): PrerequisiteDisposition;
10
+ /**
11
+ * Check that a validated waiver may be applied: the revision guard holds,
12
+ * the dependent exists and is not terminal, the edge exists and is
13
+ * unresolved, and the optional policy approves.
14
+ * @throws PrerequisiteWaiverError or GraphRevisionConflictError
15
+ */
16
+ export declare function authorizeWaiver(ledger: PrerequisiteLedger, policy: WaiverPolicy | undefined, req: WaivePrerequisiteInput, task: DAGTask | undefined, prerequisites: ReadonlySet<string> | undefined): asserts task is DAGTask;
17
+ type StatusCounts = Pick<DAGStats, 'pending' | 'ready' | 'inProgress' | 'completed' | 'failed' | 'blocked' | 'cancelled'>;
18
+ /** Count tasks by execution status. */
19
+ export declare function countStatuses(tasks: Iterable<DAGTask>): StatusCounts;
20
+ export {};
21
+ //# sourceMappingURL=dag-obligations.d.ts.map
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Agentic QE v3 - Task DAG Obligation Helpers
3
+ * Issue #1069: pure helpers for initial edge dispositions, waiver
4
+ * authorization and status counting, kept out of dag.ts for size.
5
+ */
6
+ import { PrerequisiteWaiverError, TERMINAL_STATUSES, } from './prerequisite-ledger.js';
7
+ /** Disposition of a new edge given the prerequisite's current state. */
8
+ export function initialDisposition(blocker, tombstoned) {
9
+ if (!blocker)
10
+ return tombstoned ? 'REMOVED' : 'MISSING';
11
+ switch (blocker.status) {
12
+ case 'completed': return 'SATISFIED';
13
+ case 'failed': return 'FAILED';
14
+ case 'cancelled': return 'CANCELLED';
15
+ default: return 'UNRESOLVED';
16
+ }
17
+ }
18
+ /**
19
+ * Check that a validated waiver may be applied: the revision guard holds,
20
+ * the dependent exists and is not terminal, the edge exists and is
21
+ * unresolved, and the optional policy approves.
22
+ * @throws PrerequisiteWaiverError or GraphRevisionConflictError
23
+ */
24
+ export function authorizeWaiver(ledger, policy, req, task, prerequisites) {
25
+ ledger.checkRevision(req.expectedRevision);
26
+ if (!task)
27
+ throw new PrerequisiteWaiverError(`Task '${req.taskId}' not found in the DAG`);
28
+ if (!prerequisites?.has(req.prerequisiteId)) {
29
+ throw new PrerequisiteWaiverError(`Task '${req.taskId}' has no prerequisite '${req.prerequisiteId}'`);
30
+ }
31
+ if (TERMINAL_STATUSES.has(task.status)) {
32
+ throw new PrerequisiteWaiverError(`Cannot waive for '${req.taskId}': status '${task.status}' is terminal`);
33
+ }
34
+ const current = ledger.disposition(req.taskId, req.prerequisiteId) ?? 'UNRESOLVED';
35
+ if (current === 'SATISFIED' || current === 'WAIVED') {
36
+ throw new PrerequisiteWaiverError(`Prerequisite '${req.prerequisiteId}' of '${req.taskId}' is already ${current}`);
37
+ }
38
+ // Only a literal `true` approves; a truthy non-boolean (e.g. a Promise) fails closed
39
+ if (policy && policy({
40
+ graphId: ledger.graphId,
41
+ graphRevision: ledger.graphRevision,
42
+ taskId: req.taskId,
43
+ prerequisiteId: req.prerequisiteId,
44
+ actor: req.actor,
45
+ reason: req.reason,
46
+ authorityRef: req.authorityRef,
47
+ currentDisposition: current,
48
+ }) !== true) {
49
+ throw new PrerequisiteWaiverError(`Waiver of '${req.prerequisiteId}' for '${req.taskId}' by '${req.actor}' rejected by policy`);
50
+ }
51
+ }
52
+ /** Count tasks by execution status. */
53
+ export function countStatuses(tasks) {
54
+ let pending = 0, ready = 0, inProgress = 0, completed = 0;
55
+ let failed = 0, blocked = 0, cancelled = 0;
56
+ for (const task of tasks) {
57
+ switch (task.status) {
58
+ case 'pending':
59
+ pending++;
60
+ break;
61
+ case 'ready':
62
+ ready++;
63
+ break;
64
+ case 'in_progress':
65
+ inProgress++;
66
+ break;
67
+ case 'completed':
68
+ completed++;
69
+ break;
70
+ case 'failed':
71
+ failed++;
72
+ break;
73
+ case 'blocked':
74
+ blocked++;
75
+ break;
76
+ case 'cancelled':
77
+ cancelled++;
78
+ break;
79
+ }
80
+ }
81
+ return { pending, ready, inProgress, completed, failed, blocked, cancelled };
82
+ }
83
+ //# sourceMappingURL=dag-obligations.js.map