agentic-qe 3.15.9 → 3.15.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (668) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +365 -0
  3. package/README.md +8 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  6. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  7. package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
  8. package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
  9. package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
  10. package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
  11. package/dist/adapters/ag-ui/json-patch.js +10 -6
  12. package/dist/adapters/trajectory-adapter.js +1 -1
  13. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  14. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  15. package/dist/agents/overlay-loader.js +26 -21
  16. package/dist/audit/witness-chain.d.ts +1 -1
  17. package/dist/cli/bundle.js +6 -6
  18. package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
  19. package/dist/cli/chunks/agent-booster-wasm-TIDSQ3ZK.js +2 -0
  20. package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-G3EPBVA7.js} +2 -2
  21. package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-ARC5C7GW.js} +2 -2
  22. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
  23. package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-36DTATJV.js} +4 -4
  24. package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-K4I4QDXB.js} +2 -2
  25. package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-WQSJSJZF.js} +3 -3
  26. package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
  27. package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-BB4K67MT.js} +2 -2
  28. package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-CU3GOIU3.js} +3 -3
  29. package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-NJQX7ZNB.js} +2 -2
  30. package/dist/cli/chunks/browser-6YJF4FQW.js +4 -0
  31. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
  32. package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-25P77WA5.js} +1 -1
  33. package/dist/cli/chunks/chunk-2CW7VRPH.js +141 -0
  34. package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
  35. package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-2KFFEKSI.js} +2 -2
  36. package/dist/cli/chunks/chunk-2VLYUF7U.js +2 -0
  37. package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-325QCVDI.js} +2 -2
  38. package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-35M2X3C5.js} +2 -2
  39. package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-3RHOPP7A.js} +1 -1
  40. package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-4HJKQIX5.js} +2 -2
  41. package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
  42. package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-4RAQ7PJA.js} +8 -8
  43. package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-4RH5I24Q.js} +2 -2
  44. package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-4UBVAJFO.js} +3 -3
  45. package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-4UX35V7P.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-4X4MWMHB.js} +2 -2
  47. package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-55CH76ZO.js} +3 -3
  48. package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-57LNKSW7.js} +2 -2
  49. package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
  50. package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-5HQP4SLM.js} +2 -2
  51. package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-5MNASJOH.js} +2 -2
  52. package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-5MTWCCZJ.js} +2 -2
  53. package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-5N25I53C.js} +2 -2
  54. package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-5WYZHDIZ.js} +1 -1
  55. package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-5YLOLACR.js} +2 -2
  56. package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-672XOJDG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-6NA3KZZT.js} +10 -10
  58. package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
  59. package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-76SNL7GU.js} +2 -2
  60. package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-7HEMJHPP.js} +2 -2
  61. package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-7R5HC56U.js} +1 -1
  62. package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-AFFN6E6Q.js} +2 -2
  63. package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-AMZKAJLJ.js} +2 -2
  64. package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-AP3ADWDK.js} +2 -2
  65. package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-APPZATXA.js} +2 -2
  66. package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-AUUJBXWX.js} +25 -20
  67. package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-BTVWA35P.js} +2 -2
  68. package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-BZPE3LDO.js} +2 -2
  69. package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-CFWGGRE7.js} +1 -1
  70. package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-CIAL4YRY.js} +2 -2
  71. package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-CO3DX2AX.js} +2 -2
  72. package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-DDEOZPWJ.js} +2 -2
  73. package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-DOBZPSKE.js} +1 -1
  74. package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-DOFREOPQ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-E44NNCEU.js} +2 -2
  76. package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-E6PF35JZ.js} +2 -2
  77. package/dist/cli/chunks/chunk-EBPJY4DI.js +3 -0
  78. package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EH2S6AOR.js} +2 -2
  79. package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-EIDJNT5C.js} +1 -1
  80. package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-EJPK7OTR.js} +2 -2
  81. package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EK5GMOSO.js} +1 -1
  82. package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ERN43HOX.js} +430 -433
  83. package/dist/cli/chunks/chunk-ETVAYGCB.js +180 -0
  84. package/dist/cli/chunks/chunk-EWPUQCN4.js +2 -0
  85. package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-FL32MTKT.js} +2 -2
  86. package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
  87. package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-FUYOOKTH.js} +5 -5
  88. package/dist/cli/chunks/chunk-FWSGPE3V.js +12 -0
  89. package/dist/cli/chunks/chunk-FZHSG75I.js +3 -0
  90. package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-G2IJFNZS.js} +2 -2
  91. package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-G4CKPWF6.js} +1 -1
  92. package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-G4FAPO57.js} +5 -5
  93. package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-G77MLBDF.js} +2 -2
  94. package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-GBFUANTC.js} +1 -1
  95. package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-GVKVJJQX.js} +2 -2
  96. package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GWJWSLDA.js} +2 -2
  97. package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-H43AFUKL.js} +2 -2
  98. package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
  99. package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-HDJUYAZG.js} +1 -1
  100. package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-HDNWSKHA.js} +2 -2
  101. package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-HFFPYC4G.js} +2 -2
  102. package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-HJ3XNTTJ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-HYXUN7BW.js} +1 -1
  104. package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-I36CRDHF.js} +2 -2
  105. package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-I4K2HTQU.js} +1 -1
  106. package/dist/cli/chunks/chunk-IENZSO3K.js +4 -0
  107. package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
  108. package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-IOZRKXR5.js} +2 -2
  109. package/dist/cli/chunks/chunk-ITL3IN2E.js +3 -0
  110. package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-ITPGWGQS.js} +14 -14
  111. package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-IW6WDGHM.js} +1 -1
  112. package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-J4JMCZVA.js} +2 -2
  113. package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-JFLU7L3W.js} +2 -2
  114. package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-JGJXXAS6.js} +4 -4
  115. package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-JUMICXM6.js} +2 -2
  116. package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-K2HBNYAZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-K7V2WZNF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-KDI5JOYZ.js} +2 -2
  119. package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-KJCIMNHS.js} +1 -1
  120. package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-KKYO2NKV.js} +2 -2
  121. package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-KSE5TDM5.js} +2 -2
  122. package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-KSLLHFVY.js} +1 -1
  123. package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-KXS3Y2AX.js} +2 -2
  124. package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LBX7M4LW.js} +2 -2
  125. package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-LCVEEII4.js} +2 -2
  126. package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-LD5CFK53.js} +54 -33
  127. package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-LPU6PAJE.js} +2 -2
  128. package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-LQ4NUC6Q.js} +2 -2
  129. package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
  130. package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-LXQ3B4RY.js} +2 -2
  131. package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-M5RQ6U3G.js} +2 -2
  132. package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-M5XYIQYZ.js} +2 -2
  133. package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
  134. package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-MIK4RBEH.js} +1 -1
  135. package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-NC6K7SCQ.js} +2 -2
  136. package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-NKTWKYHB.js} +2 -2
  137. package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-NPZOBSAN.js} +2 -2
  138. package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-NQZNMCZU.js} +2 -2
  139. package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-NT7JRHMH.js} +1 -1
  140. package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-NTB342NJ.js} +1 -1
  141. package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-O4JAKWWM.js} +13 -13
  142. package/dist/cli/chunks/chunk-OD5D4LSZ.js +2 -0
  143. package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-OH5V5EJW.js} +2 -2
  144. package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-OHR7C777.js} +2 -2
  145. package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-OURITHFV.js} +2 -2
  146. package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-OV5RPLKV.js} +2 -2
  147. package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-OYJC3YON.js} +2 -2
  148. package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-QDESWOZP.js} +2 -2
  149. package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
  150. package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-R5LGV6GZ.js} +2 -2
  151. package/dist/cli/chunks/chunk-RBZCA7SD.js +12 -0
  152. package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
  153. package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
  154. package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-RTY7VSZB.js} +2 -2
  155. package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-S6IYEBAI.js} +2 -2
  156. package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-SMVVAVN2.js} +2 -2
  157. package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-T5KHJ3J7.js} +5 -5
  158. package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-TCYSBC7Y.js} +1 -1
  159. package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-TFW7CCKS.js} +1 -1
  160. package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
  161. package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-U3LJNNVJ.js} +5 -5
  162. package/dist/cli/chunks/chunk-UKKYMW3S.js +3 -0
  163. package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-UMVSWQNB.js} +2 -2
  164. package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-UTTSH4NH.js} +3 -3
  165. package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-V5AADCBC.js} +1 -1
  166. package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-V7DA4HAK.js} +1 -1
  167. package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-VBK2YAYY.js} +2 -2
  168. package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-VEEYL2CZ.js} +2 -2
  169. package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-VLD7Z2ED.js} +3 -3
  170. package/dist/cli/chunks/chunk-VO3DRK4P.js +3 -0
  171. package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-VWUZSNVC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-VYTILW4R.js} +2 -2
  173. package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-WCAVIJ64.js} +1 -1
  174. package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-WCVCOT4E.js} +2 -2
  175. package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-WM3SRRA6.js} +2 -2
  176. package/dist/cli/chunks/chunk-X3PZCXWG.js +2 -0
  177. package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-X4J73KP3.js} +1 -1
  178. package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-XDI5X3FR.js} +1 -1
  179. package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-XGBU3KEM.js} +2 -2
  180. package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-XGPTZUKQ.js} +2 -2
  181. package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-XJKZ7FTR.js} +2 -2
  182. package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-XNLIWQYE.js} +2 -2
  183. package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-XS2XF3YG.js} +6 -5
  184. package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
  185. package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-YBBT3YYG.js} +1 -1
  186. package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-YNOCQ2SL.js} +1 -1
  187. package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-YOCULVHR.js} +1 -1
  188. package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-YPX2TV3M.js} +1 -1
  189. package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-Z2EA7A4Z.js} +1 -1
  190. package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-ZMC543GI.js} +2 -2
  191. package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
  192. package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-ZP75ASUU.js} +1 -1
  193. package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-ZQHDA4O7.js} +1 -1
  194. package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-6GUFAZMJ.js} +2 -2
  195. package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-J665XNOX.js} +2 -2
  196. package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-PEQQQWVD.js} +2 -2
  197. package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-HHB2JSKH.js} +2 -2
  198. package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-JKUJRWPN.js} +2 -2
  199. package/dist/cli/chunks/client-HL2COSFM.js +2 -0
  200. package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-Y77BWTAN.js} +2 -2
  201. package/dist/cli/chunks/{code-ONKLMVQ2.js → code-LV2HAGJY.js} +3 -3
  202. package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4GKKSETB.js} +2 -2
  203. package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-WMKBYE5Y.js} +2 -2
  204. package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-SBGFAOIJ.js} +2 -2
  205. package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-AQHFIJXC.js} +2 -2
  206. package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-26AYFS2E.js} +2 -2
  207. package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-4UD3DK55.js} +2 -2
  208. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
  209. package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-TP4NZCG4.js} +2 -2
  210. package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B2KIXHAI.js} +3 -3
  211. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
  212. package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-AVZEQZ4W.js} +2 -2
  213. package/dist/cli/chunks/daemon-P574WWBW.js +18 -0
  214. package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-XM2A7LQU.js} +3 -3
  215. package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
  216. package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-TYR7HT23.js} +2 -2
  217. package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-2DGVQGLS.js} +2 -2
  218. package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-RRA4ZOMF.js} +2 -2
  219. package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-IVZEZ5RB.js} +2 -2
  220. package/dist/cli/chunks/domain-transfer-DOBI67K6.js +2 -0
  221. package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
  222. package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
  223. package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-QV4LVPUF.js} +2 -2
  224. package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-DAPKT763.js} +3 -3
  225. package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-WVRFPHX7.js} +2 -2
  226. package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-DEFTUIYT.js} +2 -2
  227. package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-O7ZXDDCD.js} +2 -2
  228. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
  229. package/dist/cli/chunks/fleet-FVAUMKUT.js +46 -0
  230. package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-LS4LZJDR.js} +2 -2
  231. package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-RFTERD4K.js} +4 -4
  232. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
  233. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
  234. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
  235. package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
  236. package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-PHL3F2PR.js} +2 -2
  237. package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-GYJ6D4QM.js} +36 -36
  238. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
  239. package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
  240. package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-ZIMM647V.js} +3 -3
  241. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
  242. package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-VOMBXJXG.js} +2 -2
  243. package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-PSMUBWK5.js} +26 -25
  244. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
  245. package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
  246. package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-2YNTFBWJ.js} +2 -2
  247. package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-XHJDPVAZ.js} +2 -2
  248. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
  249. package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-GNSIDRNG.js} +24 -24
  250. package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-LQDM7IU2.js} +4 -4
  251. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
  252. package/dist/cli/chunks/{load-ZM43WGDO.js → load-YATHI72E.js} +2 -2
  253. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
  254. package/dist/cli/chunks/mcp-4Y6GDLYK.js +2 -0
  255. package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-OUW3L7H2.js} +5 -5
  256. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
  257. package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
  258. package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-UBZJXAD2.js} +2 -2
  259. package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-AMMNWVH5.js} +2 -2
  260. package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-Y44WDOER.js} +69 -25
  261. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
  262. package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-ESR42RME.js} +2 -2
  263. package/dist/cli/chunks/pipeline-EDTS6OSC.js +19 -0
  264. package/dist/cli/chunks/{platform-KJDABL5C.js → platform-5WONJSUX.js} +2 -2
  265. package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-IJXPCLD4.js} +2 -2
  266. package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
  267. package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
  268. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
  269. package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-DRD3GVNW.js} +2 -2
  270. package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-KTGW2HMJ.js} +2 -2
  271. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
  272. package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-DV2WPRRS.js} +2 -2
  273. package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-HFUAFVZC.js} +3 -3
  274. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
  275. package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RQRVOKVM.js} +2 -2
  276. package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-QWSKS5OY.js} +2 -2
  277. package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-RBAYRCHX.js} +2 -2
  278. package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
  279. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
  280. package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-FMPP3XKO.js} +2 -2
  281. package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-KZZT4HWF.js} +2 -2
  282. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
  283. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
  284. package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
  285. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
  286. package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
  287. package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
  288. package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
  289. package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
  290. package/dist/cli/chunks/{security-AUDTRX3I.js → security-CUEA3UIM.js} +3 -3
  291. package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
  292. package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
  293. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
  294. package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-IAHA3M6B.js} +2 -2
  295. package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-AFUCASTX.js} +2 -2
  296. package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-AQRV6JJ6.js} +2 -2
  297. package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-GX7FMJHL.js} +2 -2
  298. package/dist/cli/chunks/sync-XW5TLZ7M.js +2 -0
  299. package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-TFKVUTNF.js} +2 -2
  300. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
  301. package/dist/cli/chunks/{test-XFSGQELD.js → test-D2XDJNDX.js} +17 -17
  302. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
  303. package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-TS6I2PR7.js} +3 -3
  304. package/dist/cli/chunks/token-bootstrap-HBBLPCZ3.js +2 -0
  305. package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-3MBUX4PR.js} +2 -2
  306. package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-ZWMQO3L2.js} +2 -2
  307. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
  308. package/dist/cli/chunks/{types-JTWLBAZJ.js → types-5YEMGPSQ.js} +2 -2
  309. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
  310. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
  311. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
  312. package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-2TPBKIHI.js} +2 -2
  313. package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-XRAXXFW6.js} +2 -2
  314. package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-IYSCS3BZ.js} +2 -2
  315. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
  316. package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
  317. package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-U6XWFRVT.js} +2 -2
  318. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
  319. package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
  320. package/dist/cli/chunks/witness-chain-repair-K7YX2AO6.js +2 -0
  321. package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
  322. package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-YBNKMOP6.js} +2 -2
  323. package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-UAJUILFQ.js} +4 -4
  324. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
  325. package/dist/cli/chunks/wrappers-AVZ3GPAL.js +2 -0
  326. package/dist/cli/commands/fleet.js +23 -13
  327. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
  328. package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
  329. package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
  330. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  331. package/dist/cli/commands/learning.js +5 -3
  332. package/dist/cli/commands/ruvector-commands.js +2 -1
  333. package/dist/cli/commands/test.js +11 -2
  334. package/dist/cli/handlers/init-handler.d.ts +12 -0
  335. package/dist/cli/handlers/init-handler.js +27 -12
  336. package/dist/cli/utils/ci-output.d.ts +11 -0
  337. package/dist/cli/utils/ci-output.js +2 -0
  338. package/dist/cli/utils/fleet-operation.d.ts +32 -0
  339. package/dist/cli/utils/fleet-operation.js +71 -0
  340. package/dist/cli/utils/fleet-result.d.ts +31 -0
  341. package/dist/cli/utils/fleet-result.js +124 -0
  342. package/dist/cli/utils/progress.d.ts +16 -2
  343. package/dist/cli/utils/progress.js +31 -14
  344. package/dist/context/sources/git-source.js +6 -2
  345. package/dist/coordination/consensus/consensus-engine.js +3 -1
  346. package/dist/coordination/handlers/code-intelligence-handlers.js +63 -7
  347. package/dist/coordination/handlers/coverage-collection.js +3 -1
  348. package/dist/coordination/handlers/coverage-handlers.js +10 -1
  349. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  350. package/dist/coordination/handlers/coverage-runner.js +6 -22
  351. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  352. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  353. package/dist/coordination/handlers/coverage-target.js +6 -3
  354. package/dist/coordination/handlers/handler-utils.js +3 -1
  355. package/dist/coordination/handlers/requirements-handlers.js +18 -3
  356. package/dist/coordination/handlers/security-handlers.js +45 -21
  357. package/dist/coordination/handlers/test-execution-handlers.js +25 -7
  358. package/dist/coordination/mincut/queen-integration.d.ts +39 -1
  359. package/dist/coordination/mincut/queen-integration.js +83 -6
  360. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
  361. package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
  362. package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
  363. package/dist/coordination/protocols/learning-consolidation.js +71 -22
  364. package/dist/coordination/queen-coordinator.d.ts +1 -1
  365. package/dist/coordination/queen-coordinator.js +27 -10
  366. package/dist/coordination/queen-event-handlers.js +13 -0
  367. package/dist/coordination/queen-task-management.d.ts +18 -24
  368. package/dist/coordination/queen-task-management.js +62 -168
  369. package/dist/coordination/queen-task-queue.d.ts +41 -0
  370. package/dist/coordination/queen-task-queue.js +194 -0
  371. package/dist/coordination/queen-types.d.ts +1 -1
  372. package/dist/coordination/queen-work-stealing.d.ts +6 -1
  373. package/dist/coordination/queen-work-stealing.js +7 -4
  374. package/dist/coordination/result-saver-adapters.d.ts +15 -0
  375. package/dist/coordination/result-saver-adapters.js +57 -0
  376. package/dist/coordination/result-saver.d.ts +1 -1
  377. package/dist/coordination/result-saver.js +8 -5
  378. package/dist/coordination/task-executability.d.ts +12 -0
  379. package/dist/coordination/task-executability.js +27 -0
  380. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  381. package/dist/coordination/workflow-orchestrator.js +22 -8
  382. package/dist/coordination/yaml-pipeline-loader.js +5 -2
  383. package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
  384. package/dist/domains/code-intelligence/index-path-guard.js +20 -50
  385. package/dist/domains/code-intelligence/plugin.js +5 -1
  386. package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
  387. package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
  388. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
  389. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
  390. package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
  391. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
  392. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  393. package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
  394. package/dist/domains/contract-testing/services/contract-validator.js +6 -4
  395. package/dist/domains/contract-testing/services/schema-validator.js +8 -5
  396. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  397. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  398. package/dist/domains/defect-intelligence/plugin.js +11 -2
  399. package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
  400. package/dist/domains/defect-intelligence/prediction-history.js +68 -0
  401. package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
  402. package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
  403. package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
  404. package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
  405. package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
  406. package/dist/domains/learning-optimization/active-patterns.js +2 -2
  407. package/dist/domains/learning-optimization/coordinator.js +9 -5
  408. package/dist/domains/learning-optimization/interfaces.d.ts +8 -2
  409. package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
  410. package/dist/domains/learning-optimization/pattern-archive.js +56 -0
  411. package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
  412. package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
  413. package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
  414. package/dist/domains/learning-optimization/reward-source.js +8 -1
  415. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
  416. package/dist/domains/learning-optimization/services/learning-coordinator.js +47 -59
  417. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  418. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  419. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  420. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  421. package/dist/domains/security-compliance/plugin.js +17 -3
  422. package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
  423. package/dist/domains/security-compliance/sast-path-guard.js +17 -0
  424. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
  425. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
  426. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
  427. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
  428. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
  429. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  430. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  431. package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
  432. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  433. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  434. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  435. package/dist/domains/test-execution/coordinator.d.ts +6 -0
  436. package/dist/domains/test-execution/coordinator.js +28 -22
  437. package/dist/domains/test-execution/interfaces.d.ts +36 -1
  438. package/dist/domains/test-execution/plugin.js +19 -4
  439. package/dist/domains/test-execution/services/flaky-detector.js +9 -7
  440. package/dist/domains/test-execution/services/retry-handler.js +46 -7
  441. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  442. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  443. package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
  444. package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
  445. package/dist/domains/test-execution/services/test-executor.js +8 -8
  446. package/dist/domains/test-generation/coordinator.js +2 -2
  447. package/dist/domains/test-generation/plugin.js +7 -2
  448. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  449. package/dist/domains/test-generation/services/test-data-generator.js +3 -1
  450. package/dist/domains/test-generation/services/test-generator.js +2 -2
  451. package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
  452. package/dist/governance/evolution-pipeline-integration.js +3 -1
  453. package/dist/hooks/cross-phase-hooks.js +5 -2
  454. package/dist/init/init-wizard-steps.js +5 -1
  455. package/dist/init/phases/04-database.js +7 -0
  456. package/dist/init/phases/10-workers.js +50 -6
  457. package/dist/init/phases/12-verification.js +14 -4
  458. package/dist/init/settings-merge.js +7 -4
  459. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
  460. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
  461. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
  462. package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
  463. package/dist/integrations/browser/agent-browser/client.js +37 -52
  464. package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
  465. package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
  466. package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
  467. package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
  468. package/dist/integrations/browser/web-content-fetcher.js +9 -3
  469. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  470. package/dist/integrations/vibium/client.js +2 -2
  471. package/dist/integrations/vibium/runtime.d.ts +1 -1
  472. package/dist/integrations/vibium/runtime.js +14 -11
  473. package/dist/kernel/unified-memory-schemas.d.ts +3 -2
  474. package/dist/kernel/unified-memory-schemas.js +3 -2
  475. package/dist/kernel/unified-memory.js +25 -6
  476. package/dist/learning/dream/dream-commit.d.ts +65 -0
  477. package/dist/learning/dream/dream-commit.js +104 -0
  478. package/dist/learning/dream/dream-engine.d.ts +81 -31
  479. package/dist/learning/dream/dream-engine.js +225 -168
  480. package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
  481. package/dist/learning/dream/dream-insights-pruner.js +16 -30
  482. package/dist/learning/dream/index.d.ts +3 -2
  483. package/dist/learning/dream/index.js +3 -1
  484. package/dist/learning/dream/insight-generator.js +5 -4
  485. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
  486. package/dist/learning/dream/rvcow-branch-manager.js +8 -1
  487. package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
  488. package/dist/learning/dream/speculative-dreamer.js +64 -111
  489. package/dist/learning/dream/spreading-activation.d.ts +2 -1
  490. package/dist/learning/dream/spreading-activation.js +15 -6
  491. package/dist/learning/experience-capture.d.ts +9 -0
  492. package/dist/learning/experience-capture.js +18 -4
  493. package/dist/learning/memory-auditor.js +3 -1
  494. package/dist/learning/qe-patterns.js +2 -1
  495. package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
  496. package/dist/learning/qe-reasoning-bank.js +22 -11
  497. package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
  498. package/dist/learning/real-qe-reasoning-bank.js +70 -38
  499. package/dist/learning/sqlite-persistence.d.ts +6 -0
  500. package/dist/learning/sqlite-persistence.js +16 -2
  501. package/dist/learning/usage-outcome.d.ts +68 -0
  502. package/dist/learning/usage-outcome.js +84 -0
  503. package/dist/mcp/background-workers.d.ts +13 -1
  504. package/dist/mcp/background-workers.js +17 -3
  505. package/dist/mcp/bundle.js +612 -580
  506. package/dist/mcp/handlers/core-handlers.js +11 -0
  507. package/dist/mcp/handlers/domain-handler-configs.d.ts +7 -0
  508. package/dist/mcp/handlers/domain-handler-configs.js +19 -5
  509. package/dist/mcp/handlers/handler-factory.d.ts +2 -1
  510. package/dist/mcp/handlers/handler-factory.js +36 -15
  511. package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
  512. package/dist/mcp/handlers/orchestrate-routes.js +88 -0
  513. package/dist/mcp/handlers/task-handlers.d.ts +16 -0
  514. package/dist/mcp/handlers/task-handlers.js +77 -24
  515. package/dist/mcp/handlers/validation-pipeline-handler.js +14 -10
  516. package/dist/mcp/protocol-server.js +10 -8
  517. package/dist/mcp/qe-tool-bridge.js +3 -0
  518. package/dist/mcp/security/schema-validator.js +3 -2
  519. package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
  520. package/dist/mcp/services/reasoning-bank-service.js +4 -0
  521. package/dist/mcp/tool-annotations.js +4 -1
  522. package/dist/mcp/tools/code-intelligence/c4.js +11 -1
  523. package/dist/mcp/tools/coherence/check.js +1 -0
  524. package/dist/mcp/tools/coherence/consensus.js +4 -2
  525. package/dist/mcp/tools/coverage-analysis/index.js +31 -2
  526. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
  527. package/dist/mcp/tools/learning-optimization/dream.js +38 -34
  528. package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
  529. package/dist/mcp/tools/learning-optimization/optimize.js +59 -12
  530. package/dist/mcp/tools/mincut/index.js +3 -0
  531. package/dist/mcp/tools/quality-assessment/gate.js +19 -1
  532. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  533. package/dist/mcp/tools/requirements-validation/quality-criteria.js +17 -3
  534. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  535. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  536. package/dist/mcp/tools/test-execution/execute.js +3 -2
  537. package/dist/memory/crdt/crdt-store.js +5 -0
  538. package/dist/memory/crdt/lww-register.js +12 -2
  539. package/dist/migration/agent-compat.js +7 -5
  540. package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
  541. package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
  542. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  543. package/dist/planning/goap-planner.js +5 -0
  544. package/dist/planning/plan-executor.js +5 -0
  545. package/dist/shared/git/git-analyzer.d.ts +49 -0
  546. package/dist/shared/git/git-analyzer.js +159 -319
  547. package/dist/shared/git/git-process.d.ts +22 -0
  548. package/dist/shared/git/git-process.js +37 -0
  549. package/dist/shared/git/index.d.ts +1 -0
  550. package/dist/shared/git/index.js +1 -0
  551. package/dist/shared/io/confined-read.d.ts +74 -0
  552. package/dist/shared/io/confined-read.js +256 -0
  553. package/dist/shared/io/file-reader.d.ts +6 -6
  554. package/dist/shared/io/file-reader.js +16 -42
  555. package/dist/shared/io/payload-path-guard.d.ts +75 -0
  556. package/dist/shared/io/payload-path-guard.js +190 -0
  557. package/dist/shared/llm/providers/claude-code.js +4 -1
  558. package/dist/shared/llm/router/agent-router-config.js +2 -1
  559. package/dist/shared/llm/translation/tool-translator.js +2 -1
  560. package/dist/shared/native-module-errors.d.ts +51 -0
  561. package/dist/shared/native-module-errors.js +129 -0
  562. package/dist/shared/safe-db.js +14 -4
  563. package/dist/shared/security/osv-client.js +4 -1
  564. package/dist/shared/test-runner-args.d.ts +5 -0
  565. package/dist/shared/test-runner-args.js +6 -1
  566. package/dist/shared/test-runner-process.d.ts +6 -0
  567. package/dist/shared/test-runner-process.js +14 -0
  568. package/dist/shared/test-runner-verdict.d.ts +9 -1
  569. package/dist/shared/test-runner-verdict.js +15 -4
  570. package/dist/shared/types/test-frameworks.js +2 -2
  571. package/dist/shared/utils/namespaced-search.d.ts +14 -0
  572. package/dist/shared/utils/namespaced-search.js +19 -1
  573. package/dist/shared/utils/safe-expression-evaluator.js +4 -3
  574. package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
  575. package/dist/sync/readers/json-reader.js +2 -1
  576. package/dist/validation/anchor-set.d.ts +6 -0
  577. package/dist/validation/anchor-set.js +9 -1
  578. package/dist/validation/gate-reexecute.js +7 -4
  579. package/dist/validation/quality-gate-runner.d.ts +7 -1
  580. package/dist/validation/quality-gate-runner.js +3 -3
  581. package/dist/workers/daemon.js +13 -1
  582. package/dist/workers/quality-daemon/git-watcher.js +9 -9
  583. package/dist/workers/workers/defect-predictor.d.ts +8 -3
  584. package/dist/workers/workers/defect-predictor.js +48 -49
  585. package/dist/workers/workers/learning-consolidation.d.ts +2 -0
  586. package/dist/workers/workers/learning-consolidation.js +12 -1
  587. package/dist/workflows/browser/workflow-loader.js +8 -5
  588. package/package.json +1 -1
  589. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
  590. package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
  591. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
  592. package/dist/cli/chunks/base-67DXSAYM.js +0 -2
  593. package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
  594. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
  595. package/dist/cli/chunks/chunk-2XITOPYV.js +0 -6
  596. package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
  597. package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
  598. package/dist/cli/chunks/chunk-6PXA2BQJ.js +0 -742
  599. package/dist/cli/chunks/chunk-6YL6JOQB.js +0 -4
  600. package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
  601. package/dist/cli/chunks/chunk-AR2E4B7K.js +0 -6
  602. package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
  603. package/dist/cli/chunks/chunk-FJ4VTLLK.js +0 -2
  604. package/dist/cli/chunks/chunk-FV3NHVC7.js +0 -59
  605. package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
  606. package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
  607. package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
  608. package/dist/cli/chunks/chunk-JEP4ULR6.js +0 -21
  609. package/dist/cli/chunks/chunk-JK2ME6IT.js +0 -2
  610. package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
  611. package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
  612. package/dist/cli/chunks/chunk-N5PDFGCQ.js +0 -180
  613. package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
  614. package/dist/cli/chunks/chunk-P2CXVNKK.js +0 -4
  615. package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
  616. package/dist/cli/chunks/chunk-VU2EL424.js +0 -14
  617. package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
  618. package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
  619. package/dist/cli/chunks/chunk-XZJ2O3VC.js +0 -2
  620. package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
  621. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
  622. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
  623. package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
  624. package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
  625. package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
  626. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
  627. package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
  628. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
  629. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
  630. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
  631. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
  632. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
  633. package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
  634. package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
  635. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
  636. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
  637. package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
  638. package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
  639. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
  640. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
  641. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
  642. package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
  643. package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
  644. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
  645. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
  646. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
  647. package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
  648. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
  649. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
  650. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
  651. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
  652. package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
  653. package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
  654. package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
  655. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
  656. package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
  657. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
  658. package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
  659. package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
  660. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
  661. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
  662. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
  663. package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
  664. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
  665. package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
  666. package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
  667. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
  668. package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
