@qwen-code/qwen-code 0.22.0 → 0.22.1

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 (449) hide show
  1. package/bundled/computer-use/SKILL.md +229 -0
  2. package/bundled/computer-use/agents/openai.yaml +4 -0
  3. package/bundled/coordinate/SKILL.md +5 -5
  4. package/bundled/qc-helper/docs/configuration/auth.md +7 -7
  5. package/bundled/qc-helper/docs/configuration/model-providers.md +70 -9
  6. package/bundled/qc-helper/docs/configuration/settings.md +40 -40
  7. package/bundled/qc-helper/docs/extension/introduction.md +3 -1
  8. package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  9. package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -0
  10. package/bundled/qc-helper/docs/features/channels/dws.md +120 -0
  11. package/bundled/qc-helper/docs/features/channels/overview.md +3 -3
  12. package/bundled/qc-helper/docs/features/code-review.md +25 -21
  13. package/bundled/qc-helper/docs/features/commands.md +2 -2
  14. package/bundled/qc-helper/docs/features/computer-use.md +57 -51
  15. package/bundled/qc-helper/docs/features/mcp.md +35 -12
  16. package/bundled/qc-helper/docs/features/sub-agents.md +1 -1
  17. package/bundled/qc-helper/docs/features/worktree.md +1 -1
  18. package/bundled/qc-helper/docs/overview.md +1 -1
  19. package/bundled/qc-helper/docs/quickstart.md +1 -1
  20. package/bundled/qc-helper/docs/qwen-serve.md +29 -6
  21. package/bundled/review/SKILL.md +119 -417
  22. package/bundled/review/references/aone.md +18 -0
  23. package/bundled/review/references/persistence.md +105 -0
  24. package/bundled/review/references/posting.md +270 -0
  25. package/chunks/MaxSizedBox-UUTUE42J.js +112 -0
  26. package/chunks/{StandaloneSessionPicker-KTHPCSR6.js → StandaloneSessionPicker-XF2TVJFK.js} +87 -86
  27. package/chunks/{acp-startup-profiler-T4GEAPLX.js → acp-startup-profiler-GNYAL6LI.js} +2 -2
  28. package/chunks/{acpAgent-CRY3JZ5O.js → acpAgent-GY53MJIW.js} +2216 -1931
  29. package/chunks/agent-7U6CC5KF.js +97 -0
  30. package/chunks/agent-headless-32O4L2CT.js +87 -0
  31. package/chunks/{anthropicContentGenerator-Y2OX6LS4.js → anthropicContentGenerator-U76GTVB6.js} +128 -58
  32. package/chunks/{artifact-tool-SBXMTVCB.js → artifact-tool-XDJCZZCF.js} +2 -2
  33. package/chunks/{askUserQuestion-KEQJRFD6.js → askUserQuestion-ZXXERLEV.js} +2 -2
  34. package/chunks/bridge-DFX2FFH4.js +119 -0
  35. package/chunks/{ca-D3F4S6NG.js → ca-7HPYOYSZ.js} +3 -0
  36. package/chunks/{channel-management-service-IRTT7RNE.js → channel-management-service-HXXS3HOZ.js} +4 -4
  37. package/chunks/channel-settings-store-ELLH2M4M.js +117 -0
  38. package/chunks/{channel-worker-group-BJNMR2MP.js → channel-worker-group-EVDC2P4K.js} +8 -7
  39. package/chunks/{channel-worker-manager-EMA7CQDJ.js → channel-worker-manager-IJJZHGEI.js} +8 -7
  40. package/chunks/{channel-worker-supervisor-F6I6WSWW.js → channel-worker-supervisor-YSKB5GVB.js} +12 -7
  41. package/chunks/{chunk-2TRNCJK4.js → chunk-27ONXAFY.js} +1 -1
  42. package/chunks/{chunk-OVH5Y7KS.js → chunk-2CRNTW2B.js} +19 -3
  43. package/chunks/{read-package-up-UXSW3YPB.js → chunk-2EAZ43JQ.js} +1 -0
  44. package/chunks/{chunk-DB2OKNTU.js → chunk-2FN2HNTI.js} +2 -2
  45. package/chunks/{chunk-KM73TBQ4.js → chunk-2LD5U7Q3.js} +31 -0
  46. package/chunks/{chunk-QJHPWLZC.js → chunk-2MHGD7EE.js} +1 -1
  47. package/chunks/{chunk-BMCSKS37.js → chunk-2NCVUT3C.js} +6 -6
  48. package/chunks/{chunk-A5F2YNO6.js → chunk-2NNTE2ED.js} +245 -10
  49. package/chunks/{chunk-Z3JMO2CH.js → chunk-2SERYG4T.js} +1 -1
  50. package/chunks/{chunk-4J7OPYNS.js → chunk-2YDYDDE2.js} +6 -6
  51. package/chunks/{chunk-PXOJLJ5W.js → chunk-2YEZNBSD.js} +333 -184
  52. package/chunks/{chunk-UU4WC7DK.js → chunk-2ZV3CZKI.js} +82 -12
  53. package/chunks/{chunk-SE55HQGF.js → chunk-3B5DCAQU.js} +74 -52
  54. package/chunks/{chunk-UIRLQ3N7.js → chunk-3BV7TZNQ.js} +3 -3
  55. package/chunks/{chunk-2Z6LSQMF.js → chunk-3FSBMAYD.js} +1 -1
  56. package/chunks/{chunk-DJEHYM4H.js → chunk-3UZCLCXR.js} +3 -3
  57. package/chunks/{chunk-WWUSHZ7M.js → chunk-43C2II2G.js} +5 -5
  58. package/chunks/{chunk-2GXYDNXP.js → chunk-47SIHHPL.js} +8 -8
  59. package/chunks/{chunk-PHJJ3RVO.js → chunk-4DCP3362.js} +7 -15
  60. package/chunks/chunk-4K7NQDCG.js +104 -0
  61. package/chunks/{chunk-UZPYR3EV.js → chunk-4TPAG3O7.js} +1 -1
  62. package/chunks/{chunk-BEGIBJAZ.js → chunk-5CI4AXDD.js} +4 -4
  63. package/chunks/{chunk-7KOFLDEP.js → chunk-5JTIYALA.js} +1 -1
  64. package/chunks/{chunk-7HFULI45.js → chunk-5MK32KJV.js} +3 -3
  65. package/chunks/{chunk-CXJHQVEK.js → chunk-5PA6UEYA.js} +4 -0
  66. package/chunks/{chunk-IBJ5S45N.js → chunk-5T4LWWNX.js} +2 -2
  67. package/chunks/{chunk-VUMLT7E5.js → chunk-5Y2JCJAH.js} +2 -2
  68. package/chunks/{chunk-YZBDKFRQ.js → chunk-5ZYZPDDF.js} +993 -895
  69. package/chunks/{chunk-2A4C2MEG.js → chunk-62PXFOK4.js} +35 -12
  70. package/chunks/{chunk-IIWGSX4L.js → chunk-6E4WHQJV.js} +1 -1
  71. package/chunks/{chunk-6PCOVQO2.js → chunk-6HTMIKXZ.js} +8 -8
  72. package/chunks/{chunk-RDG44S5I.js → chunk-6KS24S3X.js} +2 -2
  73. package/chunks/{chunk-GAHYKJPV.js → chunk-6US7BF3G.js} +7 -59
  74. package/chunks/{chunk-MHG6NDS6.js → chunk-6YAR6ZU3.js} +2 -2
  75. package/chunks/{chunk-3CLIDIVQ.js → chunk-73WFGVIZ.js} +3 -3
  76. package/chunks/{chunk-ZZUVC6RI.js → chunk-76WGY6LW.js} +3 -3
  77. package/chunks/{chunk-XLDFW44M.js → chunk-77TOMRBG.js} +3 -3
  78. package/chunks/{chunk-PDL6LKB5.js → chunk-7AS7QX72.js} +1 -1
  79. package/chunks/{chunk-ND7NOI4P.js → chunk-7CWEZQ6T.js} +0 -15
  80. package/chunks/{chunk-DWCKACFL.js → chunk-7DPKPBOQ.js} +2 -2
  81. package/chunks/{chunk-45NQKMYB.js → chunk-7JPW6IYH.js} +1 -1
  82. package/chunks/{chunk-HDKCKCYO.js → chunk-7QGEJI7M.js} +1 -1
  83. package/chunks/{chunk-S4C4JJKE.js → chunk-A7X32SCT.js} +5 -5
  84. package/chunks/{chunk-O5Z7EB6Y.js → chunk-AYHQZBJ4.js} +170 -207
  85. package/chunks/{chunk-7DYNJFES.js → chunk-AYVIGUUK.js} +6 -1
  86. package/chunks/{chunk-7DMTAQJ6.js → chunk-BDHLBR46.js} +132 -49
  87. package/chunks/{chunk-43T5WDQ7.js → chunk-BFSFJR3D.js} +1 -1
  88. package/chunks/{chunk-AP3B7LKD.js → chunk-BKDAF7ES.js} +2 -2
  89. package/chunks/{chunk-B6UBOIFE.js → chunk-BQBUZDDH.js} +14 -11
  90. package/chunks/{chunk-VLRBJ24J.js → chunk-BVE5EMIG.js} +2 -2
  91. package/chunks/{chunk-P47E4SJC.js → chunk-BX2BZPFJ.js} +3 -3
  92. package/chunks/{chunk-OARZJFZX.js → chunk-C4WBKZJT.js} +4 -4
  93. package/chunks/{chunk-QKBYFU2Q.js → chunk-CFKIH3D3.js} +21 -1
  94. package/chunks/{chunk-URN2JIAQ.js → chunk-CITGRGCM.js} +2 -1
  95. package/chunks/{chunk-WU5E4HMO.js → chunk-CPPYZHBN.js} +1 -1
  96. package/chunks/chunk-DCSAVGDJ.js +20 -0
  97. package/chunks/{chunk-Q54XG7IX.js → chunk-DEYPMJPD.js} +1 -1
  98. package/chunks/{chunk-KSPRQSB4.js → chunk-DIMEPKCW.js} +52 -12
  99. package/chunks/{chunk-I432KXWD.js → chunk-DP7LABIB.js} +1 -1
  100. package/chunks/{chunk-36OF5PRW.js → chunk-E4I5MVBR.js} +7 -3
  101. package/chunks/{chunk-AW27A43Y.js → chunk-E55H6BZ7.js} +93 -1
  102. package/chunks/{chunk-K623ENWT.js → chunk-E6FGMDFQ.js} +4 -0
  103. package/chunks/{chunk-5XUTPXQU.js → chunk-EAV3TENS.js} +6 -9
  104. package/chunks/{chunk-LI4YHTQK.js → chunk-EB4VDXNI.js} +1 -1
  105. package/chunks/{chunk-JOLJTKIG.js → chunk-EC5BONC3.js} +1 -1
  106. package/chunks/{chunk-25NESM4G.js → chunk-EEQYTWGU.js} +29 -5
  107. package/chunks/{chunk-4CWDWDL6.js → chunk-EKP3M4RF.js} +1 -1
  108. package/chunks/{chunk-W4CRPSC5.js → chunk-ELY4QVIB.js} +1 -1
  109. package/chunks/{chunk-BB5IMQCV.js → chunk-EMGAVCBZ.js} +2 -2
  110. package/chunks/chunk-FBX2SDQ4.js +48 -0
  111. package/chunks/{chunk-C72BXMJ5.js → chunk-FJWICLG7.js} +1 -1
  112. package/chunks/{chunk-6FRJEE2S.js → chunk-FK4H3V6S.js} +5 -5
  113. package/chunks/{chunk-LDGWX737.js → chunk-FN5C6C7G.js} +160 -59
  114. package/chunks/{chunk-3ZFJUBTP.js → chunk-FPH6TXD3.js} +1 -1
  115. package/chunks/{chunk-WRT324N6.js → chunk-FVDQ5E67.js} +3 -3
  116. package/chunks/{chunk-VFACN2CE.js → chunk-GNMJNDZE.js} +1 -1
  117. package/chunks/{chunk-FVBVJEBG.js → chunk-GNRVKN76.js} +10 -8
  118. package/chunks/{chunk-PZRUV52H.js → chunk-GTUKW3I6.js} +20 -2
  119. package/chunks/chunk-GYTKQYDB.js +23 -0
  120. package/chunks/{chunk-VMJL7RH6.js → chunk-GZJUCMH4.js} +4 -4
  121. package/chunks/{chunk-MQP3MHWN.js → chunk-HJOWQUE2.js} +21 -15
  122. package/chunks/{chunk-ZS5BHEPD.js → chunk-I32QCIK7.js} +1 -1
  123. package/chunks/{chunk-7IV52LTO.js → chunk-I6VVOZDK.js} +2 -2
  124. package/chunks/{chunk-X7V3N6YH.js → chunk-I6YW3T3W.js} +218 -37
  125. package/chunks/{chunk-2E3V7G6Y.js → chunk-ICWGPK23.js} +55 -50
  126. package/chunks/{chunk-SQS55KR4.js → chunk-IJVDHPKD.js} +2 -2
  127. package/chunks/{chunk-QS4ENGVF.js → chunk-IKN3IUJP.js} +9 -8
  128. package/chunks/{chunk-2UZJWSVD.js → chunk-ILPXSKGQ.js} +2 -2
  129. package/chunks/{chunk-ZRYQMWEP.js → chunk-IPQA4SR5.js} +2 -2
  130. package/chunks/{chunk-XYQHT3AW.js → chunk-IRIX323G.js} +2 -2
  131. package/chunks/{chunk-5HJUPACR.js → chunk-J7MLXFC5.js} +2 -2
  132. package/chunks/{chunk-AZF6SME3.js → chunk-JECO75XD.js} +3 -3
  133. package/chunks/chunk-JLGFGPZJ.js +346 -0
  134. package/chunks/{chunk-WZDM44SB.js → chunk-JUIJ3FXC.js} +7 -7
  135. package/chunks/{chunk-A6NRNRKE.js → chunk-JVPFTDBK.js} +1 -1
  136. package/chunks/{chunk-2J3OJGTL.js → chunk-K2OJUPOE.js} +1 -21
  137. package/chunks/{chunk-GHY5OIYP.js → chunk-K63NK3KL.js} +13 -13
  138. package/chunks/{chunk-7JBHIQS2.js → chunk-KCOXDRQL.js} +7 -13
  139. package/chunks/{chunk-6NFAEG54.js → chunk-KOJ6MHD5.js} +24 -13
  140. package/chunks/{chunk-WS7PAXXR.js → chunk-KWFP3WV6.js} +18 -13
  141. package/chunks/{chunk-A5F63FEW.js → chunk-L436XFLJ.js} +1 -1
  142. package/chunks/{chunk-KIVGVFMM.js → chunk-LI2HEMKO.js} +16 -4
  143. package/chunks/{chunk-GIWB5QLV.js → chunk-LJP2BBMK.js} +4 -4
  144. package/chunks/{create-sub-session-XBCVGNFU.js → chunk-LRKMQPMD.js} +4 -6
  145. package/chunks/{chunk-6UQSU7CQ.js → chunk-MDZO5V2O.js} +58 -107
  146. package/chunks/{chunk-AO4M6NMD.js → chunk-MW5AHWOZ.js} +60 -20
  147. package/chunks/{chunk-FYZMB6DB.js → chunk-MYLXL7F6.js} +11 -11
  148. package/chunks/{chunk-ZLCT4C5A.js → chunk-MZS7GEC7.js} +1 -1
  149. package/chunks/{chunk-VEND4KA4.js → chunk-NER3H7PI.js} +1 -1
  150. package/chunks/{chunk-AVCCKIZ6.js → chunk-NVK4HJYQ.js} +1 -1
  151. package/chunks/{chunk-MPHLIJYL.js → chunk-NY3IJYAV.js} +14 -8
  152. package/chunks/{chunk-XZJKSETB.js → chunk-O3BUXIPM.js} +3 -3
  153. package/chunks/{chunk-4XPSVIED.js → chunk-O5YGAEQS.js} +6 -6
  154. package/chunks/{chunk-NW35NVFN.js → chunk-ODXCSIH5.js} +4 -4
  155. package/chunks/{chunk-5XHAOUWD.js → chunk-OI2DR6QB.js} +3 -3
  156. package/chunks/{chunk-BUGYW6FB.js → chunk-OQ6LTSX3.js} +1 -1
  157. package/chunks/{chunk-J5ZDDUKM.js → chunk-OT26ITEY.js} +4 -4
  158. package/chunks/{chunk-EFB657PR.js → chunk-OX44MOAN.js} +3 -3
  159. package/chunks/{chunk-LURJYO2T.js → chunk-OZ6KS6KW.js} +4 -0
  160. package/chunks/{chunk-4F5WV4RF.js → chunk-PAJGKZAA.js} +281 -10
  161. package/chunks/{chunk-HIK2OF33.js → chunk-PVBT5QPD.js} +1 -1
  162. package/chunks/chunk-QHMLYMMS.js +32 -0
  163. package/chunks/{chunk-U2UYQMM6.js → chunk-R2ZJH3FV.js} +3 -3
  164. package/chunks/{chunk-K52PZNU4.js → chunk-RRKNX553.js} +2 -2
  165. package/chunks/chunk-RXFQM6FQ.js +42 -0
  166. package/chunks/{chunk-SJ4HB27T.js → chunk-SDVF6A42.js} +3 -3
  167. package/chunks/{chunk-TBVSALA3.js → chunk-SKNVVYIJ.js} +3 -3
  168. package/chunks/{chunk-JGUBDRBC.js → chunk-SLEWBQWM.js} +3 -3
  169. package/chunks/{chunk-ZRFUT5VV.js → chunk-SM7ZVKTF.js} +7 -7
  170. package/chunks/{chunk-UUQFJILB.js → chunk-SQPOJ4ZI.js} +15 -3
  171. package/chunks/{chunk-RPJQ3O4M.js → chunk-SRGENTPF.js} +31 -41
  172. package/chunks/{chunk-ISJMN3ML.js → chunk-T2CRBIDJ.js} +1 -1
  173. package/chunks/{chunk-MZKWFWVG.js → chunk-T2HMXHYA.js} +6 -6
  174. package/chunks/{chunk-FEMQ6Y7W.js → chunk-T6OODF2U.js} +47 -126
  175. package/chunks/{chunk-VYC7XFYV.js → chunk-TKO4TLT6.js} +5 -5
  176. package/chunks/{chunk-KVGR4MCF.js → chunk-TOF4UZHH.js} +3 -3
  177. package/chunks/{chunk-LD5VIJ7S.js → chunk-TWSKM647.js} +1 -1
  178. package/chunks/{chunk-7NBVNAJJ.js → chunk-UCSV2IZW.js} +3 -3
  179. package/chunks/{chunk-FDD2IUEL.js → chunk-UX3IFLJM.js} +229 -21
  180. package/chunks/{chunk-YDJRMQU4.js → chunk-V3GINY6K.js} +3 -3
  181. package/chunks/{chunk-XL5K4SVK.js → chunk-VL4YX3FH.js} +1 -1
  182. package/chunks/{chunk-62JOGZL5.js → chunk-VMDURMFY.js} +199 -87
  183. package/chunks/{chunk-OE52YHCZ.js → chunk-W2WRNJKX.js} +11 -11
  184. package/chunks/{chunk-YLFLHKDL.js → chunk-W3N5XAZ6.js} +1 -1
  185. package/chunks/{chunk-IWOWEENB.js → chunk-WBT3STGU.js} +385 -25
  186. package/chunks/{chunk-S3G6YFQC.js → chunk-WEGXPP5E.js} +1 -1
  187. package/chunks/{chunk-RDQ7QB4Y.js → chunk-XJS54K4A.js} +2 -2
  188. package/chunks/{chunk-L4HVF7LM.js → chunk-XNXWEGKB.js} +3 -3
  189. package/chunks/{chunk-T6XLJRQY.js → chunk-XYX474JQ.js} +36509 -5182
  190. package/chunks/{chunk-F6WFNA7U.js → chunk-XZA32HII.js} +3 -6
  191. package/chunks/{chunk-NUGZAFR2.js → chunk-ZEADBZLO.js} +147 -6
  192. package/chunks/chunk-ZELCTN6Y.js +29 -0
  193. package/chunks/{chunk-TQOF5KBL.js → chunk-ZEZKIS2K.js} +0 -31
  194. package/chunks/{chunk-IOSEW6KP.js → chunk-ZJG323IA.js} +5 -4
  195. package/chunks/{chunk-VSNPOSDN.js → chunk-ZKAZP2ZG.js} +107 -12
  196. package/chunks/{chunk-YMVFIYHV.js → chunk-ZLTEQYNC.js} +2 -2
  197. package/chunks/{chunk-O5BDEWBC.js → chunk-ZWKGZB2K.js} +3 -3
  198. package/chunks/{chunk-6QSA4JHL.js → chunk-ZXDM7DYV.js} +2772 -814
  199. package/chunks/chunk-ZYNTSXWK.js +32 -0
  200. package/chunks/config-utils-7M6PCTLT.js +113 -0
  201. package/chunks/contextCommand-G4QG3TW6.js +108 -0
  202. package/chunks/{core-runtime-CES6JSVV.js → core-runtime-PKNQ63VL.js} +63 -58
  203. package/chunks/{create-sub-session-UJTPMVOG.js → create-sub-session-PLGPY6TV.js} +60 -58
  204. package/chunks/create-sub-session-RVHSWVAP.js +17 -0
  205. package/chunks/{cron-create-IKA56DAF.js → cron-create-IJGVR5R2.js} +4 -4
  206. package/chunks/{cron-delete-K5Q62EGH.js → cron-delete-4N5BI6GL.js} +4 -4
  207. package/chunks/{cron-list-QBFGAMP7.js → cron-list-2CATIPUX.js} +4 -4
  208. package/chunks/{daemon-RZZUPGOJ.js → daemon-NAYK4XXU.js} +51 -24
  209. package/chunks/{daemon-git-worktree-guard-3QY2BQYB.js → daemon-git-worktree-guard-LDBJXH2U.js} +338 -92
  210. package/chunks/daemon-status-provider-F5FEHVVG.js +118 -0
  211. package/chunks/daemon-trust-policy-C6YTU5CQ.js +114 -0
  212. package/chunks/{daemon-trust-policy-monitor-TK4K7M63.js → daemon-trust-policy-monitor-IGEJPHQ4.js} +68 -66
  213. package/chunks/{de-RYUHH2C6.js → de-X6HLSIFE.js} +1 -0
  214. package/chunks/deferred-core-runtime-GHT3GDOR.js +116 -0
  215. package/chunks/{display-image-OEJMJV3S.js → display-image-DR55LL6M.js} +5 -5
  216. package/chunks/dist-4Q7NTUNB.js +2512 -0
  217. package/chunks/{dist-ESS34DHC.js → dist-6H6RZ5H6.js} +2 -2
  218. package/chunks/{dist-LZO24N3E.js → dist-7CKN54NL.js} +1 -1
  219. package/chunks/{dist-5EV2G6MC.js → dist-DJBNNPLN.js} +1 -1
  220. package/chunks/{dist-J6P3C52Z.js → dist-FVJZSIO4.js} +28 -7
  221. package/chunks/{dist-K7IQB53U.js → dist-SATKXKUR.js} +1 -1
  222. package/chunks/{dist-ES6HNUW2.js → dist-TJUDJTCB.js} +246 -17
  223. package/chunks/{dist-VVQBOKDH.js → dist-UQUFZDIY.js} +1 -1
  224. package/chunks/{dist-2OG3PGKO.js → dist-ZBVOXSKF.js} +3 -3
  225. package/chunks/earlyInputCapture-HOSJTLWP.js +109 -0
  226. package/chunks/{edit-A2633SLR.js → edit-KSPVUEAS.js} +48 -48
  227. package/chunks/{en-3RHLPITS.js → en-6MDBWMTG.js} +3 -0
  228. package/chunks/{enter-worktree-OIAHE2TB.js → enter-worktree-UOZ6ZTP7.js} +7 -8
  229. package/chunks/{enterPlanMode-SUGIKLR7.js → enterPlanMode-DZTABSKN.js} +47 -47
  230. package/chunks/environment-JXOSW25V.js +131 -0
  231. package/chunks/errors-IOXFDE4J.js +115 -0
  232. package/chunks/{exit-worktree-3UT3SSWT.js → exit-worktree-G2QATUCV.js} +7 -8
  233. package/chunks/exitPlanMode-PZG4FXRB.js +85 -0
  234. package/chunks/{fast-path-3AVP3G35.js → fast-path-EBS7NAVL.js} +28 -7
  235. package/chunks/{fast-path-settings-WHX3J3ZI.js → fast-path-settings-XMFBYFUH.js} +2 -2
  236. package/chunks/{fr-4PL5GHG4.js → fr-FTZWF462.js} +1 -0
  237. package/chunks/{gemini-7PVQWHTH.js → gemini-JELEKOVS.js} +129 -123
  238. package/chunks/{geminiContentGenerator-B2FOJJDJ.js → geminiContentGenerator-I2CKP7XI.js} +16 -13
  239. package/chunks/{glob-7YGXE6OV.js → glob-TDVEVPQZ.js} +47 -47
  240. package/chunks/{goal-tools-TLJCE7YZ.js → goal-tools-CNVXMSZD.js} +72 -28
  241. package/chunks/{grep-6DV6LTON.js → grep-3NLSS32D.js} +6 -6
  242. package/chunks/handleAutoUpdate-AWAGHKOX.js +111 -0
  243. package/chunks/i18n-CYA25C5F.js +126 -0
  244. package/chunks/{image-gen-7CSCJ73T.js → image-gen-63NN2H5N.js} +9 -11
  245. package/chunks/initializer-JD2FLNLO.js +115 -0
  246. package/chunks/installationInfo-N3DCWVWR.js +109 -0
  247. package/chunks/{ja-HZ7X7PQO.js → ja-2GL5FKYJ.js} +1 -0
  248. package/chunks/{keychain-token-storage-MTFTAESK.js → keychain-token-storage-3MGFRYGM.js} +2 -2
  249. package/chunks/list-XDQAUET5.js +118 -0
  250. package/chunks/{list-agents-43XUEXJV.js → list-agents-EXRSHIDJ.js} +2 -2
  251. package/chunks/loadedSettingsAdapter-IK7H5JRK.js +112 -0
  252. package/chunks/{loggingContentGenerator-RNE66CKK.js → loggingContentGenerator-CZWUAHAI.js} +27 -30
  253. package/chunks/{loop-wakeup-E54KDUXC.js → loop-wakeup-XBPB2BRO.js} +5 -5
  254. package/chunks/{ls-CGL2UC3H.js → ls-WFONAND2.js} +4 -4
  255. package/chunks/{lsp-5IKUO5DX.js → lsp-DUKPDUXN.js} +2 -2
  256. package/chunks/{managed-npm-update-Y3SC3GLJ.js → managed-npm-update-54W23SP5.js} +61 -59
  257. package/chunks/mcp-2E7ZLMEE.js +112 -0
  258. package/chunks/{monitor-PXYSGSUN.js → monitor-A4J5QRGJ.js} +47 -47
  259. package/chunks/nonInteractiveCli-ZNDXB62Y.js +185 -0
  260. package/chunks/{notebook-edit-ISIBJVBR.js → notebook-edit-4ANFZON5.js} +48 -48
  261. package/chunks/open-with-auth-4UI3KHUR.js +55 -0
  262. package/chunks/{openaiContentGenerator-6TBOPEGT.js → openaiContentGenerator-JCCJJQZC.js} +29 -30
  263. package/chunks/pidfile-DHV2Y7UD.js +113 -0
  264. package/chunks/{processUtils-YK2TDTTU.js → processUtils-JJAR56SO.js} +2 -2
  265. package/chunks/prompt-terminal-ledger-LDZ6QVYA.js +107 -0
  266. package/chunks/{pt-QT5N2Q6Q.js → pt-XN2YWJVM.js} +1 -0
  267. package/chunks/{qwenContentGenerator-CLDMA2Y4.js → qwenContentGenerator-5JM44ZSA.js} +53 -59
  268. package/chunks/{qwenOAuth2-DLDR6UC5.js → qwenOAuth2-JIYAWXTW.js} +8 -10
  269. package/chunks/{read-file-2HOD2ATO.js → read-file-N3E5DY7N.js} +13 -14
  270. package/chunks/{read-mcp-resource-XYES2B42.js → read-mcp-resource-7A7NFSFL.js} +2 -2
  271. package/chunks/read-package-up-6T6ICKR7.js +13 -0
  272. package/chunks/{record-artifact-W3IBTGL7.js → record-artifact-CPJ4IJSD.js} +4 -5
  273. package/chunks/report-findings-VFM5DENC.js +33 -0
  274. package/chunks/request-shutdown-AXVOFN5C.js +133 -0
  275. package/chunks/resumeHistoryUtils-YQRITQAG.js +120 -0
  276. package/chunks/ripGrep-NEIHKBKB.js +39 -0
  277. package/chunks/{ru-STMG5BPD.js → ru-OLTMFJEW.js} +1 -0
  278. package/chunks/{run-qwen-serve-XJHOW2NY.js → run-qwen-serve-IWGPZADI.js} +622 -79
  279. package/chunks/{runtime-J4SPTJRQ.js → runtime-I76HPFUE.js} +73 -71
  280. package/chunks/{scheduler-VRAEZZ4E.js → scheduler-M6YL4K4I.js} +62 -60
  281. package/chunks/{sdk-exporters-http-RSIOP3G2.js → sdk-exporters-http-XXSKBD2C.js} +5 -5
  282. package/chunks/{sdk-impl-CB3KARSK.js → sdk-impl-VPNBLV7I.js} +7 -7
  283. package/chunks/{send-message-J4VT46OI.js → send-message-A2GXDX3B.js} +10 -31
  284. package/chunks/serve-XY5S63GN.js +120 -0
  285. package/chunks/{server-74ONDK62.js → server-TWXRRREO.js} +965 -405
  286. package/chunks/{session-BO6VBWJP.js → session-IT5ZXU7A.js} +151 -140
  287. package/chunks/{settings-35QZNFDG.js → settings-IX5HOOCG.js} +71 -69
  288. package/chunks/shell-LZ55AAJB.js +95 -0
  289. package/chunks/{skill-DKEMQSNJ.js → skill-WSZ53D2R.js} +108 -25
  290. package/chunks/skill-settings-5U7FTJIK.js +120 -0
  291. package/chunks/spawnChannel-TMC6VXGN.js +113 -0
  292. package/chunks/standalone-update-CUYGWTR4.js +120 -0
  293. package/chunks/{startInteractiveUI-J2QSGWPU.js → startInteractiveUI-O6BI2OSA.js} +381 -293
  294. package/chunks/{syntheticOutput-JAXMIMZP.js → syntheticOutput-5AJ444QT.js} +3 -3
  295. package/chunks/{task-create-I2H322E4.js → task-create-CDJSOEQD.js} +11 -11
  296. package/chunks/{task-list-3OLIWFTQ.js → task-list-BELMPA75.js} +5 -5
  297. package/chunks/{task-stop-JAUY6MSY.js → task-stop-U3S3KZG2.js} +2 -2
  298. package/chunks/{task-update-B3XO4CPI.js → task-update-77VCFDDZ.js} +11 -11
  299. package/chunks/{team-create-W534PMGX.js → team-create-UF4TMQEH.js} +48 -48
  300. package/chunks/{team-delete-Q7GE7RRI.js → team-delete-YWFXX77L.js} +5 -5
  301. package/chunks/{team-plan-approval-WNV6P6NG.js → team-plan-approval-U57NSR6C.js} +47 -47
  302. package/chunks/terminal-image-renderer-DRL3BROJ.js +116 -0
  303. package/chunks/theme-manager-HHJPUDRN.js +104 -0
  304. package/chunks/{todoWrite-FJJTY2TI.js → todoWrite-435EO2CS.js} +4 -4
  305. package/chunks/{tool-search-Y4KL3LRE.js → tool-search-SV35UV72.js} +18 -19
  306. package/chunks/total-session-admission-TQI7TCTL.js +114 -0
  307. package/chunks/trustedFolders-YKK67IP3.js +124 -0
  308. package/chunks/{update-relaunch-OHVFN6KF.js → update-relaunch-DX7LVA4P.js} +6 -6
  309. package/chunks/updateCheck-6JRTKTUF.js +120 -0
  310. package/chunks/useAutoAcceptIndicator-MYXYSKSL.js +122 -0
  311. package/chunks/{validateNonInterActiveAuth-WJXH426F.js → validateNonInterActiveAuth-B26O4YJP.js} +113 -106
  312. package/chunks/{version-QMDRADXM.js → version-K5D7VJ4B.js} +2 -2
  313. package/chunks/{web-fetch-ROS6P4LP.js → web-fetch-VFHZLLNZ.js} +25 -242
  314. package/chunks/{web-search-JS3E76O6.js → web-search-AQE5A4J5.js} +11 -11
  315. package/chunks/{web-shell-static-3NUTRHAH.js → web-shell-static-A6QMUNNV.js} +11 -4
  316. package/chunks/webapi-Z5OM224P.js +4118 -0
  317. package/chunks/{workflow-2FCMBTBZ.js → workflow-XL6AEUZ7.js} +635 -94
  318. package/chunks/workspace-providers-status-H6TG34YV.js +116 -0
  319. package/chunks/{workspace-registration-store-SU4EJKSD.js → workspace-registration-store-I4U3V5LL.js} +1 -1
  320. package/chunks/workspace-registry-2PWNIYNI.js +123 -0
  321. package/chunks/workspace-service-4FGTUJLA.js +131 -0
  322. package/chunks/workspace-skills-status-7VOLUDT6.js +115 -0
  323. package/chunks/{workspace-trust-reconciler-4Y4F7XIX.js → workspace-trust-reconciler-GJ466KCE.js} +74 -73
  324. package/chunks/write-file-PWOYCT2K.js +90 -0
  325. package/chunks/{zh-TW-NX43Z2S2.js → zh-TW-MV4FWFB6.js} +3 -0
  326. package/chunks/{zh-3JQ75KFU.js → zh-X3WGU6SI.js} +3 -0
  327. package/chunks/{zoom-image-DNBKCGGF.js → zoom-image-NYJPC3NI.js} +13 -14
  328. package/cli.js +15 -15
  329. package/locales/ca.js +3 -0
  330. package/locales/de.js +1 -0
  331. package/locales/en.js +3 -0
  332. package/locales/fr.js +1 -0
  333. package/locales/ja.js +1 -0
  334. package/locales/pt.js +1 -0
  335. package/locales/ru.js +1 -0
  336. package/locales/zh-TW.js +3 -0
  337. package/locales/zh.js +3 -0
  338. package/package.json +3 -3
  339. package/web-shell/assets/{abnfDiagram-VCTEODGH-DWHXEVlf.js → abnfDiagram-VCTEODGH-yq7z7Anb.js} +1 -1
  340. package/web-shell/assets/{arc-CXKjm86V.js → arc-CbJO0xnT.js} +1 -1
  341. package/web-shell/assets/{architectureDiagram-5GKGNRK7-B_ynI0cX.js → architectureDiagram-5GKGNRK7-CRh89421.js} +1 -1
  342. package/web-shell/assets/{blockDiagram-NRAW4CY4-DMebd9X0.js → blockDiagram-NRAW4CY4-C75KAhKv.js} +1 -1
  343. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BZ5BlxS-.js → c4Diagram-UCG6FXSJ-BzlMveFB.js} +1 -1
  344. package/web-shell/assets/channel-B3sGR79J.js +1 -0
  345. package/web-shell/assets/{chunk-2Q5K7J3B-CluJKopE.js → chunk-2Q5K7J3B-DA8QDX3a.js} +1 -1
  346. package/web-shell/assets/{chunk-5VM5RSS4-hzDAPFOo.js → chunk-5VM5RSS4-Bgu7gQ7Y.js} +1 -1
  347. package/web-shell/assets/{chunk-F27PBJKO-6vHioKJe.js → chunk-F27PBJKO-BOew7pIK.js} +1 -1
  348. package/web-shell/assets/{chunk-G27WJ6UU-B_5hKTGo.js → chunk-G27WJ6UU-DHx1I-hO.js} +1 -1
  349. package/web-shell/assets/{chunk-JWPE2WC7-CO9VoFCH.js → chunk-JWPE2WC7-SarFW0WU.js} +1 -1
  350. package/web-shell/assets/{chunk-LCL6LL3I-7L5JpxYu.js → chunk-LCL6LL3I-BLzP083Z.js} +1 -1
  351. package/web-shell/assets/{chunk-POPQ4Y6H-DHLJMAqj.js → chunk-POPQ4Y6H-Bmkv_iKm.js} +1 -1
  352. package/web-shell/assets/{chunk-SVP7TREG-Dt-4Cqdl.js → chunk-SVP7TREG-MPx9r1N2.js} +1 -1
  353. package/web-shell/assets/{chunk-XXDRQBXY-QlSQ3ssG.js → chunk-XXDRQBXY-Ck-09rKG.js} +1 -1
  354. package/web-shell/assets/classDiagram-DTDB5LWJ-sTGo0K3v.js +1 -0
  355. package/web-shell/assets/classDiagram-v2-JRS7N3AN-sTGo0K3v.js +1 -0
  356. package/web-shell/assets/{cose-bilkent-JH36ORCC-DMw3EOxl.js → cose-bilkent-JH36ORCC-DWm6lfOG.js} +1 -1
  357. package/web-shell/assets/{cynefin-OW5HDTMX-s6vEA7RQ.js → cynefin-OW5HDTMX-DcBUyr5R.js} +1 -1
  358. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-AOKsvYLt.js → cynefinDiagram-5FMLGOSQ-Df8qmd_p.js} +1 -1
  359. package/web-shell/assets/{dagre-3AP2YEHR-9QAZn3m7.js → dagre-3AP2YEHR-DDmGspD7.js} +1 -1
  360. package/web-shell/assets/{diagram-S7CK7UJ4-CWpnu4FN.js → diagram-S7CK7UJ4-BK_qFvbi.js} +1 -1
  361. package/web-shell/assets/{diagram-UQ7AKVKN-9l0jXD8q.js → diagram-UQ7AKVKN-Uw3AP_bi.js} +1 -1
  362. package/web-shell/assets/{diagram-VSXAHHWV-BMUHroj4.js → diagram-VSXAHHWV-CJOQKxY7.js} +1 -1
  363. package/web-shell/assets/{diagram-VX7I27RA-Co9x27vm.js → diagram-VX7I27RA-DhdvZna5.js} +1 -1
  364. package/web-shell/assets/{diagram-Z3DM3KII-BKnTeOER.js → diagram-Z3DM3KII-edQU0nlP.js} +1 -1
  365. package/web-shell/assets/{ebnfDiagram-PWID7BFC-QBZD9CKG.js → ebnfDiagram-PWID7BFC-4kugBEsO.js} +1 -1
  366. package/web-shell/assets/{erDiagram-SSCWMZ5O-dKWAEGun.js → erDiagram-SSCWMZ5O-BMkFivWO.js} +1 -1
  367. package/web-shell/assets/{flowDiagram-A5DVABFB-CR_UgVqj.js → flowDiagram-A5DVABFB-BM1ea8g-.js} +1 -1
  368. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DQUnjWO6.js → ganttDiagram-EL5Y4UJY-CXj_cKRf.js} +1 -1
  369. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C4j59wPL.js → gitGraphDiagram-WWUBYQGX-D0nEqwqu.js} +1 -1
  370. package/web-shell/assets/{index-tYXRIPz4.js → index-B6JN54Pd.js} +1 -1
  371. package/web-shell/assets/{index-BN_m_uHJ.css → index-C-XlQn24.css} +1 -1
  372. package/web-shell/assets/index-DLjXM0dn.js +1860 -0
  373. package/web-shell/assets/{infoDiagram-RXCK75RN-mzqbt50w.js → infoDiagram-RXCK75RN-DF7aGGbQ.js} +1 -1
  374. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-ChLOqhGl.js → ishikawaDiagram-5VMMS53U-CZYNX1lL.js} +1 -1
  375. package/web-shell/assets/{journeyDiagram-EYS64GPL-SifZE-R8.js → journeyDiagram-EYS64GPL-CvrqMUz1.js} +1 -1
  376. package/web-shell/assets/{kanban-definition-3QL26DDD-Sft2qlbc.js → kanban-definition-3QL26DDD-BZNJQZBj.js} +1 -1
  377. package/web-shell/assets/{layout-O2uHVkPd.js → layout-Bf83x7D6.js} +1 -1
  378. package/web-shell/assets/{linear-BVqYgjSc.js → linear-Bkc3ES2f.js} +1 -1
  379. package/web-shell/assets/{mermaid.core-CZ9MQaJ6.js → mermaid.core-C6xuovwz.js} +6 -6
  380. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BNQYjBqM.js → mindmap-definition-FBJOCRG2-DzH6gVRg.js} +1 -1
  381. package/web-shell/assets/{pegDiagram-XKGWAZYB-rh1J8uv6.js → pegDiagram-XKGWAZYB-DCvLh2fa.js} +1 -1
  382. package/web-shell/assets/{pieDiagram-E7YTZNPT-BQHR5mn9.js → pieDiagram-E7YTZNPT-BtjVlx_6.js} +1 -1
  383. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CLCbP7mK.js → quadrantDiagram-AXDQQJYC-IbroqxFe.js} +1 -1
  384. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CDQhrkbm.js → railroadDiagram-O6MQD6OU-BvMykiWW.js} +1 -1
  385. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BdP9uswg.js → requirementDiagram-EFPCY7ZU-D-HHMyrh.js} +1 -1
  386. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CFZDFBXF.js → sankeyDiagram-P5KCCOFB-C0XXhB6d.js} +1 -1
  387. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BW9WOJXI.js → sequenceDiagram-WJ2MYXX4-DseAXj5d.js} +1 -1
  388. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CPMia32z.js → sizeCapture-X5ZJPWSS-Cek2EweK.js} +1 -1
  389. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BANp9p7F.js → stateDiagram-HBIQ2CUA-yLv8wafW.js} +1 -1
  390. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DeThXnol.js +1 -0
  391. package/web-shell/assets/{swimlanes-XN3QIQJK-JroXksK-.js → swimlanes-XN3QIQJK-Cwz-opvE.js} +1 -1
  392. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-GW0R1ZSv.js +8 -0
  393. package/web-shell/assets/{timeline-definition-24CTP7MA-DfuVIfYY.js → timeline-definition-24CTP7MA-BJuFD7OG.js} +1 -1
  394. package/web-shell/assets/{vennDiagram-4TSXK5OY-BZXoSjRB.js → vennDiagram-4TSXK5OY-CNAavdoV.js} +1 -1
  395. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BdiY8avC.js → wardleyDiagram-VM6X3IG4-DaIjAidq.js} +1 -1
  396. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DcXh_U4H.js → xychartDiagram-S5SC5T6Z-DkcQXjTy.js} +1 -1
  397. package/web-shell/index.html +19 -4
  398. package/chunks/MaxSizedBox-3OZJCC3J.js +0 -110
  399. package/chunks/agent-BFE3DQM3.js +0 -93
  400. package/chunks/agent-headless-LLVKZZ4P.js +0 -87
  401. package/chunks/bridge-EBYO4SYM.js +0 -118
  402. package/chunks/channel-settings-store-5VP2Y2YM.js +0 -115
  403. package/chunks/chunk-AXMWHKXA.js +0 -42
  404. package/chunks/chunk-IO257NUD.js +0 -623
  405. package/chunks/chunk-YHC2EYYG.js +0 -125
  406. package/chunks/computer-use-EGPWFEX6.js +0 -2142
  407. package/chunks/config-utils-WZ43VOBS.js +0 -25
  408. package/chunks/contextCommand-5DSEQI6S.js +0 -106
  409. package/chunks/daemon-status-provider-EYMLPYJU.js +0 -116
  410. package/chunks/daemon-trust-policy-CQYKZ7VO.js +0 -112
  411. package/chunks/deferred-core-runtime-WFEPUXZR.js +0 -114
  412. package/chunks/earlyInputCapture-PN4PP7V5.js +0 -107
  413. package/chunks/environment-WUPHLPKZ.js +0 -127
  414. package/chunks/errors-WPMPVIAT.js +0 -113
  415. package/chunks/exitPlanMode-MLFHYZNB.js +0 -85
  416. package/chunks/handleAutoUpdate-F5OTWUT5.js +0 -109
  417. package/chunks/i18n-C562S6KN.js +0 -124
  418. package/chunks/initializer-7YPGOFP4.js +0 -113
  419. package/chunks/installationInfo-ARU5Q2H7.js +0 -107
  420. package/chunks/list-KTSK275C.js +0 -116
  421. package/chunks/loadedSettingsAdapter-F3T2EQ5J.js +0 -110
  422. package/chunks/mcp-6ONTVPAY.js +0 -110
  423. package/chunks/nonInteractiveCli-KZDWFAN6.js +0 -178
  424. package/chunks/pidfile-IO7ALSZF.js +0 -111
  425. package/chunks/prompt-terminal-ledger-TCE7PMCE.js +0 -105
  426. package/chunks/resumeHistoryUtils-DDSBAQJS.js +0 -118
  427. package/chunks/ripGrep-E7P6K4QR.js +0 -40
  428. package/chunks/serve-KEAWV4TI.js +0 -118
  429. package/chunks/shell-H6K63WG3.js +0 -95
  430. package/chunks/skill-settings-TCKLXIXM.js +0 -118
  431. package/chunks/spawnChannel-2K6NKWM5.js +0 -111
  432. package/chunks/standalone-update-LSCGOEFP.js +0 -118
  433. package/chunks/terminal-image-renderer-UHX3UD66.js +0 -114
  434. package/chunks/theme-manager-6B47ZPIF.js +0 -102
  435. package/chunks/total-session-admission-NSCFWGJH.js +0 -113
  436. package/chunks/trustedFolders-7XMJWGQ3.js +0 -122
  437. package/chunks/updateCheck-EOVLHD4T.js +0 -118
  438. package/chunks/useAutoAcceptIndicator-ZNMIGBTN.js +0 -120
  439. package/chunks/workspace-providers-status-GPGU5YMT.js +0 -113
  440. package/chunks/workspace-registry-BQISXT6Y.js +0 -122
  441. package/chunks/workspace-service-LLY6HCUC.js +0 -129
  442. package/chunks/workspace-skills-status-L5N2Y3ZP.js +0 -113
  443. package/chunks/write-file-EJHU2Z3E.js +0 -90
  444. package/web-shell/assets/channel-Zg3WHgq_.js +0 -1
  445. package/web-shell/assets/classDiagram-DTDB5LWJ-C16l9jQz.js +0 -1
  446. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C16l9jQz.js +0 -1
  447. package/web-shell/assets/index-DrlJu79f.js +0 -1792
  448. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-NZYAoQLU.js +0 -1
  449. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-3YdVX3vj.js +0 -8
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  parseRule
5
- } from "./chunk-T6XLJRQY.js";
5
+ } from "./chunk-XYX474JQ.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -4,10 +4,10 @@ import {
4
4
  getRateLimitErrorDetails,
