agentic-qe 3.15.6 → 3.15.7

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 (421) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +141 -0
  3. package/README.md +2 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +8 -6
  6. package/dist/cli/chunks/adapter-PEOUNYXJ.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-SY7UCLBL.js → agent-booster-wasm-OS5G7KMQ.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-KAMYBU3S.js → agent-handler-PI4I7PME.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-2CAW3KUM.js → agent-memory-branch-J7TXHX4U.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-DHKZI5RX.js +2 -0
  11. package/dist/cli/chunks/{arena-QCCVIOAH.js → arena-FXESDCFR.js} +4 -4
  12. package/dist/cli/chunks/{arena-4OFLJ3R2.js → arena-OWUGXKNT.js} +2 -2
  13. package/dist/cli/chunks/{audit-RBDQJQJB.js → audit-EPAWLYIZ.js} +3 -3
  14. package/dist/cli/chunks/base-QZWK3D5P.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-5JRACCDQ.js → better-sqlite3-IYVR5EQY.js} +2 -2
  16. package/dist/cli/chunks/{brain-handler-W4QIIRT4.js → brain-handler-3W2E6TC6.js} +3 -3
  17. package/dist/cli/chunks/{branch-enumerator-IBNGI572.js → branch-enumerator-HU7VACJ4.js} +2 -2
  18. package/dist/cli/chunks/{browser-GMSCVAOI.js → browser-72XOR6E2.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-ITPX72RX.js +2 -0
  20. package/dist/cli/chunks/{chunk-CR66HNAE.js → chunk-2423JAA5.js} +1 -1
  21. package/dist/cli/chunks/{chunk-LAY7NCQK.js → chunk-24CENUT4.js} +3 -3
  22. package/dist/cli/chunks/{chunk-PEMSXSP2.js → chunk-2AYBYXOA.js} +2 -2
  23. package/dist/cli/chunks/{chunk-TUDENMAE.js → chunk-2E3XWKEU.js} +2 -2
  24. package/dist/cli/chunks/{chunk-KIDOBLUO.js → chunk-2RJYA6WK.js} +2 -2
  25. package/dist/cli/chunks/{chunk-2IWPJUVV.js → chunk-2YVJ5OUL.js} +5 -5
  26. package/dist/cli/chunks/{chunk-34MDMFET.js → chunk-34JLY3U6.js} +2 -2
  27. package/dist/cli/chunks/{chunk-SV5BUYHH.js → chunk-3JD2USUH.js} +2 -2
  28. package/dist/cli/chunks/{chunk-EF5UHDCG.js → chunk-3RM46XFP.js} +1 -1
  29. package/dist/cli/chunks/{chunk-7XTANLTN.js → chunk-44DPYNPE.js} +1 -1
  30. package/dist/cli/chunks/{chunk-ONPPBLRB.js → chunk-4DIZ5BT6.js} +2 -2
  31. package/dist/cli/chunks/{chunk-22OZIJAD.js → chunk-4G2VNW4C.js} +2 -2
  32. package/dist/cli/chunks/{chunk-LJCEDTUM.js → chunk-56ZKQYZY.js} +3 -3
  33. package/dist/cli/chunks/{chunk-HOEWMEF2.js → chunk-5KCBX225.js} +2 -2
  34. package/dist/cli/chunks/{chunk-V3OLS2NG.js → chunk-5KS7HA37.js} +2 -2
  35. package/dist/cli/chunks/{chunk-MQCTLTGE.js → chunk-5PBRBS7D.js} +2 -2
  36. package/dist/cli/chunks/{chunk-TVLOED6O.js → chunk-5Q22XPTH.js} +2 -2
  37. package/dist/cli/chunks/{chunk-B7RHBKHL.js → chunk-634D2ENF.js} +2 -2
  38. package/dist/cli/chunks/{chunk-7TVIX4WL.js → chunk-6AYRAOCA.js} +2 -2
  39. package/dist/cli/chunks/{chunk-4KOVHQXK.js → chunk-6BO3WCK7.js} +2 -2
  40. package/dist/cli/chunks/{chunk-5HAPS6VD.js → chunk-6FEQ73BF.js} +2 -2
  41. package/dist/cli/chunks/{chunk-FQ5N666N.js → chunk-6JT73S5B.js} +1 -1
  42. package/dist/cli/chunks/{chunk-6MXAJBEA.js → chunk-6OS7HREG.js} +1 -1
  43. package/dist/cli/chunks/{chunk-6R3FBFCJ.js → chunk-6PKCQXEW.js} +2 -2
  44. package/dist/cli/chunks/{chunk-DQNUPEY5.js → chunk-7EX4DEQR.js} +2 -2
  45. package/dist/cli/chunks/{chunk-KCB6P463.js → chunk-7UCVYYWL.js} +2 -2
  46. package/dist/cli/chunks/{chunk-RLB7K7QP.js → chunk-AAA4SHEG.js} +1 -1
  47. package/dist/cli/chunks/{chunk-ITIJ23K2.js → chunk-AXO7OOOA.js} +2 -2
  48. package/dist/cli/chunks/{chunk-6RDVY26I.js → chunk-B7M323VL.js} +2 -2
  49. package/dist/cli/chunks/{chunk-EJ4KZFZN.js → chunk-BB7OLQKO.js} +1 -1
  50. package/dist/cli/chunks/{chunk-5NC7QEJ6.js → chunk-BTIBXGVQ.js} +4 -4
  51. package/dist/cli/chunks/{chunk-RD5BYLN7.js → chunk-BTYKGVJ5.js} +1 -1
  52. package/dist/cli/chunks/{chunk-YXU35GGD.js → chunk-C2CUPJGR.js} +1 -1
  53. package/dist/cli/chunks/{chunk-XFPQIWEH.js → chunk-C2MDBBFF.js} +3 -3
  54. package/dist/cli/chunks/{chunk-QLKUCMZC.js → chunk-CG5DZCOZ.js} +1 -1
  55. package/dist/cli/chunks/{chunk-YLNYPQDR.js → chunk-CIFWOMNX.js} +1 -1
  56. package/dist/cli/chunks/{chunk-ORBODZSO.js → chunk-CWPRU7ZI.js} +2 -2
  57. package/dist/cli/chunks/{chunk-WKDWRRDT.js → chunk-CXTJ47QS.js} +2 -2
  58. package/dist/cli/chunks/{chunk-SOSJWM3E.js → chunk-DCJW2DPL.js} +4 -4
  59. package/dist/cli/chunks/{chunk-GVRFSXY6.js → chunk-DGK6GQMO.js} +2 -2
  60. package/dist/cli/chunks/{chunk-X33F7NXH.js → chunk-DVPGBDBP.js} +3 -3
  61. package/dist/cli/chunks/chunk-EB2PP6X2.js +2 -0
  62. package/dist/cli/chunks/{chunk-HZFK2Z2Z.js → chunk-ECSLJJOQ.js} +1 -1
  63. package/dist/cli/chunks/{chunk-JCE76MPP.js → chunk-ED32XJ5R.js} +2 -2
  64. package/dist/cli/chunks/{chunk-ULCHPPW2.js → chunk-EDU72RTW.js} +1 -1
  65. package/dist/cli/chunks/{chunk-ZOUEQ6DL.js → chunk-EL75G2A3.js} +1 -1
  66. package/dist/cli/chunks/{chunk-GNYOHZVV.js → chunk-EV2BYY6T.js} +1 -1
  67. package/dist/cli/chunks/{chunk-RUTO67PT.js → chunk-F62EKVVC.js} +2 -2
  68. package/dist/cli/chunks/{chunk-IVJIHZSM.js → chunk-FTTFJ7SJ.js} +1 -1
  69. package/dist/cli/chunks/{chunk-NYS2GUNO.js → chunk-FVBFASOD.js} +2 -2
  70. package/dist/cli/chunks/{chunk-5DH5QI7G.js → chunk-G762PEFO.js} +3 -3
  71. package/dist/cli/chunks/{chunk-JPJEAK4G.js → chunk-G7YTZTGU.js} +1 -1
  72. package/dist/cli/chunks/{chunk-5VUIXDY2.js → chunk-GY2SAIXP.js} +2 -2
  73. package/dist/cli/chunks/{chunk-7XUB7U6Z.js → chunk-H4WHDFB5.js} +2 -2
  74. package/dist/cli/chunks/{chunk-72MQCZSM.js → chunk-HLZATDD2.js} +2 -2
  75. package/dist/cli/chunks/{chunk-AX26QJ6T.js → chunk-HPG7354V.js} +2 -2
  76. package/dist/cli/chunks/{chunk-7SAMMQVS.js → chunk-HSDOOFV7.js} +1 -1
  77. package/dist/cli/chunks/{chunk-K55EAWZ5.js → chunk-HTWIGQL4.js} +2 -2
  78. package/dist/cli/chunks/{chunk-BXATKI5S.js → chunk-HXBAQKMH.js} +2 -2
  79. package/dist/cli/chunks/{chunk-46HBVDMU.js → chunk-HZFT3P5B.js} +1 -1
  80. package/dist/cli/chunks/{chunk-RFDFET3O.js → chunk-I7H4IP7T.js} +2 -2
  81. package/dist/cli/chunks/{chunk-AJT3XDRD.js → chunk-IARSGAG7.js} +2 -2
  82. package/dist/cli/chunks/{chunk-TL5GV3PR.js → chunk-IC2WSSD5.js} +3 -3
  83. package/dist/cli/chunks/{chunk-TLUIO37P.js → chunk-ICPALF4Q.js} +2 -2
  84. package/dist/cli/chunks/{chunk-ZSBD4FUX.js → chunk-IWQQIXHO.js} +2 -2
  85. package/dist/cli/chunks/{chunk-AUOSHM63.js → chunk-IYQ7XNE5.js} +2 -2
  86. package/dist/cli/chunks/{chunk-RHIQ6QO5.js → chunk-J26GADQE.js} +281 -281
  87. package/dist/cli/chunks/{chunk-AUN4FG7V.js → chunk-J43DV3ME.js} +1 -1
  88. package/dist/cli/chunks/{chunk-ALCIUWFC.js → chunk-JFPXCQNP.js} +1 -1
  89. package/dist/cli/chunks/{chunk-R363XXGH.js → chunk-JK6B3ULP.js} +2 -2
  90. package/dist/cli/chunks/{chunk-7VTKR44N.js → chunk-JPHDMHFG.js} +2 -2
  91. package/dist/cli/chunks/{chunk-FOJRPEIP.js → chunk-JVYPXW6Y.js} +2 -2
  92. package/dist/cli/chunks/{chunk-ZUTFHGEO.js → chunk-JY4AIEZ7.js} +1 -1
  93. package/dist/cli/chunks/{chunk-47Q7JL3V.js → chunk-JY4WLN3K.js} +2 -2
  94. package/dist/cli/chunks/{chunk-IEPWO4XP.js → chunk-JYXOFN3E.js} +2 -2
  95. package/dist/cli/chunks/{chunk-2CIDFR2H.js → chunk-K7W55B7Q.js} +2 -2
  96. package/dist/cli/chunks/{chunk-D5N2O5EH.js → chunk-KPOPBUUJ.js} +2 -2
  97. package/dist/cli/chunks/{chunk-OQ4S6B7P.js → chunk-LDXQRNTT.js} +1 -1
  98. package/dist/cli/chunks/{chunk-6T6AHVLF.js → chunk-LDZWIV2O.js} +1 -1
  99. package/dist/cli/chunks/{chunk-A7ANPS4E.js → chunk-LGBN7TKC.js} +2 -2
  100. package/dist/cli/chunks/{chunk-X2DR27AY.js → chunk-LMEU64TR.js} +2 -2
  101. package/dist/cli/chunks/{chunk-GI5HWS4H.js → chunk-LP4AS2E4.js} +1 -1
  102. package/dist/cli/chunks/{chunk-VVF337SV.js → chunk-LQOVA4YX.js} +2 -2
  103. package/dist/cli/chunks/{chunk-KYVIOC3C.js → chunk-LVEX4GID.js} +2 -2
  104. package/dist/cli/chunks/{chunk-BO7UFNYV.js → chunk-M63QB466.js} +2 -2
  105. package/dist/cli/chunks/{chunk-UHHMAKPE.js → chunk-MDC4G323.js} +1 -1
  106. package/dist/cli/chunks/{chunk-4CLDYT36.js → chunk-MHZPC4HJ.js} +2 -2
  107. package/dist/cli/chunks/{chunk-24ZSGYC6.js → chunk-MJJC6HUK.js} +1 -1
  108. package/dist/cli/chunks/{chunk-ZL5LJT7D.js → chunk-MKFQNCXI.js} +2 -2
  109. package/dist/cli/chunks/{chunk-XZ46CI35.js → chunk-MMXG3LL6.js} +2 -2
  110. package/dist/cli/chunks/{chunk-OPDZBRIL.js → chunk-MNCF643K.js} +2 -2
  111. package/dist/cli/chunks/{chunk-CEXNW5TR.js → chunk-MNZFEIE5.js} +1 -1
  112. package/dist/cli/chunks/{chunk-L4D3TPFP.js → chunk-MQ6OF6DU.js} +1 -1
  113. package/dist/cli/chunks/{chunk-UB6DQGWM.js → chunk-MRHM4COP.js} +2 -2
  114. package/dist/cli/chunks/{chunk-CLAMMGY3.js → chunk-N4PMPSJJ.js} +2 -2
  115. package/dist/cli/chunks/{chunk-XQ53PZEF.js → chunk-NZQPP533.js} +3 -3
  116. package/dist/cli/chunks/{chunk-FU7LNUD7.js → chunk-OA4GR3EZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-ORFL3YXB.js → chunk-OJEZNLB6.js} +2 -2
  118. package/dist/cli/chunks/{chunk-5LST62QR.js → chunk-ONVALAZN.js} +2 -2
  119. package/dist/cli/chunks/{chunk-DA7DGDTI.js → chunk-PEKDSJBC.js} +2 -2
  120. package/dist/cli/chunks/{chunk-3DJNKNBR.js → chunk-PG64YV6C.js} +57 -57
  121. package/dist/cli/chunks/{chunk-2ZTWPMTK.js → chunk-PQV7E7XH.js} +2 -2
  122. package/dist/cli/chunks/chunk-PTK66HEY.js +2 -0
  123. package/dist/cli/chunks/{chunk-CZBIREL5.js → chunk-PUECC4WI.js} +2 -2
  124. package/dist/cli/chunks/{chunk-JYKQVYX2.js → chunk-PXZKPUW6.js} +2 -2
  125. package/dist/cli/chunks/{chunk-I7WAW7TM.js → chunk-PYHYOKYT.js} +2 -2
  126. package/dist/cli/chunks/{chunk-LCCTJ2PC.js → chunk-PZG3542B.js} +2 -2
  127. package/dist/cli/chunks/{chunk-F7A2UBZO.js → chunk-Q2T5FXEA.js} +2 -2
  128. package/dist/cli/chunks/{chunk-PS6WFCA4.js → chunk-QJE6ZW2X.js} +2 -2
  129. package/dist/cli/chunks/{chunk-LZWJ5BMP.js → chunk-QNQSM2OG.js} +2 -2
  130. package/dist/cli/chunks/{chunk-QLYO3H7E.js → chunk-QQT6QENQ.js} +2 -2
  131. package/dist/cli/chunks/{chunk-VCONCVSY.js → chunk-QVG4ZDXX.js} +2 -2
  132. package/dist/cli/chunks/{chunk-NMY4KTWA.js → chunk-QWLTHFZW.js} +2 -2
  133. package/dist/cli/chunks/{chunk-NBUXM5X6.js → chunk-RCYLCA7E.js} +2 -2
  134. package/dist/cli/chunks/{chunk-P7DXVL2S.js → chunk-REEIFA6A.js} +2 -2
  135. package/dist/cli/chunks/{chunk-5MT7DMD7.js → chunk-RNYX4CPI.js} +2 -2
  136. package/dist/cli/chunks/{chunk-HAN4MS5T.js → chunk-RORZ5O5Z.js} +2 -2
  137. package/dist/cli/chunks/{chunk-ZCP4P6O2.js → chunk-RRPYWBFX.js} +2 -2
  138. package/dist/cli/chunks/{chunk-3NJ7O3OH.js → chunk-RXAFLK34.js} +2 -2
  139. package/dist/cli/chunks/{chunk-VAYZ5QIE.js → chunk-SQHLC6I5.js} +1 -1
  140. package/dist/cli/chunks/{chunk-Q2RBOC7V.js → chunk-SSP2B2WR.js} +2 -2
  141. package/dist/cli/chunks/{chunk-CCL436IU.js → chunk-SX2YSHE7.js} +14 -6
  142. package/dist/cli/chunks/{chunk-ZTB32K5N.js → chunk-T3ZDVU6F.js} +3 -3
  143. package/dist/cli/chunks/{chunk-624QRKQX.js → chunk-T6W5APYP.js} +1 -1
  144. package/dist/cli/chunks/{chunk-BAYGQRNP.js → chunk-TU4LIIOP.js} +2 -2
  145. package/dist/cli/chunks/{chunk-L2TDHJR3.js → chunk-UBYCR3O4.js} +2 -2
  146. package/dist/cli/chunks/{chunk-JAPBSSFY.js → chunk-UCLN6AME.js} +1 -1
  147. package/dist/cli/chunks/{chunk-66NW3ZB4.js → chunk-UIYKR2SA.js} +2 -2
  148. package/dist/cli/chunks/{chunk-BIXRTOH3.js → chunk-UUHIEM2M.js} +3 -3
  149. package/dist/cli/chunks/{chunk-ELI4GDQO.js → chunk-UY3REQOK.js} +2 -2
  150. package/dist/cli/chunks/{chunk-BUTGIVKW.js → chunk-V2SAEMZY.js} +1 -1
  151. package/dist/cli/chunks/{chunk-6WOZUSSN.js → chunk-V5NGBQAQ.js} +2 -2
  152. package/dist/cli/chunks/{chunk-7TJZDRDU.js → chunk-VCA6YYII.js} +1 -1
  153. package/dist/cli/chunks/chunk-VJRZFWR5.js +2 -0
  154. package/dist/cli/chunks/{chunk-5GIJU2ZY.js → chunk-VKPKYMCT.js} +2 -2
  155. package/dist/cli/chunks/{chunk-XPB5BVU6.js → chunk-VNW5Q2CX.js} +2 -2
  156. package/dist/cli/chunks/{chunk-7QVPMH25.js → chunk-VUFRTGML.js} +2 -2
  157. package/dist/cli/chunks/{chunk-MP3FSUNB.js → chunk-W4X2VTIY.js} +2 -2
  158. package/dist/cli/chunks/{chunk-GWM4M5NF.js → chunk-WTLIEBDH.js} +1 -1
  159. package/dist/cli/chunks/{chunk-QS5KZYUZ.js → chunk-WUV5RZUI.js} +2 -2
  160. package/dist/cli/chunks/{chunk-HEGGV2PT.js → chunk-WXI2STKQ.js} +2 -2
  161. package/dist/cli/chunks/{chunk-GFB6BZWU.js → chunk-XEWXYGJI.js} +2 -2
  162. package/dist/cli/chunks/{chunk-NHRF3V4B.js → chunk-XNSQZ3O7.js} +2 -2
  163. package/dist/cli/chunks/{chunk-4POOJYXA.js → chunk-XTJMY3KS.js} +1 -1
  164. package/dist/cli/chunks/{chunk-LMAEMVPA.js → chunk-XXAVQACL.js} +1 -1
  165. package/dist/cli/chunks/{chunk-RV6HSMKJ.js → chunk-Y4SAWE45.js} +1 -1
  166. package/dist/cli/chunks/{chunk-DLSFT6PO.js → chunk-Y6A46M3B.js} +2 -2
  167. package/dist/cli/chunks/{chunk-5UPIL62W.js → chunk-YDZJWDR6.js} +3 -3
  168. package/dist/cli/chunks/{chunk-F3KS3TAB.js → chunk-YFOBQSOW.js} +2 -2
  169. package/dist/cli/chunks/{chunk-XBEI2JBA.js → chunk-YK3NOC2R.js} +2 -2
  170. package/dist/cli/chunks/{chunk-MQTA6KIO.js → chunk-YUC7RJGR.js} +1 -1
  171. package/dist/cli/chunks/{chunk-A74J23QB.js → chunk-Z3VJLWRR.js} +2 -2
  172. package/dist/cli/chunks/{chunk-YNG7E26C.js → chunk-ZLVQSEZK.js} +2 -2
  173. package/dist/cli/chunks/{chunk-6HWARQWV.js → chunk-ZRLNACPY.js} +2 -2
  174. package/dist/cli/chunks/{chunk-XBFQJZWX.js → chunk-ZTMZFF25.js} +2 -2
  175. package/dist/cli/chunks/chunk-ZUMDDMDE.js +3 -0
  176. package/dist/cli/chunks/{ci-GEJCXMBK.js → ci-5HEXJZ2C.js} +2 -2
  177. package/dist/cli/chunks/{ci-config-2ZVV4OXL.js → ci-config-WU4NPDAM.js} +2 -2
  178. package/dist/cli/chunks/{ci-output-E45OGVPR.js → ci-output-BJQVXX5E.js} +2 -2
  179. package/dist/cli/chunks/{circuit-breaker-X73ITYZC.js → circuit-breaker-3BMGTQCB.js} +2 -2
  180. package/dist/cli/chunks/{claude-flow-setup-W4PPH46C.js → claude-flow-setup-GVDGJWMU.js} +2 -2
  181. package/dist/cli/chunks/client-S7GNYTZ5.js +2 -0
  182. package/dist/cli/chunks/{cline-installer-NUEPMWDE.js → cline-installer-V4MRGWVA.js} +2 -2
  183. package/dist/cli/chunks/{code-6WQHBS7G.js → code-A3TGQPEO.js} +3 -3
  184. package/dist/cli/chunks/{code-index-extractor-BXQIFIFT.js → code-index-extractor-YJQSYWD3.js} +2 -2
  185. package/dist/cli/chunks/{codex-installer-Z337R2KH.js → codex-installer-7N7UQPAH.js} +2 -2
  186. package/dist/cli/chunks/{completions-F5DMYFHV.js → completions-PPGVYLZS.js} +2 -2
  187. package/dist/cli/chunks/{complexity-analyzer-W2SYPZDI.js → complexity-analyzer-XZTFLYV5.js} +2 -2
  188. package/dist/cli/chunks/{continuedev-installer-ZCHUIFTN.js → continuedev-installer-Z5I57RAH.js} +2 -2
  189. package/dist/cli/chunks/{copilot-installer-M5JNODXF.js → copilot-installer-F5YZ6BHB.js} +2 -2
  190. package/dist/cli/chunks/core-handlers-CUEPOQIO.js +2 -0
  191. package/dist/cli/chunks/{cost-tracker-LSYTHBHV.js → cost-tracker-GO33ZQAP.js} +2 -2
  192. package/dist/cli/chunks/{coverage-PGMRS5SS.js → coverage-GSHKLY74.js} +3 -3
  193. package/dist/cli/chunks/cross-domain-router-CXN5QFEV.js +2 -0
  194. package/dist/cli/chunks/{cursor-installer-XPUA73UW.js → cursor-installer-JJ7IVJZB.js} +2 -2
  195. package/dist/cli/chunks/daemon-3DQCKRYO.js +10 -0
  196. package/dist/cli/chunks/{daemon-ITKDIYMW.js → daemon-IRL7QRNE.js} +3 -3
  197. package/dist/cli/chunks/{dag-attention-scheduler-T55AXLD6.js → dag-attention-scheduler-ORXSUHPA.js} +2 -2
  198. package/dist/cli/chunks/{detect-DR7J6K4O.js → detect-RHU62KRI.js} +2 -2
  199. package/dist/cli/chunks/{dist-node-LAJJBOUT.js → dist-node-3VKV4Z6C.js} +2 -2
  200. package/dist/cli/chunks/{domain-handler-OMSHCRMK.js → domain-handler-SFIML4FK.js} +2 -2
  201. package/dist/cli/chunks/{domain-plugins-EQXSKC5K.js → domain-plugins-CJ4FA3OC.js} +2 -2
  202. package/dist/cli/chunks/{domain-transfer-FKRAGVSW.js → domain-transfer-BCRKPCAA.js} +2 -2
  203. package/dist/cli/chunks/dream-5AUNJW24.js +2 -0
  204. package/dist/cli/chunks/{embed-and-insert-pattern-JZFPCNL3.js → embed-and-insert-pattern-VL3HFLPV.js} +2 -2
  205. package/dist/cli/chunks/{eval-JSNNASBW.js → eval-GGKRI4P5.js} +2 -2
  206. package/dist/cli/chunks/{experience-capture-middleware-UPD3IZBK.js → experience-capture-middleware-F72TIRQY.js} +3 -3
  207. package/dist/cli/chunks/{fast-paths-YNMIBS2E.js → fast-paths-7KOOF3MA.js} +2 -2
  208. package/dist/cli/chunks/{feature-flags-SRLXDKBI.js → feature-flags-FNHBTHBH.js} +2 -2
  209. package/dist/cli/chunks/{feature-flags-VIR7O4L7.js → feature-flags-IOZEWWFU.js} +2 -2
  210. package/dist/cli/chunks/file-discovery-AYWF357I.js +2 -0
  211. package/dist/cli/chunks/{fleet-K2ED46EL.js → fleet-QX5KXTRC.js} +3 -3
  212. package/dist/cli/chunks/{gnn-wrapper-QCU4ZRYW.js → gnn-wrapper-OH2DOQP7.js} +2 -2
  213. package/dist/cli/chunks/{heartbeat-handler-YYQI4WZM.js → heartbeat-handler-W67NXTNE.js} +4 -4
  214. package/dist/cli/chunks/heartbeat-scheduler-7ZIDVXIP.js +2 -0
  215. package/dist/cli/chunks/hnsw-adapter-P77OC7FM.js +2 -0
  216. package/dist/cli/chunks/hnsw-index-3LBOTQAW.js +2 -0
  217. package/dist/cli/chunks/{hnsw-legacy-bridge-C5TJSWTZ.js → hnsw-legacy-bridge-6MLLOGOE.js} +2 -2
  218. package/dist/cli/chunks/{hnswlib-node-SE3MJJYS.js → hnswlib-node-4UDISJ3G.js} +2 -2
  219. package/dist/cli/chunks/{hooks-C572SRDH.js → hooks-NOQJWQ4P.js} +10 -10
  220. package/dist/cli/chunks/hybrid-backend-LOM54PDD.js +2 -0
  221. package/dist/cli/chunks/{hypergraph-engine-35A6G3M5.js → hypergraph-engine-2OD3APVP.js} +2 -2
  222. package/dist/cli/chunks/{hypergraph-handler-U2756CWI.js → hypergraph-handler-5AZGMBUM.js} +3 -3
  223. package/dist/cli/chunks/impact-analyzer-QSDJVBPS.js +2 -0
  224. package/dist/cli/chunks/init-guard-SMGJ45PW.js +2 -0
  225. package/dist/cli/chunks/init-handler-5T4MP2NM.js +88 -0
  226. package/dist/cli/chunks/init-wizard-MK2325JJ.js +2 -0
  227. package/dist/cli/chunks/kernel-2NJQQ2KT.js +2 -0
  228. package/dist/cli/chunks/{kilocode-installer-32PX5YH7.js → kilocode-installer-RLZYLVQJ.js} +2 -2
  229. package/dist/cli/chunks/{kiro-installer-C4ROMMUS.js → kiro-installer-LFZOC7VD.js} +2 -2
  230. package/dist/cli/chunks/knowledge-graph-SDISHO62.js +2 -0
  231. package/dist/cli/chunks/{learning-GEPVZGJQ.js → learning-XRPGLUWR.js} +20 -20
  232. package/dist/cli/chunks/{llm-router-XRKTTJTX.js → llm-router-OMK5HYPH.js} +4 -4
  233. package/dist/cli/chunks/llm-router-service-YTCMRBAN.js +2 -0
  234. package/dist/cli/chunks/{load-XVH6HW7E.js → load-XADC7KCU.js} +2 -2
  235. package/dist/cli/chunks/load-test-RPKHLBCC.js +2 -0
  236. package/dist/cli/chunks/{mcp-IULSTM4Z.js → mcp-PIBKSSVU.js} +2 -2
  237. package/dist/cli/chunks/{memory-6K7IAU4T.js → memory-AP7EZERS.js} +5 -5
  238. package/dist/cli/chunks/memory-backend-BZXFO4JZ.js +2 -0
  239. package/dist/cli/chunks/{memory-handlers-CG6DRLAW.js → memory-handlers-MOFDNB6E.js} +2 -2
  240. package/dist/cli/chunks/{multi-model-executor-VZDUYPLX.js → multi-model-executor-7JJ2FZ33.js} +2 -2
  241. package/dist/cli/chunks/{opencode-installer-QUTXKNH4.js → opencode-installer-ZZZ6EBYJ.js} +2 -2
  242. package/dist/cli/chunks/{orchestrator-PCKKUWOP.js → orchestrator-2H2YKSGJ.js} +5 -5
  243. package/dist/cli/chunks/pattern-null-store-4PRPIOR6.js +2 -0
  244. package/dist/cli/chunks/{pattern-usage-recorder-PX5HQVRL.js → pattern-usage-recorder-7MJJWC2Z.js} +2 -2
  245. package/dist/cli/chunks/{pipeline-O562GTOG.js → pipeline-LIE5BWQY.js} +2 -2
  246. package/dist/cli/chunks/{platform-PM7Q2AZS.js → platform-SMYUNLGX.js} +2 -2
  247. package/dist/cli/chunks/{plugin-OTYTFGPY.js → plugin-LJDIXQNT.js} +2 -2
  248. package/dist/cli/chunks/{prime-radiant-advanced-wasm-6CFXTHC2.js → prime-radiant-advanced-wasm-RIDNE5D2.js} +2 -2
  249. package/dist/cli/chunks/project-root-NBIQF63D.js +2 -0
  250. package/dist/cli/chunks/protocol-executor-BRPGIYWQ.js +2 -0
  251. package/dist/cli/chunks/{protocol-handler-PPGNSAOS.js → protocol-handler-YVM66DLI.js} +2 -2
  252. package/dist/cli/chunks/{prove-WQ3BKRZG.js → prove-ZBDT52GD.js} +2 -2
  253. package/dist/cli/chunks/qe-reasoning-bank-GDZACWKW.js +2 -0
  254. package/dist/cli/chunks/{quality-C5WUU3AA.js → quality-DUKXGDDO.js} +2 -2
  255. package/dist/cli/chunks/{quality-gate-WSSRKD5U.js → quality-gate-SM3RXF4V.js} +3 -3
  256. package/dist/cli/chunks/queen-coordinator-LDKLBPD5.js +2 -0
  257. package/dist/cli/chunks/{real-embeddings-CFQE7IRQ.js → real-embeddings-4QLQZDB5.js} +2 -2
  258. package/dist/cli/chunks/{ref-validation-DHKHXVZT.js → ref-validation-M3EO32YQ.js} +2 -2
  259. package/dist/cli/chunks/{roocode-installer-3PPODABV.js → roocode-installer-S6Q5OLV5.js} +2 -2
  260. package/dist/cli/chunks/router-H5YSIRH2.js +2 -0
  261. package/dist/cli/chunks/routing-feedback-5R36TJDH.js +2 -0
  262. package/dist/cli/chunks/{routing-handler-JNXTGT6T.js → routing-handler-55FMUACP.js} +2 -2
  263. package/dist/cli/chunks/{ruvector-commands-6YLROPVP.js → ruvector-commands-QATKAAPK.js} +2 -2
  264. package/dist/cli/chunks/rvf-dual-writer-TT2DBQQQ.js +2 -0
  265. package/dist/cli/chunks/rvf-migration-adapter-BCLFJKSK.js +2 -0
  266. package/dist/cli/chunks/{rvf-migration-coordinator-4DWB4WRK.js → rvf-migration-coordinator-RFXFU6JD.js} +2 -2
  267. package/dist/cli/chunks/rvf-native-adapter-UXI66OQJ.js +2 -0
  268. package/dist/cli/chunks/{rvf-store-integrity-YKR2ZNBF.js → rvf-store-integrity-PKDVXQAW.js} +2 -2
  269. package/dist/cli/chunks/safe-db-MSTD2GDH.js +2 -0
  270. package/dist/cli/chunks/schedule-KST6KIFD.js +2 -0
  271. package/dist/cli/chunks/scheduler-FTQS6YK3.js +2 -0
  272. package/dist/cli/chunks/security-CMRB6WA3.js +18 -0
  273. package/dist/cli/chunks/{shared-rvf-adapter-LNRLFP5I.js → shared-rvf-adapter-YHLLNFHF.js} +2 -2
  274. package/dist/cli/chunks/{shared-rvf-dual-writer-GWU6YQNS.js → shared-rvf-dual-writer-4BGDVPQ7.js} +2 -2
  275. package/dist/cli/chunks/sqlite-persistence-ZX5QFDMR.js +2 -0
  276. package/dist/cli/chunks/{standalone-memory-46KKBSSV.js → standalone-memory-LUHKQAGM.js} +2 -2
  277. package/dist/cli/chunks/{status-handler-35T5FTDQ.js → status-handler-S6S5PNR7.js} +2 -2
  278. package/dist/cli/chunks/{structural-health-P7QPQWLO.js → structural-health-PQ7NZAJ4.js} +2 -2
  279. package/dist/cli/chunks/{sync-W6Z4R4PL.js → sync-Q6KRQXU6.js} +2 -2
  280. package/dist/cli/chunks/{sync-Y43EWBSY.js → sync-S744AEJC.js} +2 -2
  281. package/dist/cli/chunks/{task-handler-5CX3ZYT7.js → task-handler-GAMGEHUW.js} +2 -2
  282. package/dist/cli/chunks/{task-handlers-DQZGOJNE.js → task-handlers-6CRDEELN.js} +3 -3
  283. package/dist/cli/chunks/{test-TPP53VVV.js → test-FNH67DBK.js} +4 -4
  284. package/dist/cli/chunks/{test-scheduling-WBV4UMQH.js → test-scheduling-NZA5SHK6.js} +3 -3
  285. package/dist/cli/chunks/{token-bootstrap-GIIDXHLC.js → token-bootstrap-CXKG55JD.js} +2 -2
  286. package/dist/cli/chunks/{token-usage-AKK37RB7.js → token-usage-M7WWEDJX.js} +2 -2
  287. package/dist/cli/chunks/{transformers-7MASPELS.js → transformers-2IFMCK6A.js} +2 -2
  288. package/dist/cli/chunks/{tree-sitter-wasm-parser-YZKD6UGB.js → tree-sitter-wasm-parser-NMNA6RJC.js} +2 -2
  289. package/dist/cli/chunks/{types-AZ3BTXDP.js → types-N7FWTOLD.js} +2 -2
  290. package/dist/cli/chunks/unified-memory-2Z2F446J.js +2 -0
  291. package/dist/cli/chunks/unified-memory-hnsw-A4EWYPJQ.js +2 -0
  292. package/dist/cli/chunks/unified-persistence-Z6N6JZFA.js +2 -0
  293. package/dist/cli/chunks/{upgrade-L7OTDKEK.js → upgrade-KDB5RGL7.js} +2 -2
  294. package/dist/cli/chunks/{validate-O3QVFIGP.js → validate-KMUV5FUA.js} +2 -2
  295. package/dist/cli/chunks/{validate-swarm-2UGBGLTX.js → validate-swarm-ANZWRCJU.js} +2 -2
  296. package/dist/cli/chunks/visual-security-GXYZV7KR.js +2 -0
  297. package/dist/cli/chunks/{web-tree-sitter-J75IYPRO.js → web-tree-sitter-SXXC4NMS.js} +2 -2
  298. package/dist/cli/chunks/{windsurf-installer-FQ5DBFCG.js → windsurf-installer-2LWSKMBU.js} +2 -2
  299. package/dist/cli/chunks/witness-chain-52PEIEGK.js +2 -0
  300. package/dist/cli/chunks/{witness-chain-I7TN4MXZ.js → witness-chain-JJMSJFZP.js} +2 -2
  301. package/dist/cli/chunks/{witness-chain-repair-D3NE3NQK.js → witness-chain-repair-OX7VFW6T.js} +2 -2
  302. package/dist/cli/chunks/{witness-chain-verifier-RU2WOP5M.js → witness-chain-verifier-QLSMXHAZ.js} +2 -2
  303. package/dist/cli/chunks/{witness-key-manager-IHQB2FR5.js → witness-key-manager-3DS4L7LE.js} +2 -2
  304. package/dist/cli/chunks/{workflow-6BWTNVV6.js → workflow-ARWAMHD3.js} +4 -4
  305. package/dist/cli/chunks/workflow-orchestrator-DORMQMG7.js +2 -0
  306. package/dist/cli/chunks/{wrappers-URVP25VU.js → wrappers-J6KGTUSJ.js} +2 -2
  307. package/dist/cli/commands/learning.js +3 -2
  308. package/dist/cli/commands/security.d.ts +16 -0
  309. package/dist/cli/commands/security.js +76 -9
  310. package/dist/cli/handlers/init-guard.d.ts +21 -1
  311. package/dist/cli/handlers/init-guard.js +51 -8
  312. package/dist/cli/handlers/init-handler.js +57 -56
  313. package/dist/cli/index.js +11 -0
  314. package/dist/cli/utils/ci-output.d.ts +5 -0
  315. package/dist/cli/utils/ci-output.js +8 -0
  316. package/dist/coordination/handlers/security-handlers.js +22 -6
  317. package/dist/coordination/protocols/defect-investigation.js +7 -1
  318. package/dist/coordination/protocols/security-audit.js +11 -0
  319. package/dist/coordination/result-saver.d.ts +9 -0
  320. package/dist/coordination/result-saver.js +34 -4
  321. package/dist/domains/coverage-analysis/collected-metrics.d.ts +2 -0
  322. package/dist/domains/coverage-analysis/collected-metrics.js +6 -0
  323. package/dist/domains/defect-intelligence/services/defect-predictor.js +9 -6
  324. package/dist/domains/quality-assessment/interfaces.d.ts +4 -0
  325. package/dist/domains/quality-assessment/quality-evidence.d.ts +1 -1
  326. package/dist/domains/quality-assessment/services/quality-analyzer.js +7 -5
  327. package/dist/domains/quality-assessment/services/quality-gate.js +12 -3
  328. package/dist/domains/security-compliance/dependency-advisory-engine.d.ts +52 -0
  329. package/dist/domains/security-compliance/dependency-advisory-engine.js +113 -0
  330. package/dist/domains/security-compliance/interfaces.d.ts +30 -0
  331. package/dist/domains/security-compliance/plugin.d.ts +7 -1
  332. package/dist/domains/security-compliance/plugin.js +19 -0
  333. package/dist/domains/security-compliance/services/scanners/dependency-resolver.d.ts +71 -0
  334. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +232 -0
  335. package/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts +21 -6
  336. package/dist/domains/security-compliance/services/scanners/dependency-scanner.js +142 -64
  337. package/dist/domains/security-compliance/services/scanners/lockfile-versions.d.ts +43 -0
  338. package/dist/domains/security-compliance/services/scanners/lockfile-versions.js +248 -0
  339. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +30 -2
  340. package/dist/domains/security-compliance/services/security-auditor.d.ts +19 -6
  341. package/dist/domains/security-compliance/services/security-auditor.js +133 -92
  342. package/dist/domains/test-execution/services/retry-handler.js +17 -6
  343. package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
  344. package/dist/domains/test-execution/services/test-executor.js +87 -7
  345. package/dist/kernel/shared-dirs.js +17 -5
  346. package/dist/mcp/bundle.js +874 -874
  347. package/dist/mcp/handlers/domain-handler-configs.d.ts +4 -0
  348. package/dist/mcp/handlers/domain-handler-configs.js +5 -1
  349. package/dist/mcp/protocol-server.js +2 -1
  350. package/dist/mcp/types.d.ts +6 -0
  351. package/dist/shared/security/index.d.ts +2 -2
  352. package/dist/shared/security/index.js +1 -1
  353. package/dist/shared/security/osv-client.d.ts +79 -132
  354. package/dist/shared/security/osv-client.js +344 -167
  355. package/dist/shared/security/osv-lookup.d.ts +124 -0
  356. package/dist/shared/security/osv-lookup.js +246 -0
  357. package/dist/shared/security/osv-types.d.ts +119 -0
  358. package/dist/shared/security/osv-types.js +6 -0
  359. package/dist/workers/interfaces.d.ts +6 -1
  360. package/dist/workers/namespaced-keys.d.ts +16 -0
  361. package/dist/workers/namespaced-keys.js +24 -0
  362. package/dist/workers/quality-daemon/persistent-memory.d.ts +1 -1
  363. package/dist/workers/quality-daemon/persistent-memory.js +2 -2
  364. package/dist/workers/worker-manager.js +5 -2
  365. package/dist/workers/workers/defect-predictor.d.ts +25 -8
  366. package/dist/workers/workers/defect-predictor.js +223 -216
  367. package/dist/workers/workers/performance-baseline.d.ts +24 -9
  368. package/dist/workers/workers/performance-baseline.js +187 -230
  369. package/dist/workers/workers/quality-gate.d.ts +11 -9
  370. package/dist/workers/workers/quality-gate.js +125 -267
  371. package/dist/workers/workers/security-scan-records.d.ts +111 -0
  372. package/dist/workers/workers/security-scan-records.js +128 -0
  373. package/dist/workers/workers/security-scan.d.ts +25 -7
  374. package/dist/workers/workers/security-scan.js +187 -164
  375. package/package.json +2 -2
  376. package/dist/cli/chunks/adapter-PP3XIXDV.js +0 -2
  377. package/dist/cli/chunks/aqe-learning-engine-VDUQJKKY.js +0 -2
  378. package/dist/cli/chunks/base-QSYWWPCE.js +0 -2
  379. package/dist/cli/chunks/browser-workflow-WXXPBSCM.js +0 -2
  380. package/dist/cli/chunks/chunk-45MVRQG4.js +0 -2
  381. package/dist/cli/chunks/chunk-5VZVMO7B.js +0 -3
  382. package/dist/cli/chunks/chunk-EECF4CMA.js +0 -2
  383. package/dist/cli/chunks/client-6XKSQ4JT.js +0 -2
  384. package/dist/cli/chunks/core-handlers-OJYW4Y6M.js +0 -2
  385. package/dist/cli/chunks/cross-domain-router-QVUPQ2SC.js +0 -2
  386. package/dist/cli/chunks/daemon-QBYTCIMH.js +0 -10
  387. package/dist/cli/chunks/dream-3UABDRZJ.js +0 -2
  388. package/dist/cli/chunks/file-discovery-ZFGZTKZ4.js +0 -2
  389. package/dist/cli/chunks/heartbeat-scheduler-MJ6MTPDF.js +0 -2
  390. package/dist/cli/chunks/hnsw-adapter-FQWJCFVW.js +0 -2
  391. package/dist/cli/chunks/hnsw-index-NJYKJUHC.js +0 -2
  392. package/dist/cli/chunks/hybrid-backend-SL7RFID7.js +0 -2
  393. package/dist/cli/chunks/impact-analyzer-5ZJTXPVC.js +0 -2
  394. package/dist/cli/chunks/init-handler-PCLYQUSB.js +0 -88
  395. package/dist/cli/chunks/init-wizard-MQMDSIOF.js +0 -2
  396. package/dist/cli/chunks/kernel-MEJ5GMRH.js +0 -2
  397. package/dist/cli/chunks/knowledge-graph-XUBZSEZE.js +0 -2
  398. package/dist/cli/chunks/llm-router-service-QZAPAEPX.js +0 -2
  399. package/dist/cli/chunks/load-test-OVXIQ3AF.js +0 -2
  400. package/dist/cli/chunks/memory-backend-TRPOMPK4.js +0 -2
  401. package/dist/cli/chunks/pattern-null-store-JWYBRBZG.js +0 -2
  402. package/dist/cli/chunks/project-root-VVSTHIP4.js +0 -2
  403. package/dist/cli/chunks/protocol-executor-PXZCLZD3.js +0 -2
  404. package/dist/cli/chunks/qe-reasoning-bank-42FRS5V3.js +0 -2
  405. package/dist/cli/chunks/queen-coordinator-UI3B7DI6.js +0 -2
  406. package/dist/cli/chunks/router-HYRPWLAY.js +0 -2
  407. package/dist/cli/chunks/routing-feedback-BPZ5R6F3.js +0 -2
  408. package/dist/cli/chunks/rvf-dual-writer-DEKDQ6KO.js +0 -2
  409. package/dist/cli/chunks/rvf-migration-adapter-L53VBS7I.js +0 -2
  410. package/dist/cli/chunks/rvf-native-adapter-I6RUGD2D.js +0 -2
  411. package/dist/cli/chunks/safe-db-KS65XDCP.js +0 -2
  412. package/dist/cli/chunks/schedule-KD2VN6GB.js +0 -2
  413. package/dist/cli/chunks/scheduler-ZH3RMUHY.js +0 -2
  414. package/dist/cli/chunks/security-PWQTGDRU.js +0 -13
  415. package/dist/cli/chunks/sqlite-persistence-6DTVME5D.js +0 -2
  416. package/dist/cli/chunks/unified-memory-FCX7NLFZ.js +0 -2
  417. package/dist/cli/chunks/unified-memory-hnsw-VU5QJK37.js +0 -2
  418. package/dist/cli/chunks/unified-persistence-FM376LGE.js +0 -2
  419. package/dist/cli/chunks/visual-security-EU7Y3X46.js +0 -2
  420. package/dist/cli/chunks/witness-chain-CSEBT52D.js +0 -2
  421. package/dist/cli/chunks/workflow-orchestrator-ALNKOM3N.js +0 -2
@@ -1,5 +1,5 @@
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.6");process.exit(0)}
2
- import{b as u}from"./chunk-7TJZDRDU.js";import{a as f,e as d}from"./chunk-KYVIOC3C.js";import"./chunk-7SAMMQVS.js";d();import{existsSync as i,mkdirSync as h,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;options;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.options=e,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf",{memoryBackend:this.options.memoryBackend}),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||h(o,{recursive:!0}),i(r)&&this.overwrite){let m=this.mergeExistingConfig(r,t.content);a(r,m)}else a(r,t.content);e.mcpConfigured=!0}let s=this.generator.generateBehavioralRules("windsurf"),n=p(this.projectRoot,s.path);if(e.rulesPath=n,!i(n)||this.overwrite){if(i(n)&&this.overwrite){let o=this.mergeExistingRules(n,s.content);a(n,o)}else a(n,s.content);e.rulesInstalled=!0}}catch(t){e.success=!1,e.errors.push(`Windsurf installation failed: ${f(t)}`)}return e}mergeExistingConfig(e,t){try{let r=JSON.parse(g(e,"utf-8")),s=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,s.mcpServers),JSON.stringify(r,null,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.7");process.exit(0)}
2
+ import{b as u}from"./chunk-VCA6YYII.js";import{a as f,e as d}from"./chunk-LVEX4GID.js";import"./chunk-HSDOOFV7.js";d();import{existsSync as i,mkdirSync as h,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;options;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.options=e,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf",{memoryBackend:this.options.memoryBackend}),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||h(o,{recursive:!0}),i(r)&&this.overwrite){let m=this.mergeExistingConfig(r,t.content);a(r,m)}else a(r,t.content);e.mcpConfigured=!0}let s=this.generator.generateBehavioralRules("windsurf"),n=p(this.projectRoot,s.path);if(e.rulesPath=n,!i(n)||this.overwrite){if(i(n)&&this.overwrite){let o=this.mergeExistingRules(n,s.content);a(n,o)}else a(n,s.content);e.rulesInstalled=!0}}catch(t){e.success=!1,e.errors.push(`Windsurf installation failed: ${f(t)}`)}return e}mergeExistingConfig(e,t){try{let r=JSON.parse(g(e,"utf-8")),s=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,s.mcpServers),JSON.stringify(r,null,2)+`
3
3
  `}catch{return t}}mergeExistingRules(e,t){try{let r=g(e,"utf-8");return r.includes("Agentic QE")||r.includes("fleet_init")?r:r.trimEnd()+`
4
4
 
5
5
  ---
@@ -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.7");process.exit(0)}
2
+ import{a as h,b as i,c as j,d as k}from"./chunk-XEWXYGJI.js";import"./chunk-634D2ENF.js";import{a,b,c,d,e,f,g}from"./chunk-J43DV3ME.js";import"./chunk-ZLVQSEZK.js";import"./chunk-LMEU64TR.js";import"./chunk-4G2VNW4C.js";import"./chunk-7EX4DEQR.js";import"./chunk-QNQSM2OG.js";import"./chunk-F62EKVVC.js";import"./chunk-HTWIGQL4.js";import"./chunk-ONVALAZN.js";import"./chunk-ZTMZFF25.js";import"./chunk-Q2T5FXEA.js";import"./chunk-RNYX4CPI.js";import"./chunk-WXI2STKQ.js";import"./chunk-VJRZFWR5.js";import"./chunk-JYXOFN3E.js";import"./chunk-KPOPBUUJ.js";import"./chunk-LVEX4GID.js";import"./chunk-LGBN7TKC.js";import"./chunk-5Q22XPTH.js";import"./chunk-ZUMDDMDE.js";import"./chunk-IARSGAG7.js";import"./chunk-JVYPXW6Y.js";import"./chunk-HSDOOFV7.js";export{g as CHAIN_REANCHOR_ACTION,a as GENESIS_PREV_HASH,h as WitnessChain,k as _resetWitnessChainForTests,j as createWitnessChain,i as getWitnessChain,d as hashWith,e as serializeEntry,b as sha256,c as shake256,f as signaturePayload};
@@ -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.6");process.exit(0)}
2
- import{a,b,c,d,e,f,g}from"./chunk-6R3FBFCJ.js";import"./chunk-45MVRQG4.js";import"./chunk-IEPWO4XP.js";import"./chunk-D5N2O5EH.js";import"./chunk-A7ANPS4E.js";import"./chunk-7SAMMQVS.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
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.7");process.exit(0)}
2
+ import{a,b,c,d,e,f,g}from"./chunk-6PKCQXEW.js";import"./chunk-VJRZFWR5.js";import"./chunk-JYXOFN3E.js";import"./chunk-KPOPBUUJ.js";import"./chunk-LGBN7TKC.js";import"./chunk-HSDOOFV7.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
@@ -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.6");process.exit(0)}
2
- import{a as E}from"./chunk-GFB6BZWU.js";import"./chunk-B7RHBKHL.js";import{b as R,c as b,e as A,h as y,k as C}from"./chunk-AUN4FG7V.js";import"./chunk-YNG7E26C.js";import"./chunk-X2DR27AY.js";import"./chunk-22OZIJAD.js";import"./chunk-DQNUPEY5.js";import"./chunk-LZWJ5BMP.js";import"./chunk-RUTO67PT.js";import"./chunk-K55EAWZ5.js";import"./chunk-5LST62QR.js";import"./chunk-XBFQJZWX.js";import"./chunk-F7A2UBZO.js";import"./chunk-5MT7DMD7.js";import"./chunk-HEGGV2PT.js";import"./chunk-45MVRQG4.js";import"./chunk-IEPWO4XP.js";import"./chunk-D5N2O5EH.js";import"./chunk-KYVIOC3C.js";import"./chunk-A7ANPS4E.js";import"./chunk-TVLOED6O.js";import"./chunk-5VZVMO7B.js";import{a as g,b as _}from"./chunk-AJT3XDRD.js";import"./chunk-FOJRPEIP.js";import"./chunk-7SAMMQVS.js";_();import{existsSync as v}from"node:fs";import{basename as I}from"node:path";var w={includeArchive:!0};function l(e){let r=n=>C(e,n)?e.prepare(`SELECT COUNT(*) AS n FROM ${n}`).get().n:0;return{live:r("witness_chain"),archive:r("witness_chain_archive")}}function O(e){return{status:e.status,entriesChecked:e.entriesChecked,forks:e.forks.length,unacknowledgedForks:e.forks.length-e.acknowledgedForks.length,...e.tamperedAt!==void 0?{tamperedAt:e.tamperedAt}:{},...e.tamperReason?{tamperReason:e.tamperReason}:{}}}function $(e){return e.forkDetails.filter(r=>!r.acknowledged).map(({id:r,parentId:n,prevHash:s,actionHash:c})=>({id:r,parentId:n,prevHash:s,actionHash:c}))}function x(e,r){let n=new Set,s=e.prepare("SELECT prev_hash FROM witness_chain UNION ALL SELECT prev_hash FROM witness_chain_archive").pluck().iterate();for(let t of s)n.add(t);let c=[],a=new Set;for(let t of["witness_chain","witness_chain_archive"]){let f=e.prepare(`SELECT * FROM ${t} ORDER BY id ASC`).iterate();for(let o of f){if(o.id===r||a.has(o.id))continue;a.add(o.id);let i=A(o);!n.has(b(i))&&!n.has(R(i))&&c.push({id:o.id,hash:y(o)})}}return c.sort((t,f)=>t.id-f.id)}function S(e){return`Refusing to repair: tampering detected at id=${e.tamperedAt} (${e.tamperReason}). Only accidental forks can be re-anchored; restore from a backup and investigate.`}function M(e){let r=`${e}.bak-${Math.floor(Date.now()/1e3)}`;if(!v(r))return r;let n=1;for(;v(`${r}-${n}`);)n++;return`${r}-${n}`}function W(e,r){let n=M(e),s=g(e,{readonly:!0,fileMustExist:!0});try{s.prepare("VACUUM INTO ?").run(n)}finally{s.close()}let c=g(n,{readonly:!0,fileMustExist:!0});try{let a=c.pragma("integrity_check",{simple:!0});if(a!=="ok")throw new Error(`backup integrity_check failed: ${String(a)}`);let t=l(c);if(t.live!==r.live||t.archive!==r.archive)throw new Error(`backup holds ${JSON.stringify(t)} witness rows, expected ${JSON.stringify(r)}`)}finally{c.close()}return n}async function L(e,r){let n=r.dryRun===!0,s=new E(e,r.keyManager??void 0);await s.initialize();let c=l(e),a=s.verify(w),t={dryRun:n,before:O(a),rowsBefore:c,rowsAfter:c};if(a.tampered)return{...t,action:"refused",message:S(a),forksAcknowledged:[]};let f=$(a);if(f.length===0){let d=a.forks.length>0?`Nothing to repair: all ${a.forks.length} fork(s) are already re-anchored.`:"Nothing to repair: the audit chain has no forks.";return{...t,action:"none",message:d,forksAcknowledged:[]}}if(n)return{...t,action:"would-reanchor",forksAcknowledged:f.map(d=>d.id),message:`Dry run: would back up the database and append a CHAIN_REANCHOR entry acknowledging ${f.length} fork(s). Nothing was written.`};let o,i=e.transaction(()=>{let d=l(e),p=s.verify(w);if(p.tampered)return{kind:"refused",check:p};let h=$(p);if(h.length===0)return{kind:"noop"};o=W(r.dbPath,d);let m=e.prepare("SELECT * FROM witness_chain ORDER BY id DESC LIMIT 1").get(),T=s.append("CHAIN_REANCHOR",{reason:"fork-repair",issue:"https://github.com/proffesor-for-testing/agentic-qe/issues/753",note:"Acknowledges accidental forks from pre-3.14.5 concurrent appends; no rows were changed.",forkCount:h.length,forks:h,pins:x(e,m.id),verifiedTipId:m.id,verifiedTipHash:y(m),entriesChecked:p.entriesChecked,rows:d,backup:I(o)},r.actor??"aqe-audit-repair"),k=l(e);if(k.live!==d.live+1||k.archive!==d.archive)throw new Error(`row-count check failed: before ${JSON.stringify(d)}, after ${JSON.stringify(k)}`);return{kind:"reanchored",entry:T,forks:h,txAfter:k}}).immediate();if(i.kind==="refused")return{...t,action:"refused",message:S(i.check),forksAcknowledged:[]};if(i.kind==="noop")return{...t,action:"none",message:"Nothing to repair (another process re-anchored first).",forksAcknowledged:[]};let u=s.verify(w),N=u.valid&&!u.tampered;return{...t,action:"reanchored",after:O(u),rowsAfter:i.txAfter,forksAcknowledged:i.forks.map(d=>d.id),reanchorId:i.entry.id,backupPath:o,message:N?`Re-anchored ${i.forks.length} fork(s) with CHAIN_REANCHOR id=${i.entry.id}; chain now ${u.status}. Backup: ${o}`:`Appended CHAIN_REANCHOR id=${i.entry.id}, but the chain still verifies as ${u.status}. Backup: ${o}`}}export{L as repairWitnessChainForks};
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.7");process.exit(0)}
2
+ import{a as E}from"./chunk-XEWXYGJI.js";import"./chunk-634D2ENF.js";import{b as R,c as b,e as A,h as y,k as C}from"./chunk-J43DV3ME.js";import"./chunk-ZLVQSEZK.js";import"./chunk-LMEU64TR.js";import"./chunk-4G2VNW4C.js";import"./chunk-7EX4DEQR.js";import"./chunk-QNQSM2OG.js";import"./chunk-F62EKVVC.js";import"./chunk-HTWIGQL4.js";import"./chunk-ONVALAZN.js";import"./chunk-ZTMZFF25.js";import"./chunk-Q2T5FXEA.js";import"./chunk-RNYX4CPI.js";import"./chunk-WXI2STKQ.js";import"./chunk-VJRZFWR5.js";import"./chunk-JYXOFN3E.js";import"./chunk-KPOPBUUJ.js";import"./chunk-LVEX4GID.js";import"./chunk-LGBN7TKC.js";import"./chunk-5Q22XPTH.js";import"./chunk-ZUMDDMDE.js";import{a as g,b as _}from"./chunk-IARSGAG7.js";import"./chunk-JVYPXW6Y.js";import"./chunk-HSDOOFV7.js";_();import{existsSync as v}from"node:fs";import{basename as I}from"node:path";var w={includeArchive:!0};function l(e){let r=n=>C(e,n)?e.prepare(`SELECT COUNT(*) AS n FROM ${n}`).get().n:0;return{live:r("witness_chain"),archive:r("witness_chain_archive")}}function O(e){return{status:e.status,entriesChecked:e.entriesChecked,forks:e.forks.length,unacknowledgedForks:e.forks.length-e.acknowledgedForks.length,...e.tamperedAt!==void 0?{tamperedAt:e.tamperedAt}:{},...e.tamperReason?{tamperReason:e.tamperReason}:{}}}function $(e){return e.forkDetails.filter(r=>!r.acknowledged).map(({id:r,parentId:n,prevHash:s,actionHash:c})=>({id:r,parentId:n,prevHash:s,actionHash:c}))}function x(e,r){let n=new Set,s=e.prepare("SELECT prev_hash FROM witness_chain UNION ALL SELECT prev_hash FROM witness_chain_archive").pluck().iterate();for(let t of s)n.add(t);let c=[],a=new Set;for(let t of["witness_chain","witness_chain_archive"]){let f=e.prepare(`SELECT * FROM ${t} ORDER BY id ASC`).iterate();for(let o of f){if(o.id===r||a.has(o.id))continue;a.add(o.id);let i=A(o);!n.has(b(i))&&!n.has(R(i))&&c.push({id:o.id,hash:y(o)})}}return c.sort((t,f)=>t.id-f.id)}function S(e){return`Refusing to repair: tampering detected at id=${e.tamperedAt} (${e.tamperReason}). Only accidental forks can be re-anchored; restore from a backup and investigate.`}function M(e){let r=`${e}.bak-${Math.floor(Date.now()/1e3)}`;if(!v(r))return r;let n=1;for(;v(`${r}-${n}`);)n++;return`${r}-${n}`}function W(e,r){let n=M(e),s=g(e,{readonly:!0,fileMustExist:!0});try{s.prepare("VACUUM INTO ?").run(n)}finally{s.close()}let c=g(n,{readonly:!0,fileMustExist:!0});try{let a=c.pragma("integrity_check",{simple:!0});if(a!=="ok")throw new Error(`backup integrity_check failed: ${String(a)}`);let t=l(c);if(t.live!==r.live||t.archive!==r.archive)throw new Error(`backup holds ${JSON.stringify(t)} witness rows, expected ${JSON.stringify(r)}`)}finally{c.close()}return n}async function L(e,r){let n=r.dryRun===!0,s=new E(e,r.keyManager??void 0);await s.initialize();let c=l(e),a=s.verify(w),t={dryRun:n,before:O(a),rowsBefore:c,rowsAfter:c};if(a.tampered)return{...t,action:"refused",message:S(a),forksAcknowledged:[]};let f=$(a);if(f.length===0){let d=a.forks.length>0?`Nothing to repair: all ${a.forks.length} fork(s) are already re-anchored.`:"Nothing to repair: the audit chain has no forks.";return{...t,action:"none",message:d,forksAcknowledged:[]}}if(n)return{...t,action:"would-reanchor",forksAcknowledged:f.map(d=>d.id),message:`Dry run: would back up the database and append a CHAIN_REANCHOR entry acknowledging ${f.length} fork(s). Nothing was written.`};let o,i=e.transaction(()=>{let d=l(e),p=s.verify(w);if(p.tampered)return{kind:"refused",check:p};let h=$(p);if(h.length===0)return{kind:"noop"};o=W(r.dbPath,d);let m=e.prepare("SELECT * FROM witness_chain ORDER BY id DESC LIMIT 1").get(),T=s.append("CHAIN_REANCHOR",{reason:"fork-repair",issue:"https://github.com/proffesor-for-testing/agentic-qe/issues/753",note:"Acknowledges accidental forks from pre-3.14.5 concurrent appends; no rows were changed.",forkCount:h.length,forks:h,pins:x(e,m.id),verifiedTipId:m.id,verifiedTipHash:y(m),entriesChecked:p.entriesChecked,rows:d,backup:I(o)},r.actor??"aqe-audit-repair"),k=l(e);if(k.live!==d.live+1||k.archive!==d.archive)throw new Error(`row-count check failed: before ${JSON.stringify(d)}, after ${JSON.stringify(k)}`);return{kind:"reanchored",entry:T,forks:h,txAfter:k}}).immediate();if(i.kind==="refused")return{...t,action:"refused",message:S(i.check),forksAcknowledged:[]};if(i.kind==="noop")return{...t,action:"none",message:"Nothing to repair (another process re-anchored first).",forksAcknowledged:[]};let u=s.verify(w),N=u.valid&&!u.tampered;return{...t,action:"reanchored",after:O(u),rowsAfter:i.txAfter,forksAcknowledged:i.forks.map(d=>d.id),reanchorId:i.entry.id,backupPath:o,message:N?`Re-anchored ${i.forks.length} fork(s) with CHAIN_REANCHOR id=${i.entry.id}; chain now ${u.status}. Backup: ${o}`:`Appended CHAIN_REANCHOR id=${i.entry.id}, but the chain still verifies as ${u.status}. Backup: ${o}`}}export{L as repairWitnessChainForks};
@@ -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.6");process.exit(0)}
2
- import{g as a,h as b,i as c,j as d,k as e}from"./chunk-AUN4FG7V.js";import"./chunk-7SAMMQVS.js";export{a as CHAIN_REANCHOR_ACTION,c as WitnessChainVerifier,b as ownHash,e as tableExists,d as verifyWitnessChain};
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.7");process.exit(0)}
2
+ import{g as a,h as b,i as c,j as d,k as e}from"./chunk-J43DV3ME.js";import"./chunk-HSDOOFV7.js";export{a as CHAIN_REANCHOR_ACTION,c as WitnessChainVerifier,b as ownHash,e as tableExists,d as verifyWitnessChain};
@@ -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.6");process.exit(0)}
2
- import{a,b,c}from"./chunk-B7RHBKHL.js";import"./chunk-TVLOED6O.js";import"./chunk-5VZVMO7B.js";import"./chunk-7SAMMQVS.js";export{a as WitnessKeyManager,c as _resetDefaultWitnessKeyManagerForTests,b as getDefaultWitnessKeyManager};
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.7");process.exit(0)}
2
+ import{a,b,c}from"./chunk-634D2ENF.js";import"./chunk-5Q22XPTH.js";import"./chunk-ZUMDDMDE.js";import"./chunk-HSDOOFV7.js";export{a as WitnessKeyManager,c as _resetDefaultWitnessKeyManagerForTests,b as getDefaultWitnessKeyManager};
@@ -1,5 +1,5 @@
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.6");process.exit(0)}
2
- import"./chunk-ELI4GDQO.js";import{b as $}from"./chunk-RD5BYLN7.js";import{a as k,b as W,c as b,g as C}from"./chunk-KCB6P463.js";import"./chunk-RLB7K7QP.js";import{c as v}from"./chunk-22OZIJAD.js";import"./chunk-QLKUCMZC.js";import"./chunk-KYVIOC3C.js";import"./chunk-7SAMMQVS.js";import{Command as D}from"commander";import o from"chalk";function O(f,i){let h=f.indexOf("=");return h>0&&(i[f.substring(0,h)]=f.substring(h+1)),i}function V(f,i,h){let m=new D("workflow").description("Manage QE workflows and pipelines (ADR-041)");return m.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(n,t)=>{if(!await h())return;let c=(await import("path")).resolve(n);try{console.log(o.blue(`
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.7");process.exit(0)}
2
+ import{b as $}from"./chunk-BTYKGVJ5.js";import"./chunk-UY3REQOK.js";import{a as k,b as W,c as b,g as C}from"./chunk-7UCVYYWL.js";import"./chunk-AAA4SHEG.js";import{c as v}from"./chunk-4G2VNW4C.js";import"./chunk-CG5DZCOZ.js";import"./chunk-LVEX4GID.js";import"./chunk-HSDOOFV7.js";import{Command as D}from"commander";import o from"chalk";function O(f,i){let h=f.indexOf("=");return h>0&&(i[f.substring(0,h)]=f.substring(h+1)),i}function V(f,i,h){let m=new D("workflow").description("Manage QE workflows and pipelines (ADR-041)");return m.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(n,t)=>{if(!await h())return;let c=(await import("path")).resolve(n);try{console.log(o.blue(`
3
3
  Running workflow from: ${n}
4
4
  `));let l=k(c);if(!l.success||!l.workflow){console.log(o.red("Failed to parse pipeline:"));for(let d of l.errors)console.log(o.red(` ${d}`));await i(1)}let u={...v(t.params,"params")};if(l.pipeline){for(let d of l.pipeline.stages)if(d.params)for(let[y,p]of Object.entries(d.params))u[y]=p}if(!f.workflowOrchestrator.getWorkflow(l.workflow.id)){let d=f.workflowOrchestrator.registerWorkflow(l.workflow);d.success||(console.log(o.red(`Failed to register workflow: ${d.error.message}`)),await i(1))}let g=await f.workflowOrchestrator.executeWorkflow(l.workflow.id,u);if(!g.success){console.log(o.red(`Failed to start workflow: ${g.error.message}`)),await i(1);return}let a=g.value;if(console.log(o.cyan(` Execution ID: ${a}`)),console.log(o.gray(` Workflow: ${l.workflow.name}`)),console.log(o.gray(` Stages: ${l.workflow.steps.length}`)),console.log(""),t.watch){console.log(o.blue(`Workflow Progress:
5
5
  `));let d,y=Date.now();for(;;){let w=f.workflowOrchestrator.getWorkflowStatus(a);if(!w)break;if(!d||d.progress!==w.progress||d.status!==w.status||JSON.stringify(d.currentSteps)!==JSON.stringify(w.currentSteps)){process.stdout.write("\r\x1B[K");let S="\u2588".repeat(Math.floor(w.progress/5))+"\u2591".repeat(20-Math.floor(w.progress/5)),R=w.status==="completed"?o.green:w.status==="failed"?o.red:w.status==="running"?o.yellow:o.gray;console.log(` [${S}] ${w.progress}% - ${R(w.status)}`),w.currentSteps.length>0&&t.verbose&&console.log(o.gray(` Running: ${w.currentSteps.join(", ")}`)),d=w}if(w.status==="completed"||w.status==="failed"||w.status==="cancelled")break;await new Promise(S=>setTimeout(S,500))}let p=f.workflowOrchestrator.getWorkflowStatus(a);if(p){console.log("");let w=p.duration||Date.now()-y;p.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(w)}`)),console.log(o.gray(` Completed: ${p.completedSteps.length} stages`)),p.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${p.skippedSteps.length} stages`))):p.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${p.error}`)),console.log(o.gray(` Failed stages: ${p.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${p.status}`))}console.log(""),await i(p?.status==="completed"?0:1);return}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${a}' to check progress`));console.log(""),await i(0)}catch(l){console.error(o.red(`