@@ -1,28 +1,28 @@
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 Ne}from"./chunk-NHZIWIQZ.js";import{a as ue,b as ve,c as Te,d as Oe,e as Be,f as Le,g as Qe,h as We,i as Ve,j as He,k as Ge,l as Ue,m as Ke,n as ke,o as Je,p as Ye}from"./chunk-N5PDFGCQ.js";import{a as Q,b as pe,c as Me,e as Fe,f as W}from"./chunk-ZANDSVCK.js";import{a as ze}from"./chunk-CTZJUV5I.js";import"./chunk-QTVWUQTB.js";import{c as je}from"./chunk-47V7FQGX.js";import"./chunk-VU2EL424.js";import"./chunk-F3PQZX44.js";import"./chunk-IFEIY3NQ.js";import"./chunk-3CJCROMW.js";import"./chunk-OCESWNAZ.js";import"./chunk-ICP2ORGI.js";import{b as x,d as de}from"./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-JNNZK7KH.js";import"./chunk-2BA45H64.js";import"./chunk-KTSLTZSG.js";import"./chunk-O3JLOVZX.js";import"./chunk-DGTLJNJH.js";import{a as S,b as qe,e as ce}from"./chunk-N3KEY4XJ.js";import"./chunk-2I2UPJS7.js";import"./chunk-4V27J6YN.js";import"./chunk-H3KBIWTO.js";import{a as D,b as ye}from"./chunk-6YL6JOQB.js";import"./chunk-6OOYIO3W.js";import{a as Pt}from"./chunk-HZ5NC6U5.js";ce();ce();var v=class{requiresPhases;requiresEnhancements;async shouldRun(e){return!0}async execute(e){let t=Date.now();try{return{success:!0,data:await this.run(e),durationMs:Date.now()-t,message:`${this.description} completed`}}catch(s){return{success:!1,error:qe(s),durationMs:Date.now()-t,message:`${this.description} failed: ${S(s)}`}}}checkDependencies(e){if(!this.requiresPhases?.length)return!0;for(let t of this.requiresPhases)if(!e.results.get(t)?.success)return e.services.warn(`Phase ${this.name} requires ${t} which has not completed`),!1;return!0}checkEnhancements(e){if(!this.requiresEnhancements?.length)return!0;for(let t of this.requiresEnhancements)if(!(t==="claudeFlow"?e.enhancements.claudeFlow:t==="ruvector"?e.enhancements.ruvector:!1))return e.services.warn(`Phase ${this.name} requires ${t} which is not available`),!1;return!0}};de();ye();import{existsSync as T}from"fs";import{join as O}from"path";var V=class extends v{name="detection";description="Detect existing installations";order=10;critical=!0;async run(e){let{projectRoot:t}=e,s=await this.detectV2Installation(t),n=T(O(t,".agentic-qe","config.yaml")),o=s.version?.startsWith("3."),r=s.detected,i=n||o||!1,d=!r&&!i;return e.v2Detection=s,{v2Detected:r,v3Detected:i,freshInstall:d,v2Detection:s}}async detectV2Installation(e){let t=O(e,".agentic-qe","memory.db"),s=O(e,".agentic-qe","config"),n=O(e,".claude","agents"),o=O(e,".agentic-qe","config","learning.json"),r=T(t),i=T(s),d=T(n),p=T(o),l=T(O(e,".agentic-qe","config.yaml")),u,m=!1;return r&&(u=this.readVersionFromDb(t),u?m=u.startsWith("3."):u="2.x.x"),{detected:!m&&r&&(!u?.startsWith("3.")||p&&!l),memoryDbPath:r?t:void 0,configPath:i?s:void 0,agentsPath:d?n:void 0,hasMemoryDb:r,hasConfig:i,hasAgents:d,version:u}}readVersionFromDb(e){try{let t=D(e,{readonly:!0,fileMustExist:!0});try{if(!t.prepare(`
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.11");process.exit(0)}
2
+ import{a as Qe}from"./chunk-NC6K7SCQ.js";import{a as ue,b as ve,c as Fe,d as Ne,e as We,f as Ve,g as He,h as Ge,i as Ue,j as Ke,k as ze,l as Je,m as Ye,n as ke,o as Ze,p as et}from"./chunk-Y7B5EUIJ.js";import{a as W,b as pe,c as Le,e as Be,f as V}from"./chunk-4X4MWMHB.js";import{a as Xe}from"./chunk-K7V2WZNF.js";import"./chunk-YBBT3YYG.js";import{c as Me}from"./chunk-E44NNCEU.js";import"./chunk-5ERFHEEE.js";import"./chunk-7HEMJHPP.js";import"./chunk-RTY7VSZB.js";import"./chunk-OV5RPLKV.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import{b as x,d as de}from"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-IW6WDGHM.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import{a as Te,b as Oe,c as Rt,d as D,e as ye}from"./chunk-4MUBW4RT.js";import{a as E,b as je,e as Q}from"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import{a as It}from"./chunk-CFWGGRE7.js";Q();Q();var v=class{requiresPhases;requiresEnhancements;async shouldRun(e){return!0}async execute(e){let t=Date.now();try{return{success:!0,data:await this.run(e),durationMs:Date.now()-t,message:`${this.description} completed`}}catch(s){return{success:!1,error:je(s),durationMs:Date.now()-t,message:`${this.description} failed: ${E(s)}`}}}checkDependencies(e){if(!this.requiresPhases?.length)return!0;for(let t of this.requiresPhases)if(!e.results.get(t)?.success)return e.services.warn(`Phase ${this.name} requires ${t} which has not completed`),!1;return!0}checkEnhancements(e){if(!this.requiresEnhancements?.length)return!0;for(let t of this.requiresEnhancements)if(!(t==="claudeFlow"?e.enhancements.claudeFlow:t==="ruvector"?e.enhancements.ruvector:!1))return e.services.warn(`Phase ${this.name} requires ${t} which is not available`),!1;return!0}};de();ye();import{existsSync as T}from"fs";import{join as O}from"path";var H=class extends v{name="detection";description="Detect existing installations";order=10;critical=!0;async run(e){let{projectRoot:t}=e,s=await this.detectV2Installation(t),n=T(O(t,".agentic-qe","config.yaml")),o=s.version?.startsWith("3."),r=s.detected,i=n||o||!1,d=!r&&!i;return e.v2Detection=s,{v2Detected:r,v3Detected:i,freshInstall:d,v2Detection:s}}async detectV2Installation(e){let t=O(e,".agentic-qe","memory.db"),s=O(e,".agentic-qe","config"),n=O(e,".claude","agents"),o=O(e,".agentic-qe","config","learning.json"),r=T(t),i=T(s),d=T(n),p=T(o),l=T(O(e,".agentic-qe","config.yaml")),u,m=!1;return r&&(u=this.readVersionFromDb(t),u?m=u.startsWith("3."):u="2.x.x"),{detected:!m&&r&&(!u?.startsWith("3.")||p&&!l),memoryDbPath:r?t:void 0,configPath:i?s:void 0,agentsPath:d?n:void 0,hasMemoryDb:r,hasConfig:i,hasAgents:d,version:u}}readVersionFromDb(e){try{let t=D(e,{readonly:!0,fileMustExist:!0});try{if(!t.prepare(`
3
3
  SELECT name FROM sqlite_master
4
4
  WHERE type='table' AND name='kv_store'
5
5
  `).get()){t.close();return}let n=t.prepare(`
6
6
  SELECT value FROM kv_store
7
7
  WHERE key = 'aqe_version' AND namespace = '_system'
8
- `).get();return t.close(),n?x(n.value):void 0}catch{t.close();return}}catch{return}}};var H=class extends v{name="analysis";description="Analyze project structure";order=20;critical=!0;requiresPhases=["detection"];async run(e){let s=await Te(e.projectRoot).analyze();return e.analysis=s,e.services.log(` Project: ${s.projectName}`),e.services.log(` Languages: ${s.languages.map(n=>n.name).join(", ")}`),e.services.log(` Frameworks: ${s.frameworks.map(n=>n.name).join(", ")}`),s}};var G=class extends v{name="configuration";description="Generate configuration";order=30;critical=!0;requiresPhases=["analysis"];async run(e){if(!e.analysis)throw new Error("Analysis phase must complete before configuration");let s=Oe({minimal:e.options.minimal}).recommend(e.analysis);return s=this.applyOptions(s,e),e.config=s,e.services.log(` Version: ${s.version}`),e.services.log(` Learning: ${s.learning.enabled?"enabled":"disabled"}`),e.services.log(` Workers: ${s.workers.enabled.length}`),s}applyOptions(e,t){let{options:s}=t;return s.minimal&&(e.skills.install=!1,e.learning.pretrainedPatterns=!1,e.workers.enabled=[],e.workers.daemonAutoStart=!1),s.skipPatterns&&(e.learning.pretrainedPatterns=!1),s.wizardAnswers&&(e=this.applyWizardAnswers(e,s.wizardAnswers)),e}applyWizardAnswers(e,t){switch(t["project-type"]&&t["project-type"]!=="auto"&&(e.project.type=t["project-type"]),t["learning-mode"]){case"full":e.learning.enabled=!0,e.learning.embeddingModel="transformer";break;case"basic":e.learning.enabled=!0,e.learning.embeddingModel="hash";break;case"disabled":e.learning.enabled=!1;break}return t["load-patterns"]===!1&&(e.learning.pretrainedPatterns=!1),t.hooks===!1&&(e.hooks.claudeCode=!1),t.workers===!1&&(e.workers.daemonAutoStart=!1),t.skills===!1&&(e.skills.install=!1),e}};import{existsSync as U,mkdirSync as be}from"fs";import{join as K}from"path";var z=class extends v{name="database";description="Initialize persistence database";order=40;critical=!0;requiresPhases=["configuration"];async shouldRun(e){return e.options.memoryBackend!=="memory"}async run(e){let{projectRoot:t}=e,s=K(t,"vectors.db");U(s)&&e.services.log(` \u26A0 Stale vectors.db detected at ${s}
8
+ `).get();return t.close(),n?x(n.value):void 0}catch{t.close();return}}catch{return}}};var G=class extends v{name="analysis";description="Analyze project structure";order=20;critical=!0;requiresPhases=["detection"];async run(e){let s=await Fe(e.projectRoot).analyze();return e.analysis=s,e.services.log(` Project: ${s.projectName}`),e.services.log(` Languages: ${s.languages.map(n=>n.name).join(", ")}`),e.services.log(` Frameworks: ${s.frameworks.map(n=>n.name).join(", ")}`),s}};var U=class extends v{name="configuration";description="Generate configuration";order=30;critical=!0;requiresPhases=["analysis"];async run(e){if(!e.analysis)throw new Error("Analysis phase must complete before configuration");let s=Ne({minimal:e.options.minimal}).recommend(e.analysis);return s=this.applyOptions(s,e),e.config=s,e.services.log(` Version: ${s.version}`),e.services.log(` Learning: ${s.learning.enabled?"enabled":"disabled"}`),e.services.log(` Workers: ${s.workers.enabled.length}`),s}applyOptions(e,t){let{options:s}=t;return s.minimal&&(e.skills.install=!1,e.learning.pretrainedPatterns=!1,e.workers.enabled=[],e.workers.daemonAutoStart=!1),s.skipPatterns&&(e.learning.pretrainedPatterns=!1),s.wizardAnswers&&(e=this.applyWizardAnswers(e,s.wizardAnswers)),e}applyWizardAnswers(e,t){switch(t["project-type"]&&t["project-type"]!=="auto"&&(e.project.type=t["project-type"]),t["learning-mode"]){case"full":e.learning.enabled=!0,e.learning.embeddingModel="transformer";break;case"basic":e.learning.enabled=!0,e.learning.embeddingModel="hash";break;case"disabled":e.learning.enabled=!1;break}return t["load-patterns"]===!1&&(e.learning.pretrainedPatterns=!1),t.hooks===!1&&(e.hooks.claudeCode=!1),t.workers===!1&&(e.workers.daemonAutoStart=!1),t.skills===!1&&(e.skills.install=!1),e}};import{existsSync as K,mkdirSync as be}from"fs";import{join as z}from"path";Q();Rt();var J=class extends v{name="database";description="Initialize persistence database";order=40;critical=!0;requiresPhases=["configuration"];async shouldRun(e){return e.options.memoryBackend!=="memory"}async run(e){let{projectRoot:t}=e,s=z(t,"vectors.db");K(s)&&e.services.log(` \u26A0 Stale vectors.db detected at ${s}
9
9
  This file is left over from @ruvector/router (pre-v3.9.6).
10
10
  It is no longer read or written by AQE. Safe to delete:
11
- rm "${s}"`);let n=K(t,".agentic-qe");U(n)||be(n,{recursive:!0});let o=K(n,"workers");U(o)||be(o,{recursive:!0});let r=K(n,"data");U(r)||be(r,{recursive:!0});let i=K(n,"memory.db"),d=!U(i);try{let{initializeUnifiedMemory:p,resetUnifiedMemory:l}=await import("./unified-memory-6JWHV6EF.js"),u=await p({dbPath:i,walMode:!0,busyTimeout:5e3}),y=u.getStats().tables.map(L=>L.name);await u.kvSet("_init_marker",{initialized:new Date().toISOString(),projectRoot:t,version:ue()},"_system");let P=u.getDatabase().prepare("SELECT version FROM schema_version WHERE id = 1").get()?.version??0;return l(),e.services.log(` Database: ${i}`),e.services.log(` Schema version: v${P}`),e.services.log(` Tables: ${y.length} (v3 full schema)`),{dbPath:i,created:d,tablesCreated:y,schemaVersion:P}}catch(p){throw new Error(`SQLite persistence initialization FAILED: ${p}
11
+ rm "${s}"`);let n=z(t,".agentic-qe");K(n)||be(n,{recursive:!0});let o=z(n,"workers");K(o)||be(o,{recursive:!0});let r=z(n,"data");K(r)||be(r,{recursive:!0});let i=z(n,"memory.db"),d=!K(i);try{let{initializeUnifiedMemory:p,resetUnifiedMemory:l}=await import("./unified-memory-AGDZQ5XD.js"),u=await p({dbPath:i,walMode:!0,busyTimeout:5e3}),y=u.getStats().tables.map(B=>B.name);await u.kvSet("_init_marker",{initialized:new Date().toISOString(),projectRoot:t,version:ue()},"_system");let P=u.getDatabase().prepare("SELECT version FROM schema_version WHERE id = 1").get()?.version??0;return l(),e.services.log(` Database: ${i}`),e.services.log(` Schema version: v${P}`),e.services.log(` Tables: ${y.length} (v3 full schema)`),{dbPath:i,created:d,tablesCreated:y,schemaVersion:P}}catch(p){throw Oe(p)?new Error(`SQLite persistence initialization FAILED: ${E(Te(p))}`,{cause:p}):new Error(`SQLite persistence initialization FAILED: ${p}
12
12
  Database path: ${i}
13
- Ensure the directory is writable and has sufficient disk space.`)}}};import{existsSync as me,mkdirSync as we,writeFileSync as It}from"fs";import{join as $}from"path";var J=class extends v{name="learning";description="Initialize learning system";order=50;critical=!1;requiresPhases=["database","configuration"];async shouldRun(e){return e.options.memoryBackend==="memory"?!1:e.config?.learning?.enabled??!0}async run(e){let t=e.config,{projectRoot:s,options:n}=e;if(!t.learning.enabled)return{enabled:!1,dataDir:"",hnswDir:"",patternsLoaded:0};let o=$(s,".agentic-qe","data");me(o)||we(o,{recursive:!0});let r=$(o,"hnsw");me(r)||we(r,{recursive:!0});let i=$(o,"learning-config.json"),d={embeddingModel:t.learning.embeddingModel,hnswConfig:t.learning.hnswConfig,qualityThreshold:t.learning.qualityThreshold,promotionThreshold:t.learning.promotionThreshold,databasePath:$(o,"memory.db"),hnswIndexPath:$(r,"index.bin"),initialized:new Date().toISOString()};W(i,d,[["initialized"]]);let p=0;return t.learning.pretrainedPatterns&&!n.skipPatterns&&(p=await this.loadPretrainedPatterns(o,e)),e.services.log(` Data dir: ${o}`),e.services.log(` HNSW dir: ${r}`),e.services.log(` Patterns loaded: ${p}`),{enabled:!0,dataDir:o,hnswDir:r,patternsLoaded:p}}async loadPretrainedPatterns(e,t){try{let s=$(e,"patterns");me(s)||we(s,{recursive:!0});let n=$(s,"index.json");return me(n)||It(n,JSON.stringify({version:ue(),domains:[],loadedAt:new Date().toISOString()},null,2),"utf-8"),0}catch(s){return t.services.warn(`Could not load pre-trained patterns: ${s}`),0}}};de();ye();import{existsSync as Rt,statSync as St}from"fs";import{join as ge}from"path";var Xe=3e4,Ze=18e4,et=["**/node_modules/**","**/dist/**","**/build/**","**/out/**","**/coverage/**","**/.agentic-qe/**","**/.git/**","**/.next/**","**/.nuxt/**","**/.output/**","**/__pycache__/**","**/.pytest_cache/**","**/target/**","**/vendor/**","**/.venv/**","**/venv/**","**/.tox/**","**/*.min.js","**/*.min.css","**/*.bundle.js","**/*.map","**/package-lock.json","**/yarn.lock","**/pnpm-lock.yaml","**/Pipfile.lock","**/poetry.lock","**/.env","**/.env.*"],Y=class extends v{name="code-intelligence";description="Code intelligence pre-scan";order=60;critical=!1;requiresPhases=["database"];async shouldRun(e){if(e.options.memoryBackend==="memory")return e.services.log(" Code intelligence skipped (database-free mode)"),!1;let t=process.env.AQE_SKIP_CODE_INDEX;return t==="1"||t==="true"?(e.services.log(" Code intelligence skipped (AQE_SKIP_CODE_INDEX=1)"),e.services.log(" Run `aqe code index` later to build the KG on demand."),!1):e.options.skipCodeIndex?(e.services.log(" Code intelligence skipped (--skip-code-index)"),e.services.log(" Run `aqe code index` later to build the KG on demand."),!1):!0}async run(e){let{projectRoot:t}=e,s=ge(t,".agentic-qe","memory.db");if(!Rt(s))return e.services.log(" Building knowledge graph..."),await this.runCodeIntelligenceScan(t,e,!1);let n=D(s);try{if(!this.checkCodeIntelligenceIndex(n))return n.close(),e.services.log(" Building knowledge graph..."),await this.runCodeIntelligenceScan(t,e,!1);let r=this.getLastIndexedAt(n);if(!r){let p=this.getKGEntryCount(n);return n.close(),e.services.log(` Using existing index (${p} entries)`),{status:"existing",entries:p}}let i=this.getKGEntryCount(n);n.close();let d=await this.findChangedFiles(t,r);return d.length===0?(e.services.log(` Index up to date (${i} entries)`),{status:"existing",entries:i}):(e.services.log(` Delta scan: ${d.length} files changed since last index...`),await this.runCodeIntelligenceScan(t,e,!0,d))}catch(o){try{n.close()}catch{}throw o}}checkCodeIntelligenceIndex(e){try{return e.prepare(`
13
+ Ensure the directory is writable and has sufficient disk space.`)}}};import{existsSync as me,mkdirSync as we,writeFileSync as At}from"fs";import{join as $}from"path";var Y=class extends v{name="learning";description="Initialize learning system";order=50;critical=!1;requiresPhases=["database","configuration"];async shouldRun(e){return e.options.memoryBackend==="memory"?!1:e.config?.learning?.enabled??!0}async run(e){let t=e.config,{projectRoot:s,options:n}=e;if(!t.learning.enabled)return{enabled:!1,dataDir:"",hnswDir:"",patternsLoaded:0};let o=$(s,".agentic-qe","data");me(o)||we(o,{recursive:!0});let r=$(o,"hnsw");me(r)||we(r,{recursive:!0});let i=$(o,"learning-config.json"),d={embeddingModel:t.learning.embeddingModel,hnswConfig:t.learning.hnswConfig,qualityThreshold:t.learning.qualityThreshold,promotionThreshold:t.learning.promotionThreshold,databasePath:$(o,"memory.db"),hnswIndexPath:$(r,"index.bin"),initialized:new Date().toISOString()};V(i,d,[["initialized"]]);let p=0;return t.learning.pretrainedPatterns&&!n.skipPatterns&&(p=await this.loadPretrainedPatterns(o,e)),e.services.log(` Data dir: ${o}`),e.services.log(` HNSW dir: ${r}`),e.services.log(` Patterns loaded: ${p}`),{enabled:!0,dataDir:o,hnswDir:r,patternsLoaded:p}}async loadPretrainedPatterns(e,t){try{let s=$(e,"patterns");me(s)||we(s,{recursive:!0});let n=$(s,"index.json");return me(n)||At(n,JSON.stringify({version:ue(),domains:[],loadedAt:new Date().toISOString()},null,2),"utf-8"),0}catch(s){return t.services.warn(`Could not load pre-trained patterns: ${s}`),0}}};de();ye();import{existsSync as _t,statSync as xt}from"fs";import{join as ge}from"path";var tt=3e4,nt=18e4,st=["**/node_modules/**","**/dist/**","**/build/**","**/out/**","**/coverage/**","**/.agentic-qe/**","**/.git/**","**/.next/**","**/.nuxt/**","**/.output/**","**/__pycache__/**","**/.pytest_cache/**","**/target/**","**/vendor/**","**/.venv/**","**/venv/**","**/.tox/**","**/*.min.js","**/*.min.css","**/*.bundle.js","**/*.map","**/package-lock.json","**/yarn.lock","**/pnpm-lock.yaml","**/Pipfile.lock","**/poetry.lock","**/.env","**/.env.*"],X=class extends v{name="code-intelligence";description="Code intelligence pre-scan";order=60;critical=!1;requiresPhases=["database"];async shouldRun(e){if(e.options.memoryBackend==="memory")return e.services.log(" Code intelligence skipped (database-free mode)"),!1;let t=process.env.AQE_SKIP_CODE_INDEX;return t==="1"||t==="true"?(e.services.log(" Code intelligence skipped (AQE_SKIP_CODE_INDEX=1)"),e.services.log(" Run `aqe code index` later to build the KG on demand."),!1):e.options.skipCodeIndex?(e.services.log(" Code intelligence skipped (--skip-code-index)"),e.services.log(" Run `aqe code index` later to build the KG on demand."),!1):!0}async run(e){let{projectRoot:t}=e,s=ge(t,".agentic-qe","memory.db");if(!_t(s))return e.services.log(" Building knowledge graph..."),await this.runCodeIntelligenceScan(t,e,!1);let n=D(s);try{if(!this.checkCodeIntelligenceIndex(n))return n.close(),e.services.log(" Building knowledge graph..."),await this.runCodeIntelligenceScan(t,e,!1);let r=this.getLastIndexedAt(n);if(!r){let p=this.getKGEntryCount(n);return n.close(),e.services.log(` Using existing index (${p} entries)`),{status:"existing",entries:p}}let i=this.getKGEntryCount(n);n.close();let d=await this.findChangedFiles(t,r);return d.length===0?(e.services.log(` Index up to date (${i} entries)`),{status:"existing",entries:i}):(e.services.log(` Delta scan: ${d.length} files changed since last index...`),await this.runCodeIntelligenceScan(t,e,!0,d))}catch(o){try{n.close()}catch{}throw o}}checkCodeIntelligenceIndex(e){try{return e.prepare(`
14
14
  SELECT COUNT(*) as count FROM kv_store
15
15
  WHERE namespace = 'code-intelligence:kg'
16
16
  `).get().count>0}catch{return!1}}getKGEntryCount(e){try{return e.prepare(`
17
17
  SELECT COUNT(*) as count FROM kv_store
18
18
  WHERE namespace LIKE 'code-intelligence:kg%'
19
- `).get().count}catch{return 0}}async runCodeIntelligenceScan(e,t,s,n){let{KnowledgeGraphService:o}=await import("./knowledge-graph-SZCVQF37.js"),r=ge(e,".agentic-qe","memory.db"),i={type:"sqlite",sqlite:{path:r,walMode:!0}},{backend:d}=await Ne(i,!0),p=new o(d,{namespace:"code-intelligence:kg",enableVectorEmbeddings:!0,projectRoot:e});try{let l;if(n)l=n;else{let{glob:m}=await import("tinyglobby");l=(await m(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py"],{cwd:e,ignore:et,expandDirectories:!1})).map(f=>ge(e,f))}t.services.log(` Scanning ${l.length} source files...`);let u=await this.runBoundedScan(p,l,s,t);if(u.status==="timeout")return t.services.warn(` \u26A0 Code intelligence pre-scan exceeded ${Ze/1e3}s phase cap. Indexed ${u.entries} entries before timeout. Last file: ${u.timeoutFile??"(unknown)"}. Init is continuing \u2014 re-run 'aqe code index' later, or report this file to https://github.com/proffesor-for-testing/agentic-qe/issues.`),u;if(u.status==="indexed"){let m=s?"Delta indexed":"Indexed";t.services.log(` ${m} ${u.entries} entries to ${r}`),await this.buildHypergraph(r,l,t)}return u}finally{try{p.destroy()}catch{}try{await d.dispose()}catch{}}}async runBoundedScan(e,t,s,n){let o=0,r=0,i=0,d="",p=Date.now(),l=!1;s||await e.clear();let u=n.projectRoot,m=f=>f.startsWith(u)?f.slice(u.length+1):f;for(let f of t){if(Date.now()-p>Ze){l=!0;break}d=f,n.services.log(` [${i+1}/${t.length}] ${m(f)}`);try{let b=await this.withTimeout(e.index({paths:[f],incremental:!0,includeTests:!0}),Xe,f);b.success&&(o+=b.value.nodesCreated,r+=b.value.edgesCreated)}catch(b){let P=b instanceof Error?b.message:String(b);P.startsWith("AQE_PER_FILE_TIMEOUT")?n.services.warn(` \u26A0 Skipped ${m(f)} \u2014 indexing exceeded ${Xe/1e3}s`):n.services.warn(` \u26A0 Failed to index ${m(f)}: ${P}`)}i++}let y=o+r;return l?{status:"timeout",entries:y,timeoutFile:d}:{status:"indexed",entries:y}}withTimeout(e,t,s){return new Promise((n,o)=>{let r=setTimeout(()=>{o(new Error(`AQE_PER_FILE_TIMEOUT: ${s}`))},t);typeof r.unref=="function"&&r.unref(),e.then(i=>{clearTimeout(r),n(i)},i=>{clearTimeout(r),o(i)})})}async buildHypergraph(e,t,s){try{let{extractCodeIndex:n}=await import("./code-index-extractor-2232LGZN.js"),{createHypergraphEngine:o}=await import("./hypergraph-engine-ZBWUPTVD.js"),r=D(e),i=await o({db:r,maxTraversalDepth:10,maxQueryResults:1e3,enableVectorSearch:!1}),d=await n(t),p=await i.buildFromIndexResult(d);r.close(),p.nodesCreated+p.edgesCreated>0&&s.services.log(` Hypergraph: ${p.nodesCreated} nodes, ${p.edgesCreated} edges`)}catch(n){s.services.warn?.(` Hypergraph build skipped: ${n}`)}}getLastIndexedAt(e){try{let t=e.prepare(`
19
+ `).get().count}catch{return 0}}async runCodeIntelligenceScan(e,t,s,n){let{KnowledgeGraphService:o}=await import("./knowledge-graph-NUJKEDNF.js"),r=ge(e,".agentic-qe","memory.db"),i={type:"sqlite",sqlite:{path:r,walMode:!0}},{backend:d}=await Qe(i,!0),p=new o(d,{namespace:"code-intelligence:kg",enableVectorEmbeddings:!0,projectRoot:e});try{let l;if(n)l=n;else{let{glob:m}=await import("tinyglobby");l=(await m(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py"],{cwd:e,ignore:st,expandDirectories:!1})).map(f=>ge(e,f))}t.services.log(` Scanning ${l.length} source files...`);let u=await this.runBoundedScan(p,l,s,t);if(u.status==="timeout")return t.services.warn(` \u26A0 Code intelligence pre-scan exceeded ${nt/1e3}s phase cap. Indexed ${u.entries} entries before timeout. Last file: ${u.timeoutFile??"(unknown)"}. Init is continuing \u2014 re-run 'aqe code index' later, or report this file to https://github.com/proffesor-for-testing/agentic-qe/issues.`),u;if(u.status==="indexed"){let m=s?"Delta indexed":"Indexed";t.services.log(` ${m} ${u.entries} entries to ${r}`),await this.buildHypergraph(r,l,t)}return u}finally{try{p.destroy()}catch{}try{await d.dispose()}catch{}}}async runBoundedScan(e,t,s,n){let o=0,r=0,i=0,d="",p=Date.now(),l=!1;s||await e.clear();let u=n.projectRoot,m=f=>f.startsWith(u)?f.slice(u.length+1):f;for(let f of t){if(Date.now()-p>nt){l=!0;break}d=f,n.services.log(` [${i+1}/${t.length}] ${m(f)}`);try{let b=await this.withTimeout(e.index({paths:[f],incremental:!0,includeTests:!0}),tt,f);b.success&&(o+=b.value.nodesCreated,r+=b.value.edgesCreated)}catch(b){let P=b instanceof Error?b.message:String(b);P.startsWith("AQE_PER_FILE_TIMEOUT")?n.services.warn(` \u26A0 Skipped ${m(f)} \u2014 indexing exceeded ${tt/1e3}s`):n.services.warn(` \u26A0 Failed to index ${m(f)}: ${P}`)}i++}let y=o+r;return l?{status:"timeout",entries:y,timeoutFile:d}:{status:"indexed",entries:y}}withTimeout(e,t,s){return new Promise((n,o)=>{let r=setTimeout(()=>{o(new Error(`AQE_PER_FILE_TIMEOUT: ${s}`))},t);typeof r.unref=="function"&&r.unref(),e.then(i=>{clearTimeout(r),n(i)},i=>{clearTimeout(r),o(i)})})}async buildHypergraph(e,t,s){try{let{extractCodeIndex:n}=await import("./code-index-extractor-4GKKSETB.js"),{createHypergraphEngine:o}=await import("./hypergraph-engine-YGEQPCKJ.js"),r=D(e),i=await o({db:r,maxTraversalDepth:10,maxQueryResults:1e3,enableVectorSearch:!1}),d=await n(t),p=await i.buildFromIndexResult(d);r.close(),p.nodesCreated+p.edgesCreated>0&&s.services.log(` Hypergraph: ${p.nodesCreated} nodes, ${p.edgesCreated} edges`)}catch(n){s.services.warn?.(` Hypergraph build skipped: ${n}`)}}getLastIndexedAt(e){try{let t=e.prepare(`
20
20
  SELECT value FROM kv_store
21
21
  WHERE namespace = 'code-intelligence:kg'
22
22
  AND key = 'metadata:index'
23
- `).get();if(!t)return null;let s=x(t.value);if(!s.indexedAt)return null;let n=new Date(s.indexedAt);return isNaN(n.getTime())?null:n}catch{return null}}async findChangedFiles(e,t){let{glob:s}=await import("tinyglobby"),n=await s(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py"],{cwd:e,ignore:et,expandDirectories:!1}),o=t.getTime(),r=[];for(let i of n){let d=ge(e,i);try{St(d).mtimeMs>o&&r.push(d)}catch{}}return r}};de();import{existsSync as w,mkdirSync as X,readFileSync as tt,writeFileSync as M}from"fs";import{join as k,dirname as Et}from"path";import{fileURLToPath as At}from"url";var _t=At(import.meta.url),nt=Et(_t),xt=[["aqe","initialized"]],Z=class extends v{name="hooks";description="Configure Claude Code hooks";order=70;critical=!1;requiresPhases=["configuration"];async shouldRun(e){return e.options.noClaude?(e.services.log(" Hooks skipped (--no-claude)"),!1):e.config?.hooks?.claudeCode??!0}async run(e){let t=e.config,{projectRoot:s}=e;if(!t.hooks.claudeCode)return{configured:!1,settingsPath:"",hookTypes:[],existingAqeDetected:!1};let n=k(s,".claude");w(n)||X(n,{recursive:!0});let o=k(n,"hooks");w(o)||X(o,{recursive:!0});let r=k(n,"settings.json"),i={},d;if(w(r))try{let R=tt(r,"utf-8");i=x(R),d=x(R)}catch{i={}}let p=this.generateHooksConfig(t,s),l=Object.keys(p),u=i.hooks||{},m=this.hasExistingAqeHooks(u);m&&e.services.log(" Detected existing AQE hooks \u2014 replacing with updated config"),i.hooks=Qe(u,p);let y=i.env,f={memoryBackend:e.options.memoryBackend};i.env=We(y,Ve(t,f),f);let b=Ge(t,s,f);He(i,b,{statusLine:!e.options.noStatusLine,...f});let P=i.enabledMcpjsonServers||[];if(P=P.filter(R=>R!=="aqe"),P.includes("agentic-qe")||P.push("agentic-qe"),i.enabledMcpjsonServers=P,Fe(d,i,xt)){let R=Be(r);R&&e.services.log(` Backup created: ${R}`),M(r,JSON.stringify(i,null,2),"utf-8")}else e.services.log(" Settings unchanged \u2014 .claude/settings.json left as-is");this.writeHooksReadme(o,l),this.installHookAssets(o,e);try{let R=tt(r,"utf-8"),I=x(R).hooks;(!I||!this.hasExistingAqeHooks(I))&&e.services.log(" WARNING: settings.json written but AQE hooks not detected \u2014 check settings-merge logic")}catch{e.services.log(" WARNING: Could not verify settings.json after write")}return e.services.log(` Settings: ${r}`),e.services.log(` Hooks dir: ${o}`),e.services.log(` Hook types: ${l.join(", ")}`),{configured:!0,settingsPath:r,hookTypes:l,existingAqeDetected:m}}writeHooksReadme(e,t){let s=k(e,"README.txt");if(w(s))return;let n=["AQE Hooks Directory","====================","","Claude Code hooks are configured in .claude/settings.json (not as files here).","This directory contains supporting infrastructure for the learning system.","","Configured hook types: "+t.join(", "),"","Files:"," settings.json \u2014 Hook definitions (in parent .claude/ directory)"," helpers/brain-checkpoint.cjs \u2014 Auto-exports brain to aqe.rvf on session end"," cross-phase-memory.yaml \u2014 QCSD feedback loop configuration","","Manual testing:"," npx agentic-qe hooks session-start --session-id test --json",' npx agentic-qe hooks route --task "generate tests" --json'," npx agentic-qe hooks post-edit --file src/example.ts --success --json",""].join(`
24
- `);M(s,n,"utf-8")}installHookAssets(e,t){let{projectRoot:s}=t;this.installBrainCheckpoint(s,t),this.installStatusline(s,t),this.installHookShim(s,t);let n=k(e,"cross-phase-memory.yaml");if(!w(n)){let r=[k(s,"v3","assets","hooks","cross-phase-memory.yaml"),k(s,"assets","hooks","cross-phase-memory.yaml"),k(s,"node_modules","agentic-qe","v3","assets","hooks","cross-phase-memory.yaml")],i=!1;for(let d of r)if(w(d)){let{copyFileSync:p}=Pt("fs");p(d,n),t.services.log(" Installed cross-phase memory config"),i=!0;break}i||M(n,["# Cross-Phase Memory Hooks Configuration","# Generated by aqe init",'version: "1.0"',"enabled: true",""].join(`
25
- `),"utf-8")}let o=k(e,"v3-domain-workers.json");w(o)||M(o,JSON.stringify({version:"3.0",workers:[{name:"pattern-consolidator",interval:"5m",enabled:!0},{name:"routing-accuracy-monitor",interval:"10m",enabled:!0},{name:"coverage-gap-scanner",interval:"15m",enabled:!0},{name:"flaky-test-detector",interval:"30m",enabled:!0}]},null,2),"utf-8")}hasExistingAqeHooks(e){for(let t of Object.values(e))if(Array.isArray(t)){for(let s of t)if(Le(s))return!0}return!1}installBrainCheckpoint(e,t){let s=k(e,".claude","helpers");w(s)||X(s,{recursive:!0});let n=k(s,"brain-checkpoint.cjs"),o=[k(e,".claude","helpers","brain-checkpoint.cjs"),k(e,"node_modules","agentic-qe",".claude","helpers","brain-checkpoint.cjs"),k(nt,"..","..","..",".claude","helpers","brain-checkpoint.cjs")];for(let r of o)if(w(r)&&r!==n){pe(r,n)&&t.services.log(" Installed brain-checkpoint.cjs (copied)");return}w(n)||(M(n,this.generateBrainCheckpointScript(),"utf-8"),t.services.log(" Installed brain-checkpoint.cjs (generated)"))}installStatusline(e,t){let s=k(e,".claude","helpers");w(s)||X(s,{recursive:!0});let n=k(s,"statusline-v3.cjs"),o=[k(e,"node_modules","agentic-qe","assets","helpers","statusline-v3.cjs"),k(e,"assets","helpers","statusline-v3.cjs")];for(let r of o)if(w(r)&&r!==n){pe(r,n)&&t.services.log(" Installed statusline-v3.cjs (copied)");return}w(n)||(M(n,this.generateMinimalStatuslineScript(),"utf-8"),t.services.log(" Installed statusline-v3.cjs (generated)"))}installHookShim(e,t){let s=k(e,".claude","hooks");w(s)||X(s,{recursive:!0});let n=k(s,"aqe-hook.cjs"),o=[k(e,"node_modules","agentic-qe",".claude","hooks","aqe-hook.cjs"),k(nt,"..","..","..",".claude","hooks","aqe-hook.cjs")];for(let r of o)if(w(r)&&r!==n){pe(r,n)&&t.services.log(" Installed aqe-hook.cjs (copied)");return}w(n)||t.services.log(" \u26A0 aqe-hook.cjs source not found \u2014 lifecycle hooks cannot run until AQE is reinstalled")}generateMinimalStatuslineScript(){return`#!/usr/bin/env node
23
+ `).get();if(!t)return null;let s=x(t.value);if(!s.indexedAt)return null;let n=new Date(s.indexedAt);return isNaN(n.getTime())?null:n}catch{return null}}async findChangedFiles(e,t){let{glob:s}=await import("tinyglobby"),n=await s(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py"],{cwd:e,ignore:st,expandDirectories:!1}),o=t.getTime(),r=[];for(let i of n){let d=ge(e,i);try{xt(d).mtimeMs>o&&r.push(d)}catch{}}return r}};de();import{existsSync as w,mkdirSync as Z,readFileSync as rt,writeFileSync as M}from"fs";import{join as k,dirname as Dt}from"path";import{fileURLToPath as $t}from"url";var qt=$t(import.meta.url),ot=Dt(qt),jt=[["aqe","initialized"]],ee=class extends v{name="hooks";description="Configure Claude Code hooks";order=70;critical=!1;requiresPhases=["configuration"];async shouldRun(e){return e.options.noClaude?(e.services.log(" Hooks skipped (--no-claude)"),!1):e.config?.hooks?.claudeCode??!0}async run(e){let t=e.config,{projectRoot:s}=e;if(!t.hooks.claudeCode)return{configured:!1,settingsPath:"",hookTypes:[],existingAqeDetected:!1};let n=k(s,".claude");w(n)||Z(n,{recursive:!0});let o=k(n,"hooks");w(o)||Z(o,{recursive:!0});let r=k(n,"settings.json"),i={},d;if(w(r))try{let I=rt(r,"utf-8");i=x(I),d=x(I)}catch{i={}}let p=this.generateHooksConfig(t,s),l=Object.keys(p),u=i.hooks||{},m=this.hasExistingAqeHooks(u);m&&e.services.log(" Detected existing AQE hooks \u2014 replacing with updated config"),i.hooks=He(u,p);let y=i.env,f={memoryBackend:e.options.memoryBackend};i.env=Ge(y,Ue(t,f),f);let b=ze(t,s,f);Ke(i,b,{statusLine:!e.options.noStatusLine,...f});let P=i.enabledMcpjsonServers||[];if(P=P.filter(I=>I!=="aqe"),P.includes("agentic-qe")||P.push("agentic-qe"),i.enabledMcpjsonServers=P,Be(d,i,jt)){let I=We(r);I&&e.services.log(` Backup created: ${I}`),M(r,JSON.stringify(i,null,2),"utf-8")}else e.services.log(" Settings unchanged \u2014 .claude/settings.json left as-is");this.writeHooksReadme(o,l),this.installHookAssets(o,e);try{let I=rt(r,"utf-8"),S=x(I).hooks;(!S||!this.hasExistingAqeHooks(S))&&e.services.log(" WARNING: settings.json written but AQE hooks not detected \u2014 check settings-merge logic")}catch{e.services.log(" WARNING: Could not verify settings.json after write")}return e.services.log(` Settings: ${r}`),e.services.log(` Hooks dir: ${o}`),e.services.log(` Hook types: ${l.join(", ")}`),{configured:!0,settingsPath:r,hookTypes:l,existingAqeDetected:m}}writeHooksReadme(e,t){let s=k(e,"README.txt");if(w(s))return;let n=["AQE Hooks Directory","====================","","Claude Code hooks are configured in .claude/settings.json (not as files here).","This directory contains supporting infrastructure for the learning system.","","Configured hook types: "+t.join(", "),"","Files:"," settings.json \u2014 Hook definitions (in parent .claude/ directory)"," helpers/brain-checkpoint.cjs \u2014 Auto-exports brain to aqe.rvf on session end"," cross-phase-memory.yaml \u2014 QCSD feedback loop configuration","","Manual testing:"," npx agentic-qe hooks session-start --session-id test --json",' npx agentic-qe hooks route --task "generate tests" --json'," npx agentic-qe hooks post-edit --file src/example.ts --success --json",""].join(`
24
+ `);M(s,n,"utf-8")}installHookAssets(e,t){let{projectRoot:s}=t;this.installBrainCheckpoint(s,t),this.installStatusline(s,t),this.installHookShim(s,t);let n=k(e,"cross-phase-memory.yaml");if(!w(n)){let r=[k(s,"v3","assets","hooks","cross-phase-memory.yaml"),k(s,"assets","hooks","cross-phase-memory.yaml"),k(s,"node_modules","agentic-qe","v3","assets","hooks","cross-phase-memory.yaml")],i=!1;for(let d of r)if(w(d)){let{copyFileSync:p}=It("fs");p(d,n),t.services.log(" Installed cross-phase memory config"),i=!0;break}i||M(n,["# Cross-Phase Memory Hooks Configuration","# Generated by aqe init",'version: "1.0"',"enabled: true",""].join(`
25
+ `),"utf-8")}let o=k(e,"v3-domain-workers.json");w(o)||M(o,JSON.stringify({version:"3.0",workers:[{name:"pattern-consolidator",interval:"5m",enabled:!0},{name:"routing-accuracy-monitor",interval:"10m",enabled:!0},{name:"coverage-gap-scanner",interval:"15m",enabled:!0},{name:"flaky-test-detector",interval:"30m",enabled:!0}]},null,2),"utf-8")}hasExistingAqeHooks(e){for(let t of Object.values(e))if(Array.isArray(t)){for(let s of t)if(Ve(s))return!0}return!1}installBrainCheckpoint(e,t){let s=k(e,".claude","helpers");w(s)||Z(s,{recursive:!0});let n=k(s,"brain-checkpoint.cjs"),o=[k(e,".claude","helpers","brain-checkpoint.cjs"),k(e,"node_modules","agentic-qe",".claude","helpers","brain-checkpoint.cjs"),k(ot,"..","..","..",".claude","helpers","brain-checkpoint.cjs")];for(let r of o)if(w(r)&&r!==n){pe(r,n)&&t.services.log(" Installed brain-checkpoint.cjs (copied)");return}w(n)||(M(n,this.generateBrainCheckpointScript(),"utf-8"),t.services.log(" Installed brain-checkpoint.cjs (generated)"))}installStatusline(e,t){let s=k(e,".claude","helpers");w(s)||Z(s,{recursive:!0});let n=k(s,"statusline-v3.cjs"),o=[k(e,"node_modules","agentic-qe","assets","helpers","statusline-v3.cjs"),k(e,"assets","helpers","statusline-v3.cjs")];for(let r of o)if(w(r)&&r!==n){pe(r,n)&&t.services.log(" Installed statusline-v3.cjs (copied)");return}w(n)||(M(n,this.generateMinimalStatuslineScript(),"utf-8"),t.services.log(" Installed statusline-v3.cjs (generated)"))}installHookShim(e,t){let s=k(e,".claude","hooks");w(s)||Z(s,{recursive:!0});let n=k(s,"aqe-hook.cjs"),o=[k(e,"node_modules","agentic-qe",".claude","hooks","aqe-hook.cjs"),k(ot,"..","..","..",".claude","hooks","aqe-hook.cjs")];for(let r of o)if(w(r)&&r!==n){pe(r,n)&&t.services.log(" Installed aqe-hook.cjs (copied)");return}w(n)||t.services.log(" \u26A0 aqe-hook.cjs source not found \u2014 lifecycle hooks cannot run until AQE is reinstalled")}generateMinimalStatuslineScript(){return`#!/usr/bin/env node
26
26
  /**
27
27
  * Agentic QE v3 Statusline (minimal fallback, generated by aqe init)
28
28
  * For the full statusline, reinstall: npx agentic-qe init --auto
@@ -128,10 +128,10 @@ function verifyBrain() {
128
128
  const cmd = process.argv[2] || 'verify';
129
129
  const result = cmd === 'export' ? exportBrain() : verifyBrain();
130
130
  if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result));
131
- `}generateHooksConfig(e,t){return{PreToolUse:[{matcher:"^(Write|Edit|MultiEdit)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" guard --file "$TOOL_INPUT_file_path" --json',timeout:3,continueOnError:!0}]},{matcher:"^(Write|Edit|MultiEdit)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-edit --file "$TOOL_INPUT_file_path" --json',timeout:5,continueOnError:!0}]},{matcher:"^Bash$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-command --command "$TOOL_INPUT_command" --json',timeout:3,continueOnError:!0}]},{matcher:"^(Task|Agent)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-task --description "$TOOL_INPUT_prompt" --json',timeout:5,continueOnError:!0}]}],PostToolUse:[{matcher:"^(Write|Edit|MultiEdit)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-edit --file "$TOOL_INPUT_file_path" --success --json',timeout:5,continueOnError:!0}]},{matcher:"^Bash$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-command --command "$TOOL_INPUT_command" --success true --json',timeout:5,continueOnError:!0}]},{matcher:"^(Task|Agent)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-task --task-id "$TOOL_RESULT_agent_id" --agent "$TOOL_INPUT_subagent_type" --success true --description "$TOOL_INPUT_prompt" --json',timeout:5,continueOnError:!0}]}],UserPromptSubmit:[{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" route --json',timeout:5,continueOnError:!0}]}],SessionStart:[{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" session-start --session-id "$SESSION_ID" --json',timeout:10,continueOnError:!0}]},{hooks:[{type:"command",command:`sh -c 'exec node "\${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/brain-checkpoint.cjs" verify --json'`,timeout:5,continueOnError:!0}]}],Stop:[{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" session-end --save-state --json',timeout:5,continueOnError:!0}]},{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-route --success true --json',timeout:5,continueOnError:!0}]},{hooks:[{type:"command",command:`sh -c 'exec node "\${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/brain-checkpoint.cjs" export --json'`,timeout:60,continueOnError:!0}]}]}}};import{existsSync as Dt,readFileSync as $t}from"fs";de();import{join as qt}from"path";var ee=class extends v{constructor(t=s=>Ue(s)){super();this.detectPlugin=t}detectPlugin;name="mcp";description="Configure MCP server";order=80;critical=!1;requiresPhases=["configuration","database"];async run(t){let{projectRoot:s}=t;if(t.options.noClaude)return t.services.log(" MCP: skipped (--no-claude \u2014 .mcp.json is the Claude Code surface)"),{configured:!1,mcpPath:"",serverName:""};if(t.options.noMcp)return t.services.log(" MCP: skipped (--no-mcp)"),t.services.log(" CLI commands available: aqe memory, aqe test, aqe coverage, etc."),{configured:!1,mcpPath:"",serverName:""};if(!t.options.withMcp){let l=this.detectPlugin(s);if(l.enabled)return t.services.log(Ke(s)),{configured:!1,mcpPath:"",serverName:"",skippedForPlugin:l.pluginKey}}let n=t.options.memoryBackend==="memory",r={command:"aqe-mcp",args:[],env:n?{AQE_MEMORY_BACKEND:"memory",AQE_LEARNING_ENABLED:"false",AQE_WORKERS_ENABLED:"false",NODE_ENV:"production"}:{AQE_LEARNING_ENABLED:"true",AQE_WORKERS_ENABLED:"true",NODE_ENV:"production"}},i=qt(s,".mcp.json"),d={};if(Dt(i))try{let l=$t(i,"utf-8");d=x(l)}catch{d={}}d.mcpServers||(d.mcpServers={});let p=d.mcpServers;return p["agentic-qe"]=r,Q(i,JSON.stringify(d,null,2)),t.services.log(` MCP config: ${i}`),t.services.log(" Server: agentic-qe"),n?(t.services.log(" Memory backend: in-memory (database-free)"),t.services.log(" Learning: disabled (db-free)"),t.services.log(" Workers: disabled (db-free)")):(t.services.log(" Learning: enabled"),t.services.log(" Workers: enabled")),{configured:!0,mcpPath:i,serverName:"agentic-qe"}}};import{existsSync as A,readFileSync as Wt,readdirSync as Vt}from"fs";import{join as _}from"path";import{createHash as jt}from"crypto";import{constants as Tt,copyFileSync as st,existsSync as Ce,lstatSync as Re,readFileSync as ot,realpathSync as it,unlinkSync as Ot}from"fs";import{dirname as at,join as Pe,sep as Mt}from"path";var te=".claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery",Ie="qe-court/evals/fixtures/seeded-mutant-delivery",rt=".claude/skills/testability-scoring/resources/templates",Ft="testability-scoring/resources/templates",Nt=Object.freeze([{id:"qe-court-seeded-mutant",retired:[{relPath:`${te}/budget.test.ts`,shippedSha256:["add1ff4cb05978c136f8c2c5cc50059d920f06f409e5f6f304239b7dad3cf65d"]},{relPath:`${te}/budget.ts`,shippedSha256:["11fc97cad19bb4fc0d31151a6d216ab99d0df0521b60be8fb19581d412147ef6"]}],replacements:[{relPath:`${te}/budget-tests.ts.fixture`,source:`${Ie}/budget-tests.ts.fixture`},{relPath:`${te}/budget.ts.fixture`,source:`${Ie}/budget.ts.fixture`}],refresh:[{relPath:`${te}/README.md`,source:`${Ie}/README.md`,previousSha256:["d3988b92856d0023a7ae210dce3e0bdf76204f41d635fd29f7e243c168ff6109"]},{relPath:".claude/skills/qe-court/evals/qe-court.yaml",source:"qe-court/evals/qe-court.yaml",previousSha256:["412899013a51a099224bad04491d49dca19f2c567c5599adedabd0e1d58556c7","27c8be547dc032e2dbe488156dd7a30f79b1cc921fe92efec5b9bb0a151f0e9b"]}],advice:"3.15.6 renamed the qe-court seeded-mutant fixture to budget.ts.fixture / budget-tests.ts.fixture because budget.test.ts matches test-runner globs, so your vitest/jest collects it (#1017). The pair was left as is; delete or rename both files if you do not want your test runner to collect it"},{id:"testability-scoring-spec-template",retired:[{relPath:`${rt}/testability-scoring.spec.template.js`,shippedSha256:["e85a3e25bb458f3d090834e121b02e8db83cdc589149b5cf7549853e1a067edf"]}],replacements:[{relPath:`${rt}/testability-scoring-spec.template.js`,source:`${Ft}/testability-scoring-spec.template.js`}],refresh:[],advice:"3.15.6 renamed it to testability-scoring-spec.template.js because its name matches the `*.spec.*` test glob (#1017); delete or rename it if your test runner should not collect it"}]);function lt(c){return jt("sha256").update(c).digest("hex")}function Se(c,e){let t;try{t=it(at(e))}catch{return!1}return t===c||t.startsWith(c+Mt)}function Bt(c,e,t,s){let n;try{n=Re(e)}catch{return{state:"absent"}}if(!Se(c,e))return{state:"blocked",why:`${t} resolves outside the project (symlinked directory)`};if(!n.isFile())return{state:"blocked",why:`${t} is not a regular file`};try{if(!s.includes(lt(ot(e))))return{state:"blocked",why:`${t} was modified since AQE installed it`}}catch(o){return{state:"blocked",why:`${t} is unreadable (${o instanceof Error?o.message:String(o)})`}}return{state:"removable"}}function ct(c,e={}){let t=e.groups??Nt,s={removed:[],installed:[],refreshed:[],kept:[],missingReplacements:[],replacementWarnings:[]},n;try{n=it(c)}catch{return s}let o=r=>Pe(c,...r.split("/"));for(let r of t){let d=r.retired.map(l=>({file:l,probe:Bt(n,o(l.relPath),l.relPath.split("/").pop(),l.shippedSha256)})).filter(l=>l.probe.state!=="absent");if(d.length===0)continue;let p=d.filter(l=>l.probe.state==="blocked");if(p.length>0){s.kept.push({group:r.id,files:d.map(l=>l.file.relPath),why:p.map(l=>l.probe.why).join("; "),advice:r.advice});continue}for(let{file:l}of d)try{Ot(o(l.relPath)),s.removed.push(l.relPath)}catch(u){s.kept.push({group:r.id,files:[l.relPath],why:`could not remove (${u instanceof Error?u.message:String(u)})`,advice:r.advice})}for(let l of r.replacements){let u=o(l.relPath),m=e.sourceSkillsDir?Pe(e.sourceSkillsDir,...l.source.split("/")):void 0,y;try{y=Re(u)}catch{y=void 0}if(!y?.isFile()){if(y){s.missingReplacements.push(l.relPath),s.replacementWarnings.push(`${l.relPath} exists and is not a regular file (e.g. a symlink); not replaced`);continue}if(!m||!Ce(m)){s.missingReplacements.push(l.relPath);continue}try{if(!Ce(at(u))||!Se(n,u)){s.missingReplacements.push(l.relPath);continue}st(m,u,Tt.COPYFILE_EXCL),s.installed.push(l.relPath)}catch(f){s.missingReplacements.push(l.relPath),f?.code==="EEXIST"&&s.replacementWarnings.push(`${l.relPath} appeared during install; not replaced`)}}}for(let l of r.refresh){let u=o(l.relPath),m=e.sourceSkillsDir?Pe(e.sourceSkillsDir,...l.source.split("/")):void 0;if(!(!m||!Ce(m)))try{if(!Re(u).isFile()||!Se(n,u)||!l.previousSha256.includes(lt(ot(u))))continue;st(m,u),s.refreshed.push(l.relPath)}catch{}}}return s}ce();import{spawnSync as Lt}from"node:child_process";import*as fe from"node:os";import*as ut from"node:fs";var F="vibium@^26.8.21",pt={platform:()=>fe.platform(),arch:()=>fe.arch(),existsSync:c=>ut.existsSync(c)},dt=["/usr/bin/chromium","/usr/bin/chromium-browser","/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/snap/bin/chromium"];function Ee(c=pt){if(c.platform()!=="linux"||c.arch()!=="arm64")return;let e=dt.find(t=>c.existsSync(t));return e?{code:"linux-arm64-system-chromium-found",browserPath:e,message:`Linux aarch64 detected. Vibium v26.3.x does not auto-download Chrome for Testing on ARM64. Found system browser at ${e}. Export VIBIUM_BROWSER_PATH=${e} before running vibium.`}:{code:"linux-arm64-no-system-chromium",message:`Linux aarch64 detected. Vibium v26.3.x does not auto-download Chrome for Testing on ARM64, and no system chromium was found on PATH (checked: ${dt.join(", ")}). Install via \`apt-get install chromium\` (or your distro's equivalent), then export VIBIUM_BROWSER_PATH=/usr/bin/chromium before running vibium.`}}function ne(c,e,t,s){return c(e,t,{encoding:"utf8",timeout:s,maxBuffer:8*1024*1024})}var Ae=(c,e,t)=>Lt(c,e,t);function Qt(c=Ae,e=5e3){let t=ne(c,"vibium",["--version"],e);if(t.status!==0)return null;let s=(t.stdout||"").trim(),n=(t.stderr||"").trim(),o=s||n;if(!o)return"unknown";let r=o.match(/v?(\d+\.\d+\.\d+(?:[-+][\w.]+)?)/);return r?r[1]:o.split(/\s+/)[0]||"unknown"}function se(c=Ae,e=5e3){let t=Qt(c,e);if(!t)return{status:"cli-missing"};let s=/^(\d+)\.(\d+)\.(\d+)(?:\+[\w.]+)?$/.exec(t);if(!s||Number(s[1])!==26||Number(s[2])<8||Number(s[2])===8&&Number(s[3])<21)return{status:"unsupported-version",version:t,message:`Vibium ${t} is unsupported; install ${F} for the browser.start() API`};let n=ne(c,"vibium",["is-installed"],e);return n.status===0?{status:"ready",version:t}:{status:"payload-missing",version:t,message:n.stderr?.trim()||n.stdout?.trim()||S(n.error)||"Vibium Chrome/chromedriver payload is missing or incomplete"}}function mt(c={}){let e=c.packageSpec||F;if(c.skip)return{status:"skipped",packageSpec:e,message:"install skipped by options"};let t=c.spawner||Ae,s=c.platformProbe||pt,n=Ee(s),o=se(t);if(o.status==="ready")return{status:"already-installed",version:o.version,packageSpec:e,platformHint:n};let r=c.npmBin||"npm",i=ne(t,r,["--version"],5e3);if(i.error||i.status!==0)return{status:"npm-unavailable",packageSpec:e,message:`npm is not available on PATH. Install Node.js + npm, then run \`npm install -g ${e}\`.`};let d=c.timeoutMs||18e4,p=ne(t,r,["install","-g",e],d);if(p.status!==0)return{status:"install-failed",packageSpec:e,message:p.stderr?.trim()||p.stdout?.trim()||S(p.error)||"unknown npm install failure"};let l=se(t);if(l.status==="payload-missing"){let u=ne(t,"vibium",["install"],d);if(u.status!==0)return{status:"install-failed",packageSpec:e,platformHint:n,message:`Browser payload installation failed: ${u.stderr?.trim()||u.stdout?.trim()||"vibium install failed"}. Run \`vibium install\` and verify with \`vibium is-installed\`.`};l=se(t)}if(l.status!=="ready"){let u=l.message?`: ${l.message}`:"";return{status:"install-failed",packageSpec:e,platformHint:n,message:`npm completed, but Vibium readiness verification failed (${l.status})${u}. Run \`npm install -g ${e}\`, then verify with \`vibium is-installed\`.`}}return{status:"installed",version:l.version,packageSpec:e,platformHint:n}}var re=class extends v{name="assets";description="Install skills and agents";order=90;critical=!1;requiresPhases=["configuration"];async run(e){let t=e.config,{projectRoot:s,options:n}=e,o=this.detectVersionUpgrade(e),r=n.upgrade||t.skills.overwrite||n.autoMode&&o,i=0,d=0,p=0,l=0,u=0,m=0,y=0,f=0,b=0,P,L,R=[],he=[];if(n.upgrade?e.services.log(" Upgrade mode: overwriting existing files"):n.autoMode&&o&&e.services.log(" Version upgrade detected: updating skills and agents"),!n.noClaude&&t.skills.install){let h=await ke({projectRoot:s,installV2Skills:t.skills.installV2,installV3Skills:t.skills.installV3,overwrite:r}).install();i=h.installed.length,h.errors.length>0&&e.services.warn(`Skills warnings: ${h.errors.join(", ")}`)}if(!n.noClaude){let g=ct(s,{sourceSkillsDir:ke({projectRoot:s}).getSourceSkillsDir()});R=g.removed,he=g.kept.flatMap(h=>h.files);for(let h of g.removed)e.services.log(` Removed retired asset: ${h}`);for(let h of[...g.installed,...g.refreshed])e.services.log(` Updated skill file: ${h}`);for(let h of g.kept)e.services.warn(`Kept ${h.files.join(", ")}: ${h.why}. ${h.advice}.`);for(let h of g.replacementWarnings)e.services.warn(`Skill file kept: ${h}.`);g.missingReplacements.length>0&&e.services.warn(`Could not install ${g.missingReplacements.join(", ")}; run "aqe init --upgrade" to refresh the skills.`)}if(!n.noClaude){try{let h=await Je({projectRoot:s,installQEAgents:!0,installSubagents:!0,overwrite:r}).install();d=h.installed.length,h.errors.length>0&&e.services.warn(`Agents warnings: ${h.errors.join(", ")}`)}catch(g){e.services.warn(`Agents install error: ${g instanceof Error?g.message:g}`)}je(s)}let I;if(n.browserEngine===!0&&!n.minimal)try{let g=se();if(g.status==="ready")I={status:"already-installed",version:g.version,packageSpec:F,platformHint:Ee()},e.services.log(` Browser engine: vibium ${I.version} (already installed)`);else switch(e.services.log(" Browser engine: installing vibium via npm (this can take 1\u20133 minutes on first run; downloads Chrome for Testing)\u2026"),I=mt({skip:!1}),I.status){case"installed":e.services.log(` Browser engine: vibium ${I.version} installed`);break;case"skipped":e.services.log(" Browser engine: skipped");break;case"install-failed":e.services.warn(`Browser engine install failed (qe-browser skill will be unavailable until you run \`aqe init --browser-engine\`): ${I.message||"unknown"}`);break;case"npm-unavailable":e.services.warn("Browser engine: npm not on PATH \u2014 install Node.js + npm, then `aqe init --browser-engine` to enable qe-browser");break}I?.platformHint&&e.services.warn(` Browser engine platform hint: ${I.platformHint.message}`)}catch(g){let h=g instanceof Error?g.message:String(g);e.services.warn(`Browser engine install error: ${h}
131
+ `}generateHooksConfig(e,t){return{PreToolUse:[{matcher:"^(Write|Edit|MultiEdit)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" guard --file "$TOOL_INPUT_file_path" --json',timeout:3,continueOnError:!0}]},{matcher:"^(Write|Edit|MultiEdit)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-edit --file "$TOOL_INPUT_file_path" --json',timeout:5,continueOnError:!0}]},{matcher:"^Bash$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-command --command "$TOOL_INPUT_command" --json',timeout:3,continueOnError:!0}]},{matcher:"^(Task|Agent)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-task --description "$TOOL_INPUT_prompt" --json',timeout:5,continueOnError:!0}]}],PostToolUse:[{matcher:"^(Write|Edit|MultiEdit)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-edit --file "$TOOL_INPUT_file_path" --success --json',timeout:5,continueOnError:!0}]},{matcher:"^Bash$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-command --command "$TOOL_INPUT_command" --success true --json',timeout:5,continueOnError:!0}]},{matcher:"^(Task|Agent)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-task --task-id "$TOOL_RESULT_agent_id" --agent "$TOOL_INPUT_subagent_type" --success true --description "$TOOL_INPUT_prompt" --json',timeout:5,continueOnError:!0}]}],UserPromptSubmit:[{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" route --json',timeout:5,continueOnError:!0}]}],SessionStart:[{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" session-start --session-id "$SESSION_ID" --json',timeout:10,continueOnError:!0}]},{hooks:[{type:"command",command:`sh -c 'exec node "\${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/brain-checkpoint.cjs" verify --json'`,timeout:5,continueOnError:!0}]}],Stop:[{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" session-end --save-state --json',timeout:5,continueOnError:!0}]},{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-route --success true --json',timeout:5,continueOnError:!0}]},{hooks:[{type:"command",command:`sh -c 'exec node "\${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/brain-checkpoint.cjs" export --json'`,timeout:60,continueOnError:!0}]}]}}};import{existsSync as Tt,readFileSync as Ot}from"fs";de();import{join as Mt}from"path";var te=class extends v{constructor(t=s=>Je(s)){super();this.detectPlugin=t}detectPlugin;name="mcp";description="Configure MCP server";order=80;critical=!1;requiresPhases=["configuration","database"];async run(t){let{projectRoot:s}=t;if(t.options.noClaude)return t.services.log(" MCP: skipped (--no-claude \u2014 .mcp.json is the Claude Code surface)"),{configured:!1,mcpPath:"",serverName:""};if(t.options.noMcp)return t.services.log(" MCP: skipped (--no-mcp)"),t.services.log(" CLI commands available: aqe memory, aqe test, aqe coverage, etc."),{configured:!1,mcpPath:"",serverName:""};if(!t.options.withMcp){let l=this.detectPlugin(s);if(l.enabled)return t.services.log(Ye(s)),{configured:!1,mcpPath:"",serverName:"",skippedForPlugin:l.pluginKey}}let n=t.options.memoryBackend==="memory",r={command:"aqe-mcp",args:[],env:n?{AQE_MEMORY_BACKEND:"memory",AQE_LEARNING_ENABLED:"false",AQE_WORKERS_ENABLED:"false",NODE_ENV:"production"}:{AQE_LEARNING_ENABLED:"true",AQE_WORKERS_ENABLED:"true",NODE_ENV:"production"}},i=Mt(s,".mcp.json"),d={};if(Tt(i))try{let l=Ot(i,"utf-8");d=x(l)}catch{d={}}d.mcpServers||(d.mcpServers={});let p=d.mcpServers;return p["agentic-qe"]=r,W(i,JSON.stringify(d,null,2)),t.services.log(` MCP config: ${i}`),t.services.log(" Server: agentic-qe"),n?(t.services.log(" Memory backend: in-memory (database-free)"),t.services.log(" Learning: disabled (db-free)"),t.services.log(" Workers: disabled (db-free)")):(t.services.log(" Learning: enabled"),t.services.log(" Workers: enabled")),{configured:!0,mcpPath:i,serverName:"agentic-qe"}}};import{existsSync as A,readFileSync as Ut,readdirSync as Kt}from"fs";import{join as _}from"path";import{createHash as Ft}from"crypto";import{constants as Nt,copyFileSync as it,existsSync as Ce,lstatSync as Se,readFileSync as lt,realpathSync as ct,unlinkSync as Lt}from"fs";import{dirname as dt,join as Pe,sep as Bt}from"path";var ne=".claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery",Ee="qe-court/evals/fixtures/seeded-mutant-delivery",at=".claude/skills/testability-scoring/resources/templates",Qt="testability-scoring/resources/templates",Wt=Object.freeze([{id:"qe-court-seeded-mutant",retired:[{relPath:`${ne}/budget.test.ts`,shippedSha256:["add1ff4cb05978c136f8c2c5cc50059d920f06f409e5f6f304239b7dad3cf65d"]},{relPath:`${ne}/budget.ts`,shippedSha256:["11fc97cad19bb4fc0d31151a6d216ab99d0df0521b60be8fb19581d412147ef6"]}],replacements:[{relPath:`${ne}/budget-tests.ts.fixture`,source:`${Ee}/budget-tests.ts.fixture`},{relPath:`${ne}/budget.ts.fixture`,source:`${Ee}/budget.ts.fixture`}],refresh:[{relPath:`${ne}/README.md`,source:`${Ee}/README.md`,previousSha256:["d3988b92856d0023a7ae210dce3e0bdf76204f41d635fd29f7e243c168ff6109"]},{relPath:".claude/skills/qe-court/evals/qe-court.yaml",source:"qe-court/evals/qe-court.yaml",previousSha256:["412899013a51a099224bad04491d49dca19f2c567c5599adedabd0e1d58556c7","27c8be547dc032e2dbe488156dd7a30f79b1cc921fe92efec5b9bb0a151f0e9b"]}],advice:"3.15.6 renamed the qe-court seeded-mutant fixture to budget.ts.fixture / budget-tests.ts.fixture because budget.test.ts matches test-runner globs, so your vitest/jest collects it (#1017). The pair was left as is; delete or rename both files if you do not want your test runner to collect it"},{id:"testability-scoring-spec-template",retired:[{relPath:`${at}/testability-scoring.spec.template.js`,shippedSha256:["e85a3e25bb458f3d090834e121b02e8db83cdc589149b5cf7549853e1a067edf"]}],replacements:[{relPath:`${at}/testability-scoring-spec.template.js`,source:`${Qt}/testability-scoring-spec.template.js`}],refresh:[],advice:"3.15.6 renamed it to testability-scoring-spec.template.js because its name matches the `*.spec.*` test glob (#1017); delete or rename it if your test runner should not collect it"}]);function ut(c){return Ft("sha256").update(c).digest("hex")}function Ie(c,e){let t;try{t=ct(dt(e))}catch{return!1}return t===c||t.startsWith(c+Bt)}function Vt(c,e,t,s){let n;try{n=Se(e)}catch{return{state:"absent"}}if(!Ie(c,e))return{state:"blocked",why:`${t} resolves outside the project (symlinked directory)`};if(!n.isFile())return{state:"blocked",why:`${t} is not a regular file`};try{if(!s.includes(ut(lt(e))))return{state:"blocked",why:`${t} was modified since AQE installed it`}}catch(o){return{state:"blocked",why:`${t} is unreadable (${o instanceof Error?o.message:String(o)})`}}return{state:"removable"}}function pt(c,e={}){let t=e.groups??Wt,s={removed:[],installed:[],refreshed:[],kept:[],missingReplacements:[],replacementWarnings:[]},n;try{n=ct(c)}catch{return s}let o=r=>Pe(c,...r.split("/"));for(let r of t){let d=r.retired.map(l=>({file:l,probe:Vt(n,o(l.relPath),l.relPath.split("/").pop(),l.shippedSha256)})).filter(l=>l.probe.state!=="absent");if(d.length===0)continue;let p=d.filter(l=>l.probe.state==="blocked");if(p.length>0){s.kept.push({group:r.id,files:d.map(l=>l.file.relPath),why:p.map(l=>l.probe.why).join("; "),advice:r.advice});continue}for(let{file:l}of d)try{Lt(o(l.relPath)),s.removed.push(l.relPath)}catch(u){s.kept.push({group:r.id,files:[l.relPath],why:`could not remove (${u instanceof Error?u.message:String(u)})`,advice:r.advice})}for(let l of r.replacements){let u=o(l.relPath),m=e.sourceSkillsDir?Pe(e.sourceSkillsDir,...l.source.split("/")):void 0,y;try{y=Se(u)}catch{y=void 0}if(!y?.isFile()){if(y){s.missingReplacements.push(l.relPath),s.replacementWarnings.push(`${l.relPath} exists and is not a regular file (e.g. a symlink); not replaced`);continue}if(!m||!Ce(m)){s.missingReplacements.push(l.relPath);continue}try{if(!Ce(dt(u))||!Ie(n,u)){s.missingReplacements.push(l.relPath);continue}it(m,u,Nt.COPYFILE_EXCL),s.installed.push(l.relPath)}catch(f){s.missingReplacements.push(l.relPath),f?.code==="EEXIST"&&s.replacementWarnings.push(`${l.relPath} appeared during install; not replaced`)}}}for(let l of r.refresh){let u=o(l.relPath),m=e.sourceSkillsDir?Pe(e.sourceSkillsDir,...l.source.split("/")):void 0;if(!(!m||!Ce(m)))try{if(!Se(u).isFile()||!Ie(n,u)||!l.previousSha256.includes(ut(lt(u))))continue;it(m,u),s.refreshed.push(l.relPath)}catch{}}}return s}Q();import{spawnSync as Ht}from"node:child_process";import*as fe from"node:os";import*as gt from"node:fs";var F="vibium@^26.8.21",ft={platform:()=>fe.platform(),arch:()=>fe.arch(),existsSync:c=>gt.existsSync(c)},mt=["/usr/bin/chromium","/usr/bin/chromium-browser","/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/snap/bin/chromium"];function Re(c=ft){if(c.platform()!=="linux"||c.arch()!=="arm64")return;let e=mt.find(t=>c.existsSync(t));return e?{code:"linux-arm64-system-chromium-found",browserPath:e,message:`Linux aarch64 detected. Vibium v26.3.x does not auto-download Chrome for Testing on ARM64. Found system browser at ${e}. Export VIBIUM_BROWSER_PATH=${e} before running vibium.`}:{code:"linux-arm64-no-system-chromium",message:`Linux aarch64 detected. Vibium v26.3.x does not auto-download Chrome for Testing on ARM64, and no system chromium was found on PATH (checked: ${mt.join(", ")}). Install via \`apt-get install chromium\` (or your distro's equivalent), then export VIBIUM_BROWSER_PATH=/usr/bin/chromium before running vibium.`}}function se(c,e,t,s){return c(e,t,{encoding:"utf8",timeout:s,maxBuffer:8*1024*1024})}var Ae=(c,e,t)=>Ht(c,e,t);function Gt(c=Ae,e=5e3){let t=se(c,"vibium",["--version"],e);if(t.status!==0)return null;let s=(t.stdout||"").trim(),n=(t.stderr||"").trim(),o=s||n;if(!o)return"unknown";let r=o.match(/v?(\d+\.\d+\.\d+(?:[-+][\w.]+)?)/);return r?r[1]:o.split(/\s+/)[0]||"unknown"}function re(c=Ae,e=5e3){let t=Gt(c,e);if(!t)return{status:"cli-missing"};let s=/^(\d+)\.(\d+)\.(\d+)(?:\+[\w.]+)?$/.exec(t);if(!s||Number(s[1])!==26||Number(s[2])<8||Number(s[2])===8&&Number(s[3])<21)return{status:"unsupported-version",version:t,message:`Vibium ${t} is unsupported; install ${F} for the browser.start() API`};let n=se(c,"vibium",["is-installed"],e);return n.status===0?{status:"ready",version:t}:{status:"payload-missing",version:t,message:n.stderr?.trim()||n.stdout?.trim()||E(n.error)||"Vibium Chrome/chromedriver payload is missing or incomplete"}}function ht(c={}){let e=c.packageSpec||F;if(c.skip)return{status:"skipped",packageSpec:e,message:"install skipped by options"};let t=c.spawner||Ae,s=c.platformProbe||ft,n=Re(s),o=re(t);if(o.status==="ready")return{status:"already-installed",version:o.version,packageSpec:e,platformHint:n};let r=c.npmBin||"npm",i=se(t,r,["--version"],5e3);if(i.error||i.status!==0)return{status:"npm-unavailable",packageSpec:e,message:`npm is not available on PATH. Install Node.js + npm, then run \`npm install -g ${e}\`.`};let d=c.timeoutMs||18e4,p=se(t,r,["install","-g",e],d);if(p.status!==0)return{status:"install-failed",packageSpec:e,message:p.stderr?.trim()||p.stdout?.trim()||E(p.error)||"unknown npm install failure"};let l=re(t);if(l.status==="payload-missing"){let u=se(t,"vibium",["install"],d);if(u.status!==0)return{status:"install-failed",packageSpec:e,platformHint:n,message:`Browser payload installation failed: ${u.stderr?.trim()||u.stdout?.trim()||"vibium install failed"}. Run \`vibium install\` and verify with \`vibium is-installed\`.`};l=re(t)}if(l.status!=="ready"){let u=l.message?`: ${l.message}`:"";return{status:"install-failed",packageSpec:e,platformHint:n,message:`npm completed, but Vibium readiness verification failed (${l.status})${u}. Run \`npm install -g ${e}\`, then verify with \`vibium is-installed\`.`}}return{status:"installed",version:l.version,packageSpec:e,platformHint:n}}var oe=class extends v{name="assets";description="Install skills and agents";order=90;critical=!1;requiresPhases=["configuration"];async run(e){let t=e.config,{projectRoot:s,options:n}=e,o=this.detectVersionUpgrade(e),r=n.upgrade||t.skills.overwrite||n.autoMode&&o,i=0,d=0,p=0,l=0,u=0,m=0,y=0,f=0,b=0,P,B,I=[],he=[];if(n.upgrade?e.services.log(" Upgrade mode: overwriting existing files"):n.autoMode&&o&&e.services.log(" Version upgrade detected: updating skills and agents"),!n.noClaude&&t.skills.install){let h=await ke({projectRoot:s,installV2Skills:t.skills.installV2,installV3Skills:t.skills.installV3,overwrite:r}).install();i=h.installed.length,h.errors.length>0&&e.services.warn(`Skills warnings: ${h.errors.join(", ")}`)}if(!n.noClaude){let g=pt(s,{sourceSkillsDir:ke({projectRoot:s}).getSourceSkillsDir()});I=g.removed,he=g.kept.flatMap(h=>h.files);for(let h of g.removed)e.services.log(` Removed retired asset: ${h}`);for(let h of[...g.installed,...g.refreshed])e.services.log(` Updated skill file: ${h}`);for(let h of g.kept)e.services.warn(`Kept ${h.files.join(", ")}: ${h.why}. ${h.advice}.`);for(let h of g.replacementWarnings)e.services.warn(`Skill file kept: ${h}.`);g.missingReplacements.length>0&&e.services.warn(`Could not install ${g.missingReplacements.join(", ")}; run "aqe init --upgrade" to refresh the skills.`)}if(!n.noClaude){try{let h=await Ze({projectRoot:s,installQEAgents:!0,installSubagents:!0,overwrite:r}).install();d=h.installed.length,h.errors.length>0&&e.services.warn(`Agents warnings: ${h.errors.join(", ")}`)}catch(g){e.services.warn(`Agents install error: ${g instanceof Error?g.message:g}`)}Me(s)}let S;if(n.browserEngine===!0&&!n.minimal)try{let g=re();if(g.status==="ready")S={status:"already-installed",version:g.version,packageSpec:F,platformHint:Re()},e.services.log(` Browser engine: vibium ${S.version} (already installed)`);else switch(e.services.log(" Browser engine: installing vibium via npm (this can take 1\u20133 minutes on first run; downloads Chrome for Testing)\u2026"),S=ht({skip:!1}),S.status){case"installed":e.services.log(` Browser engine: vibium ${S.version} installed`);break;case"skipped":e.services.log(" Browser engine: skipped");break;case"install-failed":e.services.warn(`Browser engine install failed (qe-browser skill will be unavailable until you run \`aqe init --browser-engine\`): ${S.message||"unknown"}`);break;case"npm-unavailable":e.services.warn("Browser engine: npm not on PATH \u2014 install Node.js + npm, then `aqe init --browser-engine` to enable qe-browser");break}S?.platformHint&&e.services.warn(` Browser engine platform hint: ${S.platformHint.message}`)}catch(g){let h=g instanceof Error?g.message:String(g);e.services.warn(`Browser engine install error: ${h}
132
132
  qe-browser fleet skill will be unavailable until you run:
133
133
  npm install -g ${F}
134
- Then re-run \`aqe init --browser-engine\` to verify. The rest of the AQE install will continue.`)}else I={status:"skipped",packageSpec:F,message:n.minimal?"minimal mode":"browser setup not requested; run aqe init --browser-engine"};if(n.withN8n){let h=await Ye({projectRoot:s,installAgents:!0,installSkills:!0,overwrite:r,n8nApiConfig:n.n8nApiConfig}).install();p=h.agentsInstalled.length,l=h.skillsInstalled.length,h.errors.length>0&&e.services.warn(`N8n warnings: ${h.errors.join(", ")}`)}let $e=n.autoMode&&A(_(s,"opencode.json"));if(n.withOpenCode||$e){let{createOpenCodeInstaller:g}=await import("./opencode-installer-PIRBUAB5.js"),a=await g({projectRoot:s,installAgents:!0,installSkills:!0,installTools:!1,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();u=a.agentsInstalled.length,m=a.skillsInstalled.length,a.errors.length>0&&e.services.warn(`OpenCode warnings: ${a.errors.join(", ")}`)}e.services.log(` Skills: ${i}`),e.services.log(` Agents: ${d}`),n.withN8n&&(e.services.log(` N8n agents: ${p}`),e.services.log(` N8n skills: ${l}`)),(n.withOpenCode||$e)&&(e.services.log(` OpenCode agents: ${u}`),e.services.log(` OpenCode skills: ${m}`));let Ct=n.autoMode&&A(_(s,".kiro"));if(n.withKiro||Ct){let{createKiroInstaller:g}=await import("./kiro-installer-HR6ZAH7T.js"),a=await g({projectRoot:s,installAgents:!0,installSkills:!0,installHooks:!0,installSteering:!0,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();y=a.agentsInstalled.length,f=a.skillsInstalled.length,b=a.hooksInstalled.length,a.errors.length>0&&e.services.warn(`Kiro warnings: ${a.errors.join(", ")}`),e.services.log(` Kiro agents: ${y}`),e.services.log(` Kiro skills: ${f}`),e.services.log(` Kiro hooks: ${b}`),e.services.log(` Kiro steering: ${a.steeringInstalled.length}`),a.mcpConfigured&&e.services.log(" Kiro MCP: .kiro/settings/mcp.json")}let E=[];if(n.withCopilot||n.autoMode&&A(_(s,".vscode"))){let{createCopilotInstaller:g}=await import("./copilot-installer-CZUMVHSI.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&E.push("copilot"),a.errors.length>0&&e.services.warn(`Copilot warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Copilot MCP: ${a.configPath}`),a.rulesInstalled&&e.services.log(` Copilot rules: ${a.rulesPath}`)}if(n.withCursor||n.autoMode&&A(_(s,".cursor"))){let{createCursorInstaller:g}=await import("./cursor-installer-YIFEMORH.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&E.push("cursor"),a.errors.length>0&&e.services.warn(`Cursor warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Cursor MCP: ${a.configPath}`),a.rulesInstalled&&e.services.log(` Cursor rules: ${a.rulesPath}`)}if(n.withCline){let{createClineInstaller:g}=await import("./cline-installer-DLJ5QD5N.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&E.push("cline"),a.errors.length>0&&e.services.warn(`Cline warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Cline MCP: ${a.configPath}`),a.modeInstalled&&e.services.log(` Cline mode: ${a.modePath}`)}if(n.withKiloCode||n.autoMode&&A(_(s,".kilocode"))){let{createKiloCodeInstaller:g}=await import("./kilocode-installer-GNNB5FCZ.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&E.push("kilocode"),a.errors.length>0&&e.services.warn(`Kilo Code warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Kilo Code MCP: ${a.configPath}`),a.modeInstalled&&e.services.log(` Kilo Code mode: ${a.modePath}`)}if(n.withRooCode||n.autoMode&&A(_(s,".roo"))){let{createRooCodeInstaller:g}=await import("./roocode-installer-COJ6CX6S.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&E.push("roocode"),a.errors.length>0&&e.services.warn(`Roo Code warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Roo Code MCP: ${a.configPath}`),a.modeInstalled&&e.services.log(` Roo Code mode: ${a.modePath}`)}if(n.withCodex||n.autoMode&&A(_(s,".codex"))){let{createCodexInstaller:g}=await import("./codex-installer-UOWLYCMH.js"),a=await g({projectRoot:s,overwrite:r,installMcp:!n.noMcp,includeRuflo:n.withRuflo,guidancePolicy:n.codexGuidance,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();P={policy:a.guidancePolicy,ownedBytes:a.ownedGuidanceBytes},L={hooks:a.components.hooks,skills:a.components.skills},a.mcpConfigured&&E.push("codex"),a.errors.length>0&&e.services.warn(`Codex warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Codex MCP: ${a.configPath}`),a.agentsMdInstalled&&e.services.log(` Codex AGENTS.md: ${a.agentsMdPath}`),a.hooksConfigured&&e.services.log(` Codex hooks: ${a.hooksPath}`),a.skillsInstalled>0&&e.services.log(` Codex skills: ${a.skillsInstalled} installed`),e.services.log(n.withRuflo?" Codex Ruflo integration: enabled":" Codex Ruflo integration: not installed (opt in with --with-ruflo)")}if(n.withWindsurf||n.autoMode&&A(_(s,".windsurf"))){let{createWindsurfInstaller:g}=await import("./windsurf-installer-BTT53TUL.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&E.push("windsurf"),a.errors.length>0&&e.services.warn(`Windsurf warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Windsurf MCP: ${a.configPath}`),a.rulesInstalled&&e.services.log(` Windsurf rules: ${a.rulesPath}`)}if(n.withContinueDev||n.autoMode&&A(_(s,".continue"))){let{createContinueDevInstaller:g}=await import("./continuedev-installer-6Q5JR4FF.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&E.push("continuedev"),a.errors.length>0&&e.services.warn(`Continue.dev warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Continue.dev MCP: ${a.configPath}`),a.rulesInstalled&&e.services.log(` Continue.dev rules: ${a.rulesPath}`)}return E.length>0&&e.services.log(` Platforms configured: ${E.join(", ")}`),{skillsInstalled:i,agentsInstalled:d,n8nAgents:p,n8nSkills:l,openCodeAgents:u,openCodeSkills:m,kiroAgents:y,kiroSkills:f,kiroHooks:b,platformsConfigured:E,browserEngine:I,codexGuidance:P,codexComponents:L,retiredAssetsRemoved:R,retiredAssetsKept:he}}detectVersionUpgrade(e){let t=e.config.version,s=_(e.projectRoot,".agentic-qe","config.yaml");if(A(s))try{let i=Wt(s,"utf-8").match(/version:\s*"?([^"\n]+)"?/)?.[1];if(i===t)return!1;if(i!==void 0)return!0}catch{}let n=_(e.projectRoot,".claude","agents","v3");try{return A(n)&&Vt(n).some(o=>o.endsWith(".md")&&o.startsWith("qe-"))}catch{return!1}}};import{existsSync as Ht,mkdirSync as Gt}from"fs";import{join as N,dirname as Ut}from"path";import{fileURLToPath as Kt}from"url";var zt=Kt(import.meta.url),Ts=Ut(zt),oe=class extends v{name="workers";description="Configure background workers";order=100;critical=!1;requiresPhases=["configuration"];async shouldRun(e){if(e.options.memoryBackend==="memory")return!1;let t=e.config;return t?.workers?.daemonAutoStart&&(t?.workers?.enabled?.length??0)>0}async run(e){let t=e.config,{projectRoot:s}=e;if(!t.workers.daemonAutoStart||t.workers.enabled.length===0)return{workersDir:"",workersConfigured:0,registryPath:"",daemonStarted:!1,daemonPid:null};let n=N(s,".agentic-qe","workers");Ht(n)||Gt(n,{recursive:!0});let o={"learning-consolidation":18e5,"pattern-consolidator":18e5,"test-health":3e5,"coverage-tracker":6e5,"coverage-gap-scanner":6e5,"flaky-detector":9e5,"flaky-test-detector":9e5,"security-scan":18e5,"quality-gate":3e5,"compliance-checker":18e5,"defect-predictor":9e5,"regression-monitor":6e5,"routing-accuracy-monitor":9e5,"performance-baseline":36e5,"cloud-sync":3e5},r={};for(let y of t.workers.enabled)r[y]={name:y,enabled:!0,interval:t.workers.intervals[y]||o[y]||6e4,lastRun:null,status:"pending"};let i=N(n,"registry.json"),d={version:t.version,maxConcurrent:t.workers.maxConcurrent,workers:r,createdAt:new Date().toISOString(),daemonPid:null};W(i,d,[["createdAt"]]);for(let y of t.workers.enabled){let f=N(n,`${y}.json`),b={name:y,enabled:!0,interval:t.workers.intervals[y]||o[y]||6e4,projectRoot:s,dataDir:N(s,".agentic-qe","data"),createdAt:new Date().toISOString()};W(f,b,[["createdAt"]])}let p=N(n,"start-daemon.cjs");Q(p,`#!/usr/bin/env node
134
+ Then re-run \`aqe init --browser-engine\` to verify. The rest of the AQE install will continue.`)}else S={status:"skipped",packageSpec:F,message:n.minimal?"minimal mode":"browser setup not requested; run aqe init --browser-engine"};if(n.withN8n){let h=await et({projectRoot:s,installAgents:!0,installSkills:!0,overwrite:r,n8nApiConfig:n.n8nApiConfig}).install();p=h.agentsInstalled.length,l=h.skillsInstalled.length,h.errors.length>0&&e.services.warn(`N8n warnings: ${h.errors.join(", ")}`)}let qe=n.autoMode&&A(_(s,"opencode.json"));if(n.withOpenCode||qe){let{createOpenCodeInstaller:g}=await import("./opencode-installer-AMMNWVH5.js"),a=await g({projectRoot:s,installAgents:!0,installSkills:!0,installTools:!1,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();u=a.agentsInstalled.length,m=a.skillsInstalled.length,a.errors.length>0&&e.services.warn(`OpenCode warnings: ${a.errors.join(", ")}`)}e.services.log(` Skills: ${i}`),e.services.log(` Agents: ${d}`),n.withN8n&&(e.services.log(` N8n agents: ${p}`),e.services.log(` N8n skills: ${l}`)),(n.withOpenCode||qe)&&(e.services.log(` OpenCode agents: ${u}`),e.services.log(` OpenCode skills: ${m}`));let St=n.autoMode&&A(_(s,".kiro"));if(n.withKiro||St){let{createKiroInstaller:g}=await import("./kiro-installer-XHJDPVAZ.js"),a=await g({projectRoot:s,installAgents:!0,installSkills:!0,installHooks:!0,installSteering:!0,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();y=a.agentsInstalled.length,f=a.skillsInstalled.length,b=a.hooksInstalled.length,a.errors.length>0&&e.services.warn(`Kiro warnings: ${a.errors.join(", ")}`),e.services.log(` Kiro agents: ${y}`),e.services.log(` Kiro skills: ${f}`),e.services.log(` Kiro hooks: ${b}`),e.services.log(` Kiro steering: ${a.steeringInstalled.length}`),a.mcpConfigured&&e.services.log(" Kiro MCP: .kiro/settings/mcp.json")}let R=[];if(n.withCopilot||n.autoMode&&A(_(s,".vscode"))){let{createCopilotInstaller:g}=await import("./copilot-installer-4UD3DK55.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&R.push("copilot"),a.errors.length>0&&e.services.warn(`Copilot warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Copilot MCP: ${a.configPath}`),a.rulesInstalled&&e.services.log(` Copilot rules: ${a.rulesPath}`)}if(n.withCursor||n.autoMode&&A(_(s,".cursor"))){let{createCursorInstaller:g}=await import("./cursor-installer-AVZEQZ4W.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&R.push("cursor"),a.errors.length>0&&e.services.warn(`Cursor warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Cursor MCP: ${a.configPath}`),a.rulesInstalled&&e.services.log(` Cursor rules: ${a.rulesPath}`)}if(n.withCline){let{createClineInstaller:g}=await import("./cline-installer-Y77BWTAN.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&R.push("cline"),a.errors.length>0&&e.services.warn(`Cline warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Cline MCP: ${a.configPath}`),a.modeInstalled&&e.services.log(` Cline mode: ${a.modePath}`)}if(n.withKiloCode||n.autoMode&&A(_(s,".kilocode"))){let{createKiloCodeInstaller:g}=await import("./kilocode-installer-2YNTFBWJ.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&R.push("kilocode"),a.errors.length>0&&e.services.warn(`Kilo Code warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Kilo Code MCP: ${a.configPath}`),a.modeInstalled&&e.services.log(` Kilo Code mode: ${a.modePath}`)}if(n.withRooCode||n.autoMode&&A(_(s,".roo"))){let{createRooCodeInstaller:g}=await import("./roocode-installer-RBAYRCHX.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&R.push("roocode"),a.errors.length>0&&e.services.warn(`Roo Code warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Roo Code MCP: ${a.configPath}`),a.modeInstalled&&e.services.log(` Roo Code mode: ${a.modePath}`)}if(n.withCodex||n.autoMode&&A(_(s,".codex"))){let{createCodexInstaller:g}=await import("./codex-installer-WMKBYE5Y.js"),a=await g({projectRoot:s,overwrite:r,installMcp:!n.noMcp,includeRuflo:n.withRuflo,guidancePolicy:n.codexGuidance,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();P={policy:a.guidancePolicy,ownedBytes:a.ownedGuidanceBytes},B={hooks:a.components.hooks,skills:a.components.skills},a.mcpConfigured&&R.push("codex"),a.errors.length>0&&e.services.warn(`Codex warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Codex MCP: ${a.configPath}`),a.agentsMdInstalled&&e.services.log(` Codex AGENTS.md: ${a.agentsMdPath}`),a.hooksConfigured&&e.services.log(` Codex hooks: ${a.hooksPath}`),a.skillsInstalled>0&&e.services.log(` Codex skills: ${a.skillsInstalled} installed`),e.services.log(n.withRuflo?" Codex Ruflo integration: enabled":" Codex Ruflo integration: not installed (opt in with --with-ruflo)")}if(n.withWindsurf||n.autoMode&&A(_(s,".windsurf"))){let{createWindsurfInstaller:g}=await import("./windsurf-installer-U6XWFRVT.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&R.push("windsurf"),a.errors.length>0&&e.services.warn(`Windsurf warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Windsurf MCP: ${a.configPath}`),a.rulesInstalled&&e.services.log(` Windsurf rules: ${a.rulesPath}`)}if(n.withContinueDev||n.autoMode&&A(_(s,".continue"))){let{createContinueDevInstaller:g}=await import("./continuedev-installer-26AYFS2E.js"),a=await g({projectRoot:s,overwrite:r,memoryBackend:n.memoryBackend==="memory"?"memory":void 0}).install();a.mcpConfigured&&R.push("continuedev"),a.errors.length>0&&e.services.warn(`Continue.dev warnings: ${a.errors.join(", ")}`),a.mcpConfigured&&e.services.log(` Continue.dev MCP: ${a.configPath}`),a.rulesInstalled&&e.services.log(` Continue.dev rules: ${a.rulesPath}`)}return R.length>0&&e.services.log(` Platforms configured: ${R.join(", ")}`),{skillsInstalled:i,agentsInstalled:d,n8nAgents:p,n8nSkills:l,openCodeAgents:u,openCodeSkills:m,kiroAgents:y,kiroSkills:f,kiroHooks:b,platformsConfigured:R,browserEngine:S,codexGuidance:P,codexComponents:B,retiredAssetsRemoved:I,retiredAssetsKept:he}}detectVersionUpgrade(e){let t=e.config.version,s=_(e.projectRoot,".agentic-qe","config.yaml");if(A(s))try{let i=Ut(s,"utf-8").match(/version:\s*"?([^"\n]+)"?/)?.[1];if(i===t)return!1;if(i!==void 0)return!0}catch{}let n=_(e.projectRoot,".claude","agents","v3");try{return A(n)&&Kt(n).some(o=>o.endsWith(".md")&&o.startsWith("qe-"))}catch{return!1}}};import{existsSync as zt,mkdirSync as Jt}from"fs";import{join as N,dirname as Yt}from"path";import{fileURLToPath as Xt}from"url";var Zt=Xt(import.meta.url),Bs=Yt(Zt),ie=class extends v{name="workers";description="Configure background workers";order=100;critical=!1;requiresPhases=["configuration"];async shouldRun(e){if(e.options.memoryBackend==="memory")return!1;let t=e.config;return t?.workers?.daemonAutoStart&&(t?.workers?.enabled?.length??0)>0}async run(e){let t=e.config,{projectRoot:s}=e;if(!t.workers.daemonAutoStart||t.workers.enabled.length===0)return{workersDir:"",workersConfigured:0,registryPath:"",daemonStarted:!1,daemonPid:null};let n=N(s,".agentic-qe","workers");zt(n)||Jt(n,{recursive:!0});let o={"learning-consolidation":18e5,"pattern-consolidator":18e5,"test-health":3e5,"coverage-tracker":6e5,"coverage-gap-scanner":6e5,"flaky-detector":9e5,"flaky-test-detector":9e5,"security-scan":18e5,"quality-gate":3e5,"compliance-checker":18e5,"defect-predictor":9e5,"regression-monitor":6e5,"routing-accuracy-monitor":9e5,"performance-baseline":36e5,"cloud-sync":3e5},r={};for(let y of t.workers.enabled)r[y]={name:y,enabled:!0,interval:t.workers.intervals[y]||o[y]||6e4,lastRun:null,status:"pending"};let i=N(n,"registry.json"),d={version:t.version,maxConcurrent:t.workers.maxConcurrent,workers:r,createdAt:new Date().toISOString(),daemonPid:null};V(i,d,[["createdAt"]]);for(let y of t.workers.enabled){let f=N(n,`${y}.json`),b={name:y,enabled:!0,interval:t.workers.intervals[y]||o[y]||6e4,projectRoot:s,dataDir:N(s,".agentic-qe","data"),createdAt:new Date().toISOString()};V(f,b,[["createdAt"]])}let p=N(n,"start-daemon.cjs");W(p,`#!/usr/bin/env node
135
135
  // AQE v3 Worker Daemon Startup Script (cross-platform)
136
136
  // Generated by aqe init
137
137
  // Starts the MCP server with background workers enabled
@@ -177,6 +177,29 @@ if (existsSync(pidFile) && isRegularOrAbsent(pidFile)) {
177
177
  try { process.kill(pid, 0); console.log('Daemon already running (PID: ' + pid + ')'); process.exit(0); } catch {}
178
178
  }
179
179
 
180
+ // #1116: honour AQE_WORKERS_ENABLED, from the environment or else the project's
181
+ // .claude/settings.local.json or settings.json env (where \`aqe init
182
+ // --no-database\` writes it; the local file wins, as in Claude Code), the same
183
+ // falsy values as the MCP server. A JSON boolean counts as its string.
184
+ // Disabled means nothing is spawned.
185
+ function workersEnabledSetting() {
186
+ if (process.env.AQE_WORKERS_ENABLED !== undefined) return process.env.AQE_WORKERS_ENABLED;
187
+ for (const file of ['settings.local.json', 'settings.json']) {
188
+ try {
189
+ const settings = JSON.parse(readFileSync(join(projectRoot, '.claude', file), 'utf-8'));
190
+ const value = settings && settings.env && settings.env.AQE_WORKERS_ENABLED;
191
+ if (typeof value === 'string') return value;
192
+ if (typeof value === 'boolean') return String(value);
193
+ } catch { /* missing or unreadable: try the next file */ }
194
+ }
195
+ return undefined;
196
+ }
197
+ const workersSetting = workersEnabledSetting();
198
+ if (workersSetting !== undefined && ['false', '0', 'off', 'no'].includes(workersSetting.trim().toLowerCase())) {
199
+ console.log('AQE v3 Worker Daemon not started: background workers are disabled (AQE_WORKERS_ENABLED=' + workersSetting + ')');
200
+ process.exit(0);
201
+ }
202
+
180
203
  const ts = new Date().toISOString();
181
204
  appendFileSync(logFile, '[' + ts + '] Starting AQE v3 Worker Daemon...\\n');
182
205
 
@@ -232,18 +255,39 @@ if (binCandidate && binCandidate.endsWith('bundle.js')) {
232
255
  appendFileSync(logFile, '[' + ts + '] Using: ' + mcpCmd + ' ' + mcpArgs.join(' ') + '\\n');
233
256
 
234
257
  // #1066: keep a user's AQE_WORKERS_ENABLED (for example false) instead of forcing it on.
235
- const env = { ...process.env, AQE_STORAGE_PATH: '.agentic-qe', AQE_LEARNING_ENABLED: 'true', AQE_WORKERS_ENABLED: process.env.AQE_WORKERS_ENABLED ?? 'true', AQE_HTTP_PORT: '0' };
258
+ const env = { ...process.env, AQE_STORAGE_PATH: '.agentic-qe', AQE_LEARNING_ENABLED: 'true', AQE_WORKERS_ENABLED: workersSetting ?? 'true', AQE_HTTP_PORT: '0' };
236
259
  const child = spawn(mcpCmd, mcpArgs, { cwd: projectRoot, env, detached: true, stdio: ['ignore', 'pipe', 'pipe'] });
237
260
  child.stdout.on('data', d => appendFileSync(logFile, d));
238
261
  child.stderr.on('data', d => appendFileSync(logFile, d));
262
+ let exited = null;
263
+ child.on('exit', (code, signal) => { exited = { code, signal }; });
264
+ // #1116: a command that cannot be started (no npx on PATH: spawn ENOENT) emits
265
+ // 'error' instead of 'exit'; without a handler the script crashed and left
266
+ // "undefined" in daemon.pid.
267
+ child.on('error', (error) => {
268
+ try { fs.unlinkSync(pidFile); } catch {}
269
+ appendFileSync(logFile, '[' + ts + '] Daemon could not be started: ' + error.message + '\\n');
270
+ console.error('AQE v3 Worker Daemon not started: ' + error.message + '; see ' + logFile);
271
+ process.exit(1);
272
+ });
239
273
  child.unref();
240
274
 
241
- writeFileSync(pidFile, String(child.pid));
242
- appendFileSync(logFile, '[' + ts + '] Daemon started with PID: ' + child.pid + '\\n');
243
- console.log('AQE v3 Worker Daemon started (PID: ' + child.pid + ')');
244
- console.log('Log file: ' + logFile);
245
- console.log('To stop: node ' + join(workersDir, 'stop-daemon.cjs'));
246
- `);let u=N(n,"stop-daemon.cjs");return Q(u,`#!/usr/bin/env node
275
+ if (child.pid !== undefined) writeFileSync(pidFile, String(child.pid));
276
+ // #1116: say "started" only if the server is still running a moment later.
277
+ setTimeout(() => {
278
+ if (exited) {
279
+ try { fs.unlinkSync(pidFile); } catch {}
280
+ appendFileSync(logFile, '[' + ts + '] Daemon exited right away (code ' + exited.code + ', signal ' + exited.signal + ')\\n');
281
+ console.error('AQE v3 Worker Daemon not started: the MCP server exited right away (code ' + exited.code + '); see ' + logFile);
282
+ process.exitCode = 1;
283
+ return;
284
+ }
285
+ appendFileSync(logFile, '[' + ts + '] Daemon started with PID: ' + child.pid + '\\n');
286
+ console.log('AQE v3 Worker Daemon started (PID: ' + child.pid + ')');
287
+ console.log('Log file: ' + logFile);
288
+ console.log('To stop: node ' + join(workersDir, 'stop-daemon.cjs'));
289
+ }, 3000);
290
+ `);let u=N(n,"stop-daemon.cjs");return W(u,`#!/usr/bin/env node
247
291
  // AQE v3 Worker Daemon Stop Script (cross-platform)
248
292
  // Generated by aqe init
249
293
 
@@ -266,7 +310,7 @@ try {
266
310
  console.log('Daemon not running (stale PID file)');
267
311
  try { unlinkSync(pidFile); } catch {}
268
312
  }
269
- `),e.services.log(` Workers dir: ${n}`),e.services.log(` Workers: ${t.workers.enabled.join(", ")}`),e.services.log(` Registry: ${i}`),{workersDir:n,workersConfigured:t.workers.enabled.length,registryPath:i,daemonStarted:!1,daemonPid:null}}};import{existsSync as Jt,readFileSync as Yt,writeFileSync as _e}from"fs";import{join as gt}from"path";var ie=class extends v{name="claude-md";description="Generate CLAUDE.md";order=110;critical=!1;requiresPhases=["configuration"];async shouldRun(e){return e.options.noClaude?(e.services.log(" CLAUDE.md skipped (--no-claude)"),!1):!0}async run(e){let t=e.config,{projectRoot:s}=e,n=gt(s,"CLAUDE.md"),o=this.generateContent(t),r=!1;if(Jt(n)){let i=Yt(n,"utf-8");if(i.includes("## Agentic QE v3"))return e.services.log(" CLAUDE.md already has AQE section"),{generated:!1,path:n,backupCreated:!1};let d=gt(s,"CLAUDE.md.backup");_e(d,i,"utf-8"),r=!0,_e(n,i+`
313
+ `),e.services.log(` Workers dir: ${n}`),e.services.log(` Workers: ${t.workers.enabled.join(", ")}`),e.services.log(` Registry: ${i}`),{workersDir:n,workersConfigured:t.workers.enabled.length,registryPath:i,daemonStarted:!1,daemonPid:null}}};import{existsSync as en,readFileSync as tn,writeFileSync as _e}from"fs";import{join as yt}from"path";var ae=class extends v{name="claude-md";description="Generate CLAUDE.md";order=110;critical=!1;requiresPhases=["configuration"];async shouldRun(e){return e.options.noClaude?(e.services.log(" CLAUDE.md skipped (--no-claude)"),!1):!0}async run(e){let t=e.config,{projectRoot:s}=e,n=yt(s,"CLAUDE.md"),o=this.generateContent(t),r=!1;if(en(n)){let i=tn(n,"utf-8");if(i.includes("## Agentic QE v3"))return e.services.log(" CLAUDE.md already has AQE section"),{generated:!1,path:n,backupCreated:!1};let d=yt(s,"CLAUDE.md.backup");_e(d,i,"utf-8"),r=!0,_e(n,i+`
270
314
 
271
315
  `+o,"utf-8")}else _e(n,o,"utf-8");return e.services.log(` Path: ${n}`),r&&e.services.log(" Backup created"),{generated:!0,path:n,backupCreated:r}}generateContent(e){let t=e.domains.enabled.slice(0,6).join(", "),s=Math.max(0,e.domains.enabled.length-6);return`## Agentic QE v3
272
316
 
@@ -430,7 +474,7 @@ Task({ prompt: "Security audit", subagent_type: "qe-security-scanner", run_in_ba
430
474
 
431
475
  ---
432
476
  *Generated by AQE v3 init - ${new Date().toISOString()}*
433
- `}};import{existsSync as q,readFileSync as Xt}from"fs";import{join as B,dirname as Zt}from"path";import{mkdirSync as ft}from"fs";ye();var en=/^# \d{4}-\d{2}-\d{2}T[\d:.]+Z$/,ae=class extends v{name="verification";description="Verify installation";order=120;critical=!0;requiresPhases=["database","configuration"];async run(e){let t=e.config,{projectRoot:s}=e,n=[],o=e.options.memoryBackend==="memory",r=B(s,".agentic-qe","memory.db");n.push({name:o?"Database (in-memory mode)":"Database exists",passed:o||q(r)}),n.push({name:".agentic-qe directory",passed:q(B(s,".agentic-qe"))});let i=B(s,".agentic-qe","config.yaml");await this.saveConfig(t,s),n.push({name:"Config saved",passed:q(i)});let d=o?!0:await this.writeVersionToDb(t.version,s);n.push({name:"Version marker",passed:d});let p=["Database exists",".agentic-qe directory","Config saved"],l=n.filter(u=>p.includes(u.name)).every(u=>u.passed);e.services.log(" Verification checks:");for(let u of n){let m=p.includes(u.name),y=u.passed?"\u2713":m?"\u2717":"\u26A0",f=!m&&!u.passed?" (optional)":"";e.services.log(` ${y} ${u.name}${f}`)}return{verified:l,versionWritten:d,configSaved:q(i),checks:n}}async writeVersionToDb(e,t){let s=B(t,".agentic-qe","memory.db");try{let n=Zt(s);q(n)||ft(n,{recursive:!0});let o=D(s);try{o.exec(`
477
+ `}};import{existsSync as q,readFileSync as nn}from"fs";import{join as L,dirname as sn}from"path";import{mkdirSync as vt}from"fs";ye();var rn=/^# \d{4}-\d{2}-\d{2}T[\d:.]+Z$/,xe=new Set(["__proto__","constructor","prototype"]),le=class extends v{name="verification";description="Verify installation";order=120;critical=!0;requiresPhases=["database","configuration"];async run(e){let t=e.config,{projectRoot:s}=e,n=[],o=e.options.memoryBackend==="memory",r=L(s,".agentic-qe","memory.db");n.push({name:o?"Database (in-memory mode)":"Database exists",passed:o||q(r)}),n.push({name:".agentic-qe directory",passed:q(L(s,".agentic-qe"))});let i=L(s,".agentic-qe","config.yaml");await this.saveConfig(t,s),n.push({name:"Config saved",passed:q(i)});let d=o?!0:await this.writeVersionToDb(t.version,s);n.push({name:"Version marker",passed:d});let p=["Database exists",".agentic-qe directory","Config saved"],l=n.filter(u=>p.includes(u.name)).every(u=>u.passed);e.services.log(" Verification checks:");for(let u of n){let m=p.includes(u.name),y=u.passed?"\u2713":m?"\u2717":"\u26A0",f=!m&&!u.passed?" (optional)":"";e.services.log(` ${y} ${u.name}${f}`)}return{verified:l,versionWritten:d,configSaved:q(i),checks:n}}async writeVersionToDb(e,t){let s=L(t,".agentic-qe","memory.db");try{let n=sn(s);q(n)||vt(n,{recursive:!0});let o=D(s);try{o.exec(`
434
478
  CREATE TABLE IF NOT EXISTS kv_store (
435
479
  key TEXT NOT NULL,
436
480
  namespace TEXT NOT NULL,
@@ -445,9 +489,9 @@ Task({ prompt: "Security audit", subagent_type: "qe-security-scanner", run_in_ba
445
489
  `).run("aqe_version",JSON.stringify(e),r),o.prepare(`
446
490
  INSERT OR REPLACE INTO kv_store (key, namespace, value, created_at)
447
491
  VALUES (?, '_system', ?, ?)
448
- `).run("init_timestamp",JSON.stringify(new Date().toISOString()),r),o.close(),!0}catch{return o.close(),!1}}catch{return!1}}async saveConfig(e,t){let s=B(t,".agentic-qe");q(s)||ft(s,{recursive:!0});let n=B(s,"config.yaml");if(q(n)){let r=this.loadExistingConfig(n);r&&(e=this.mergeConfigs(e,r))}let o=this.configToYAML(e);Me(n,o,en)}loadExistingConfig(e){try{let t=Xt(e,"utf-8");return this.parseYAML(t)}catch{return null}}parseYAML(e){try{let t={},s=e.split(`
449
- `),n="",o="";for(let i of s){if(i.trim().startsWith("#")||i.trim()==="")continue;let d=i.match(/^(\w+):\s*(.*)$/);if(d){n=d[1],o="";let m=d[2].trim();m&&!m.startsWith('"')?t[n]=this.parseValue(m):m?t[n]=this.parseValue(m):t[n]={};continue}let p=i.match(/^ {2}(\w+):\s*(.*)$/);if(p&&n){o=p[1];let m=p[2].trim();t[n]||(t[n]={}),m?t[n][o]=this.parseValue(m):t[n][o]={};continue}let l=i.match(/^ {4}([\w-]+):\s*(.*)$/);if(l&&n&&o){let m=l[1],y=l[2].trim(),f=t[n];f[o]||(f[o]={}),typeof f[o]=="object"&&!Array.isArray(f[o])&&(f[o][m]=this.parseValue(y));continue}let u=i.match(/^ {4}- "?([^"]*)"?$/);if(u&&n&&o){let m=t[n];Array.isArray(m[o])||(m[o]=[]),m[o].push(u[1])}}let r=[["domains","enabled"],["domains","disabled"],["workers","enabled"]];for(let[i,d]of r){let p=t[i];p&&d in p&&!Array.isArray(p[d])&&(p[d]=[])}return t}catch{return null}}parseValue(e){return e==="true"?!0:e==="false"?!1:/^\d+$/.test(e)?parseInt(e,10):/^\d+\.\d+$/.test(e)?parseFloat(e):e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}mergeConfigs(e,t){if(t.domains?.enabled&&Array.isArray(t.domains.enabled)){let s=new Set(t.domains.enabled),n=new Set(e.domains.enabled);for(let r of n)s.add(r);let o=new Set(Array.isArray(t.domains?.disabled)?t.domains.disabled:[]);e.domains.enabled=Array.from(s).filter(r=>!o.has(r))}return t.domains?.disabled&&Array.isArray(t.domains.disabled)&&(e.domains.disabled=t.domains.disabled),t.learning?.enabled!==void 0&&(e.learning.enabled=t.learning.enabled),t.learning?.qualityThreshold!==void 0&&(e.learning.qualityThreshold=t.learning.qualityThreshold),t.learning?.promotionThreshold!==void 0&&(e.learning.promotionThreshold=t.learning.promotionThreshold),t.hooks?.claudeCode!==void 0&&(e.hooks.claudeCode=t.hooks.claudeCode),t.hooks?.preCommit!==void 0&&(e.hooks.preCommit=t.hooks.preCommit),t.hooks?.ciIntegration!==void 0&&(e.hooks.ciIntegration=t.hooks.ciIntegration),t.workers?.enabled&&Array.isArray(t.workers.enabled)&&(e.workers.enabled=t.workers.enabled),t.workers?.daemonAutoStart!==void 0&&(e.workers.daemonAutoStart=t.workers.daemonAutoStart),t.agents?.maxConcurrent!==void 0&&(e.agents.maxConcurrent=t.agents.maxConcurrent),t.agents?.defaultTimeout!==void 0&&(e.agents.defaultTimeout=t.agents.defaultTimeout),e}configToYAML(e){return["# Agentic QE v3 Configuration","# Generated by aqe init",`# ${new Date().toISOString()}`,"#",'# NOTE: Your customizations are PRESERVED when you run "aqe init" again.','# You do NOT need to re-run "aqe init" after editing this file - changes',"# take effect immediately. The following settings are merged on reinstall:","# - domains.enabled (custom domains like visual-accessibility)","# - domains.disabled","# - learning.enabled, qualityThreshold, and promotionThreshold","# - hooks.* preferences","# - workers.enabled","# - agents.maxConcurrent and defaultTimeout","",`version: "${e.version}"`,"","project:",` name: "${e.project.name}"`,` root: "${e.project.root}"`,` type: "${e.project.type}"`,"","learning:",` enabled: ${e.learning.enabled}`,` embeddingModel: "${e.learning.embeddingModel}"`," hnswConfig:",` M: ${e.learning.hnswConfig.M}`,` efConstruction: ${e.learning.hnswConfig.efConstruction}`,` efSearch: ${e.learning.hnswConfig.efSearch}`,` qualityThreshold: ${e.learning.qualityThreshold}`,` promotionThreshold: ${e.learning.promotionThreshold}`,` pretrainedPatterns: ${e.learning.pretrainedPatterns}`,"","routing:",` mode: "${e.routing.mode}"`,` confidenceThreshold: ${e.routing.confidenceThreshold}`,` feedbackEnabled: ${e.routing.feedbackEnabled}`,"","# ADR-092: Advisor Strategy \u2014 agents consult a stronger model for strategic guidance","# Set provider/model to override auto-detection from environment API keys","advisor:",' # provider: "openrouter" # openrouter | claude | ollama (auto-detected if not set)',' # model: "anthropic/claude-opus-5.5" # provider-specific model ID',' # maxUses: "3" # per-task advisor call cap',' redact: "strict" # strict | balanced | off',"","workers:"," enabled:",...e.workers.enabled.map(s=>` - "${s}"`)," intervals:",...Object.entries(e.workers.intervals).map(([s,n])=>` ${s}: ${n}`),` maxConcurrent: ${e.workers.maxConcurrent}`,` daemonAutoStart: ${e.workers.daemonAutoStart}`,"","hooks:",` claudeCode: ${e.hooks.claudeCode}`,` preCommit: ${e.hooks.preCommit}`,` ciIntegration: ${e.hooks.ciIntegration}`,"","skills:",` install: ${e.skills.install}`,` installV2: ${e.skills.installV2}`,` installV3: ${e.skills.installV3}`,` overwrite: ${e.skills.overwrite}`,"","domains:"," enabled:",...e.domains.enabled.map(s=>` - "${s}"`)," disabled:",...e.domains.disabled.map(s=>` - "${s}"`),"","agents:",` maxConcurrent: ${e.agents.maxConcurrent}`,` defaultTimeout: ${e.agents.defaultTimeout}`,""].join(`
450
- `)}};ce();import{existsSync as j,mkdirSync as ht,readdirSync as yt,copyFileSync as vt}from"fs";import{join as C,dirname as tn}from"path";import{fileURLToPath as nn}from"url";var sn=nn(import.meta.url),kt=tn(sn);function rn(){let c=[C(kt,"../../assets/governance"),C(kt,"../assets/governance")],e=ze(import.meta.url);e&&(c.push(C(e,"assets/governance")),c.push(C(e,"dist/assets/governance"))),c.push(C(process.cwd(),"node_modules/agentic-qe/assets/governance")),c.push(C(process.cwd(),"assets/governance"));for(let t of c)if(j(t))return t;throw new Error(`Governance assets not found. Package may be corrupted. Searched: ${c.join(", ")}`)}var xe=class{projectRoot;overwrite;skipShards;assetsPath;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.skipShards=e.skipShards??!1,this.assetsPath=rn()}async install(){let e=[],t=[],s=[],n=C(this.projectRoot,".claude","guidance"),o=C(n,"shards");try{ht(n,{recursive:!0}),this.skipShards||ht(o,{recursive:!0})}catch(l){return s.push(`Failed to create governance directory: ${S(l)}`),{installed:e,skipped:t,errors:s,governanceDir:n,constitutionInstalled:!1,shardsInstalled:0}}let r=!1,i=C(this.assetsPath,"constitution.md"),d=C(n,"constitution.md");if(j(i))try{!j(d)||this.overwrite?(vt(i,d),e.push("constitution.md"),r=!0):t.push("constitution.md")}catch(l){s.push(`Failed to install constitution.md: ${S(l)}`)}else s.push("constitution.md not found in assets");let p=0;if(!this.skipShards){let l=C(this.assetsPath,"shards");if(j(l))try{let u=yt(l).filter(m=>m.endsWith(".shard.md"));for(let m of u){let y=C(l,m),f=C(o,m);try{!j(f)||this.overwrite?(vt(y,f),e.push(`shards/${m}`),p++):t.push(`shards/${m}`)}catch(b){s.push(`Failed to install ${m}: ${S(b)}`)}}}catch(u){s.push(`Failed to read shards directory: ${S(u)}`)}else s.push("Shards directory not found in assets")}return{installed:e,skipped:t,errors:s,governanceDir:n,constitutionInstalled:r,shardsInstalled:p}}isInstalled(){let e=C(this.projectRoot,".claude","guidance","constitution.md");return j(e)}getInstalledShards(){let e=C(this.projectRoot,".claude","guidance","shards");if(!j(e))return[];try{return yt(e).filter(t=>t.endsWith(".shard.md"))}catch{return[]}}};function bt(c){return new xe(c)}var le=class extends v{name="governance";description="Install governance configuration";order=95;critical=!1;requiresPhases=["configuration"];async shouldRun(e){return e.options.noClaude?(e.services.log(" Governance skipped (--no-claude)"),!1):e.options.noGovernance?(e.services.log(" Governance skipped (--no-governance flag)"),!1):e.options.minimal?(e.services.log(" Governance skipped (minimal mode)"),!1):!0}async run(e){let{projectRoot:t,options:s}=e,n=s.upgrade,o=bt({projectRoot:t,overwrite:n});if(o.isInstalled()&&!n){let i=o.getInstalledShards();return e.services.log(` Governance already installed (${i.length} shards)`),e.services.log(" Use --upgrade to overwrite existing files"),{filesInstalled:0,filesSkipped:1+i.length,constitutionInstalled:!1,shardsInstalled:0,governanceDir:`${t}/.claude/guidance`,skippedByFlag:!1}}let r=await o.install();if(r.errors.length>0)for(let i of r.errors)e.services.warn(` ${i}`);return e.services.log(` Constitution: ${r.constitutionInstalled?"installed":"skipped"}`),e.services.log(` Shards: ${r.shardsInstalled} installed, ${r.skipped.filter(i=>i.startsWith("shards/")).length} skipped`),r.installed.length>0&&(e.services.log(" Governance enabled (non-strict mode by default)"),e.services.log(" Set GOVERNANCE_STRICT_MODE=true for strict enforcement")),{filesInstalled:r.installed.length,filesSkipped:r.skipped.length,constitutionInstalled:r.constitutionInstalled,shardsInstalled:r.shardsInstalled,governanceDir:r.governanceDir,skippedByFlag:!1}}};var on=new V,an=new H,ln=new G,cn=new z,dn=new J,un=new Y,pn=new Z,mn=new ee,gn=new re,fn=new oe,hn=new ie,yn=new ae,vn=new le;function wt(){return[on,an,ln,cn,dn,un,pn,mn,gn,vn,fn,hn,yn]}var De=class{phases;context;constructor(e){this.context=this.createContext(e),this.phases=e.customPhases??wt()}createContext(e){let t=e.withAllPlatforms;return{projectRoot:e.projectRoot,options:{autoMode:e.autoMode,upgrade:e.upgrade,skipPatterns:e.skipPatterns,skipCodeIndex:e.skipCodeIndex,minimal:e.minimal,browserEngine:e.browserEngine,withN8n:e.withN8n,withOpenCode:e.withOpenCode,withKiro:e.withKiro,withCopilot:e.withCopilot||t,withCursor:e.withCursor||t,withCline:e.withCline||t,withKiloCode:e.withKiloCode||t,withRooCode:e.withRooCode||t,withCodex:e.withCodex||t,withRuflo:e.withRuflo,codexGuidance:e.codexGuidance,withWindsurf:e.withWindsurf||t,withContinueDev:e.withContinueDev||t,withAllPlatforms:e.withAllPlatforms,n8nApiConfig:e.n8nApiConfig,wizardAnswers:e.wizardAnswers,noGovernance:e.noGovernance,noMcp:e.noMcp,withMcp:e.withMcp,noClaude:e.noClaude,noStatusLine:e.noStatusLine,memoryBackend:e.memoryBackend},config:{},enhancements:{claudeFlow:!1,ruvector:!1},results:new Map,services:{log:s=>console.log(s),warn:s=>console.warn(s),error:s=>console.error(s)}}}async initialize(){let e=Date.now(),t=[];try{let s=[...this.phases].sort((n,o)=>n.order-o.order);for(let n of s){if(!await n.shouldRun(this.context))continue;console.log(`
492
+ `).run("init_timestamp",JSON.stringify(new Date().toISOString()),r),o.close(),!0}catch{return o.close(),!1}}catch{return!1}}async saveConfig(e,t){let s=L(t,".agentic-qe");q(s)||vt(s,{recursive:!0});let n=L(s,"config.yaml");if(q(n)){let r=this.loadExistingConfig(n);r&&(e=this.mergeConfigs(e,r))}let o=this.configToYAML(e);Le(n,o,rn)}loadExistingConfig(e){try{let t=nn(e,"utf-8");return this.parseYAML(t)}catch{return null}}parseYAML(e){try{let t={},s=e.split(`
493
+ `),n="",o="";for(let i of s){if(i.trim().startsWith("#")||i.trim()==="")continue;let d=i.match(/^(\w+):\s*(.*)$/);if(d){if(n=xe.has(d[1])?"":d[1],o="",!n)continue;let m=d[2].trim();m&&!m.startsWith('"')?t[n]=this.parseValue(m):m?t[n]=this.parseValue(m):t[n]={};continue}let p=i.match(/^ {2}(\w+):\s*(.*)$/);if(p&&n){if(o=xe.has(p[1])?"":p[1],!o)continue;let m=p[2].trim();(!Object.hasOwn(t,n)||!t[n])&&(t[n]={}),m?t[n][o]=this.parseValue(m):t[n][o]={};continue}let l=i.match(/^ {4}([\w-]+):\s*(.*)$/);if(l&&n&&o){let m=l[1],y=l[2].trim();if(xe.has(m))continue;let f=t[n];(!Object.hasOwn(f,o)||!f[o])&&(f[o]={}),typeof f[o]=="object"&&!Array.isArray(f[o])&&(f[o][m]=this.parseValue(y));continue}let u=i.match(/^ {4}- "?([^"]*)"?$/);if(u&&n&&o){let m=t[n];Array.isArray(m[o])||(m[o]=[]),m[o].push(u[1])}}let r=[["domains","enabled"],["domains","disabled"],["workers","enabled"]];for(let[i,d]of r){let p=t[i];p&&d in p&&!Array.isArray(p[d])&&(p[d]=[])}return t}catch{return null}}parseValue(e){return e==="true"?!0:e==="false"?!1:/^\d+$/.test(e)?parseInt(e,10):/^\d+\.\d+$/.test(e)?parseFloat(e):e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}mergeConfigs(e,t){if(t.domains?.enabled&&Array.isArray(t.domains.enabled)){let s=new Set(t.domains.enabled),n=new Set(e.domains.enabled);for(let r of n)s.add(r);let o=new Set(Array.isArray(t.domains?.disabled)?t.domains.disabled:[]);e.domains.enabled=Array.from(s).filter(r=>!o.has(r))}return t.domains?.disabled&&Array.isArray(t.domains.disabled)&&(e.domains.disabled=t.domains.disabled),t.learning?.enabled!==void 0&&(e.learning.enabled=t.learning.enabled),t.learning?.qualityThreshold!==void 0&&(e.learning.qualityThreshold=t.learning.qualityThreshold),t.learning?.promotionThreshold!==void 0&&(e.learning.promotionThreshold=t.learning.promotionThreshold),t.hooks?.claudeCode!==void 0&&(e.hooks.claudeCode=t.hooks.claudeCode),t.hooks?.preCommit!==void 0&&(e.hooks.preCommit=t.hooks.preCommit),t.hooks?.ciIntegration!==void 0&&(e.hooks.ciIntegration=t.hooks.ciIntegration),t.workers?.enabled&&Array.isArray(t.workers.enabled)&&(e.workers.enabled=t.workers.enabled),t.workers?.daemonAutoStart!==void 0&&(e.workers.daemonAutoStart=t.workers.daemonAutoStart),t.agents?.maxConcurrent!==void 0&&(e.agents.maxConcurrent=t.agents.maxConcurrent),t.agents?.defaultTimeout!==void 0&&(e.agents.defaultTimeout=t.agents.defaultTimeout),e}configToYAML(e){return["# Agentic QE v3 Configuration","# Generated by aqe init",`# ${new Date().toISOString()}`,"#",'# NOTE: Your customizations are PRESERVED when you run "aqe init" again.','# You do NOT need to re-run "aqe init" after editing this file - changes',"# take effect immediately. The following settings are merged on reinstall:","# - domains.enabled (custom domains like visual-accessibility)","# - domains.disabled","# - learning.enabled, qualityThreshold, and promotionThreshold","# - hooks.* preferences","# - workers.enabled","# - agents.maxConcurrent and defaultTimeout","",`version: "${e.version}"`,"","project:",` name: "${e.project.name}"`,` root: "${e.project.root}"`,` type: "${e.project.type}"`,"","learning:",` enabled: ${e.learning.enabled}`,` embeddingModel: "${e.learning.embeddingModel}"`," hnswConfig:",` M: ${e.learning.hnswConfig.M}`,` efConstruction: ${e.learning.hnswConfig.efConstruction}`,` efSearch: ${e.learning.hnswConfig.efSearch}`,` qualityThreshold: ${e.learning.qualityThreshold}`,` promotionThreshold: ${e.learning.promotionThreshold}`,` pretrainedPatterns: ${e.learning.pretrainedPatterns}`,"","routing:",` mode: "${e.routing.mode}"`,` confidenceThreshold: ${e.routing.confidenceThreshold}`,` feedbackEnabled: ${e.routing.feedbackEnabled}`,"","# ADR-092: Advisor Strategy \u2014 agents consult a stronger model for strategic guidance","# Set provider/model to override auto-detection from environment API keys","advisor:",' # provider: "openrouter" # openrouter | claude | ollama (auto-detected if not set)',' # model: "anthropic/claude-opus-5.5" # provider-specific model ID',' # maxUses: "3" # per-task advisor call cap',' redact: "strict" # strict | balanced | off',"","workers:"," enabled:",...e.workers.enabled.map(s=>` - "${s}"`)," intervals:",...Object.entries(e.workers.intervals).map(([s,n])=>` ${s}: ${n}`),` maxConcurrent: ${e.workers.maxConcurrent}`,` daemonAutoStart: ${e.workers.daemonAutoStart}`,"","hooks:",` claudeCode: ${e.hooks.claudeCode}`,` preCommit: ${e.hooks.preCommit}`,` ciIntegration: ${e.hooks.ciIntegration}`,"","skills:",` install: ${e.skills.install}`,` installV2: ${e.skills.installV2}`,` installV3: ${e.skills.installV3}`,` overwrite: ${e.skills.overwrite}`,"","domains:"," enabled:",...e.domains.enabled.map(s=>` - "${s}"`)," disabled:",...e.domains.disabled.map(s=>` - "${s}"`),"","agents:",` maxConcurrent: ${e.agents.maxConcurrent}`,` defaultTimeout: ${e.agents.defaultTimeout}`,""].join(`
494
+ `)}};Q();import{existsSync as j,mkdirSync as kt,readdirSync as bt,copyFileSync as wt}from"fs";import{join as C,dirname as on}from"path";import{fileURLToPath as an}from"url";var ln=an(import.meta.url),Ct=on(ln);function cn(){let c=[C(Ct,"../../assets/governance"),C(Ct,"../assets/governance")],e=Xe(import.meta.url);e&&(c.push(C(e,"assets/governance")),c.push(C(e,"dist/assets/governance"))),c.push(C(process.cwd(),"node_modules/agentic-qe/assets/governance")),c.push(C(process.cwd(),"assets/governance"));for(let t of c)if(j(t))return t;throw new Error(`Governance assets not found. Package may be corrupted. Searched: ${c.join(", ")}`)}var De=class{projectRoot;overwrite;skipShards;assetsPath;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.skipShards=e.skipShards??!1,this.assetsPath=cn()}async install(){let e=[],t=[],s=[],n=C(this.projectRoot,".claude","guidance"),o=C(n,"shards");try{kt(n,{recursive:!0}),this.skipShards||kt(o,{recursive:!0})}catch(l){return s.push(`Failed to create governance directory: ${E(l)}`),{installed:e,skipped:t,errors:s,governanceDir:n,constitutionInstalled:!1,shardsInstalled:0}}let r=!1,i=C(this.assetsPath,"constitution.md"),d=C(n,"constitution.md");if(j(i))try{!j(d)||this.overwrite?(wt(i,d),e.push("constitution.md"),r=!0):t.push("constitution.md")}catch(l){s.push(`Failed to install constitution.md: ${E(l)}`)}else s.push("constitution.md not found in assets");let p=0;if(!this.skipShards){let l=C(this.assetsPath,"shards");if(j(l))try{let u=bt(l).filter(m=>m.endsWith(".shard.md"));for(let m of u){let y=C(l,m),f=C(o,m);try{!j(f)||this.overwrite?(wt(y,f),e.push(`shards/${m}`),p++):t.push(`shards/${m}`)}catch(b){s.push(`Failed to install ${m}: ${E(b)}`)}}}catch(u){s.push(`Failed to read shards directory: ${E(u)}`)}else s.push("Shards directory not found in assets")}return{installed:e,skipped:t,errors:s,governanceDir:n,constitutionInstalled:r,shardsInstalled:p}}isInstalled(){let e=C(this.projectRoot,".claude","guidance","constitution.md");return j(e)}getInstalledShards(){let e=C(this.projectRoot,".claude","guidance","shards");if(!j(e))return[];try{return bt(e).filter(t=>t.endsWith(".shard.md"))}catch{return[]}}};function Pt(c){return new De(c)}var ce=class extends v{name="governance";description="Install governance configuration";order=95;critical=!1;requiresPhases=["configuration"];async shouldRun(e){return e.options.noClaude?(e.services.log(" Governance skipped (--no-claude)"),!1):e.options.noGovernance?(e.services.log(" Governance skipped (--no-governance flag)"),!1):e.options.minimal?(e.services.log(" Governance skipped (minimal mode)"),!1):!0}async run(e){let{projectRoot:t,options:s}=e,n=s.upgrade,o=Pt({projectRoot:t,overwrite:n});if(o.isInstalled()&&!n){let i=o.getInstalledShards();return e.services.log(` Governance already installed (${i.length} shards)`),e.services.log(" Use --upgrade to overwrite existing files"),{filesInstalled:0,filesSkipped:1+i.length,constitutionInstalled:!1,shardsInstalled:0,governanceDir:`${t}/.claude/guidance`,skippedByFlag:!1}}let r=await o.install();if(r.errors.length>0)for(let i of r.errors)e.services.warn(` ${i}`);return e.services.log(` Constitution: ${r.constitutionInstalled?"installed":"skipped"}`),e.services.log(` Shards: ${r.shardsInstalled} installed, ${r.skipped.filter(i=>i.startsWith("shards/")).length} skipped`),r.installed.length>0&&(e.services.log(" Governance enabled (non-strict mode by default)"),e.services.log(" Set GOVERNANCE_STRICT_MODE=true for strict enforcement")),{filesInstalled:r.installed.length,filesSkipped:r.skipped.length,constitutionInstalled:r.constitutionInstalled,shardsInstalled:r.shardsInstalled,governanceDir:r.governanceDir,skippedByFlag:!1}}};var dn=new H,un=new G,pn=new U,mn=new J,gn=new Y,fn=new X,hn=new ee,yn=new te,vn=new oe,kn=new ie,bn=new ae,wn=new le,Cn=new ce;function Et(){return[dn,un,pn,mn,gn,fn,hn,yn,vn,Cn,kn,bn,wn]}var $e=class{phases;context;constructor(e){this.context=this.createContext(e),this.phases=e.customPhases??Et()}createContext(e){let t=e.withAllPlatforms;return{projectRoot:e.projectRoot,options:{autoMode:e.autoMode,upgrade:e.upgrade,skipPatterns:e.skipPatterns,skipCodeIndex:e.skipCodeIndex,minimal:e.minimal,browserEngine:e.browserEngine,withN8n:e.withN8n,withOpenCode:e.withOpenCode,withKiro:e.withKiro,withCopilot:e.withCopilot||t,withCursor:e.withCursor||t,withCline:e.withCline||t,withKiloCode:e.withKiloCode||t,withRooCode:e.withRooCode||t,withCodex:e.withCodex||t,withRuflo:e.withRuflo,codexGuidance:e.codexGuidance,withWindsurf:e.withWindsurf||t,withContinueDev:e.withContinueDev||t,withAllPlatforms:e.withAllPlatforms,n8nApiConfig:e.n8nApiConfig,wizardAnswers:e.wizardAnswers,noGovernance:e.noGovernance,noMcp:e.noMcp,withMcp:e.withMcp,noClaude:e.noClaude,noStatusLine:e.noStatusLine,memoryBackend:e.memoryBackend},config:{},enhancements:{claudeFlow:!1,ruvector:!1},results:new Map,services:{log:s=>console.log(s),warn:s=>console.warn(s),error:s=>console.error(s)}}}async initialize(){let e=Date.now(),t=[];try{let s=[...this.phases].sort((n,o)=>n.order-o.order);for(let n of s){if(!await n.shouldRun(this.context))continue;console.log(`
451
495
  \u{1F4CB} ${n.description}...`);let r=await n.execute(this.context);if(this.context.results.set(n.name,r),t.push({step:n.description,status:r.success?"success":"error",message:r.message||"",durationMs:r.durationMs}),!r.success&&n.critical){if(console.error(`
452
- \u274C Critical phase failed: ${n.name}`),n.rollback)try{await n.rollback(this.context)}catch(i){console.error(`Rollback failed: ${i}`)}return this.createFailureResult(t,e)}if(r.skipRemaining)break}return this.createSuccessResult(t,e)}catch(s){return t.push({step:"Initialization Failed",status:"error",message:S(s),durationMs:0}),this.createFailureResult(t,e)}}createSuccessResult(e,t){let s=this.context.config,n=this.context.results.get("learning"),o=this.context.results.get("code-intelligence"),r=this.context.results.get("assets"),i=this.context.results.get("hooks"),d=this.context.results.get("mcp"),p=this.context.results.get("claude-md"),l=this.context.results.get("workers");return{success:!0,config:s||ve("unknown",this.context.projectRoot),steps:e,summary:{projectAnalyzed:this.context.results.has("analysis"),configGenerated:this.context.results.has("configuration"),codeIntelligenceIndexed:o?.data?.entries??0,patternsLoaded:n?.data?.patternsLoaded??0,skillsInstalled:r?.data?.skillsInstalled??0,agentsInstalled:r?.data?.agentsInstalled??0,hooksConfigured:i?.data?.configured??!1,mcpConfigured:d?.data?.configured??!1,claudeMdGenerated:p?.data?.generated??!1,workersStarted:l?.data?.workersConfigured??0,codexGuidance:r?.data?.codexGuidance,codexComponents:r?.data?.codexComponents,retiredAssetsRemoved:r?.data?.retiredAssetsRemoved,retiredAssetsKept:r?.data?.retiredAssetsKept},totalDurationMs:Date.now()-t,timestamp:new Date}}createFailureResult(e,t){return{success:!1,config:ve("unknown",this.context.projectRoot),steps:e,summary:{projectAnalyzed:!1,configGenerated:!1,codeIntelligenceIndexed:0,patternsLoaded:0,skillsInstalled:0,agentsInstalled:0,hooksConfigured:!1,mcpConfigured:!1,claudeMdGenerated:!1,workersStarted:0},totalDurationMs:Date.now()-t,timestamp:new Date}}getPhase(e){return this.phases.find(t=>t.name===e)}getPhases(){return[...this.phases]}getContext(){return this.context}};function kn(c){return new De(c)}async function Or(c){return await kn({projectRoot:c,autoMode:!0}).initialize()}function Mr(c){let e=[];e.push(""),e.push("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"),e.push("\u2502 AQE v3 Initialization \u2502"),e.push("\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524");for(let s of c.steps){let n=s.status==="success"?"\u2713":s.status==="error"?"\u2717":"\u25CB",o=s.step.substring(0,48).padEnd(48);e.push(`\u2502 ${n} ${o} ${String(s.durationMs).padStart(4)}ms \u2502`)}e.push("\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524"),e.push(`\u2502 Project: ${c.config.project.name.substring(0,45).padEnd(45)} \u2502`),e.push(`\u2502 Type: ${c.config.project.type.padEnd(48)} \u2502`),e.push(`\u2502 Code Intel: ${String(c.summary.codeIntelligenceIndexed).padEnd(43)} \u2502`),e.push(`\u2502 Patterns: ${String(c.summary.patternsLoaded).padEnd(45)} \u2502`),e.push(`\u2502 Skills: ${String(c.summary.skillsInstalled).padEnd(47)} \u2502`),e.push(`\u2502 Agents: ${String(c.summary.agentsInstalled).padEnd(47)} \u2502`),e.push(`\u2502 Workers: ${String(c.summary.workersStarted).padEnd(46)} \u2502`),e.push(`\u2502 Hooks: ${c.summary.hooksConfigured?"Yes":"No".padEnd(48)} \u2502`),e.push(`\u2502 MCP: ${c.summary.mcpConfigured?"Yes":"No".padEnd(50)} \u2502`),e.push(`\u2502 CLAUDE.md: ${c.summary.claudeMdGenerated?"Yes":"No".padEnd(44)} \u2502`),e.push("\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524");let t=c.success?"\u2713 AQE v3 initialized successfully":"\u2717 Initialization failed";return e.push(`\u2502 ${t.padEnd(57)} \u2502`),e.push("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"),e.push(""),e.join(`
453
- `)}export{De as ModularInitOrchestrator,kn as createModularInitOrchestrator,Mr as formatInitResultModular,Or as quickInitModular};
496
+ \u274C Critical phase failed: ${n.name}`),n.rollback)try{await n.rollback(this.context)}catch(i){console.error(`Rollback failed: ${i}`)}return this.createFailureResult(t,e)}if(r.skipRemaining)break}return this.createSuccessResult(t,e)}catch(s){return t.push({step:"Initialization Failed",status:"error",message:E(s),durationMs:0}),this.createFailureResult(t,e)}}createSuccessResult(e,t){let s=this.context.config,n=this.context.results.get("learning"),o=this.context.results.get("code-intelligence"),r=this.context.results.get("assets"),i=this.context.results.get("hooks"),d=this.context.results.get("mcp"),p=this.context.results.get("claude-md"),l=this.context.results.get("workers");return{success:!0,config:s||ve("unknown",this.context.projectRoot),steps:e,summary:{projectAnalyzed:this.context.results.has("analysis"),configGenerated:this.context.results.has("configuration"),codeIntelligenceIndexed:o?.data?.entries??0,patternsLoaded:n?.data?.patternsLoaded??0,skillsInstalled:r?.data?.skillsInstalled??0,agentsInstalled:r?.data?.agentsInstalled??0,hooksConfigured:i?.data?.configured??!1,mcpConfigured:d?.data?.configured??!1,claudeMdGenerated:p?.data?.generated??!1,workersStarted:l?.data?.workersConfigured??0,codexGuidance:r?.data?.codexGuidance,codexComponents:r?.data?.codexComponents,retiredAssetsRemoved:r?.data?.retiredAssetsRemoved,retiredAssetsKept:r?.data?.retiredAssetsKept},totalDurationMs:Date.now()-t,timestamp:new Date}}createFailureResult(e,t){return{success:!1,config:ve("unknown",this.context.projectRoot),steps:e,summary:{projectAnalyzed:!1,configGenerated:!1,codeIntelligenceIndexed:0,patternsLoaded:0,skillsInstalled:0,agentsInstalled:0,hooksConfigured:!1,mcpConfigured:!1,claudeMdGenerated:!1,workersStarted:0},totalDurationMs:Date.now()-t,timestamp:new Date}}getPhase(e){return this.phases.find(t=>t.name===e)}getPhases(){return[...this.phases]}getContext(){return this.context}};function Pn(c){return new $e(c)}async function Qr(c){return await Pn({projectRoot:c,autoMode:!0}).initialize()}function Wr(c){let e=[];e.push(""),e.push("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"),e.push("\u2502 AQE v3 Initialization \u2502"),e.push("\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524");for(let s of c.steps){let n=s.status==="success"?"\u2713":s.status==="error"?"\u2717":"\u25CB",o=s.step.substring(0,48).padEnd(48);e.push(`\u2502 ${n} ${o} ${String(s.durationMs).padStart(4)}ms \u2502`)}e.push("\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524"),e.push(`\u2502 Project: ${c.config.project.name.substring(0,45).padEnd(45)} \u2502`),e.push(`\u2502 Type: ${c.config.project.type.padEnd(48)} \u2502`),e.push(`\u2502 Code Intel: ${String(c.summary.codeIntelligenceIndexed).padEnd(43)} \u2502`),e.push(`\u2502 Patterns: ${String(c.summary.patternsLoaded).padEnd(45)} \u2502`),e.push(`\u2502 Skills: ${String(c.summary.skillsInstalled).padEnd(47)} \u2502`),e.push(`\u2502 Agents: ${String(c.summary.agentsInstalled).padEnd(47)} \u2502`),e.push(`\u2502 Workers: ${String(c.summary.workersStarted).padEnd(46)} \u2502`),e.push(`\u2502 Hooks: ${c.summary.hooksConfigured?"Yes":"No".padEnd(48)} \u2502`),e.push(`\u2502 MCP: ${c.summary.mcpConfigured?"Yes":"No".padEnd(50)} \u2502`),e.push(`\u2502 CLAUDE.md: ${c.summary.claudeMdGenerated?"Yes":"No".padEnd(44)} \u2502`),e.push("\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524");let t=c.success?"\u2713 AQE v3 initialized successfully":"\u2717 Initialization failed";return e.push(`\u2502 ${t.padEnd(57)} \u2502`),e.push("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"),e.push(""),e.join(`
497
+ `)}export{$e as ModularInitOrchestrator,Pn as createModularInitOrchestrator,Wr as formatInitResultModular,Qr as quickInitModular};
@@ -0,0 +1,2 @@
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.11");process.exit(0)}
2
+ import{a}from"./chunk-IOZRKXR5.js";import"./chunk-XGBU3KEM.js";import"./chunk-7R5HC56U.js";import"./chunk-CFWGGRE7.js";export{a as PatternNullStore};
@@ -1,2 +1,2 @@
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}from"./chunk-7X2Y727E.js";import"./chunk-HZ5NC6U5.js";export{a as recordPatternUsage,b as recordPatternUsageBatch};
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.11");process.exit(0)}
2
+ import{a,b}from"./chunk-YNOCQ2SL.js";import"./chunk-CFWGGRE7.js";export{a as recordPatternUsage,b as recordPatternUsageBatch};
@@ -0,0 +1,19 @@
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.11");process.exit(0)}
2
+ import{b as E,e as O}from"./chunk-WM3SRRA6.js";import{a as v,c as w,d as l}from"./chunk-IW6WDGHM.js";import"./chunk-CFWGGRE7.js";import{Command as x}from"commander";import{resolve as j}from"path";import s from"chalk";import*as C from"node:fs/promises";import{parse as N}from"yaml";O();var D=["eq","neq","gt","gte","lt","lte","contains","exists"],M=["sequential","parallel"],T=/\$\{([^}]+)\}/g,k=class{parse(r,t){try{let n=this.interpolateVariables(r,t??{}),a=N(n);return this.validateAndConvert(a)}catch(n){return l(n instanceof Error?new Error(`YAML parse error: ${n.message}`):new Error(`YAML parse error: ${String(n)}`))}}async loadFromFile(r,t){try{let n=await C.readFile(r,"utf-8");return this.parse(n,t)}catch(n){return l(n instanceof Error?new Error(`Failed to read pipeline file '${r}': ${n.message}`):new Error(`Failed to read pipeline file '${r}': ${String(n)}`))}}interpolateVariables(r,t){return r.replace(T,(n,a)=>{let o=this.resolveVarPath(t,a);return o===void 0?n:String(o)})}validateSchema(r){return this.validateAndConvert(r)}validateAndConvert(r){if(!r||typeof r!="object"||Array.isArray(r))return l(new Error("YAML must parse to an object"));let t=r;if(!t.id||typeof t.id!="string")return l(new Error("Missing or invalid required field 'id' (string)"));if(!t.name||typeof t.name!="string")return l(new Error("Missing or invalid required field 'name' (string)"));if(!t.steps||!Array.isArray(t.steps)||t.steps.length===0)return l(new Error("'steps' must be a non-empty array"));let n=typeof t.description=="string"?t.description:"",a=typeof t.version=="string"?t.version:"1.0.0",o;if(t.defaultMode!==void 0){if(!M.includes(t.defaultMode))return l(new Error(`Invalid defaultMode '${String(t.defaultMode)}'. Must be one of: ${M.join(", ")}`));o=t.defaultMode}let e;if(t.timeout!==void 0){if(typeof t.timeout!="number"||t.timeout<=0)return l(new Error("'timeout' must be a positive number"));e=t.timeout}let i=Array.isArray(t.tags)?t.tags.filter(g=>typeof g=="string"):void 0,u=this.validateSteps(t.steps);if(!u.success)return u;let c;if(t.triggers!==void 0){if(!Array.isArray(t.triggers))return l(new Error("'triggers' must be an array"));let g=this.validateTriggers(t.triggers);if(!g.success)return g;c=g.value}let f=this.detectCircularDependencies(u.value);if(f)return l(new Error(`Circular dependency detected: ${f}`));let d={id:t.id,name:t.name,description:n,version:a,steps:u.value,...o!==void 0&&{defaultMode:o},...e!==void 0&&{timeout:e},...i!==void 0&&{tags:i},...c!==void 0&&{triggers:c}};return w(d)}validateSteps(r){let t=[],n=new Set;for(let a=0;a<r.length;a++){let o=r[a];if(!o||typeof o!="object"||Array.isArray(o))return l(new Error(`Step at index ${a} must be an object`));let e=o;if(!e.id||typeof e.id!="string")return l(new Error(`Step at index ${a}: missing or invalid 'id' (string)`));if(n.has(e.id))return l(new Error(`Duplicate step ID: ${e.id}`));if(n.add(e.id),!e.name||typeof e.name!="string")return l(new Error(`Step '${e.id}': missing or invalid 'name' (string)`));if(!e.domain||typeof e.domain!="string")return l(new Error(`Step '${e.id}': missing or invalid 'domain' (string)`));if(!v.includes(e.domain))return l(new Error(`Step '${e.id}': invalid domain '${e.domain}'. Must be one of: ${v.join(", ")}`));if(!e.action||typeof e.action!="string")return l(new Error(`Step '${e.id}': missing or invalid 'action' (string)`));let i=this.validateStringRecord(e.inputMapping,`Step '${e.id}'.inputMapping`);if(i!==void 0&&i instanceof Error)return l(i);let u=this.validateStringRecord(e.outputMapping,`Step '${e.id}'.outputMapping`);if(u!==void 0&&u instanceof Error)return l(u);let c;if(e.dependsOn!==void 0){if(!Array.isArray(e.dependsOn)||!e.dependsOn.every(p=>typeof p=="string"))return l(new Error(`Step '${e.id}': 'dependsOn' must be an array of strings`));for(let p of e.dependsOn)if(!r.some(W=>W.id===p))return l(new Error(`Step '${e.id}' depends on unknown step: ${p}`));c=e.dependsOn}let f;if(e.condition!==void 0){let p=this.validateCondition(e.condition,`Step '${e.id}'.condition`);if(!p.success)return p;f=p.value}let d;if(e.skipCondition!==void 0){let p=this.validateCondition(e.skipCondition,`Step '${e.id}'.skipCondition`);if(!p.success)return p;d=p.value}let g;if(e.timeout!==void 0){if(typeof e.timeout!="number"||e.timeout<=0)return l(new Error(`Step '${e.id}': 'timeout' must be a positive number`));g=e.timeout}let $;if(e.retry!==void 0){let p=this.validateRetry(e.retry,e.id);if(!p.success)return p;$=p.value}let b;if(e.rollback!==void 0){let p=this.validateRollback(e.rollback,e.id);if(!p.success)return p;b=p.value}let R=typeof e.continueOnFailure=="boolean"?e.continueOnFailure:void 0,S;if(e.approval!==void 0){let p=this.validateApproval(e.approval,e.id);if(!p.success)return p;S=p.value}let A={id:e.id,name:e.name,domain:e.domain,action:e.action,...i!==void 0&&{inputMapping:i},...u!==void 0&&{outputMapping:u},...c!==void 0&&{dependsOn:c},...f!==void 0&&{condition:f},...d!==void 0&&{skipCondition:d},...g!==void 0&&{timeout:g},...$!==void 0&&{retry:$},...b!==void 0&&{rollback:b},...R!==void 0&&{continueOnFailure:R},...S!==void 0&&{approval:S}};t.push(A)}return w(t)}validateCondition(r,t){if(!r||typeof r!="object"||Array.isArray(r))return l(new Error(`${t}: must be an object with path, operator, value`));let n=r;return!n.path||typeof n.path!="string"?l(new Error(`${t}: missing or invalid 'path' (string)`)):!n.operator||typeof n.operator!="string"?l(new Error(`${t}: missing or invalid 'operator' (string)`)):D.includes(n.operator)?n.value===void 0?l(new Error(`${t}: missing 'value'`)):w({path:n.path,operator:n.operator,value:n.value}):l(new Error(`${t}: invalid operator '${n.operator}'. Must be one of: ${D.join(", ")}`))}validateTriggers(r){let t=[];for(let n=0;n<r.length;n++){let a=r[n];if(!a||typeof a!="object"||Array.isArray(a))return l(new Error(`Trigger at index ${n} must be an object`));let o=a;if(!o.eventType||typeof o.eventType!="string")return l(new Error(`Trigger at index ${n}: missing or invalid 'eventType' (string)`));let e;if(o.sourceDomain!==void 0){if(typeof o.sourceDomain!="string"||!v.includes(o.sourceDomain))return l(new Error(`Trigger at index ${n}: invalid 'sourceDomain' '${String(o.sourceDomain)}'`));e=o.sourceDomain}let i;if(o.condition!==void 0){let c=this.validateCondition(o.condition,`Trigger at index ${n}.condition`);if(!c.success)return c;i=c.value}let u=this.validateStringRecord(o.inputMapping,`Trigger at index ${n}.inputMapping`);if(u!==void 0&&u instanceof Error)return l(u);t.push({eventType:o.eventType,...e!==void 0&&{sourceDomain:e},...i!==void 0&&{condition:i},...u!==void 0&&{inputMapping:u}})}return w(t)}validateRetry(r,t){if(!r||typeof r!="object"||Array.isArray(r))return l(new Error(`Step '${t}': 'retry' must be an object`));let n=r;return typeof n.maxAttempts!="number"||n.maxAttempts<1?l(new Error(`Step '${t}': retry.maxAttempts must be a positive integer`)):typeof n.backoffMs!="number"||n.backoffMs<0?l(new Error(`Step '${t}': retry.backoffMs must be a non-negative number`)):w({maxAttempts:n.maxAttempts,backoffMs:n.backoffMs,...typeof n.backoffMultiplier=="number"&&{backoffMultiplier:n.backoffMultiplier}})}validateRollback(r,t){if(!r||typeof r!="object"||Array.isArray(r))return l(new Error(`Step '${t}': 'rollback' must be an object`));let n=r;return!n.domain||typeof n.domain!="string"||!v.includes(n.domain)?l(new Error(`Step '${t}': rollback.domain is invalid or missing`)):!n.action||typeof n.action!="string"?l(new Error(`Step '${t}': rollback.action is required (string)`)):w({domain:n.domain,action:n.action,...n.input!==void 0&&typeof n.input=="object"&&{input:n.input}})}validateApproval(r,t){if(typeof r=="boolean")return w(r);if(!r||typeof r!="object"||Array.isArray(r))return l(new Error(`Step '${t}': 'approval' must be a boolean or object`));let n=r,a={};if(n.expiresAfter!==void 0&&n.autoApproveAfter!==void 0)return l(new Error(`Step '${t}': set only one approval expiry field`));let o=n.expiresAfter??n.autoApproveAfter;if(o!==void 0){if(typeof o!="number"||!Number.isSafeInteger(o)||o<0||o>2147483647)return l(new Error(`Step '${t}': approval expiry must be an integer from 0 to 2147483647 milliseconds`));a.expiresAfter=o}if(n.message!==void 0){if(typeof n.message!="string")return l(new Error(`Step '${t}': approval.message must be a string`));a.message=n.message}return w(a)}validateStringRecord(r,t){if(r==null)return;if(typeof r!="object"||Array.isArray(r))return new Error(`${t}: must be an object with string values`);let n=r;for(let[a,o]of Object.entries(n))if(typeof o!="string")return new Error(`${t}: value for key '${a}' must be a string, got ${typeof o}`);return n}resolveVarPath(r,t){if(Object.hasOwn(r,t))return r[t];let n=t.split("."),a=r;for(let o of n){if(a==null||typeof a!="object")return;a=E(a,o)}return a}detectCircularDependencies(r){let t=new Set,n=new Set,a=(o,e)=>{if(n.has(o))return[...e,o].join(" -> ");if(t.has(o))return null;t.add(o),n.add(o);let i=r.find(u=>u.id===o);if(i?.dependsOn)for(let u of i.dependsOn){let c=a(u,[...e,o]);if(c)return c}return n.delete(o),null};for(let o of r){let e=a(o.id,[]);if(e)return e}return null}};function h(m){let r={};for(let t of m){let n=t.indexOf("=");if(n===-1)r[t]=!0;else{let a=t.slice(0,n),o=t.slice(n+1);o==="true"?r[a]=!0:o==="false"?r[a]=!1:!isNaN(Number(o))&&o!==""?r[a]=Number(o):r[a]=o}}return r}function L(m){return h(m)}function y(m){return m.workflowOrchestrator}function H(m,r,t){let n=new k,a=new x("pipeline").description("Manage YAML deterministic pipelines (Imp-9)");return a.command("load <file>").description("Load and register a pipeline from a YAML file").option("--vars <entries...>","Variable substitutions (key=value)").action(async(o,e)=>{if(!await t())return;let i=y(m);if(!i){console.error(s.red(' Workflow orchestrator not available. Run "aqe fleet init" first.')),await r(1);return}let u=j(o),c=e.vars?h(e.vars):void 0;console.log(s.blue(`
3
+ Loading pipeline from: ${o}
4
+ `));let f=await n.loadFromFile(u,c);if(!f.success){console.error(s.red(` Parse error: ${f.error.message}`)),await r(1);return}let d=f.value,g=i.registerWorkflow(d);if(!g.success){console.error(s.red(` Registration error: ${g.error.message}`)),await r(1);return}console.log(s.green(" Pipeline loaded successfully.")),console.log(` ID: ${s.cyan(d.id)}`),console.log(` Name: ${s.cyan(d.name)}`),console.log(` Steps: ${s.cyan(d.steps.length)}`),console.log(` Version: ${s.cyan(d.version)}`),d.tags?.length&&console.log(` Tags: ${s.cyan(d.tags.join(", "))}`),console.log(""),await r(0)}),a.command("validate <file>").description("Validate a YAML pipeline without registering it").option("--vars <entries...>","Variable substitutions (key=value)").action(async(o,e)=>{let i=j(o),u=e.vars?h(e.vars):void 0;console.log(s.blue(`
5
+ Validating pipeline: ${o}
6
+ `));let c=await n.loadFromFile(i,u);if(!c.success){console.log(s.red(` Invalid: ${c.error.message}`)),await r(1);return}let f=c.value;console.log(s.green(" Valid pipeline.")),console.log(` ID: ${s.cyan(f.id)}`),console.log(` Name: ${s.cyan(f.name)}`),console.log(` Steps: ${s.cyan(f.steps.length)}`),console.log(""),await r(0)}),a.command("run <pipelineId>").description("Execute a registered pipeline").option("--input <entries...>","Input parameters (key=value)").option("--wait","Wait for execution to complete").action(async(o,e)=>{if(!await t())return;let i=y(m);if(!i){console.error(s.red(' Workflow orchestrator not available. Run "aqe fleet init" first.')),await r(1);return}let u=e.input?L(e.input):{};console.log(s.blue(`
7
+ Running pipeline: ${o}
8
+ `));let c=await i.executeWorkflow(o,u);if(!c.success){console.error(s.red(` Failed: ${c.error.message}`)),await r(1);return}let f=c.value;if(console.log(s.green(" Pipeline started.")),console.log(` Execution ID: ${s.cyan(f)}`),e.wait){console.log(s.gray(" Waiting for completion..."));let d=i.getWorkflowStatus(f);for(;d&&(d.status==="running"||d.status==="paused");)await new Promise(g=>setTimeout(g,500)),d=i.getWorkflowStatus(f);if(d){let g=d.status==="completed"?s.green:s.red;console.log(` Status: ${g(d.status)}`),d.duration&&console.log(` Duration: ${s.cyan(`${d.duration}ms`)}`),d.error&&console.log(` Error: ${s.red(d.error)}`)}console.log(""),await r(d?.status==="completed"?0:1);return}console.log(""),await r(0)}),a.command("list").description("List all registered pipelines").action(async()=>{if(!await t())return;let o=y(m);if(!o){console.error(s.red(' Workflow orchestrator not available. Run "aqe fleet init" first.')),await r(1);return}let e=o.listWorkflows();if(console.log(s.blue(`
9
+ Registered Pipelines (${e.length})
10
+ `)),e.length===0)console.log(s.gray(" No pipelines registered."));else for(let i of e)console.log(` ${s.cyan(i.id)} \u2014 ${i.name} (${i.stepCount} steps, v${i.version})`),i.tags?.length&&console.log(` Tags: ${s.gray(i.tags.join(", "))}`);console.log(""),await r(0)}),a.command("status <executionId>").description("Show the status of a pipeline execution").action(async o=>{if(!await t())return;let e=y(m);if(!e){console.error(s.red(' Workflow orchestrator not available. Run "aqe fleet init" first.')),await r(1);return}let i=e.getWorkflowStatus(o);if(!i){console.error(s.red(` Execution not found: ${o}`)),await r(1);return}let u=i.status==="completed"?s.green:i.status==="failed"?s.red:i.status==="running"?s.yellow:s.gray;console.log(s.blue(`
11
+ Pipeline Execution Status
12
+ `)),console.log(` Execution: ${s.cyan(o)}`),console.log(` Pipeline: ${s.cyan(i.workflowName)} (${i.workflowId})`),console.log(` Status: ${u(i.status)}`),console.log(` Progress: ${s.cyan(`${i.progress}%`)}`),console.log(` Completed: ${s.cyan(i.completedSteps.join(", ")||"none")}`),i.failedSteps.length>0&&console.log(` Failed: ${s.red(i.failedSteps.join(", "))}`),i.skippedSteps.length>0&&console.log(` Skipped: ${s.gray(i.skippedSteps.join(", "))}`),i.currentSteps.length>0&&console.log(` Running: ${s.yellow(i.currentSteps.join(", "))}`),i.duration&&console.log(` Duration: ${s.cyan(`${i.duration}ms`)}`),i.error&&console.log(` Error: ${s.red(i.error)}`);for(let c of i.parallelCompositionReceipts??[]){console.log(` Composition ${c.groupId}: ${c.disposition}`);for(let f of c.conflicts)console.log(` ${f.kind}: ${f.stepA}.${f.pathA} / ${f.stepB}.${f.pathB}`)}console.log(""),await r(0)}),a.command("approve <executionId> <stepId>").description("Approve a step that is awaiting approval").action(async(o,e)=>{if(!await t())return;let i=y(m);if(!i){console.error(s.red(" Workflow orchestrator not available.")),await r(1);return}if(i.approveStep(o,e))console.log(s.green(`
13
+ Step '${e}' approved.
14
+ `));else{console.error(s.red(`
15
+ No pending approval found for step '${e}' in execution '${o}'.
16
+ `)),await r(1);return}await r(0)}),a.command("reject <executionId> <stepId>").description("Reject a step that is awaiting approval").option("--reason <reason>","Rejection reason").action(async(o,e,i)=>{if(!await t())return;let u=y(m);if(!u){console.error(s.red(" Workflow orchestrator not available.")),await r(1);return}if(u.rejectStep(o,e,i.reason))console.log(s.green(`
17
+ Step '${e}' rejected.`)),i.reason&&console.log(` Reason: ${s.gray(i.reason)}`),console.log("");else{console.error(s.red(`
18
+ No pending approval found for step '${e}' in execution '${o}'.
19
+ `)),await r(1);return}await r(0)}),a}export{H as createPipelineCommand};