5
5
  isQwenQuotaExceededError,
6
6
  isRateLimitError
7
- } from "./chunk-LI4YHTQK.js";
7
+ } from "./chunk-EB4VDXNI.js";
8
8
  import {
9
9
  isAbortError
10
- } from "./chunk-A5F2YNO6.js";
10
+ } from "./chunk-2NNTE2ED.js";
11
11
  import {
12
12
  init_esbuild_shims
13
13
  } from "./chunk-5O2XNYP6.js";
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-OCPBI7J5.js";
20
20
  import {
21
21
  defaultSpawnChannelFactory
22
- } from "./chunk-VMJL7RH6.js";
22
+ } from "./chunk-GZJUCMH4.js";
23
23
  import {
24
24
  BridgeChannelClosedError,
25
25
  BridgeTimeoutError,
@@ -29,7 +29,7 @@ import {
29
29
  SessionRestoreTimeoutError,
30
30
  createIdleWorkspaceExtensionsStatus,
31
31
  createIdleWorkspaceHooksStatus
32
- } from "./chunk-URN2JIAQ.js";
32
+ } from "./chunk-CITGRGCM.js";
33
33
  import {
34
34
  ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
35
35
  ACTIVE_WORK_CLOSE_TIMEOUT_MS,
@@ -41,6 +41,8 @@ import {
41
41
  ACTIVE_WORK_MAX_SNAPSHOT_SESSIONS,
42
42
  ACTIVE_WORK_NOTIFICATION_METHOD,
43
43
  ACTIVE_WORK_STALE_INTERVALS,
44
+ CHANNEL_LIVENESS_META_KEY,
45
+ CHANNEL_LIVENESS_VERSION,
44
46
  CHANNEL_PROMPT_META_KEY,
45
47
  CHANNEL_STARTUP_PROFILE_META_KEY,
46
48
  CHANNEL_STARTUP_PROFILE_VERSION,
@@ -68,7 +70,7 @@ import {
68
70
  clampActiveWorkIntervalMs,
69
71
  isValidTrustedModelPrompt,
70
72
  sessionCloseDrainBudgetMs
71
- } from "./chunk-LURJYO2T.js";
73
+ } from "./chunk-OZ6KS6KW.js";
72
74
  import {
73
75
  BranchWhilePromptActiveError,
74
76
  BridgeChannelQuarantinedError,
@@ -122,7 +124,7 @@ import {
122
124
  isOfficeDocumentExtension,
123
125
  isRecordableDerivedChild,
124
126
  pathHasSkippedDirectoryComponent
125
- } from "./chunk-TBVSALA3.js";
127
+ } from "./chunk-SKNVVYIJ.js";
126
128
  import {
127
129
  SESSION_ARTIFACT_PERSISTENCE_VERSION,
128
130
  SESSION_PR_LIST_LIMIT,
@@ -140,19 +142,22 @@ import {
140
142
  normalizeSnapshotPayload,
141
143
  normalizeTurnResultError,
142
144
  stableSessionArtifactId
143
- } from "./chunk-T6XLJRQY.js";
145
+ } from "./chunk-XYX474JQ.js";
146
+ import {
147
+ APPROVAL_MODES
148
+ } from "./chunk-BVE5EMIG.js";
144
149
  import {
145
150
  DAEMON_TRACEPARENT_META_KEY,
146
151
  DAEMON_TRACESTATE_META_KEY
147
- } from "./chunk-2UZJWSVD.js";
152
+ } from "./chunk-ILPXSKGQ.js";
148
153
  import {
149
154
  INVOCATION_CONTEXT_META_KEY,
150
155
  PRIVATE_ACP_CAPABILITY_ENV,
151
156
  PRIVATE_PARENT_CAPABILITY_META_KEY
152
- } from "./chunk-FDD2IUEL.js";
157
+ } from "./chunk-UX3IFLJM.js";
153
158
  import {
154
159
  getSpecificMimeType
155
- } from "./chunk-IWOWEENB.js";
160
+ } from "./chunk-WBT3STGU.js";
156
161
  import {
157
162
  init_esbuild_shims
158
163
  } from "./chunk-5O2XNYP6.js";