@@ -35,10 +35,10 @@ Workflow cancelled: ${n}
35
35
  `)):console.log(o.red(`
36
36
  Failed to cancel workflow: ${t.error.message}
37
37
  `)),await i(t.success?0:1)}catch(t){console.error(o.red(`
38
- Failed to cancel workflow:`),t),await i(1)}}),m.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:n}=await import("./browser-workflow-WXXPBSCM.js"),e=await new n().invoke({});if(e.success&&e.data){console.log(o.blue(`
38
+ Failed to cancel workflow:`),t),await i(1)}}),m.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:n}=await import("./browser-workflow-ITPX72RX.js"),e=await new n().invoke({});if(e.success&&e.data){console.log(o.blue(`
39
39
  Browser Workflow Templates:
40
40
  `));for(let c of e.data.availableTemplates)console.log(` ${o.cyan(c)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await i(0)}catch(n){console.error(o.red(`
41
- Failed:`),n),await i(1)}}),m.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",O,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(n,t)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-WXXPBSCM.js"),{writeOutput:c,toJSON:l}=await import("./ci-output-E45OGVPR.js"),s=new e,u={variables:t.var||{}};if(t.yaml)u.workflowYaml=t.yaml;else if(n)if(n.endsWith(".yaml")||n.endsWith(".yml")){let g=await import("fs"),d=(await import("path")).resolve(n);g.existsSync(d)||(console.log(o.red(`
41
+ Failed:`),n),await i(1)}}),m.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",O,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(n,t)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-ITPX72RX.js"),{writeOutput:c,toJSON:l}=await import("./ci-output-BJQVXX5E.js"),s=new e,u={variables:t.var||{}};if(t.yaml)u.workflowYaml=t.yaml;else if(n)if(n.endsWith(".yaml")||n.endsWith(".yml")){let g=await import("fs"),d=(await import("path")).resolve(n);g.existsSync(d)||(console.log(o.red(`
42
42
  File not found: ${d}
43
43
  `)),await i(1)),u.workflowYaml=g.readFileSync(d,"utf-8")}else u.templateName=n;else console.log(o.red(`
44
44
  Provide a template name or --yaml. Use "workflow browser-list" to see templates.
@@ -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.7");process.exit(0)}
2
+ import{a,b,d as c,e as d}from"./chunk-QWLTHFZW.js";import"./chunk-MHZPC4HJ.js";import"./chunk-ZLVQSEZK.js";import"./chunk-LMEU64TR.js";import"./chunk-4G2VNW4C.js";import"./chunk-7EX4DEQR.js";import"./chunk-QNQSM2OG.js";import"./chunk-F62EKVVC.js";import"./chunk-HTWIGQL4.js";import"./chunk-ONVALAZN.js";import"./chunk-ZTMZFF25.js";import"./chunk-Q2T5FXEA.js";import"./chunk-RNYX4CPI.js";import"./chunk-FTTFJ7SJ.js";import"./chunk-CG5DZCOZ.js";import"./chunk-WXI2STKQ.js";import"./chunk-VJRZFWR5.js";import"./chunk-JYXOFN3E.js";import"./chunk-KPOPBUUJ.js";import"./chunk-LVEX4GID.js";import"./chunk-LGBN7TKC.js";import"./chunk-5Q22XPTH.js";import"./chunk-ZUMDDMDE.js";import"./chunk-IARSGAG7.js";import"./chunk-JVYPXW6Y.js";import"./chunk-HSDOOFV7.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
@@ -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.6");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-7VTKR44N.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-ZL5LJT7D.js";import"./chunk-YNG7E26C.js";import"./chunk-X2DR27AY.js";import"./chunk-22OZIJAD.js";import"./chunk-DQNUPEY5.js";import"./chunk-LZWJ5BMP.js";import"./chunk-RUTO67PT.js";import"./chunk-K55EAWZ5.js";import"./chunk-5LST62QR.js";import"./chunk-XBFQJZWX.js";import"./chunk-F7A2UBZO.js";import"./chunk-5MT7DMD7.js";import"./chunk-HEGGV2PT.js";import"./chunk-45MVRQG4.js";import"./chunk-IEPWO4XP.js";import"./chunk-D5N2O5EH.js";import"./chunk-KYVIOC3C.js";import"./chunk-A7ANPS4E.js";import"./chunk-TVLOED6O.js";import"./chunk-5VZVMO7B.js";import"./chunk-AJT3XDRD.js";import"./chunk-FOJRPEIP.js";import"./chunk-7SAMMQVS.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
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.7");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-JPHDMHFG.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-MKFQNCXI.js";import"./chunk-ZLVQSEZK.js";import"./chunk-LMEU64TR.js";import"./chunk-4G2VNW4C.js";import"./chunk-7EX4DEQR.js";import"./chunk-QNQSM2OG.js";import"./chunk-F62EKVVC.js";import"./chunk-HTWIGQL4.js";import"./chunk-ONVALAZN.js";import"./chunk-ZTMZFF25.js";import"./chunk-Q2T5FXEA.js";import"./chunk-RNYX4CPI.js";import"./chunk-WXI2STKQ.js";import"./chunk-VJRZFWR5.js";import"./chunk-JYXOFN3E.js";import"./chunk-KPOPBUUJ.js";import"./chunk-LVEX4GID.js";import"./chunk-LGBN7TKC.js";import"./chunk-5Q22XPTH.js";import"./chunk-ZUMDDMDE.js";import"./chunk-IARSGAG7.js";import"./chunk-JVYPXW6Y.js";import"./chunk-HSDOOFV7.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
@@ -12,6 +12,7 @@
12
12
  import { Command } from 'commander';
13
13
  import chalk from 'chalk';
14
14
  import path from 'node:path';
15
+ import { randomUUID } from 'node:crypto';
15
16
  import { findProjectRoot } from '../../kernel/unified-memory.js';
16
17
  import { existsSync, writeFileSync, readFileSync, copyFileSync, renameSync } from 'node:fs';
17
18
  import { safeJsonParse } from '../../shared/safe-json.js';
@@ -737,8 +738,8 @@ function registerBackupCommand(learning) {
737
738
  const dbPath = getDbPath();
738
739
  if (!existsSync(dbPath))
739
740
  throw new Error(`No learning database found at: ${dbPath}`);
740
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
741
- const defaultOutput = path.join(process.cwd(), 'backups', `learning-${timestamp}.db`);
741
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 23);
742
+ const defaultOutput = path.join(process.cwd(), 'backups', `learning-${timestamp}-${randomUUID()}.db`);
742
743
  const outputPath = options.output ? path.resolve(options.output) : defaultOutput;
743
744
  const snapshot = await backupLearningDatabase(dbPath, outputPath, options);
744
745
  const { backupPath: finalPath, sourceSizeKB, backupSizeKB: finalSizeKB, schemaVersion } = snapshot;
@@ -5,5 +5,21 @@
5
5
  */
6
6
  import { Command } from 'commander';
7
7
  import type { CLIContext } from '../handlers/interfaces.js';
8
+ import { type SecurityScanResult } from '../utils/ci-output.js';
9
+ /** Name of the CLI check for the OSV dependency advisory scan (#1049). */
10
+ export declare const DEPENDENCY_CHECK = "Dependency advisories";
11
+ /** #1049: dependency advisories could not be checked; the dependency result is UNMEASURED (same code as coverage/quality). */
12
+ export declare const EXIT_DEPENDENCIES_UNMEASURED = 3;
13
+ /**
14
+ * `aqe security` exit contract:
15
+ * 0 = every requested check completed, no medium+ findings
16
+ * 1 = high/critical findings, non-compliance, or a non-dependency check incomplete/failed
17
+ * 2 = medium findings only, every requested check complete
18
+ * 3 = dependency advisories could not be checked (failed or partial OSV lookup) and
19
+ * there are no high/critical findings, non-compliance or other incomplete checks:
20
+ * UNMEASURED, never a clean exit (#1049). Medium findings plus an incomplete
21
+ * dependency scan also exit 3: the result is unmeasured, not a medium-only verdict.
22
+ */
23
+ export declare function securityExitCode(result: SecurityScanResult): number;
8
24
  export declare function createSecurityCommand(context: CLIContext, cleanupAndExit: (code: number) => Promise<never>, ensureInitialized: () => Promise<boolean>): Command;
9
25
  //# sourceMappingURL=security.d.ts.map
@@ -8,17 +8,57 @@ import chalk from 'chalk';
8
8
  import { discoverSecurityFiles } from '../../domains/security-compliance/scan-discovery.js';
9
9
  import { FilePath } from '../../shared/value-objects/index.js';
10
10
  import { writeOutput, toJSON, toSARIF, securityToMarkdown } from '../utils/ci-output.js';
11
+ import { runDependencyAdvisoryScan } from '../../domains/security-compliance/dependency-advisory-engine.js';
12
+ import { resolve as resolvePath } from 'node:path';
13
+ /** Name of the CLI check for the OSV dependency advisory scan (#1049). */
14
+ export const DEPENDENCY_CHECK = 'Dependency advisories';
15
+ /** #1049: dependency advisories could not be checked; the dependency result is UNMEASURED (same code as coverage/quality). */
16
+ export const EXIT_DEPENDENCIES_UNMEASURED = 3;
17
+ /**
18
+ * `aqe security` exit contract:
19
+ * 0 = every requested check completed, no medium+ findings
20
+ * 1 = high/critical findings, non-compliance, or a non-dependency check incomplete/failed
21
+ * 2 = medium findings only, every requested check complete
22
+ * 3 = dependency advisories could not be checked (failed or partial OSV lookup) and
23
+ * there are no high/critical findings, non-compliance or other incomplete checks:
24
+ * UNMEASURED, never a clean exit (#1049). Medium findings plus an incomplete
25
+ * dependency scan also exit 3: the result is unmeasured, not a medium-only verdict.
26
+ */
27
+ export function securityExitCode(result) {
28
+ const checks = result.checks ?? [];
29
+ const highOrCritical = result.vulnerabilities.some(v => v.severity === 'high' || v.severity === 'critical');
30
+ const nonCompliant = result.compliance?.compliant === false;
31
+ if (result.status !== 'complete' || nonCompliant) {
32
+ const dependencyUnmeasured = checks.some(check => check.name === DEPENDENCY_CHECK && check.status !== 'complete');
33
+ const otherIncomplete = checks.some(check => check.name !== DEPENDENCY_CHECK && check.status !== 'complete');
34
+ if (dependencyUnmeasured && !otherIncomplete && !nonCompliant && !highOrCritical)
35
+ return EXIT_DEPENDENCIES_UNMEASURED;
36
+ return 1;
37
+ }
38
+ if (highOrCritical)
39
+ return 1;
40
+ if (result.vulnerabilities.some(v => v.severity === 'medium'))
41
+ return 2;
42
+ return 0;
43
+ }
11
44
  export function createSecurityCommand(context, cleanupAndExit, ensureInitialized) {
12
45
  const securityCmd = new Command('security')
13
46
  .description('Security scanning and URL validation')
14
47
  .option('--sast', 'Run SAST scan')
15
48
  .option('--dast', 'Run DAST scan')
49
+ .option('--dependencies', 'Check package.json dependencies against OSV advisories (sends package names and versions to the OSV API)')
16
50
  .option('--compliance <frameworks>', 'Check compliance (gdpr,hipaa,soc2)', '')
17
51
  .option('--url-validate <url>', 'Validate a URL for security threats and PII exposure')
18
52
  .option('--no-pii', 'Disable PII scanning when using --url-validate')
19
53
  .option('-t, --target <path>', 'Target directory to scan', '.')
20
54
  .option('-F, --format <format>', 'Output format (text|json|sarif|markdown)', 'text')
21
55
  .option('-o, --output <path>', 'Write output to file')
56
+ .addHelpText('after', `
57
+ Exit codes:
58
+ 0 every requested check completed; no medium or higher findings
59
+ 1 high/critical findings, non-compliance, or a check failed / is incomplete
60
+ 2 medium findings only
61
+ ${EXIT_DEPENDENCIES_UNMEASURED} UNMEASURED: dependency advisories could not be checked (OSV unreachable, rate limited, or partial)`)
22
62
  .action(async (options) => {
23
63
  if (!await ensureInitialized())
24
64
  return;
@@ -86,13 +126,13 @@ export function createSecurityCommand(context, cleanupAndExit, ensureInitialized
86
126
  return; // Don't fall through to SAST/DAST path
87
127
  }
88
128
  const format = options.format;
89
- const runSAST = options.sast || (!options.dast && !options.compliance);
129
+ const runSAST = options.sast || (!options.dast && !options.compliance && !options.dependencies);
90
130
  const frameworks = options.compliance
91
131
  ? options.compliance.split(',').map((value) => value.trim()).filter(Boolean)
92
132
  : [];
93
133
  const scanResult = {
94
134
  vulnerabilities: [], target: options.target,
95
- scanType: [runSAST && 'SAST', options.dast && 'DAST', frameworks.length > 0 && 'Compliance'].filter(Boolean).join('+'),
135
+ scanType: [runSAST && 'SAST', options.dast && 'DAST', options.dependencies && 'Dependencies', frameworks.length > 0 && 'Compliance'].filter(Boolean).join('+'),
96
136
  checks: [], status: 'not-run',
97
137
  };
98
138
  const checks = scanResult.checks;
@@ -133,6 +173,18 @@ export function createSecurityCommand(context, cleanupAndExit, ensureInitialized
133
173
  checks.push({ name: 'Source discovery', status: discovery.status, reason: 'Requested source discovery did not complete; inspect discovery issues.' });
134
174
  }
135
175
  }
176
+ if (options.dependencies) {
177
+ // #1049: a failed or partial OSV lookup is reported, never a clean dependency scan.
178
+ const outcome = await runDependencyAdvisoryScan({ scanPackageJson: (manifest) => securityAPI.runDependencyScan(manifest) }, resolvePath(options.target));
179
+ scanResult.dependencyScan = outcome.report;
180
+ scanResult.vulnerabilities.push(...outcome.vulnerabilities.map(formatVulnerability));
181
+ const status = outcome.report.status;
182
+ checks.push({
183
+ name: DEPENDENCY_CHECK,
184
+ status: status === 'complete' ? 'complete' : status === 'incomplete' ? 'partial' : status === 'failed' ? 'failed' : 'not-run',
185
+ ...(status !== 'complete' ? { reason: outcome.report.message } : {}),
186
+ });
187
+ }
136
188
  if (frameworks.length > 0) {
137
189
  const issues = [];
138
190
  let compliant = true;
@@ -189,13 +241,7 @@ export function createSecurityCommand(context, cleanupAndExit, ensureInitialized
189
241
  return cleanupAndExit(1);
190
242
  }
191
243
  // Incomplete execution never has a clean exit, even if it found no vulnerabilities.
192
- if (scanResult.status !== 'complete' || scanResult.compliance?.compliant === false)
193
- return cleanupAndExit(1);
194
- if (scanResult.vulnerabilities.some(v => v.severity === 'high' || v.severity === 'critical'))
195
- return cleanupAndExit(1);
196
- if (scanResult.vulnerabilities.some(v => v.severity === 'medium'))
197
- return cleanupAndExit(2);
198
- return cleanupAndExit(0);
244
+ return cleanupAndExit(securityExitCode(scanResult));
199
245
  });
200
246
  return securityCmd;
201
247
  }
@@ -227,6 +273,7 @@ function formatVulnerability(value) {
227
273
  severity: value.severity, type: value.title || value.category,
228
274
  file: value.location.file, line: value.location.line ?? 1,
229
275
  message: value.description,
276
+ ...(value.cveId ? { cveId: value.cveId } : {}),
230
277
  };
231
278
  }
232
279
  return value;
@@ -265,6 +312,26 @@ function printSecurityResult(result) {
265
312
  ...(result.evidence?.files.filter(file => file.status !== 'analyzed' && file.status !== 'excluded').map(file => `${file.path}: ${file.status}${file.reason ? ` (${file.reason})` : ''}`) ?? []),
266
313
  ...(result.discovery?.issues.map(issue => `${issue.path}: ${issue.reason}`) ?? []),
267
314
  ];
315
+ if (result.dependencyScan && result.dependencyScan.status !== 'complete') {
316
+ const unchecked = result.dependencyScan.uncheckedPackages;
317
+ console.log(chalk.yellow(` ${result.dependencyScan.message}`));
318
+ for (const pkg of unchecked.slice(0, 10)) {
319
+ const where = `${pkg.member ? `${pkg.member}: ` : ''}${pkg.name}@${pkg.version}${pkg.lockedVersion ? ` (lockfile ${pkg.lockedVersion})` : ''}`;
320
+ console.log(chalk.yellow(` not checked: ${where} (${pkg.reason})`));
321
+ }
322
+ if (unchecked.length > 10)
323
+ console.log(chalk.yellow(` ... and ${unchecked.length - 10} more unchecked package(s)`));
324
+ }
325
+ else if (result.dependencyScan) {
326
+ console.log(` ${result.dependencyScan.message}`);
327
+ }
328
+ if (result.dependencyScan?.localPackages.length) {
329
+ const local = result.dependencyScan.localPackages;
330
+ console.log(` Local packages (not OSV subjects, excluded): ${local.slice(0, 10).map(p => `${p.member ? `${p.member}: ` : ''}${p.name}`).join(', ')}${local.length > 10 ? ` ... and ${local.length - 10} more` : ''}`);
331
+ }
332
+ for (const problem of result.dependencyScan?.resolutionErrors ?? []) {
333
+ console.log(chalk.yellow(` incomplete: ${problem}`));
334
+ }
268
335
  for (const limitation of limitations.slice(0, 10))
269
336
  console.log(chalk.yellow(` ${limitation}`));
270
337
  if (limitations.length > 10)
@@ -8,6 +8,26 @@
8
8
  *
9
9
  * @module cli/handlers/init-guard
10
10
  */
11
- /** Error message when `cwd` must not be initialized, otherwise null. */
11
+ /** The explicit root is also the destination for all init-generated files. */
12
+ export declare function initProjectRoot(cwd?: string, env?: NodeJS.ProcessEnv): string;
13
+ /**
14
+ * Error message when `projectRoot` must not be initialized, otherwise null.
15
+ *
16
+ * An explicit root (`AQE_PROJECT_ROOT`) is refused only when it is a hard-stop
17
+ * directory (OS temp dir, `/`, `/home`, ...), or a sticky world-writable
18
+ * directory WITHOUT `.git`. This mirrors `findProjectRoot`, which keeps a
19
+ * sticky (mode 1777) directory that is itself a repo root as its own root, so
20
+ * the explicit root stays the escape hatch for such a repository. A derived
21
+ * root (the cwd) keeps the stricter rule: any shared directory is refused.
22
+ */
23
+ export declare function sharedRootInitError(projectRoot: string, explicit: boolean): string | null;
24
+ /** Error message when the selected root must not be initialized, otherwise null. */
12
25
  export declare function sharedDirInitError(cwd: string, env?: NodeJS.ProcessEnv): string | null;
26
+ /**
27
+ * Error message when an explicit `AQE_PROJECT_ROOT` is not an existing
28
+ * directory, otherwise null. A typo must not silently create and initialize a
29
+ * new project somewhere else. Must run before anything creates the root (the
30
+ * CLI's token bootstrap does `mkdir -p <root>/.agentic-qe` at startup).
31
+ */
32
+ export declare function explicitRootError(cwd?: string, env?: NodeJS.ProcessEnv): string | null;
13
33
  //# sourceMappingURL=init-guard.d.ts.map
@@ -8,16 +8,59 @@
8
8
  *
9
9
  * @module cli/handlers/init-guard
10
10
  */
11
- import { isSharedSystemDir } from '../../kernel/shared-dirs.js';
12
- /** Error message when `cwd` must not be initialized, otherwise null. */
13
- export function sharedDirInitError(cwd, env = process.env) {
14
- if (env.AQE_PROJECT_ROOT)
15
- return null;
16
- if (!isSharedSystemDir(cwd))
11
+ import { isHardStopDir, isSharedSystemDir, isStickyWorldWritable } from '../../kernel/shared-dirs.js';
12
+ import { existsSync, statSync } from 'node:fs';
13
+ import { join, resolve } from 'node:path';
14
+ /** The explicit root is also the destination for all init-generated files. */
15
+ export function initProjectRoot(cwd = process.cwd(), env = process.env) {
16
+ return resolve(cwd, env.AQE_PROJECT_ROOT || '.');
17
+ }
18
+ /**
19
+ * Error message when `projectRoot` must not be initialized, otherwise null.
20
+ *
21
+ * An explicit root (`AQE_PROJECT_ROOT`) is refused only when it is a hard-stop
22
+ * directory (OS temp dir, `/`, `/home`, ...), or a sticky world-writable
23
+ * directory WITHOUT `.git`. This mirrors `findProjectRoot`, which keeps a
24
+ * sticky (mode 1777) directory that is itself a repo root as its own root, so
25
+ * the explicit root stays the escape hatch for such a repository. A derived
26
+ * root (the cwd) keeps the stricter rule: any shared directory is refused.
27
+ */
28
+ export function sharedRootInitError(projectRoot, explicit) {
29
+ const shared = explicit
30
+ ? isHardStopDir(projectRoot)
31
+ || (isStickyWorldWritable(projectRoot) && !existsSync(join(projectRoot, '.git')))
32
+ : isSharedSystemDir(projectRoot);
33
+ if (!shared)
17
34
  return null;
18
- return (`Refusing to initialize in "${cwd}": it is a shared temp/system directory, ` +
35
+ return (`Refusing to initialize in "${projectRoot}": it is a shared temp/system directory, ` +
19
36
  'so a store here would be shared by every unrelated project below it and ' +
20
37
  'later commands would not use it. Create a project directory first ' +
21
- '(mkdir my-project && cd my-project) or set AQE_PROJECT_ROOT to choose a root.');
38
+ '(mkdir my-project && cd my-project) or set AQE_PROJECT_ROOT to a project directory.');
39
+ }
40
+ /** Error message when the selected root must not be initialized, otherwise null. */
41
+ export function sharedDirInitError(cwd, env = process.env) {
42
+ return sharedRootInitError(initProjectRoot(cwd, env), Boolean(env.AQE_PROJECT_ROOT));
43
+ }
44
+ /**
45
+ * Error message when an explicit `AQE_PROJECT_ROOT` is not an existing
46
+ * directory, otherwise null. A typo must not silently create and initialize a
47
+ * new project somewhere else. Must run before anything creates the root (the
48
+ * CLI's token bootstrap does `mkdir -p <root>/.agentic-qe` at startup).
49
+ */
50
+ export function explicitRootError(cwd = process.cwd(), env = process.env) {
51
+ if (!env.AQE_PROJECT_ROOT)
52
+ return null;
53
+ const root = initProjectRoot(cwd, env);
54
+ let isDir = false;
55
+ try {
56
+ isDir = statSync(root).isDirectory();
57
+ }
58
+ catch {
59
+ isDir = false;
60
+ }
61
+ if (isDir)
62
+ return null;
63
+ return (`AQE_PROJECT_ROOT "${root}" is not an existing directory. ` +
64
+ 'Create it first (mkdir -p) or correct the path; aqe init does not create the project root.');
22
65
  }
23
66
  //# sourceMappingURL=init-guard.js.map
@@ -9,7 +9,7 @@ import { createRequire } from 'node:module';
9
9
  import { ALL_DOMAINS } from '../../shared/types/index.js';
10
10
  import { toErrorMessage } from '../../shared/error-utils.js';
11
11
  import { resolveInitFlags } from './init-flags.js';
12
- import { sharedDirInitError } from './init-guard.js';
12
+ import { initProjectRoot, sharedRootInitError } from './init-guard.js';
13
13
  // ============================================================================
14
14
  // Init Handler
15
15
  // ============================================================================
@@ -89,9 +89,10 @@ export class InitHandler {
89
89
  });
90
90
  }
91
91
  try {
92
+ const projectRoot = initProjectRoot();
92
93
  // #1006 (review of #1026 N3): never initialize a store in a shared
93
94
  // temp/system dir; later commands would resolve elsewhere and ignore it.
94
- const sharedDirError = sharedDirInitError(process.cwd());
95
+ const sharedDirError = sharedRootInitError(projectRoot, Boolean(process.env.AQE_PROJECT_ROOT));
95
96
  if (sharedDirError) {
96
97
  console.error(chalk.red(`\n ${sharedDirError}\n`));
97
98
  await this.cleanupAndExit(1);
@@ -117,11 +118,11 @@ export class InitHandler {
117
118
  console.log(chalk.blue('\n Agentic QE v3 Initialization\n'));
118
119
  // Use modular orchestrator for --auto or --modular
119
120
  if (options.auto || options.modular || options.browserEngine) {
120
- await this.runModularInit(options, context);
121
+ await this.runModularInit(options, context, projectRoot);
121
122
  return;
122
123
  }
123
124
  // Legacy wizard mode using InitOrchestrator
124
- await this.runLegacyWizard(options, context);
125
+ await this.runLegacyWizard(options, context, projectRoot);
125
126
  return;
126
127
  }
127
128
  // Platform provisioning (--with-opencode, --with-n8n, --with-<editor>, ...)
@@ -144,7 +145,7 @@ export class InitHandler {
144
145
  const noStatusLineRequested = flags.noStatusLine;
145
146
  if (options.browserEngine || options.modular || platformRequested || databaseFree || noClaudeRequested || noStatusLineRequested) {
146
147
  console.log(chalk.blue('\n Agentic QE v3 Initialization\n'));
147
- await this.runModularInit(options, context);
148
+ await this.runModularInit(options, context, projectRoot);
148
149
  return;
149
150
  }
150
151
  // Standard init without wizard
@@ -155,7 +156,7 @@ export class InitHandler {
155
156
  await this.cleanupAndExit(1);
156
157
  }
157
158
  }
158
- async runModularInit(options, _context) {
159
+ async runModularInit(options, _context, projectRoot) {
159
160
  const isJsonMode = options.json === true;
160
161
  // #931/#935: commander maps --no-<name> to options.<name> === false.
161
162
  const flags = resolveInitFlags(options);
@@ -185,7 +186,7 @@ export class InitHandler {
185
186
  }
186
187
  const { createModularInitOrchestrator } = await import('../../init/orchestrator.js');
187
188
  const orchestrator = createModularInitOrchestrator({
188
- projectRoot: process.cwd(),
189
+ projectRoot,
189
190
  autoMode: options.auto,
190
191
  upgrade: options.upgrade,
191
192
  minimal: options.minimal,
@@ -256,7 +257,7 @@ export class InitHandler {
256
257
  try {
257
258
  const { setupClaudeFlowIntegration } = await import('../commands/claude-flow-setup.js');
258
259
  cfResult = await setupClaudeFlowIntegration({
259
- projectRoot: process.cwd(),
260
+ projectRoot,
260
261
  force: options.withClaudeFlow,
261
262
  });
262
263
  if (cfResult.available) {
@@ -313,11 +314,11 @@ export class InitHandler {
313
314
  }
314
315
  await this.cleanupAndExit(0);
315
316
  }
316
- async runLegacyWizard(options, _context) {
317
+ async runLegacyWizard(options, _context, projectRoot) {
317
318
  const flags = resolveInitFlags(options);
318
319
  const { InitOrchestrator } = await import('../../init/init-wizard.js');
319
320
  const orchestratorOptions = {
320
- projectRoot: process.cwd(),
321
+ projectRoot,
321
322
  autoMode: options.auto,
322
323
  minimal: options.minimal,
323
324
  browserEngine: options.browserEngine,
@@ -455,62 +456,62 @@ export class InitHandler {
455
456
  }
456
457
  }
457
458
  getHelp() {
458
- return `
459
- Initialize the AQE v3 system with various configuration options.
460
-
461
- Usage:
462
- aqe init [options]
463
-
464
- Options:
465
- -d, --domains <domains> Comma-separated list of domains to enable (default: all)
466
- -m, --max-agents <number> Maximum concurrent agents (default: 15)
467
- --memory <backend> Memory backend: sqlite, agentdb, or hybrid (default: hybrid)
468
- --lazy Enable lazy loading of domains
469
- --wizard Run interactive setup wizard
470
- --auto Auto-configure based on project analysis
471
- -u, --upgrade Upgrade existing installation (overwrite skills, agents, validation)
472
- --minimal Minimal configuration (skip optional features)
473
- --skip-patterns Skip loading pre-trained patterns
459
+ return `
460
+ Initialize the AQE v3 system with various configuration options.
461
+
462
+ Usage:
463
+ aqe init [options]
464
+
465
+ Options:
466
+ -d, --domains <domains> Comma-separated list of domains to enable (default: all)
467
+ -m, --max-agents <number> Maximum concurrent agents (default: 15)
468
+ --memory <backend> Memory backend: sqlite, agentdb, or hybrid (default: hybrid)
469
+ --lazy Enable lazy loading of domains
470
+ --wizard Run interactive setup wizard
471
+ --auto Auto-configure based on project analysis
472
+ -u, --upgrade Upgrade existing installation (overwrite skills, agents, validation)
473
+ --minimal Minimal configuration (skip optional features)
474
+ --skip-patterns Skip loading pre-trained patterns
474
475
  --browser-engine Install optional Vibium and browser payload
475
476
  --no-browser-engine Skip browser setup (default)
476
- --with-n8n Install n8n workflow testing agents and skills
477
+ --with-n8n Install n8n workflow testing agents and skills
477
478
  --with-opencode Include OpenCode agent/skill provisioning
478
479
  --with-codex Include OpenAI Codex hooks, instructions, skills, and MCP
479
480
  --codex-guidance <mode> Codex AGENTS.md guidance: full, compact, or none
480
481
  --with-ruflo Opt into Ruflo guidance and lifecycle hooks for Codex
481
- --auto-migrate Automatically migrate from v2 if detected
482
- --with-claude-flow Force Claude Flow integration setup
483
- --skip-claude-flow Skip Claude Flow integration
484
- --no-mcp Skip MCP server config (MCP is enabled by default)
485
- --with-mcp Add the .mcp.json entry even if the agentic-qe-fleet plugin is enabled
486
- (--no-mcp and --with-mcp cannot be combined)
487
- --no-governance Skip governance configuration (ADR-058)
488
- --modular Use new modular init system
489
-
490
- MCP Server:
491
- MCP server configuration is ENABLED BY DEFAULT. It writes .mcp.json
492
- at the project root so Claude Code auto-discovers the AQE MCP server.
493
- Use --no-mcp to skip if you only want CLI commands.
494
- If the agentic-qe-fleet Claude Code plugin is enabled (user, project or
495
- local settings), init skips the entry because the plugin already provides
496
- the AQE MCP server. Use --with-mcp to add the project entry anyway.
497
-
498
- Governance:
499
- Governance is ENABLED BY DEFAULT. It installs .claude/guidance/ with:
500
- - constitution.md: 7 unbreakable QE invariants
501
- - shards/*.shard.md: 12 domain-specific governance rules
502
-
503
- Use --no-governance to skip, or set GOVERNANCE_*=false env vars for
504
- fine-grained control over individual gates (ContinueGate, MemoryWriteGate, etc.)
505
-
482
+ --auto-migrate Automatically migrate from v2 if detected
483
+ --with-claude-flow Force Claude Flow integration setup
484
+ --skip-claude-flow Skip Claude Flow integration
485
+ --no-mcp Skip MCP server config (MCP is enabled by default)
486
+ --with-mcp Add the .mcp.json entry even if the agentic-qe-fleet plugin is enabled
487
+ (--no-mcp and --with-mcp cannot be combined)
488
+ --no-governance Skip governance configuration (ADR-058)
489
+ --modular Use new modular init system
490
+
491
+ MCP Server:
492
+ MCP server configuration is ENABLED BY DEFAULT. It writes .mcp.json
493
+ at the project root so Claude Code auto-discovers the AQE MCP server.
494
+ Use --no-mcp to skip if you only want CLI commands.
495
+ If the agentic-qe-fleet Claude Code plugin is enabled (user, project or
496
+ local settings), init skips the entry because the plugin already provides
497
+ the AQE MCP server. Use --with-mcp to add the project entry anyway.
498
+
499
+ Governance:
500
+ Governance is ENABLED BY DEFAULT. It installs .claude/guidance/ with:
501
+ - constitution.md: 7 unbreakable QE invariants
502
+ - shards/*.shard.md: 12 domain-specific governance rules
503
+
504
+ Use --no-governance to skip, or set GOVERNANCE_*=false env vars for
505
+ fine-grained control over individual gates (ContinueGate, MemoryWriteGate, etc.)
506
+
506
507
  Examples:
507
508
  aqe init --auto # Auto-configure based on project (keeps existing skills)
508
509
  aqe init --auto --with-codex --with-ruflo
509
510
  # Codex plus optional Ruflo coordination
510
- aqe init --auto --upgrade # Auto-configure AND update all skills/agents
511
- aqe init --upgrade # Upgrade existing installation
512
- aqe init --wizard # Run interactive wizard
513
- aqe init --domains test-generation,coverage-analysis
511
+ aqe init --auto --upgrade # Auto-configure AND update all skills/agents
512
+ aqe init --upgrade # Upgrade existing installation
513
+ aqe init --wizard # Run interactive wizard
514
+ aqe init --domains test-generation,coverage-analysis
514
515
  `;
515
516
  }
516
517
  }