@@ -162,7 +167,7 @@ import {
162
167
 
163
168
  // packages/acp-bridge/src/bridge.ts
164
169
  init_esbuild_shims();
165
- import { randomBytes, randomUUID as randomUUID2 } from "node:crypto";
170
+ import { randomBytes, randomUUID as randomUUID3 } from "node:crypto";
166
171
  import * as path4 from "node:path";
167
172
  import { inspect } from "node:util";
168
173
 
@@ -1200,6 +1205,127 @@ function parseSessionSource(sourceType, sourceId) {
1200
1205
  }
1201
1206
  __name(parseSessionSource, "parseSessionSource");
1202
1207
 
1208
+ // packages/acp-bridge/src/channel-liveness.ts
1209
+ init_esbuild_shims();
1210
+ import { performance as performance2 } from "node:perf_hooks";
1211
+ var CHANNEL_LIVENESS_INTERVAL_MS = 15e3;
1212
+ var CHANNEL_LIVENESS_PROBE_TIMEOUT_MS = 1e4;
1213
+ var CHANNEL_LIVENESS_FAILURE_THRESHOLD = 2;
1214
+ var CHANNEL_LIVENESS_TIMER_LATE_TOLERANCE_MS = 1e3;
1215
+ var CHANNEL_LIVENESS_TIMEOUT_CODE = "acp_channel_liveness_timeout";
1216
+ var CHANNEL_LIVENESS_PROTOCOL_ERROR_CODE = "acp_channel_liveness_protocol_error";
1217
+ var ChannelLivenessFailure = class extends Error {
1218
+ constructor(code) {
1219
+ super(
1220
+ code === CHANNEL_LIVENESS_TIMEOUT_CODE ? "ACP channel failed consecutive liveness probes" : "ACP channel returned an invalid liveness response"
1221
+ );
1222
+ this.code = code;
1223
+ this.name = "ChannelLivenessFailure";
1224
+ }
1225
+ static {
1226
+ __name(this, "ChannelLivenessFailure");
1227
+ }
1228
+ };
1229
+ function isValidResponse(response, nonce) {
1230
+ return typeof response === "object" && response !== null && !Array.isArray(response) && response["v"] === CHANNEL_LIVENESS_VERSION && response["nonce"] === nonce;
1231
+ }
1232
+ __name(isValidResponse, "isValidResponse");
1233
+ function startChannelLivenessMonitor(options) {
1234
+ const now = options.now ?? (() => performance2.now());
1235
+ let stopped = false;
1236
+ let timer;
1237
+ let consecutiveTimeouts = 0;
1238
+ let nextNonce = 0;
1239
+ let resolveStopped;
1240
+ const stoppedOutcome = new Promise((resolve2) => {
1241
+ resolveStopped = resolve2;
1242
+ });
1243
+ const isActive = /* @__PURE__ */ __name(() => !stopped && options.isActive(), "isActive");
1244
+ const stop = /* @__PURE__ */ __name(() => {
1245
+ stopped = true;
1246
+ if (timer !== void 0) {
1247
+ clearTimeout(timer);
1248
+ timer = void 0;
1249
+ }
1250
+ resolveStopped({ kind: "stopped" });
1251
+ }, "stop");
1252
+ const fail = /* @__PURE__ */ __name((error) => {
1253
+ if (!isActive()) return;
1254
+ stop();
1255
+ options.onFailure(error);
1256
+ }, "fail");
1257
+ const timerWasLate = /* @__PURE__ */ __name((expectedAt) => now() > expectedAt + CHANNEL_LIVENESS_TIMER_LATE_TOLERANCE_MS, "timerWasLate");
1258
+ const runProbe = /* @__PURE__ */ __name(async () => {
1259
+ if (!isActive()) return;
1260
+ const nonce = nextNonce;
1261
+ nextNonce = nonce === Number.MAX_SAFE_INTEGER ? 0 : Math.max(0, nonce + 1);
1262
+ const response = Promise.resolve().then(() => options.probe(nonce)).then(
1263
+ (value) => ({ kind: "response", response: value }),
1264
+ () => ({ kind: "rejected" })
1265
+ );
1266
+ let outcome;
1267
+ while (true) {
1268
+ const expectedAt = now() + CHANNEL_LIVENESS_PROBE_TIMEOUT_MS;
1269
+ const timeout = new Promise((resolve2) => {
1270
+ timer = setTimeout(() => {
1271
+ timer = void 0;
1272
+ resolve2(
1273
+ timerWasLate(expectedAt) ? { kind: "local_delay" } : { kind: "timeout" }
1274
+ );
1275
+ }, CHANNEL_LIVENESS_PROBE_TIMEOUT_MS);
1276
+ timer.unref();
1277
+ });
1278
+ outcome = await Promise.race([response, timeout, stoppedOutcome]);
1279
+ if (timer !== void 0) {
1280
+ clearTimeout(timer);
1281
+ timer = void 0;
1282
+ }
1283
+ if (outcome.kind === "stopped" || !isActive()) return;
1284
+ if (outcome.kind !== "local_delay") break;
1285
+ consecutiveTimeouts = 0;
1286
+ }
1287
+ if (outcome.kind === "response") {
1288
+ if (!isValidResponse(outcome.response, nonce)) {
1289
+ fail(new ChannelLivenessFailure(CHANNEL_LIVENESS_PROTOCOL_ERROR_CODE));
1290
+ return;
1291
+ }
1292
+ consecutiveTimeouts = 0;
1293
+ schedule(CHANNEL_LIVENESS_INTERVAL_MS);
1294
+ return;
1295
+ }
1296
+ if (outcome.kind === "rejected") {
1297
+ await Promise.resolve();
1298
+ fail(new ChannelLivenessFailure(CHANNEL_LIVENESS_PROTOCOL_ERROR_CODE));
1299
+ return;
1300
+ }
1301
+ consecutiveTimeouts++;
1302
+ if (consecutiveTimeouts >= CHANNEL_LIVENESS_FAILURE_THRESHOLD) {
1303
+ fail(new ChannelLivenessFailure(CHANNEL_LIVENESS_TIMEOUT_CODE));
1304
+ return;
1305
+ }
1306
+ void runProbe();
1307
+ }, "runProbe");
1308
+ function schedule(delayMs) {
1309
+ if (!isActive()) return;
1310
+ const expectedAt = now() + delayMs;
1311
+ timer = setTimeout(() => {
1312
+ timer = void 0;
1313
+ if (!isActive()) return;
1314
+ if (timerWasLate(expectedAt)) {
1315
+ consecutiveTimeouts = 0;
1316
+ schedule(CHANNEL_LIVENESS_INTERVAL_MS);
1317
+ return;
1318
+ }
1319
+ void runProbe();
1320
+ }, delayMs);
1321
+ timer.unref();
1322
+ }
1323
+ __name(schedule, "schedule");
1324
+ schedule(CHANNEL_LIVENESS_INTERVAL_MS);
1325
+ return { stop };
1326
+ }
1327
+ __name(startChannelLivenessMonitor, "startChannelLivenessMonitor");
1328
+
1203
1329
  // packages/acp-bridge/src/channel-startup-profile.ts
1204
1330
  init_esbuild_shims();
1205
1331
  var MAX_PROFILE_DURATION_MS = 6e5;
@@ -1304,6 +1430,7 @@ __name(getChannelStartupProfileAttributes, "getChannelStartupProfileAttributes")
1304
1430
 
1305
1431
  // packages/acp-bridge/src/sessionAttachments.ts
1306
1432
  init_esbuild_shims();
1433
+ import { randomUUID } from "node:crypto";
1307
1434
  import { promises as fs, statSync } from "node:fs";
1308
1435
  import { tmpdir } from "node:os";
1309
1436
  import * as path from "node:path";
@@ -1717,9 +1844,11 @@ var SessionAttachmentStore = class {
1717
1844
  if (!directory) return;
1718
1845
  await fs.rm(directory, { recursive: true, force: true });
1719
1846
  }
1720
- async delete() {
1847
+ async delete(options = {}) {
1848
+ options.assertCanCommit?.();
1721
1849
  this.closing = true;
1722
1850
  await this.waitForCopy();
1851
+ options.assertCanCommit?.();
1723
1852
  if (!this.closed) {
1724
1853
  this.closed = true;
1725
1854
  this.pendingItems = 0;
@@ -1727,7 +1856,20 @@ var SessionAttachmentStore = class {
1727
1856
  this.resolvePendingDrainWaiters();
1728
1857
  }
1729
1858
  const directory = this.persistentDirectory ?? await this.directoryPromise?.catch(() => void 0);
1730
- if (directory) await fs.rm(directory, { recursive: true, force: true });
1859
+ if (directory) {
1860
+ options.assertCanCommit?.();
1861
+ const tombstone = path.join(
1862
+ path.dirname(directory),
1863
+ `.${path.basename(directory)}.deleting-${randomUUID()}`
1864
+ );
1865
+ try {
1866
+ await fs.rename(directory, tombstone);
1867
+ } catch (error) {
1868
+ if (error.code === "ENOENT") return;
1869
+ throw error;
1870
+ }
1871
+ await fs.rm(tombstone, { recursive: true, force: true });
1872
+ }
1731
1873
  }
1732
1874
  assertStored(reference) {
1733
1875
  const id = reference.attachmentId;
@@ -1829,7 +1971,7 @@ __name(writeStderrLine, "writeStderrLine");
1829
1971
 
1830
1972
  // packages/acp-bridge/src/bridgeClient.ts
1831
1973
  init_esbuild_shims();
1832
- import { randomUUID } from "node:crypto";
1974
+ import { randomUUID as randomUUID2 } from "node:crypto";
1833
1975
  import { promises as fs2 } from "node:fs";
1834
1976
  import * as path2 from "node:path";
1835
1977
 
@@ -1962,10 +2104,11 @@ var MultiClientPermissionMediator = class {
1962
2104
  this.safeAudit(
1963
2105
  () => this.deps.audit.recordRequested(record, policy, votersAtIssue)
1964
2106
  );
2107
+ const unresolvedWithoutDecision = timeoutMs > 0 ? `voter cancellation, session cancellation, or permissionTimeoutMs (${timeoutMs}ms)` : "voter or session cancellation because permissionTimeoutMs is disabled";
1965
2108
  if (policy === "consensus" && votersAtIssue.size === 0) {
1966
2109
  try {
1967
2110
  process.stderr.write(
1968
- `permissionMediator: consensus request ${record.requestId} for session ${record.sessionId} issued with empty votersAtIssue; can only resolve via permissionTimeoutMs (${timeoutMs}ms)
2111
+ `permissionMediator: consensus request ${record.requestId} for session ${record.sessionId} issued with empty votersAtIssue; can only resolve via ${unresolvedWithoutDecision}
1969
2112
  `
1970
2113
  );
1971
2114
  } catch {
@@ -1975,7 +2118,7 @@ var MultiClientPermissionMediator = class {
1975
2118
  this.unanimityBreadcrumbEmitted = true;
1976
2119
  try {
1977
2120
  process.stderr.write(
1978
- `permissionMediator: consensus request ${record.requestId} for session ${record.sessionId} requires unanimity (votersAtIssue.size=${votersAtIssue.size}, default quorum=floor(M/2)+1=${votersAtIssue.size}); split votes will only resolve via permissionTimeoutMs (${timeoutMs}ms). This breadcrumb fires once per mediator lifetime; subsequent unanimity-required requests are silent.
2121
+ `permissionMediator: consensus request ${record.requestId} for session ${record.sessionId} requires unanimity (votersAtIssue.size=${votersAtIssue.size}, default quorum=floor(M/2)+1=${votersAtIssue.size}); split votes will only resolve via ${unresolvedWithoutDecision}. This breadcrumb fires once per mediator lifetime; subsequent unanimity-required requests are silent.
1979
2122
  `
1980
2123
  );
1981
2124
  } catch {
@@ -2786,13 +2929,9 @@ var MAX_EARLY_EVENT_SESSIONS = 64;
2786
2929
  var MAX_EARLY_EVENTS_PER_SESSION = 32;
2787
2930
  var MAX_SUGGESTION_LENGTH = 500;
2788
2931
  var EARLY_EVENT_TTL_MS = 6e4;
2789
- var KNOWN_APPROVAL_MODES = /* @__PURE__ */ new Set([
2790
- "plan",
2791
- "default",
2792
- "auto-edit",
2793
- "auto",
2794
- "yolo"
2795
- ]);
2932
+ var KNOWN_APPROVAL_MODES = new Set(
2933
+ APPROVAL_MODES
2934
+ );
2796
2935
  function describeStatKind(stats) {
2797
2936
  if (stats.isDirectory()) return "directory";
2798
2937
  if (stats.isSymbolicLink()) return "symlink";
@@ -2864,7 +3003,7 @@ var BridgeClient = class {
2864
3003
  options.map((o) => String(o.optionId ?? ""))
2865
3004
  );
2866
3005
  allowedOptionIds.delete("");
2867
- const requestId = randomUUID();
3006
+ const requestId = randomUUID2();
2868
3007
  if (allowedOptionIds.has(CANCEL_VOTE_SENTINEL)) {
2869
3008
  throw new CancelSentinelCollisionError(requestId, CANCEL_VOTE_SENTINEL);
2870
3009
  }
@@ -4262,7 +4401,7 @@ var BridgeClient = class {
4262
4401
  } catch {
4263
4402
  }
4264
4403
  }
4265
- const tmp = `${realTarget}.${process.pid}.${Date.now()}.${randomUUID()}.tmp`;
4404
+ const tmp = `${realTarget}.${process.pid}.${Date.now()}.${randomUUID2()}.tmp`;
4266
4405
  let preserveMode;
4267
4406
  try {
4268
4407
  const targetStat = await fs2.stat(realTarget);
@@ -8088,7 +8227,7 @@ var DEFAULT_MAX_SESSIONS = 32;
8088
8227
  var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
8089
8228
  var CHAT_RECORD_UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
8090
8229
  var MAX_EVENT_RING_SIZE = 1e6;
8091
- var DEFAULT_PERMISSION_TIMEOUT_MS = 5 * 60 * 1e3;
8230
+ var DEFAULT_PERMISSION_TIMEOUT_MS = 0;
8092
8231
  var DEFAULT_MAX_PENDING_PER_SESSION = 64;
8093
8232
  var DEFAULT_SESSION_REAP_INTERVAL_MS = 6e4;
8094
8233
  var DEFAULT_SESSION_IDLE_TIMEOUT_MS = 30 * 6e4;
@@ -8150,7 +8289,7 @@ function createAcpSessionBridge(opts) {
8150
8289
  );
8151
8290
  }
8152
8291
  }, "releaseFreshSessionReservation");
8153
- const sessionCatalogGeneration = randomUUID2();
8292
+ const sessionCatalogGeneration = randomUUID3();
8154
8293
  let sessionCatalogRevision = 0;
8155
8294
  const getSessionCatalogVersion = /* @__PURE__ */ __name(() => ({
8156
8295
  generation: sessionCatalogGeneration,
@@ -8363,7 +8502,7 @@ function createAcpSessionBridge(opts) {
8363
8502
  return true;
8364
8503
  }
8365
8504
  const holds = response["holds"];
8366
- if (Array.isArray(holds)) {
8505
+ if (Array.isArray(holds) && holds.length <= ACTIVE_WORK_MAX_SESSION_HOLDS) {
8367
8506
  const adopted = /* @__PURE__ */ new Map();
8368
8507
  for (const hold of holds) {
8369
8508
  if (typeof hold !== "object" || hold === null) continue;
@@ -8452,6 +8591,7 @@ function createAcpSessionBridge(opts) {
8452
8591
  __name(channelUnavailableReject, "channelUnavailableReject");
8453
8592
  async function killChannelWithLog(ci, context) {
8454
8593
  ci.isDying = true;
8594
+ ci.channelLiveness?.stop();
8455
8595
  await ci.channel.kill().catch((err) => {
8456
8596
  writeStderrLine(
8457
8597
  `qwen serve: channel kill failed${context ? ` (${context})` : ""}: ${String(err)}`
@@ -8552,6 +8692,7 @@ function createAcpSessionBridge(opts) {
8552
8692
  if (!channelShouldReapWhenIdle(ci) || !hasNoChannelWork(ci)) return;
8553
8693
  ci.emptyReapPending = false;
8554
8694
  ci.isDying = true;
8695
+ ci.channelLiveness?.stop();
8555
8696
  await ci.channel.kill().catch(() => {
8556
8697
  });
8557
8698
  }
@@ -8746,7 +8887,7 @@ function createAcpSessionBridge(opts) {
8746
8887
  return limits;
8747
8888
  }, "journalSessionLimits");
8748
8889
  const unregisterJournalGrowthSessionLimits = journalGrowthPolicy !== void 0 && opts.registerJournalGrowthSessionLimits !== void 0 ? opts.registerJournalGrowthSessionLimits(journalSessionLimits) : void 0;
8749
- const createClientId = /* @__PURE__ */ __name(() => `client_${randomUUID2()}`, "createClientId");
8890
+ const createClientId = /* @__PURE__ */ __name(() => `client_${randomUUID3()}`, "createClientId");
8750
8891
  const registerClient = /* @__PURE__ */ __name((entry, requestedClientId) => {
8751
8892
  if (requestedClientId && entry.clientIds.has(requestedClientId)) {
8752
8893
  entry.clientIds.set(
@@ -8805,7 +8946,7 @@ function createAcpSessionBridge(opts) {
8805
8946
  if (inFlightChannelSpawn) return await inFlightChannelSpawn;
8806
8947
  const promise = (async () => {
8807
8948
  const privateParentCapability = randomBytes(32).toString("base64url");
8808
- const acpChannelId = randomUUID2();
8949
+ const acpChannelId = randomUUID3();
8809
8950
  const channel = await telemetry.withSpan(
8810
8951
  "channel.spawn",
8811
8952
  {
@@ -8991,6 +9132,7 @@ function createAcpSessionBridge(opts) {
8991
9132
  info.transportFailed = true;
8992
9133
  info.transportFailureCode = safeTransportFailureCode(error);
8993
9134
  info.isDying = true;
9135
+ info.channelLiveness?.stop();
8994
9136
  clearInFlightExtensionRefreshes(info.connection);
8995
9137
  }, "markTransportFailed");
8996
9138
  void channel.transportFailed?.then(
@@ -9004,6 +9146,7 @@ function createAcpSessionBridge(opts) {
9004
9146
  );
9005
9147
  }
9006
9148
  void channel.exited.then((exitInfo) => {
9149
+ info.channelLiveness?.stop();
9007
9150
  clearInFlightExtensionRefreshes(info.connection);
9008
9151
  if (channelInfo === info) cancelIdleTimer();
9009
9152
  if (info.workspaceMcpDiscoveryTimer) {
@@ -9087,6 +9230,7 @@ function createAcpSessionBridge(opts) {
9087
9230
  sessEntry.events.close();
9088
9231
  }
9089
9232
  });
9233
+ let channelLivenessNegotiated = false;
9090
9234
  try {
9091
9235
  await telemetry.withSpan(
9092
9236
  "channel.initialize",
@@ -9108,6 +9252,9 @@ function createAcpSessionBridge(opts) {
9108
9252
  [CHANNEL_STARTUP_PROFILE_META_KEY]: {
9109
9253
  v: CHANNEL_STARTUP_PROFILE_VERSION
9110
9254
  },
9255
+ [CHANNEL_LIVENESS_META_KEY]: {
9256
+ v: CHANNEL_LIVENESS_VERSION
9257
+ },
9111
9258
  [PRIVATE_PARENT_CAPABILITY_META_KEY]: privateParentCapability
9112
9259
  },
9113
9260
  clientCapabilities: {
@@ -9144,6 +9291,8 @@ function createAcpSessionBridge(opts) {
9144
9291
  seq: 0
9145
9292
  };
9146
9293
  }
9294
+ const channelLivenessCapability = isRecord3(response._meta) ? response._meta[CHANNEL_LIVENESS_META_KEY] : void 0;
9295
+ channelLivenessNegotiated = isRecord3(channelLivenessCapability) && channelLivenessCapability["v"] === CHANNEL_LIVENESS_VERSION;
9147
9296
  try {
9148
9297
  const attributes = getChannelStartupProfileAttributes(
9149
9298
  response,
@@ -9177,6 +9326,33 @@ function createAcpSessionBridge(opts) {
9177
9326
  }
9178
9327
  channelInfo = info;
9179
9328
  info.handshakeComplete = true;
9329
+ if (channelLivenessNegotiated) {
9330
+ const failChannelLiveness = /* @__PURE__ */ __name((error) => {
9331
+ if (info.isDying || !aliveChannels.has(info)) return;
9332
+ markTransportFailed(error);
9333
+ telemetry.event("channel.liveness_failed", {
9334
+ "qwen-code.daemon.acp_channel.id": info.id,
9335
+ "qwen-code.daemon.channel.session_count": info.sessionIds.size,
9336
+ "qwen-code.daemon.channel.transport_error_code": error.code
9337
+ });
9338
+ writeStderrLine(
9339
+ `qwen serve: channel liveness failed (${error.code}); killing channel`
9340
+ );
9341
+ if (info.channel.transportGuard) {
9342
+ info.channel.transportGuard.fail(error);
9343
+ } else {
9344
+ void killChannelWithLog(info, "channel liveness failure");
9345
+ }
9346
+ }, "failChannelLiveness");
9347
+ info.channelLiveness = startChannelLivenessMonitor({
9348
+ probe: /* @__PURE__ */ __name((nonce) => info.connection.extMethod(SERVE_STATUS_EXT_METHODS.channelPing, {
9349
+ v: CHANNEL_LIVENESS_VERSION,
9350
+ nonce
9351
+ }), "probe"),
9352
+ onFailure: failChannelLiveness,
9353
+ isActive: /* @__PURE__ */ __name(() => channelInfo === info && aliveChannels.has(info) && !info.isDying && !shuttingDown, "isActive")
9354
+ });
9355
+ }
9180
9356
  telemetry.metrics?.channelLifecycle("spawn");
9181
9357
  return info;
9182
9358
  })();
@@ -9258,6 +9434,7 @@ function createAcpSessionBridge(opts) {
9258
9434
  } catch (err) {
9259
9435
  if (hasNoChannelWork(ci, { ignoreCurrentSessionSpawn: true })) {
9260
9436
  ci.isDying = true;
9437
+ ci.channelLiveness?.stop();
9261
9438
  await ci.channel.kill().catch(() => {
9262
9439
  });
9263
9440
  } else {
@@ -10517,7 +10694,7 @@ function createAcpSessionBridge(opts) {
10517
10694
  const maybeFireRestoreAskUserQuestionPrompt = /* @__PURE__ */ __name((entry, restoreAskUserQuestionHint, requestedClientId, registeredClientId, options) => {
10518
10695
  if (opts.restoreAskUserQuestion !== true || restoreAskUserQuestionHint !== true || // Nobody can answer the re-hung question without an attached client;
10519
10696
  // internal restores (boot rehydrate, keepalive, sub-session resume)
10520
- // pass no clientId and must not fabricate a 5-minute permission wait.
10697
+ // pass no clientId and must not fabricate an unbounded permission wait.
10521
10698
  requestedClientId === void 0 || options.suppressRestorePrompt === true || // Admission-time busy check: pendingPromptCount flips synchronously
10522
10699
  // when a prompt is accepted, before the queue callback sets
10523
10700
  // promptActive; Goal turns never set promptActive at all.
@@ -11788,7 +11965,7 @@ function createAcpSessionBridge(opts) {
11788
11965
  req.branch,
11789
11966
  req.sessionId
11790
11967
  );
11791
- const tracker = effectiveScope === "single" ? workspaceKey : `${workspaceKey}#${randomUUID2()}`;
11968
+ const tracker = effectiveScope === "single" ? workspaceKey : `${workspaceKey}#${randomUUID3()}`;
11792
11969
  inFlightSpawns.set(tracker, promise);
11793
11970
  try {
11794
11971
  return await promise;
@@ -11850,7 +12027,7 @@ function createAcpSessionBridge(opts) {
11850
12027
  promptSlotReleased = true;
11851
12028
  entry.pendingPromptCount = Math.max(0, entry.pendingPromptCount - 1);
11852
12029
  }, "releasePromptSlot");
11853
- const promptId = context?.promptId ?? randomUUID2();
12030
+ const promptId = context?.promptId ?? randomUUID3();
11854
12031
  const invocationContext = Object.freeze({
11855
12032
  version: 1,
11856
12033
  sessionId,
@@ -13587,7 +13764,7 @@ function createAcpSessionBridge(opts) {
13587
13764
  const info = channelInfoForEntry(entry);
13588
13765
  if (!info || info.isDying) throw new SessionNotFoundError(sessionId);
13589
13766
  resolveTrustedClientId(entry, context?.clientId);
13590
- const requestId = randomUUID2();
13767
+ const requestId = randomUUID3();
13591
13768
  const queue = new GenerationStreamQueue(
13592
13769
  GENERATION_STREAM_QUEUE_CAPACITY
13593
13770
  );
@@ -13739,9 +13916,9 @@ function createAcpSessionBridge(opts) {
13739
13916
  resolveTrustedClientId(entry, context?.clientId);
13740
13917
  return await entry.attachments.remove(attachmentId);
13741
13918
  },
13742
- async deleteSessionAttachments(sessionId) {
13919
+ async deleteSessionAttachments(sessionId, options) {
13743
13920
  const store = byId.get(sessionId)?.attachments ?? new SessionAttachmentStore(opts.sessionAttachmentsRoot, sessionId);
13744
- await store.delete();
13921
+ await store.delete(options);
13745
13922
  },
13746
13923
  removePendingPrompt(sessionId, promptId, context) {
13747
13924
  const entry = byId.get(sessionId);
@@ -13853,7 +14030,7 @@ function createAcpSessionBridge(opts) {
13853
14030
  return { accepted: false };
13854
14031
  }
13855
14032
  }
13856
- const messageId = requestedMessageId ?? randomUUID2();
14033
+ const messageId = requestedMessageId ?? randomUUID3();
13857
14034
  if (entry.pendingPromptCount === 0 && entry.goalTurnActive !== true) {
13858
14035
  if (options?.queueOnly || options?.rejectIfIdle) {
13859
14036
  writeStderrLine(
@@ -14500,7 +14677,7 @@ function createAcpSessionBridge(opts) {
14500
14677
  ]);
14501
14678
  },
14502
14679
  generateWorkspaceContent(prompt, signal, _originatorClientId) {
14503
- const requestId = randomUUID2();
14680
+ const requestId = randomUUID3();
14504
14681
  const queue = new GenerationStreamQueue(
14505
14682
  GENERATION_STREAM_QUEUE_CAPACITY
14506
14683
  );
@@ -14786,6 +14963,7 @@ function createAcpSessionBridge(opts) {
14786
14963
  });
14787
14964
  }
14788
14965
  for (const info of channels) {
14966
+ info.channelLiveness?.stop();
14789
14967
  try {
14790
14968
  info.channel.killSync();
14791
14969
  } catch {
@@ -14808,7 +14986,10 @@ function createAcpSessionBridge(opts) {
14808
14986
  stopSessionReaper();
14809
14987
  const entries = Array.from(byId.values());
14810
14988
  const channels = Array.from(aliveChannels);
14811
- for (const ci of channels) ci.isDying = true;
14989
+ for (const ci of channels) {
14990
+ ci.isDying = true;
14991
+ ci.channelLiveness?.stop();
14992
+ }
14812
14993
  for (const e of entries) {
14813
14994
  permissionMediator.forgetSession(e.sessionId);
14814
14995
  e.pendingPermissionIds.clear();