@qwen-code/qwen-code 0.19.8 → 0.19.9-preview.0

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 (451) hide show
  1. package/bundled/qc-helper/SKILL.md +1 -0
  2. package/bundled/qc-helper/docs/configuration/auth.md +40 -55
  3. package/bundled/qc-helper/docs/configuration/model-providers.md +224 -218
  4. package/bundled/qc-helper/docs/configuration/settings.md +68 -51
  5. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  6. package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -2
  7. package/bundled/qc-helper/docs/features/channels/overview.md +82 -7
  8. package/bundled/qc-helper/docs/features/channels/wecom.md +6 -0
  9. package/bundled/qc-helper/docs/features/code-review.md +109 -41
  10. package/bundled/qc-helper/docs/features/commands.md +45 -44
  11. package/bundled/qc-helper/docs/features/computer-use.md +77 -0
  12. package/bundled/qc-helper/docs/features/hooks.md +29 -0
  13. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  14. package/bundled/qc-helper/docs/features/tool-use-summaries.md +19 -23
  15. package/bundled/qc-helper/docs/integration-vscode.md +2 -2
  16. package/bundled/qc-helper/docs/qwen-serve.md +66 -23
  17. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
  18. package/bundled/review/DESIGN.md +303 -46
  19. package/bundled/review/SKILL.md +670 -165
  20. package/chunks/MaxSizedBox-BEVSAWZ6.js +70 -0
  21. package/chunks/{StandaloneSessionPicker-EYRGH6PJ.js → StandaloneSessionPicker-2DA2MDDE.js} +81 -79
  22. package/chunks/{acpAgent-GRFTTRHW.js → acpAgent-G3WJU3PS.js} +1318 -465
  23. package/chunks/agent-DD3WSHXE.js +68 -0
  24. package/chunks/agent-headless-MHI7U2CU.js +62 -0
  25. package/chunks/{anthropicContentGenerator-CPF22MA7.js → anthropicContentGenerator-56U3YCP2.js} +187 -31
  26. package/chunks/{artifact-tool-D233YJFH.js → artifact-tool-MIZLXBLF.js} +5 -5
  27. package/chunks/{askUserQuestion-MKL5ZTMC.js → askUserQuestion-XMJVPNWM.js} +6 -6
  28. package/chunks/bridge-HKEWPNB5.js +78 -0
  29. package/chunks/{ca-MKD32FQL.js → ca-C2JTT2N5.js} +68 -6
  30. package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
  31. package/chunks/channel-worker-manager-YSFB4HUU.js +418 -0
  32. package/chunks/channel-worker-supervisor-QCKIOYZD.js +20 -0
  33. package/chunks/chunk-2FMQQXMM.js +38 -0
  34. package/chunks/{chunk-CSOTA7KX.js → chunk-2FO5GFKZ.js} +2 -2
  35. package/chunks/{chunk-QQDPRDVW.js → chunk-2HRYPZT5.js} +1 -1
  36. package/chunks/{chunk-UXEW557D.js → chunk-2J4ZWME4.js} +3 -3
  37. package/chunks/{chunk-P3XEEI3X.js → chunk-2TQXXQMI.js} +36 -7
  38. package/chunks/{chunk-GSHQYYIV.js → chunk-2UW5RFRP.js} +6 -26
  39. package/chunks/{chunk-6IAWPIQ6.js → chunk-2W3OOD4W.js} +5 -3
  40. package/chunks/{chunk-2PSWA5ID.js → chunk-2X56YUSZ.js} +1 -1
  41. package/chunks/{chunk-NQKLOAVJ.js → chunk-2Z5UX4KI.js} +2 -2
  42. package/chunks/chunk-3MX7D6QN.js +516 -0
  43. package/chunks/{chunk-EEN2TKST.js → chunk-43RXPU5Q.js} +2 -2
  44. package/chunks/{chunk-55ZMG67I.js → chunk-4LD5APFL.js} +4 -4
  45. package/chunks/{chunk-WF4FAXDL.js → chunk-4QZ3XHWE.js} +62 -62
  46. package/chunks/chunk-4QZADKJS.js +34 -0
  47. package/chunks/{chunk-UIDXQNMV.js → chunk-4WGODMVR.js} +1 -1
  48. package/chunks/{chunk-E6US47KI.js → chunk-4WKAA4KS.js} +1 -1
  49. package/chunks/{chunk-TI3BWD4D.js → chunk-54UZQ57N.js} +39 -19
  50. package/chunks/{chunk-3GONHQOA.js → chunk-57OAHC2Y.js} +1 -1
  51. package/chunks/{chunk-JZSY4WP3.js → chunk-5DTTYNB7.js} +1 -1
  52. package/chunks/chunk-5HBA2Z7V.js +28 -0
  53. package/chunks/{chunk-SKAZWEV5.js → chunk-5M6IDOMF.js} +35 -98
  54. package/chunks/{chunk-A4BMJM77.js → chunk-5O2XNYP6.js} +1 -0
  55. package/chunks/{chunk-FQNC62B2.js → chunk-5VHASII5.js} +11 -11
  56. package/chunks/{chunk-GO6LNQXT.js → chunk-6AM5D4ME.js} +1 -1
  57. package/chunks/{chunk-BJBWRCSK.js → chunk-6H67XLET.js} +1 -1
  58. package/chunks/{chunk-O7FIRWJV.js → chunk-6JPDCEDB.js} +3 -3
  59. package/chunks/{chunk-3UP777ZS.js → chunk-6RLROE6G.js} +1 -1
  60. package/chunks/{chunk-GN3F6PIU.js → chunk-6WPJRYLZ.js} +5 -5
  61. package/chunks/{chunk-ZERZSAZL.js → chunk-75DOP5OR.js} +2 -2
  62. package/chunks/chunk-7DKX4A5Z.js +91 -0
  63. package/chunks/{chunk-M7S4GK5Z.js → chunk-7IDCQ35Q.js} +147 -30
  64. package/chunks/{chunk-22MNNNXE.js → chunk-7NFB7LBQ.js} +11 -3
  65. package/chunks/{chunk-ZL5HN75Q.js → chunk-7R4DPSRA.js} +37 -3
  66. package/chunks/{chunk-VZ7HY3YU.js → chunk-7STBROEV.js} +3 -3
  67. package/chunks/{chunk-SAIILPQ3.js → chunk-7X7TEQNX.js} +5 -3
  68. package/chunks/{chunk-RMLZAUWH.js → chunk-A3U2TQUL.js} +10 -12
  69. package/chunks/{chunk-IRJWHZWU.js → chunk-A4UCTEB5.js} +2 -2
  70. package/chunks/{chunk-BOBRZZKD.js → chunk-A7W4GQRW.js} +5 -5
  71. package/chunks/{chunk-O33TBKDC.js → chunk-AAUZBE5Y.js} +155 -19
  72. package/chunks/{chunk-SQ2UATK7.js → chunk-ADLYZJYZ.js} +11 -11
  73. package/chunks/{chunk-QYUE6W3T.js → chunk-ALGGS7UH.js} +2 -39
  74. package/chunks/{chunk-WMPVYQ4P.js → chunk-ARKANCNX.js} +3 -2
  75. package/chunks/{chunk-IBY3Q3HG.js → chunk-AU4R7ACM.js} +967 -181
  76. package/chunks/{channel-worker-supervisor-NZQUOEFJ.js → chunk-B7MFJBKE.js} +190 -34
  77. package/chunks/{chunk-HW4N45EE.js → chunk-B7NUUEXC.js} +38 -11
  78. package/chunks/{chunk-3B26UVCX.js → chunk-BLPMRN4B.js} +39 -10
  79. package/chunks/{chunk-ZN5T4BHI.js → chunk-BPZALHVR.js} +2 -2
  80. package/chunks/{chunk-BVYU3ZTI.js → chunk-BXT6PQ73.js} +1020 -942
  81. package/chunks/{chunk-OFEVLU4C.js → chunk-CARU2RR2.js} +1 -1
  82. package/chunks/{chunk-HDOH3QYE.js → chunk-CEGKYZDB.js} +2 -2
  83. package/chunks/{chunk-GLE2YUPU.js → chunk-COH43MRJ.js} +1 -1
  84. package/chunks/{chunk-E5A7LHNN.js → chunk-CPBF7KYF.js} +1 -1
  85. package/chunks/{chunk-UWCTAVOD.js → chunk-CR3C7WXL.js} +1 -1
  86. package/chunks/{chunk-IWKSG2AR.js → chunk-CXAOG665.js} +1 -1
  87. package/chunks/{chunk-64WXLC72.js → chunk-DJ2GSRLV.js} +1 -1
  88. package/chunks/{chunk-QN5NZ3UQ.js → chunk-DMTGGOSA.js} +2 -2
  89. package/chunks/{chunk-27BHARDE.js → chunk-DMVA55W5.js} +2124 -30
  90. package/chunks/{chunk-JPALE3PA.js → chunk-DQCCLVQK.js} +6 -6
  91. package/chunks/{chunk-X2XNQQJI.js → chunk-E2UVIFI2.js} +186 -399
  92. package/chunks/{chunk-KHDZHZMH.js → chunk-E5Z2AVNV.js} +1 -1
  93. package/chunks/{chunk-E7EMCSUG.js → chunk-EAHMOXLL.js} +64 -42
  94. package/chunks/{chunk-VGGOPZUL.js → chunk-EJ3KGYWL.js} +36 -8
  95. package/chunks/{chunk-DIWVZ3VM.js → chunk-ERTHKDKN.js} +5 -5
  96. package/chunks/{chunk-UX6OTBVD.js → chunk-EX5OULP3.js} +2 -2
  97. package/chunks/{chunk-5MBO76SL.js → chunk-F333XEAU.js} +3 -3
  98. package/chunks/{chunk-OACJLMLD.js → chunk-FBU7WRZI.js} +18 -2
  99. package/chunks/{chunk-5IFG2VC4.js → chunk-FCMNKVXT.js} +1 -1
  100. package/chunks/chunk-FEOBU3FA.js +253 -0
  101. package/chunks/{chunk-LAXNEOBG.js → chunk-FI2WSOWX.js} +19 -3
  102. package/chunks/{chunk-E7KNELIZ.js → chunk-FSA7ERJ2.js} +2 -2
  103. package/chunks/{chunk-44NROQYV.js → chunk-GDQQRV43.js} +4 -4
  104. package/chunks/{chunk-ZE6E424U.js → chunk-GN5HJJBO.js} +2 -2
  105. package/chunks/{chunk-O2YT7VB4.js → chunk-GOXKNSDZ.js} +2 -65
  106. package/chunks/{chunk-V35MD7KN.js → chunk-GRC5HGPI.js} +1 -1
  107. package/chunks/{chunk-ON3JA3RU.js → chunk-GTENQOEJ.js} +7 -9
  108. package/chunks/{chunk-S6RLAIUR.js → chunk-GYTKQYDB.js} +1 -1
  109. package/chunks/{chunk-A2X3KLC3.js → chunk-GZXCZHCT.js} +3 -3
  110. package/chunks/{chunk-K5PGHDBN.js → chunk-H6XPXXMH.js} +1 -1
  111. package/chunks/{chunk-PMFULMLX.js → chunk-HCJTURZD.js} +2262 -384
  112. package/chunks/chunk-HGG2RRXD.js +445 -0
  113. package/chunks/{chunk-II73RK2S.js → chunk-HGT6JR3U.js} +20 -1
  114. package/chunks/{chunk-DICGXFAI.js → chunk-HJCVNZLQ.js} +11 -9
  115. package/chunks/{chunk-3GNOQZDC.js → chunk-HJUDVNCO.js} +17663 -14877
  116. package/chunks/{chunk-AYNCLGTW.js → chunk-HRUGYOJN.js} +8 -51
  117. package/chunks/{chunk-KYMBIKIW.js → chunk-HTHUX2T5.js} +1 -1
  118. package/chunks/{chunk-LQ7TMOCE.js → chunk-HTO4JFDZ.js} +1 -1
  119. package/chunks/{chunk-BUZ6HGL4.js → chunk-HWTL6MPR.js} +357 -59
  120. package/chunks/chunk-IDS7MSUP.js +74 -0
  121. package/chunks/{chunk-4CGOWHKM.js → chunk-J4MOFEOK.js} +2 -2
  122. package/chunks/chunk-JCD4FM7K.js +296 -0
  123. package/chunks/{chunk-22IFUCVR.js → chunk-JESCGQM3.js} +1 -1
  124. package/chunks/{chunk-JZHIQJOE.js → chunk-JGO6RFI2.js} +6 -6
  125. package/chunks/{chunk-X3YGAX7V.js → chunk-JGUT3LWZ.js} +9 -2
  126. package/chunks/{chunk-JRQ7EVGE.js → chunk-JW7OOJC6.js} +2 -2
  127. package/chunks/{chunk-OQXDAMKY.js → chunk-KF5MMGG4.js} +8 -8
  128. package/chunks/{chunk-42XGFRJS.js → chunk-KKRTYONM.js} +8 -6
  129. package/chunks/{chunk-GGQQA4JW.js → chunk-KSO42X3Z.js} +15 -2
  130. package/chunks/{chunk-MRO43B25.js → chunk-KW7NOTN6.js} +1 -1
  131. package/chunks/{chunk-54YZOP7P.js → chunk-L573Z2QZ.js} +11894 -5190
  132. package/chunks/{chunk-TLWA7TPR.js → chunk-L5U3ELZX.js} +2 -2
  133. package/chunks/{chunk-YHKAK72D.js → chunk-LHEOLOXU.js} +251 -63
  134. package/chunks/{chunk-H6EMK6QK.js → chunk-LQIDP6K5.js} +11913 -5207
  135. package/chunks/{chunk-I6WGFJJ3.js → chunk-LSEJG6AM.js} +73 -19
  136. package/chunks/{chunk-MZ7BABX3.js → chunk-LXLTBIDP.js} +44 -7
  137. package/chunks/{chunk-HLKG6CZN.js → chunk-M5GB774H.js} +1 -1
  138. package/chunks/{chunk-JCH35JB3.js → chunk-MKK4XGLF.js} +2 -2
  139. package/chunks/{chunk-YKZIAK7C.js → chunk-MO7O5722.js} +424 -40
  140. package/chunks/chunk-MR3PXB6E.js +48 -0
  141. package/chunks/{chunk-A5JOJ77H.js → chunk-MRYWYBQ4.js} +38 -15
  142. package/chunks/{chunk-332PWN27.js → chunk-NHDKSOEY.js} +1 -1
  143. package/chunks/{chunk-TSPB77TG.js → chunk-NRAFASYX.js} +1016 -2967
  144. package/chunks/{chunk-BMFMJINR.js → chunk-OA4JVLSA.js} +28 -2
  145. package/chunks/{chunk-P7M4GA57.js → chunk-OCPBI7J5.js} +1 -1
  146. package/chunks/chunk-OJAMDVF5.js +66 -0
  147. package/chunks/{chunk-IJRL2S3D.js → chunk-OKAIGAYW.js} +6 -6
  148. package/chunks/{chunk-FBET5XZ2.js → chunk-PEJWA3QQ.js} +29 -10
  149. package/chunks/{chunk-L4AMBVQG.js → chunk-PMKW35AT.js} +54 -22
  150. package/chunks/{chunk-AGHU5VRK.js → chunk-PZL23GTM.js} +1 -1
  151. package/chunks/{chunk-PC4ZXHU2.js → chunk-Q6TUALBE.js} +3 -3
  152. package/chunks/{chunk-FXGLL2HL.js → chunk-Q7YDKOGY.js} +1 -1
  153. package/chunks/{chunk-XOHNA2S6.js → chunk-QAW7PIHT.js} +3 -3
  154. package/chunks/{chunk-XYR5RUA5.js → chunk-QE2WJ7FS.js} +10 -3
  155. package/chunks/{chunk-LGFAYIKX.js → chunk-QHTIBUWB.js} +1 -1
  156. package/chunks/{chunk-P3MYAZBY.js → chunk-QMGX2KO2.js} +1 -1
  157. package/chunks/{chunk-Z3I3QJK3.js → chunk-QRUIS3DN.js} +1 -1
  158. package/chunks/{chunk-ITOGNELQ.js → chunk-QSWDGAIC.js} +2 -2
  159. package/chunks/{chunk-PUVCVELY.js → chunk-QUJOI7SR.js} +70 -8
  160. package/chunks/{chunk-GHOTR7HL.js → chunk-QUPXZXLV.js} +1 -1
  161. package/chunks/{chunk-6VK6FIMQ.js → chunk-R5D5JOAM.js} +415 -379
  162. package/chunks/{chunk-CD6USWHZ.js → chunk-R5XLNDE2.js} +2 -2
  163. package/chunks/{chunk-W7EEOR7D.js → chunk-RCEEXIOO.js} +8 -6
  164. package/chunks/{chunk-TLRYABYP.js → chunk-RKUWKYED.js} +1 -1
  165. package/chunks/{chunk-RNBYOUGV.js → chunk-RXFQM6FQ.js} +1 -1
  166. package/chunks/{chunk-QXPI7FEC.js → chunk-S3TWXGKA.js} +4 -4
  167. package/chunks/{chunk-2EM7ECZD.js → chunk-SMSFWUFY.js} +309 -80
  168. package/chunks/{chunk-FV7425LN.js → chunk-SPJQO2CE.js} +18 -5
  169. package/chunks/{chunk-MLZQVCF3.js → chunk-SZRN75WQ.js} +1 -1
  170. package/chunks/{chunk-7RYW5LQV.js → chunk-T2NCM2ET.js} +2 -2
  171. package/chunks/{chunk-Z2Z3GUXZ.js → chunk-TB6UDU4T.js} +1 -1
  172. package/chunks/{chunk-EXPMGZZV.js → chunk-TEGEBB2I.js} +1 -1
  173. package/chunks/{chunk-MX2YXRER.js → chunk-TJTKSVIV.js} +1 -1
  174. package/chunks/{chunk-CCGOFQV3.js → chunk-TQBODCFD.js} +8 -7
  175. package/chunks/chunk-TV6K2FB4.js +224 -0
  176. package/chunks/{chunk-H6BD2ELD.js → chunk-TYAMGABM.js} +2 -2
  177. package/chunks/{chunk-QYNNN7BK.js → chunk-TYLOFD2U.js} +2 -2
  178. package/chunks/{chunk-VRDMOSQS.js → chunk-UDXSXLER.js} +2 -2
  179. package/chunks/{chunk-DHOLNQLC.js → chunk-UFDX27PL.js} +60 -40
  180. package/chunks/{chunk-WHJQ3JUS.js → chunk-UGN6CTNZ.js} +10 -10
  181. package/chunks/{chunk-CHB5SLZZ.js → chunk-UNLRKDMW.js} +4 -4
  182. package/chunks/{chunk-CJCKDMWO.js → chunk-URK542T4.js} +1 -1
  183. package/chunks/{chunk-AHNXYU4O.js → chunk-V6WHFGST.js} +1 -1
  184. package/chunks/{chunk-ZTQ26VBE.js → chunk-VDDGDZMA.js} +1 -1
  185. package/chunks/{chunk-BOBOCR5H.js → chunk-VEETSXYX.js} +4 -4
  186. package/chunks/{chunk-OMX7CUOE.js → chunk-VGC4I5JJ.js} +1 -1
  187. package/chunks/{chunk-43W4YSO6.js → chunk-VJNBRRZG.js} +2 -2
  188. package/chunks/{chunk-WQTHLB5T.js → chunk-VKS7EIOA.js} +7 -7
  189. package/chunks/{chunk-J7RCB6N5.js → chunk-VVDNGM6X.js} +2 -2
  190. package/chunks/{chunk-ER3BKOLB.js → chunk-W7FJ3N32.js} +1 -1
  191. package/chunks/{chunk-3HX5LZ6R.js → chunk-WBL3FJEU.js} +2 -2
  192. package/chunks/{chunk-7LTB54MK.js → chunk-WIEO4CWB.js} +2 -2
  193. package/chunks/chunk-WMC6HH7Y.js +493 -0
  194. package/chunks/{chunk-FEJ2FZ3U.js → chunk-WTNZ6DXB.js} +2 -2
  195. package/chunks/{chunk-L46XKEGM.js → chunk-X6ODDESK.js} +5 -8
  196. package/chunks/chunk-XDPYM5DE.js +71 -0
  197. package/chunks/{chunk-3RW4AZJV.js → chunk-XFSFZCM5.js} +1 -1
  198. package/chunks/{chunk-2MPVVENX.js → chunk-XU457J4V.js} +2 -2
  199. package/chunks/{chunk-SIUQ3YYX.js → chunk-XVNQMZ2I.js} +1 -1
  200. package/chunks/{chunk-SYCJMSIJ.js → chunk-XWRJCPHC.js} +1 -1
  201. package/chunks/{chunk-SUAKHHK7.js → chunk-Y66VOBRP.js} +3 -3
  202. package/chunks/chunk-YAF2MQZ6.js +19 -0
  203. package/chunks/chunk-YHN5SUIJ.js +219 -0
  204. package/chunks/{chunk-BR4QREVK.js → chunk-YQ3U5MUC.js} +1 -1
  205. package/chunks/{chunk-Y6Z2O3WR.js → chunk-YUZI3WAC.js} +1 -1
  206. package/chunks/{chunk-YDOXPLYL.js → chunk-ZA74ZTQU.js} +4564 -1326
  207. package/chunks/{chunk-DCZWC4PF.js → chunk-ZGE3222J.js} +5 -5
  208. package/chunks/chunk-ZP4ZZJJG.js +448 -0
  209. package/chunks/{chunk-AHNJGLFV.js → chunk-ZPAHLFZU.js} +3 -3
  210. package/chunks/cli-entry-path-4VJ3Y6T2.js +10 -0
  211. package/chunks/{computer-use-WMY3UOBX.js → computer-use-SHA6C3ES.js} +50 -50
  212. package/chunks/config-utils-XSHOMMK4.js +24 -0
  213. package/chunks/contextCommand-HOAF5LUC.js +68 -0
  214. package/chunks/create-sub-session-EAB2U5XW.js +207 -0
  215. package/chunks/create-sub-session-WJOWBFEP.js +375 -0
  216. package/chunks/{cron-create-JSXEIPVS.js → cron-create-GMVKSXZT.js} +9 -9
  217. package/chunks/{cron-delete-OIFVEPGU.js → cron-delete-VDZKUAVK.js} +7 -7
  218. package/chunks/{cron-list-D4ZX4IOE.js → cron-list-UG7C7RAR.js} +14 -10
  219. package/chunks/{daemon-WPAENEBW.js → daemon-MI5HF26N.js} +1074 -61
  220. package/chunks/daemon-status-provider-KFL3LRTP.js +76 -0
  221. package/chunks/{de-ZFPPQVSF.js → de-2VCDRDGU.js} +68 -6
  222. package/chunks/{devtools-FM6GJPYG.js → devtools-4QFYJT6U.js} +3 -3
  223. package/chunks/{dist-O2IRTRPP.js → dist-IEXZC5ZR.js} +10 -10
  224. package/chunks/{dist-SCFLLYMK.js → dist-PQK4GCKA.js} +12 -11
  225. package/chunks/{dist-63IS3ZMI.js → dist-PZV5RKM6.js} +4 -4
  226. package/chunks/{dist-E6UANPIM.js → dist-U75JK3PF.js} +1011 -197
  227. package/chunks/{dist-H2AEJCZ5.js → dist-VXO7QBON.js} +5 -5
  228. package/chunks/{dist-Z34QPAQW.js → dist-WH4TZSH3.js} +529 -79
  229. package/chunks/{dist-BEXOZXLQ.js → dist-X2ABIW5R.js} +36 -15
  230. package/chunks/earlyInputCapture-PKAQJMIP.js +69 -0
  231. package/chunks/{edit-OTYWAXGP.js → edit-6TXLYHJ2.js} +51 -51
  232. package/chunks/{en-N4EPZAQI.js → en-NJCA3TAA.js} +78 -6
  233. package/chunks/{enter-worktree-HNYBDVCX.js → enter-worktree-ZTILGPJX.js} +50 -50
  234. package/chunks/{enterPlanMode-CJCNGT63.js → enterPlanMode-62HRAMCH.js} +66 -51
  235. package/chunks/environment-OYA3ZVEL.js +89 -0
  236. package/chunks/errors-BFXOUUUR.js +75 -0
  237. package/chunks/{exit-worktree-DUUKOE3X.js → exit-worktree-HHJ5M6MV.js} +50 -50
  238. package/chunks/{exitPlanMode-AMMSXOAJ.js → exitPlanMode-M3SWHCL7.js} +51 -51
  239. package/chunks/{fast-path-OV6NIP3K.js → fast-path-3VMPLM74.js} +8 -8
  240. package/chunks/{fast-path-settings-7RIFI3PK.js → fast-path-settings-DAOVFADC.js} +8 -6
  241. package/chunks/{fileFromPath-IBEHA3CO.js → fileFromPath-UDALK7FM.js} +3 -3
  242. package/chunks/{fr-5WWMY53B.js → fr-5F3E7WKD.js} +68 -6
  243. package/chunks/{gemini-NQ3WWBKB.js → gemini-ZCGVYOJL.js} +181 -110
  244. package/chunks/{geminiContentGenerator-CDUNEJQE.js → geminiContentGenerator-XBYBAIDQ.js} +9 -9
  245. package/chunks/{getMachineId-bsd-4CASPIU4.js → getMachineId-bsd-EXV7SWPA.js} +3 -3
  246. package/chunks/{getMachineId-darwin-HPQPEMZR.js → getMachineId-darwin-IUOMFXU3.js} +3 -3
  247. package/chunks/{getMachineId-linux-AUARKYHL.js → getMachineId-linux-K7XJYFHL.js} +2 -2
  248. package/chunks/{getMachineId-unsupported-S32ZDA2T.js → getMachineId-unsupported-EA5FDRJ6.js} +2 -2
  249. package/chunks/{getMachineId-win-4EFLHYIJ.js → getMachineId-win-KBA6RAI5.js} +3 -3
  250. package/chunks/{glob-ROV3YS4R.js → glob-UOEYQNHN.js} +97 -75
  251. package/chunks/{grep-NRITKDCD.js → grep-OQM3CH7W.js} +50 -50
  252. package/chunks/handleAutoUpdate-ORBYVJHZ.js +69 -0
  253. package/chunks/i18n-NBP574CO.js +84 -0
  254. package/chunks/initializer-CWD7TCCD.js +73 -0
  255. package/chunks/installationInfo-CHPDUPWC.js +65 -0
  256. package/chunks/{ja-CUHZOLEJ.js → ja-66J6B53L.js} +69 -7
  257. package/chunks/{keychain-token-storage-UJV5XP4Z.js → keychain-token-storage-AU22CQI6.js} +4 -4
  258. package/chunks/{kittyProtocolDetector-OJRCJLIU.js → kittyProtocolDetector-HCNNKJTI.js} +2 -2
  259. package/chunks/list-ZTTO362W.js +76 -0
  260. package/chunks/loadedSettingsAdapter-V4ZTRKUO.js +70 -0
  261. package/chunks/{loop-wakeup-OHWEMFP5.js → loop-wakeup-C4EXLYVA.js} +10 -10
  262. package/chunks/{lowlight-FYAAUU5J.js → lowlight-J2OZNPCA.js} +1 -1
  263. package/chunks/{ls-7MFU2QYW.js → ls-2OUTG3IZ.js} +6 -6
  264. package/chunks/{lsp-XHDTPTGV.js → lsp-4VMNXZW6.js} +4 -4
  265. package/chunks/mcp-UH5PSGIK.js +70 -0
  266. package/chunks/{monitor-FL2ZO33W.js → monitor-F4NYEU5J.js} +50 -50
  267. package/chunks/{multipart-parser-AJ4WASWR.js → multipart-parser-AWZKXSQN.js} +3 -3
  268. package/chunks/nonInteractiveCli-7IHPXVNH.js +129 -0
  269. package/chunks/{notebook-edit-6PULTHL5.js → notebook-edit-HPDXNGQH.js} +51 -51
  270. package/chunks/openaiContentGenerator-OBDNNOE2.js +56 -0
  271. package/chunks/pidfile-AUMGYIOK.js +73 -0
  272. package/chunks/{pt-OLYN42DS.js → pt-TFZO5Y6T.js} +68 -6
  273. package/chunks/{qwenContentGenerator-NX2E7PB7.js → qwenContentGenerator-LH2U2YRG.js} +52 -52
  274. package/chunks/{qwenOAuth2-ZV7YLMND.js → qwenOAuth2-LEYOU7RU.js} +9 -9
  275. package/chunks/read-file-HUUFBLEO.js +30 -0
  276. package/chunks/{read-mcp-resource-CNQHBSJM.js → read-mcp-resource-JUFHCKSC.js} +5 -5
  277. package/chunks/{read-package-up-ER5OJUGP.js → read-package-up-TCM6I7S2.js} +2 -2
  278. package/chunks/{record-artifact-SQ2OKRJW.js → record-artifact-DWSMBXYY.js} +4 -4
  279. package/chunks/ripGrep-C7X33LU6.js +60 -0
  280. package/chunks/{ru-LDM3GWVQ.js → ru-4L4LFHIT.js} +68 -6
  281. package/chunks/{run-qwen-serve-JK2DL7PI.js → run-qwen-serve-DGW5AFDJ.js} +1465 -283
  282. package/chunks/runtime-NYUSLBEZ.js +99 -0
  283. package/chunks/{scheduler-O4IGVZKK.js → scheduler-5VKDXULT.js} +51 -51
  284. package/chunks/{send-message-76GT3JMC.js → send-message-JZ752NWD.js} +7 -7
  285. package/chunks/serve-UTAHSFXH.js +76 -0
  286. package/chunks/{server-SGNPKX2O.js → server-VUHSYSUV.js} +9088 -1817
  287. package/chunks/{session-5BNM25EZ.js → session-QSGSSNFB.js} +340 -135
  288. package/chunks/settings-X24RYEED.js +120 -0
  289. package/chunks/shell-4MSI2R4O.js +70 -0
  290. package/chunks/{skill-I22QK5XS.js → skill-JR3GTNVZ.js} +24 -24
  291. package/chunks/spawnChannel-RFAAO44J.js +70 -0
  292. package/chunks/{src-7XL4G4DC.js → src-VLI3TKEY.js} +4 -4
  293. package/chunks/{src-BBQSM46M.js → src-YDBNMIIM.js} +183 -53
  294. package/chunks/standalone-update-4CY4HKGC.js +79 -0
  295. package/chunks/{startInteractiveUI-JII36UGN.js → startInteractiveUI-FOD7MMVB.js} +2368 -1923
  296. package/chunks/stdioHelpers-UMY72QRP.js +14 -0
  297. package/chunks/{syntheticOutput-F7LSDCAR.js → syntheticOutput-LELY6HAI.js} +5 -5
  298. package/chunks/task-create-QY3BIMNM.js +23 -0
  299. package/chunks/{task-list-TGGJX7EA.js → task-list-D2U47WBJ.js} +11 -10
  300. package/chunks/{task-stop-W7NGTMYQ.js → task-stop-N6E5IYLH.js} +4 -4
  301. package/chunks/{task-update-XYWMHJGJ.js → task-update-HJCQILLB.js} +13 -12
  302. package/chunks/{team-create-A7NUU5AQ.js → team-create-ZLQSU2E3.js} +50 -50
  303. package/chunks/{team-delete-UHQQ2QQX.js → team-delete-RCWYDRF4.js} +11 -10
  304. package/chunks/{team-plan-approval-TOQRJ2KI.js → team-plan-approval-YUAYBYLS.js} +50 -50
  305. package/chunks/theme-manager-SKNEBMOG.js +64 -0
  306. package/chunks/{todoWrite-C4ZAMSR3.js → todoWrite-FKCGATPJ.js} +6 -6
  307. package/chunks/{tool-search-SZ4EFS2T.js → tool-search-V5J3TGWY.js} +24 -24
  308. package/chunks/total-session-admission-2WIH72I3.js +72 -0
  309. package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
  310. package/chunks/trustedFolders-JF265CRI.js +80 -0
  311. package/chunks/types-ML3TRJQ5.js +16 -0
  312. package/chunks/updateCheck-AMXNPBP6.js +69 -0
  313. package/chunks/updateEventEmitter-5MKC7BLQ.js +10 -0
  314. package/chunks/validateNonInterActiveAuth-6YHQO7PD.js +194 -0
  315. package/chunks/{version-NO2XSNNP.js → version-UEJJK7PE.js} +3 -3
  316. package/chunks/{web-fetch-UYGMOHW4.js → web-fetch-QGODBB6S.js} +8 -8
  317. package/chunks/{workflow-WO2H6NRI.js → workflow-5YFA5V4M.js} +51 -51
  318. package/chunks/workspace-providers-status-LMBLBNR7.js +73 -0
  319. package/chunks/workspace-registration-store-VV2S4MSV.js +27 -0
  320. package/chunks/workspace-registry-BVMPYRLN.js +76 -0
  321. package/chunks/workspace-service-PUYIZ3J4.js +86 -0
  322. package/chunks/workspace-skills-status-CJ7J2KPP.js +72 -0
  323. package/chunks/{write-file-PX2Z7IBE.js → write-file-OV77M6X7.js} +51 -51
  324. package/chunks/{yargs-B64EYTCF.js → yargs-6H2AUULL.js} +2 -2
  325. package/chunks/{zh-J4F6QWQV.js → zh-FSAH32JB.js} +79 -7
  326. package/chunks/{zh-TW-XVDWOLSW.js → zh-TW-D2YIE2LO.js} +79 -7
  327. package/cli.js +18 -17
  328. package/locales/ca.js +91 -7
  329. package/locales/de.js +90 -7
  330. package/locales/en.js +109 -7
  331. package/locales/fr.js +91 -7
  332. package/locales/ja.js +93 -7
  333. package/locales/pt.js +90 -7
  334. package/locales/ru.js +90 -7
  335. package/locales/zh-TW.js +106 -7
  336. package/locales/zh.js +106 -7
  337. package/package.json +3 -6
  338. package/web-shell/assets/{arc-BWyoJpY2.js → arc-CObt_TK9.js} +1 -1
  339. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BT0mGrz2.js → architectureDiagram-3BPJPVTR-B7aiJ6CK.js} +1 -1
  340. package/web-shell/assets/{blockDiagram-GPEHLZMM-BLgUWvyf.js → blockDiagram-GPEHLZMM-BSK2CrID.js} +1 -1
  341. package/web-shell/assets/{c4Diagram-AAUBKEIU-DYx9M7oU.js → c4Diagram-AAUBKEIU-Bhx2p7T_.js} +1 -1
  342. package/web-shell/assets/channel-BBaLq8MV.js +1 -0
  343. package/web-shell/assets/{chunk-2J33WTMH-CfMHWbuZ.js → chunk-2J33WTMH-c3Hzv0Ni.js} +1 -1
  344. package/web-shell/assets/{chunk-4BX2VUAB-B1URoqEV.js → chunk-4BX2VUAB-DNXaK7ZF.js} +1 -1
  345. package/web-shell/assets/{chunk-55IACEB6-DAIaM4QF.js → chunk-55IACEB6-BXjvDj_i.js} +1 -1
  346. package/web-shell/assets/{chunk-727SXJPM-B2X34knw.js → chunk-727SXJPM-B6CaKFp-.js} +1 -1
  347. package/web-shell/assets/{chunk-AQP2D5EJ-Cif-zLTQ.js → chunk-AQP2D5EJ-tij6Mz9B.js} +1 -1
  348. package/web-shell/assets/{chunk-FMBD7UC4-H18WCXdY.js → chunk-FMBD7UC4-DdlsGk2h.js} +1 -1
  349. package/web-shell/assets/{chunk-ND2GUHAM-YFtetHi0.js → chunk-ND2GUHAM-CdgGZSHE.js} +1 -1
  350. package/web-shell/assets/{chunk-QZHKN3VN-By2hiH3r.js → chunk-QZHKN3VN-D8oJn1C0.js} +1 -1
  351. package/web-shell/assets/classDiagram-4FO5ZUOK-B2ZK6sWE.js +1 -0
  352. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B2ZK6sWE.js +1 -0
  353. package/web-shell/assets/{cose-bilkent-S5V4N54A-VrcnnLZu.js → cose-bilkent-S5V4N54A-BUVmNp1Y.js} +1 -1
  354. package/web-shell/assets/{dagre-BM42HDAG-CGo-IaVV.js → dagre-BM42HDAG-CO4q310O.js} +1 -1
  355. package/web-shell/assets/{diagram-2AECGRRQ-Dl4QjzIB.js → diagram-2AECGRRQ-C6gFvWkg.js} +1 -1
  356. package/web-shell/assets/{diagram-5GNKFQAL-qMLmsO0u.js → diagram-5GNKFQAL-NG2I_c0h.js} +1 -1
  357. package/web-shell/assets/{diagram-KO2AKTUF-CHlmuxPI.js → diagram-KO2AKTUF-DFKMS6I9.js} +1 -1
  358. package/web-shell/assets/{diagram-LMA3HP47-BUwU3GwT.js → diagram-LMA3HP47-BiElfsfP.js} +1 -1
  359. package/web-shell/assets/{diagram-OG6HWLK6-HEhwPDUM.js → diagram-OG6HWLK6-zLWDYUqu.js} +1 -1
  360. package/web-shell/assets/{erDiagram-TEJ5UH35-1n0llBmM.js → erDiagram-TEJ5UH35-DoVaazhK.js} +1 -1
  361. package/web-shell/assets/{flowDiagram-I6XJVG4X-BN74uMnt.js → flowDiagram-I6XJVG4X-0RLz-mXg.js} +1 -1
  362. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BoOq78i3.js → ganttDiagram-6RSMTGT7-C-eX1A39.js} +3 -3
  363. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CN8b00c8.js → gitGraphDiagram-PVQCEYII-BauQu1Bu.js} +1 -1
  364. package/web-shell/assets/index-3uAT3ehO.css +5 -0
  365. package/web-shell/assets/index-CVHa2QH7.js +3 -0
  366. package/web-shell/assets/index-D1KigWat.js +1128 -0
  367. package/web-shell/assets/{infoDiagram-5YYISTIA-CCurnIna.js → infoDiagram-5YYISTIA-C800cFvZ.js} +1 -1
  368. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-AwuRqdUP.js → ishikawaDiagram-YF4QCWOH-CFK1Jk6e.js} +1 -1
  369. package/web-shell/assets/{journeyDiagram-JHISSGLW-B7IICk-E.js → journeyDiagram-JHISSGLW-Cjx0WAC4.js} +1 -1
  370. package/web-shell/assets/{kanban-definition-UN3LZRKU-BYF0OKhx.js → kanban-definition-UN3LZRKU-DWMDHbiv.js} +1 -1
  371. package/web-shell/assets/{linear-GWWguGfD.js → linear-vpW4FrZs.js} +1 -1
  372. package/web-shell/assets/{mermaid.core-JqtkxvCl.js → mermaid.core-DsHRUnDd.js} +5 -5
  373. package/web-shell/assets/{mindmap-definition-RKZ34NQL-B0MmHsZ6.js → mindmap-definition-RKZ34NQL-D3Eb1cAK.js} +1 -1
  374. package/web-shell/assets/{pieDiagram-4H26LBE5-DhImUZLQ.js → pieDiagram-4H26LBE5-Cr2-6sWt.js} +1 -1
  375. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DGeSC3DT.js → quadrantDiagram-W4KKPZXB-Yd7yUgVp.js} +1 -1
  376. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DkspY6Re.js → requirementDiagram-4Y6WPE33-BE6SprL8.js} +1 -1
  377. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CaOofS2x.js → sankeyDiagram-5OEKKPKP-DzkuMK8d.js} +1 -1
  378. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DFQ_kFnN.js → sequenceDiagram-3UESZ5HK-wD9A3Dhi.js} +1 -1
  379. package/web-shell/assets/{stateDiagram-AJRCARHV-D3snw0Tz.js → stateDiagram-AJRCARHV-BOp5q1Nm.js} +1 -1
  380. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDsWUmPG.js +1 -0
  381. package/web-shell/assets/{timeline-definition-PNZ67QCA-l4zH8nLM.js → timeline-definition-PNZ67QCA-Btc08sUA.js} +1 -1
  382. package/web-shell/assets/{vennDiagram-CIIHVFJN-BnRlA98M.js → vennDiagram-CIIHVFJN-Bv6upsOA.js} +1 -1
  383. package/web-shell/assets/{wardley-L42UT6IY-BS0xUdmd.js → wardley-L42UT6IY-D-XamnCK.js} +1 -1
  384. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKGBUWyQ.js → wardleyDiagram-YWT4CUSO-BbP_5Wfp.js} +1 -1
  385. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DVb2HuOB.js → xychartDiagram-2RQKCTM6-CO5Hh28b.js} +1 -1
  386. package/web-shell/index.html +16 -4
  387. package/chunks/MaxSizedBox-5DT2SD7B.js +0 -71
  388. package/chunks/agent-H2DGKS77.js +0 -68
  389. package/chunks/agent-headless-KFMFIT6J.js +0 -62
  390. package/chunks/bridge-NA3ZQQKJ.js +0 -78
  391. package/chunks/chunk-5P5XGNYH.js +0 -93
  392. package/chunks/chunk-6SHO7WFF.js +0 -79
  393. package/chunks/chunk-IFEWJXFS.js +0 -37
  394. package/chunks/chunk-XNXVCNAT.js +0 -88
  395. package/chunks/contextCommand-LXFZRP4L.js +0 -68
  396. package/chunks/daemon-status-provider-GJRXY5EN.js +0 -76
  397. package/chunks/earlyInputCapture-KNOYZ4MJ.js +0 -69
  398. package/chunks/environment-ATFTYMLZ.js +0 -88
  399. package/chunks/errors-A54HAADA.js +0 -75
  400. package/chunks/handleAutoUpdate-CEZJAARW.js +0 -65
  401. package/chunks/initializer-BRFJKRRX.js +0 -71
  402. package/chunks/list-KVHF7O4X.js +0 -73
  403. package/chunks/loadedSettingsAdapter-LL5PSFKX.js +0 -68
  404. package/chunks/mcp-3GCXRTOQ.js +0 -68
  405. package/chunks/nonInteractiveCli-PTQI3DV6.js +0 -119
  406. package/chunks/openaiContentGenerator-YE42PKCY.js +0 -56
  407. package/chunks/pidfile-NZYSCFRK.js +0 -73
  408. package/chunks/read-file-33XGP5HF.js +0 -30
  409. package/chunks/ripGrep-QWZLGTAN.js +0 -60
  410. package/chunks/serve-JTMIGANH.js +0 -74
  411. package/chunks/settings-3MI4XXP6.js +0 -118
  412. package/chunks/shell-YJKBE67T.js +0 -68
  413. package/chunks/spawnChannel-UNV6W4DU.js +0 -70
  414. package/chunks/task-create-WCHTB435.js +0 -22
  415. package/chunks/theme-manager-WZ4RRMMB.js +0 -64
  416. package/chunks/total-session-admission-ULXJWXFV.js +0 -72
  417. package/chunks/trustedFolders-LAZZPZ3D.js +0 -79
  418. package/chunks/types-QX5C3CHJ.js +0 -12
  419. package/chunks/updateCheck-KONLM73X.js +0 -65
  420. package/chunks/validateNonInterActiveAuth-MPKSRCXD.js +0 -184
  421. package/chunks/workspace-providers-status-3W7E7DFW.js +0 -71
  422. package/chunks/workspace-registry-SXJZNN3O.js +0 -74
  423. package/chunks/workspace-service-CZRQZ4Q4.js +0 -80
  424. package/chunks/workspace-skills-status-K7WFREPD.js +0 -70
  425. package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +0 -35
  426. package/node_modules/@qwen-code/audio-capture/dist/index.js +0 -48
  427. package/node_modules/@qwen-code/audio-capture/dist/index.js.map +0 -1
  428. package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +0 -7
  429. package/node_modules/@qwen-code/audio-capture/dist/platform.js +0 -18
  430. package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +0 -1
  431. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +0 -21
  432. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +0 -58
  433. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +0 -5
  434. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +0 -84
  435. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +0 -19
  436. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +0 -6
  437. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +0 -207
  438. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +0 -7
  439. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +0 -43
  440. package/node_modules/@qwen-code/audio-capture/package.json +0 -30
  441. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  442. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  443. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
  444. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
  445. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  446. package/web-shell/assets/channel-wmPUGHtg.js +0 -1
  447. package/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +0 -1
  448. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +0 -1
  449. package/web-shell/assets/index-CNwoO1Cn.js +0 -783
  450. package/web-shell/assets/index-CWQ0z6kZ.css +0 -5
  451. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +0 -1
@@ -2,37 +2,34 @@
2
2
  "use strict";
3
3
  import {
4
4
  isLoopbackBind
5
- } from "./chunk-RNBYOUGV.js";
6
- import {
7
- require_lib
8
- } from "./chunk-3HX5LZ6R.js";
9
- import {
10
- require_mime_db
11
- } from "./chunk-7RYW5LQV.js";
5
+ } from "./chunk-RXFQM6FQ.js";
12
6
  import {
13
7
  CLIENT_MCP_OVER_WS_CONFIG_FLAG
14
- } from "./chunk-AGHU5VRK.js";
8
+ } from "./chunk-PZL23GTM.js";
9
+ import {
10
+ require_lib
11
+ } from "./chunk-WBL3FJEU.js";
15
12
  import {
16
13
  MAX_WORKSPACE_PATH_LENGTH
17
- } from "./chunk-ER3BKOLB.js";
14
+ } from "./chunk-W7FJ3N32.js";
18
15
  import {
19
- writeStderrLine
20
- } from "./chunk-Y6Z2O3WR.js";
16
+ require_mime_db
17
+ } from "./chunk-T2NCM2ET.js";
21
18
  import {
22
- require_once
23
- } from "./chunk-5P5XGNYH.js";
19
+ writeStderrLine
20
+ } from "./chunk-YUZI3WAC.js";
24
21
  import {
25
22
  require_safer
26
- } from "./chunk-SYCJMSIJ.js";
23
+ } from "./chunk-XWRJCPHC.js";
27
24
  import {
28
25
  require_src
29
- } from "./chunk-QN5NZ3UQ.js";
26
+ } from "./chunk-DMTGGOSA.js";
30
27
  import {
31
28
  require_ms
32
- } from "./chunk-BR4QREVK.js";
29
+ } from "./chunk-YQ3U5MUC.js";
33
30
  import {
34
31
  init_esbuild_shims
35
- } from "./chunk-A4BMJM77.js";
32
+ } from "./chunk-5O2XNYP6.js";
36
33
  import {
37
34
  __commonJS,
38
35
  __name,
@@ -11322,6 +11319,86 @@ var require_utils2 = __commonJS({
11322
11319
  }
11323
11320
  });
11324
11321
 
11322
+ // node_modules/wrappy/wrappy.js
11323
+ var require_wrappy = __commonJS({
11324
+ "node_modules/wrappy/wrappy.js"(exports, module) {
11325
+ init_esbuild_shims();
11326
+ module.exports = wrappy;
11327
+ function wrappy(fn, cb) {
11328
+ if (fn && cb) return wrappy(fn)(cb);
11329
+ if (typeof fn !== "function")
11330
+ throw new TypeError("need wrapper function");
11331
+ Object.keys(fn).forEach(function(k) {
11332
+ wrapper[k] = fn[k];
11333
+ });
11334
+ return wrapper;
11335
+ function wrapper() {
11336
+ var args = new Array(arguments.length);
11337
+ for (var i = 0; i < args.length; i++) {
11338
+ args[i] = arguments[i];
11339
+ }
11340
+ var ret = fn.apply(this, args);
11341
+ var cb2 = args[args.length - 1];
11342
+ if (typeof ret === "function" && ret !== cb2) {
11343
+ Object.keys(cb2).forEach(function(k) {
11344
+ ret[k] = cb2[k];
11345
+ });
11346
+ }
11347
+ return ret;
11348
+ }
11349
+ __name(wrapper, "wrapper");
11350
+ }
11351
+ __name(wrappy, "wrappy");
11352
+ }
11353
+ });
11354
+
11355
+ // node_modules/once/once.js
11356
+ var require_once = __commonJS({
11357
+ "node_modules/once/once.js"(exports, module) {
11358
+ init_esbuild_shims();
11359
+ var wrappy = require_wrappy();
11360
+ module.exports = wrappy(once);
11361
+ module.exports.strict = wrappy(onceStrict);
11362
+ once.proto = once(function() {
11363
+ Object.defineProperty(Function.prototype, "once", {
11364
+ value: /* @__PURE__ */ __name(function() {
11365
+ return once(this);
11366
+ }, "value"),
11367
+ configurable: true
11368
+ });
11369
+ Object.defineProperty(Function.prototype, "onceStrict", {
11370
+ value: /* @__PURE__ */ __name(function() {
11371
+ return onceStrict(this);
11372
+ }, "value"),
11373
+ configurable: true
11374
+ });
11375
+ });
11376
+ function once(fn) {
11377
+ var f = /* @__PURE__ */ __name(function() {
11378
+ if (f.called) return f.value;
11379
+ f.called = true;
11380
+ return f.value = fn.apply(this, arguments);
11381
+ }, "f");
11382
+ f.called = false;
11383
+ return f;
11384
+ }
11385
+ __name(once, "once");
11386
+ function onceStrict(fn) {
11387
+ var f = /* @__PURE__ */ __name(function() {
11388
+ if (f.called)
11389
+ throw new Error(f.onceError);
11390
+ f.called = true;
11391
+ return f.value = fn.apply(this, arguments);
11392
+ }, "f");
11393
+ var name = fn.name || "Function wrapped with `once`";
11394
+ f.onceError = name + " shouldn't be called more than once";
11395
+ f.called = false;
11396
+ return f;
11397
+ }
11398
+ __name(onceStrict, "onceStrict");
11399
+ }
11400
+ });
11401
+
11325
11402
  // node_modules/is-promise/index.js
11326
11403
  var require_is_promise = __commonJS({
11327
11404
  "node_modules/is-promise/index.js"(exports, module) {
@@ -16455,6 +16532,7 @@ var SERVE_CAPABILITY_REGISTRY = {
16455
16532
  session_cancel: { since: "v1" },
16456
16533
  session_events: { since: "v1" },
16457
16534
  session_artifacts: { since: "v1" },
16535
+ session_artifacts_persistence: { since: "v1" },
16458
16536
  // Daemon emits `slow_client_warning` synthetic frames at 75% queue
16459
16537
  // fill and honors `?maxQueued=N` (range [16, 2048]) on
16460
16538
  // `GET /session/:id/events`. Old daemons silently lack both — SDK
@@ -16505,6 +16583,7 @@ var SERVE_CAPABILITY_REGISTRY = {
16505
16583
  session_metadata: { since: "v1" },
16506
16584
  session_organization: { since: "v1" },
16507
16585
  session_export: { since: "v1" },
16586
+ session_transcript: { since: "v1" },
16508
16587
  // Daemon supports the MCP client guardrail surface: an in-process
16509
16588
  // counter exposed on `GET /workspace/mcp`, a `--mcp-client-budget=N`
16510
16589
  // flag with `--mcp-budget-mode={enforce, warn, off}`, and a
@@ -16551,6 +16630,7 @@ var SERVE_CAPABILITY_REGISTRY = {
16551
16630
  // unregistered — the toggle takes effect on the next ACP child spawn
16552
16631
  // (`tools.disabled` is consulted at `Config` construction time).
16553
16632
  workspace_tool_toggle: { since: "v1" },
16633
+ workspace_skill_toggle: { since: "v1" },
16554
16634
  workspace_settings: { since: "v1" },
16555
16635
  // `GET /workspace/permissions` is always available when this tag is
16556
16636
  // advertised. `POST /workspace/permissions` updates the active ACP
@@ -16668,9 +16748,57 @@ var SERVE_CAPABILITY_REGISTRY = {
16668
16748
  session_branch: { since: "v1" },
16669
16749
  rate_limit: { since: "v1" },
16670
16750
  workspace_reload: { since: "v1" },
16751
+ // Daemon supports reloading its daemon-managed channel worker via
16752
+ // `POST /workspace/channel/reload`. The worker is stopped and relaunched;
16753
+ // on relaunch it re-reads settings.json (channels / proxy / per-channel
16754
+ // model), so channel settings changes apply without a full daemon restart.
16755
+ // Advertised CONDITIONALLY while the runtime manager has a committed or
16756
+ // recoverable channel worker selection.
16757
+ channel_reload: { since: "v1" },
16758
+ // Runtime GET/PUT/DELETE control for daemon-managed channel selection.
16759
+ // The route exists even when no selection was supplied at daemon boot.
16760
+ channel_control: { since: "v1" },
16671
16761
  // Multi-workspace sessions closed loop (issue #6378 Phase 2a). Advertised
16672
16762
  // only when one daemon hosts more than one registered workspace runtime.
16673
16763
  multi_workspace_sessions: { since: "v1" },
16764
+ // Singular session rewind routes resolve the owning live workspace runtime.
16765
+ multi_workspace_session_rewind: { since: "v1" },
16766
+ // Singular session shell routes resolve the owning live workspace runtime.
16767
+ multi_workspace_session_shell: { since: "v1" },
16768
+ persistent_workspace_registration: { since: "v1" },
16769
+ workspace_runtime_removal: { since: "v1" },
16770
+ // Workspace-qualified core REST routes under `/workspaces/:workspace/...`.
16771
+ // Covers core file/status/permissions/trust/lifecycle/MCP/tool, memory,
16772
+ // workspace agent CRUD, and persisted session organization surfaces.
16773
+ // Workspace-qualified settings also require the existing
16774
+ // `workspace_settings` tag because that surface depends on settings
16775
+ // persistence. ACP/WebSocket and auth stay outside this core tag;
16776
+ // workspace-qualified Voice REST/WebSocket routes use their separate
16777
+ // `workspace_qualified_voice` capability below. V2 extension management
16778
+ // is advertised separately via `extension_management_v2`.
16779
+ workspace_qualified_rest_core: { since: "v1" },
16780
+ // Workspace-qualified Voice REST and WebSocket routes. This tag is enough
16781
+ // to discover plural modalities because legacy Voice tags describe only
16782
+ // the primary runtime and may be absent for a secondary-only setup.
16783
+ workspace_qualified_voice: { since: "v1" },
16784
+ // Global extension catalog/mutations plus workspace-qualified activation
16785
+ // projections. This is additive to the legacy primary-workspace
16786
+ // `workspace_extensions` contract.
16787
+ extension_management_v2: { since: "v1" },
16788
+ // Workspace-qualified, daemon-local persisted transcript paging. The tag is
16789
+ // unconditional because the route also serves a trusted single-workspace
16790
+ // primary; authorization is evaluated for the selected runtime per request.
16791
+ workspace_persisted_transcript: { since: "v1" },
16792
+ // Workspace-qualified full session export from active persisted storage.
16793
+ // This is separate from `session_export` so clients do not infer the plural
16794
+ // route from the legacy primary-workspace export capability.
16795
+ workspace_session_export: { since: "v1" },
16796
+ // Workspace-qualified ACP transport (issue #6378 Phase 4):
16797
+ // `/workspaces/:workspace/acp` mounts a per-runtime ACP dispatcher (HTTP +
16798
+ // WebSocket) for each registered workspace, with per-runtime device-flow and
16799
+ // reverse client-MCP. Legacy `/acp` stays bound to the primary runtime.
16800
+ // Advertised only when the daemon hosts more than one workspace runtime.
16801
+ workspace_qualified_acp: { since: "v1" },
16674
16802
  // Phase 2 "reverse tool channel" (issue #5626). A connected WS client (e.g.
16675
16803
  // the Chrome extension) can host an MCP server that the daemon's agent
16676
16804
  // calls by carrying `mcp_message` JSON-RPC frames over the daemon WS,
@@ -16687,6 +16815,12 @@ var SERVE_CAPABILITY_REGISTRY = {
16687
16815
  // frames. Advertised when explicitly enabled or when the daemon is serving a
16688
16816
  // Chrome extension origin.
16689
16817
  cdp_tunnel_over_ws: { since: "v1" },
16818
+ // Browser automation MCP tools are available only when the CDP tunnel is on
16819
+ // and the operator has configured an external stdio adapter via
16820
+ // QWEN_CDP_MCP_COMMAND. This is separate from `cdp_tunnel_over_ws`: a daemon
16821
+ // may expose the tunnel while intentionally not bundling/registering a
16822
+ // chrome-devtools MCP adapter.
16823
+ browser_automation_mcp: { since: "v1" },
16690
16824
  // Daemon hosts the `/voice/stream` WebSocket: the browser captures audio and
16691
16825
  // streams raw PCM, the daemon transcribes server-side via the configured
16692
16826
  // `voiceModel` (credentials never reach the client). Advertised
@@ -16721,14 +16855,54 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
16721
16855
  "session_shell_command",
16722
16856
  (toggles) => toggles.sessionShellCommandEnabled === true
16723
16857
  ],
16858
+ [
16859
+ "session_artifacts_persistence",
16860
+ (toggles) => toggles.sessionArtifactsPersistenceAvailable === true
16861
+ ],
16724
16862
  ["rate_limit", (toggles) => toggles.rateLimit === true],
16725
16863
  ["workspace_reload", (toggles) => toggles.reloadAvailable === true],
16864
+ ["channel_reload", (toggles) => toggles.channelReloadAvailable === true],
16865
+ ["channel_control", (toggles) => toggles.channelControlAvailable === true],
16726
16866
  [
16727
16867
  "multi_workspace_sessions",
16728
16868
  (toggles) => toggles.multiWorkspaceSessionsEnabled === true
16729
16869
  ],
16870
+ [
16871
+ "multi_workspace_session_rewind",
16872
+ (toggles) => toggles.multiWorkspaceSessionsEnabled === true
16873
+ ],
16874
+ [
16875
+ "multi_workspace_session_shell",
16876
+ (toggles) => toggles.multiWorkspaceSessionsEnabled === true && toggles.sessionShellCommandEnabled === true
16877
+ ],
16878
+ [
16879
+ "persistent_workspace_registration",
16880
+ (toggles) => toggles.persistentWorkspaceRegistrationAvailable === true
16881
+ ],
16882
+ [
16883
+ "workspace_runtime_removal",
16884
+ (toggles) => toggles.workspaceRuntimeRemovalAvailable === true
16885
+ ],
16886
+ [
16887
+ "workspace_qualified_acp",
16888
+ // The plural routes are pre-mounted for workspaces registered after app
16889
+ // creation, but the capability becomes meaningful only once a secondary
16890
+ // runtime exists. Until then the qualified primary route is only an alias
16891
+ // for the always-available legacy `/acp` surface.
16892
+ (toggles) => toggles.acpHttpEnabled === true && toggles.multiWorkspaceSessionsEnabled === true
16893
+ ],
16894
+ [
16895
+ "workspace_qualified_voice",
16896
+ // Like qualified ACP, the plural Voice surface is mounted ahead of time
16897
+ // but only becomes useful once the daemon has a secondary runtime.
16898
+ (toggles) => toggles.acpHttpEnabled === true && toggles.multiWorkspaceSessionsEnabled === true
16899
+ ],
16730
16900
  ["client_mcp_over_ws", (toggles) => toggles.clientMcpOverWsEnabled === true],
16731
16901
  ["cdp_tunnel_over_ws", (toggles) => toggles.cdpTunnelOverWsEnabled === true],
16902
+ [
16903
+ "browser_automation_mcp",
16904
+ (toggles) => toggles.browserAutomationMcpAvailable === true
16905
+ ],
16732
16906
  [
16733
16907
  // Advertised whenever the `/voice/stream` WS endpoint exists. A configured
16734
16908
  // token (or `--require-auth`) no longer suppresses it: browsers can't set
@@ -16794,6 +16968,7 @@ var PROTOTYPE_POLLUTION_KEYS = /* @__PURE__ */ new Set([
16794
16968
  var CLIENT_ID_HEADER = "x-qwen-client-id";
16795
16969
  var MAX_CLIENT_ID_LENGTH = 128;
16796
16970
  var MAX_TOOL_NAME_LENGTH = 256;
16971
+ var MAX_SKILL_NAME_LENGTH = 256;
16797
16972
  var MAX_SERVER_NAME_LENGTH = 256;
16798
16973
  var CLIENT_ID_RE = /^[A-Za-z0-9._:-]+$/;
16799
16974
  var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
@@ -16896,7 +17071,8 @@ __name(validateMcpRuntimeServerName, "validateMcpRuntimeServerName");
16896
17071
  function parseAndValidateWorkspaceClientId(req, res, bridge) {
16897
17072
  const raw = parseClientIdHeader(req, res);
16898
17073
  if (raw === null || raw === void 0) return raw;
16899
- if (!bridge.knownClientIds().has(raw)) {
17074
+ const bridges = Array.isArray(bridge) ? bridge : [bridge];
17075
+ if (!bridges.some((candidate) => candidate.knownClientIds().has(raw))) {
16900
17076
  res.status(400).json({
16901
17077
  error: `Client id "${raw}" is not registered for this workspace`,
16902
17078
  code: "invalid_client_id",
@@ -16992,7 +17168,8 @@ init_esbuild_shims();
16992
17168
  var MAX_BUCKETS = 1e4;
16993
17169
  var GC_REQUEST_INTERVAL = 1e3;
16994
17170
  var GC_TIMER_INTERVAL_MS = 5 * 60 * 1e3;
16995
- function resolveTier(method, path3) {
17171
+ var WORKSPACE_QUALIFIED_ACP_PATH = /^\/workspaces\/[^/]+\/acp$/i;
17172
+ function resolveTier(method, path3, workspaceQualifiedAcpEnabled) {
16996
17173
  const p = path3.endsWith("/") && path3.length > 1 ? path3.slice(0, -1) : path3;
16997
17174
  if (method === "OPTIONS") return null;
16998
17175
  if ((method === "GET" || method === "HEAD") && (p === "/health" || p === "/demo"))
@@ -17002,6 +17179,8 @@ function resolveTier(method, path3) {
17002
17179
  if (method === "GET" && p.startsWith("/session/") && p.endsWith("/events"))
17003
17180
  return null;
17004
17181
  if (p === "/acp" || p.startsWith("/acp/")) return null;
17182
+ if (workspaceQualifiedAcpEnabled && WORKSPACE_QUALIFIED_ACP_PATH.test(p))
17183
+ return null;
17005
17184
  if (method === "POST" && p.startsWith("/session/") && p.endsWith("/prompt"))
17006
17185
  return "prompt";
17007
17186
  if (method !== "GET" && method !== "HEAD") return "mutation";
@@ -17105,7 +17284,11 @@ function createRateLimiter(config) {
17105
17284
  next();
17106
17285
  return;
17107
17286
  }
17108
- const tier = resolveTier(req.method, req.path);
17287
+ const tier = resolveTier(
17288
+ req.method,
17289
+ req.path,
17290
+ config.workspaceQualifiedAcpEnabled === true
17291
+ );
17109
17292
  if (tier === null) {
17110
17293
  next();
17111
17294
  return;
@@ -17266,6 +17449,7 @@ async function buildDaemonStatusResponse(detail, input) {
17266
17449
  null
17267
17450
  );
17268
17451
  const acpSnapshot = input.acpHandle?.registry.getSnapshot();
17452
+ const acpAggregate = input.acpHandle?.getSnapshot();
17269
17453
  const rateLimitHits = input.rateLimiter?.getHitCounts() ?? zeroRateHits();
17270
17454
  let pendingPrompts = 0;
17271
17455
  let derivedQueuedPrompts = 0;
@@ -17292,22 +17476,25 @@ async function buildDaemonStatusResponse(detail, input) {
17292
17476
  state: "disabled",
17293
17477
  channels: []
17294
17478
  };
17479
+ const channelWorkers = (workspaceRuntimes?.length ?? 1) > 1 ? input.getChannelWorkerSnapshots?.() : void 0;
17295
17480
  const totalAdmissionSnapshot = input.getTotalSessionAdmissionSnapshot?.();
17296
17481
  const issues = [];
17297
17482
  let full;
17298
17483
  pushRuntimeIssues(
17299
17484
  issues,
17300
17485
  acpSnapshot,
17486
+ acpAggregate,
17301
17487
  rateLimitHits,
17302
17488
  input,
17303
17489
  channelWorker,
17490
+ channelWorkers,
17304
17491
  totalAdmissionSnapshot,
17305
17492
  workspaceSnapshots
17306
17493
  );
17307
17494
  if (detail === "full") {
17308
17495
  full = await buildFullStatus(
17309
17496
  input,
17310
- acpSnapshot,
17497
+ acpAggregate,
17311
17498
  workspaceSnapshots.flatMap((item) => item.snapshot.sessions)
17312
17499
  );
17313
17500
  pushFullIssues(issues, full);
@@ -17372,16 +17559,17 @@ async function buildDaemonStatusResponse(detail, input) {
17372
17559
  },
17373
17560
  channel: { live: aggregatedChannelLive },
17374
17561
  channelWorker,
17562
+ ...channelWorkers && channelWorkers.length > 0 ? { channelWorkers } : {},
17375
17563
  transport: {
17376
17564
  restSseActive: input.getRestSseActive(),
17377
17565
  acp: {
17378
17566
  enabled: acpSnapshot !== void 0,
17379
- connections: acpSnapshot?.connectionCount ?? 0,
17380
- connectionStreams: acpSnapshot?.connectionStreams ?? 0,
17381
- sessionStreams: acpSnapshot?.sessionStreams ?? 0,
17382
- sseStreams: acpSnapshot?.sseStreams ?? 0,
17383
- wsStreams: acpSnapshot?.wsStreams ?? 0,
17384
- pendingClientRequests: acpSnapshot?.pendingClientRequests ?? 0
17567
+ connections: acpAggregate?.connectionCount ?? 0,
17568
+ connectionStreams: acpAggregate?.connectionStreams ?? 0,
17569
+ sessionStreams: acpAggregate?.sessionStreams ?? 0,
17570
+ sseStreams: acpAggregate?.sseStreams ?? 0,
17571
+ wsStreams: acpAggregate?.wsStreams ?? 0,
17572
+ pendingClientRequests: acpAggregate?.pendingClientRequests ?? 0
17385
17573
  }
17386
17574
  },
17387
17575
  rateLimit: {
@@ -17518,7 +17706,7 @@ async function withTimeout(promise, section, timeoutMs) {
17518
17706
  }
17519
17707
  }
17520
17708
  __name(withTimeout, "withTimeout");
17521
- function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWorker, totalAdmissionSnapshot, workspaceSnapshots) {
17709
+ function pushRuntimeIssues(issues, acpSnapshot, acpAggregate, rateLimitHits, input, channelWorker, channelWorkers, totalAdmissionSnapshot, workspaceSnapshots) {
17522
17710
  for (const { workspaceCwd, snapshot } of workspaceSnapshots) {
17523
17711
  if (snapshot.limits.maxSessions !== null && snapshot.limits.maxSessions > 0 && snapshot.sessionCount / snapshot.limits.maxSessions >= CAPACITY_WARNING_RATIO) {
17524
17712
  issues.push({
@@ -17543,12 +17731,19 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
17543
17731
  });
17544
17732
  }
17545
17733
  }
17546
- if (acpSnapshot !== void 0 && acpSnapshot.connectionCap !== null && acpSnapshot.connectionCap > 0 && acpSnapshot.connectionCount / acpSnapshot.connectionCap >= CAPACITY_WARNING_RATIO) {
17547
- issues.push({
17548
- code: "connection_capacity_high",
17549
- severity: "warning",
17550
- message: `ACP connections are at ${acpSnapshot.connectionCount}/${acpSnapshot.connectionCap}.`
17551
- });
17734
+ if (acpSnapshot !== void 0 && acpSnapshot.connectionCap !== null && acpSnapshot.connectionCap > 0) {
17735
+ const cap = acpSnapshot.connectionCap;
17736
+ const busiest = (acpAggregate?.mounts ?? []).reduce(
17737
+ (max, m) => Math.max(max, m.connectionCount),
17738
+ acpSnapshot.connectionCount
17739
+ );
17740
+ if (busiest / cap >= CAPACITY_WARNING_RATIO) {
17741
+ issues.push({
17742
+ code: "connection_capacity_high",
17743
+ severity: "warning",
17744
+ message: `ACP connections are at ${busiest}/${cap} on the busiest workspace mount.`
17745
+ });
17746
+ }
17552
17747
  }
17553
17748
  const pendingPermissionCount = workspaceSnapshots.reduce(
17554
17749
  (sum, item) => sum + item.snapshot.pendingPermissionCount,
@@ -17578,6 +17773,16 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
17578
17773
  message: `${sumRateHits(rateLimitHits)} request(s) have been rejected by rate limiting since start.`
17579
17774
  });
17580
17775
  }
17776
+ const groupedWorkers = channelWorkers && channelWorkers.length > 0 ? channelWorkers : void 0;
17777
+ const workers = groupedWorkers ?? [channelWorker];
17778
+ for (const worker of workers) {
17779
+ pushChannelWorkerIssues(issues, worker, groupedWorkers !== void 0);
17780
+ }
17781
+ }
17782
+ __name(pushRuntimeIssues, "pushRuntimeIssues");
17783
+ function pushChannelWorkerIssues(issues, channelWorker, grouped) {
17784
+ const workspace = "workspaceCwd" in channelWorker ? ` for workspace ${channelWorker.workspaceCwd}` : "";
17785
+ const section = grouped ? "runtime.channelWorkers" : "runtime.channelWorker";
17581
17786
  if (channelWorker.enabled && (channelWorker.state === "exited" || channelWorker.state === "failed")) {
17582
17787
  const detailParts = [
17583
17788
  channelWorker.pid !== void 0 ? `pid=${channelWorker.pid}` : void 0,
@@ -17596,8 +17801,8 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
17596
17801
  issues.push({
17597
17802
  code: "channel_worker_exited",
17598
17803
  severity: isPermanentFailure ? "error" : "warning",
17599
- message: `Channel worker is ${channelWorker.state}${details}${error}.`,
17600
- section: "runtime.channelWorker"
17804
+ message: `Channel worker${workspace} is ${channelWorker.state}${details}${error}.`,
17805
+ section
17601
17806
  });
17602
17807
  }
17603
17808
  if (channelWorker.enabled && channelWorker.state === "running" && channelWorker.requestedChannels !== void 0) {
@@ -17609,13 +17814,13 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
17609
17814
  issues.push({
17610
17815
  code: "channel_worker_partial_connect",
17611
17816
  severity: "warning",
17612
- message: `Channel worker connected ${channelWorker.channels.length}/${channelWorker.requestedChannels.length} channel(s). Failed: ${failed.join(", ")}.`,
17613
- section: "runtime.channelWorker"
17817
+ message: `Channel worker${workspace} connected ${channelWorker.channels.length}/${channelWorker.requestedChannels.length} channel(s). Failed: ${failed.join(", ")}.`,
17818
+ section
17614
17819
  });
17615
17820
  }
17616
17821
  }
17617
17822
  }
17618
- __name(pushRuntimeIssues, "pushRuntimeIssues");
17823
+ __name(pushChannelWorkerIssues, "pushChannelWorkerIssues");
17619
17824
  function pushFullIssues(issues, full) {
17620
17825
  for (const [name, section] of Object.entries(full.workspace)) {
17621
17826
  if (section.status === "unavailable") {
@@ -17833,6 +18038,177 @@ function copyNumber(from, to, key) {
17833
18038
  }
17834
18039
  __name(copyNumber, "copyNumber");
17835
18040
 
18041
+ // packages/cli/src/serve/acp-http-enabled.ts
18042
+ init_esbuild_shims();
18043
+ function resolveAcpHttpEnabled(env = process.env) {
18044
+ return env["QWEN_SERVE_ACP_HTTP"] !== "0";
18045
+ }
18046
+ __name(resolveAcpHttpEnabled, "resolveAcpHttpEnabled");
18047
+
18048
+ // packages/cli/src/serve/cdp-mcp-command.ts
18049
+ init_esbuild_shims();
18050
+ var QWEN_CDP_MCP_COMMAND_ENV = "QWEN_CDP_MCP_COMMAND";
18051
+ function resolveCdpMcpCommand(env) {
18052
+ const command = env[QWEN_CDP_MCP_COMMAND_ENV]?.trim();
18053
+ return command ? command : void 0;
18054
+ }
18055
+ __name(resolveCdpMcpCommand, "resolveCdpMcpCommand");
18056
+ function isBrowserAutomationMcpAvailable(opts, env) {
18057
+ return opts.cdpTunnelOverWs === true && !opts.token && resolveAcpHttpEnabled(env) && resolveCdpMcpCommand(env) !== void 0;
18058
+ }
18059
+ __name(isBrowserAutomationMcpAvailable, "isBrowserAutomationMcpAvailable");
18060
+
18061
+ // packages/cli/src/serve/voice/workspace-voice-coordinator.ts
18062
+ init_esbuild_shims();
18063
+ var MAX_CONCURRENT_VOICE_SESSIONS = 8;
18064
+ var DISPOSE_WAIT_MS = 5e3;
18065
+ var VoiceLeaseAbortError = class extends Error {
18066
+ constructor(kind, message) {
18067
+ super(message);
18068
+ this.kind = kind;
18069
+ this.name = "VoiceLeaseAbortError";
18070
+ }
18071
+ static {
18072
+ __name(this, "VoiceLeaseAbortError");
18073
+ }
18074
+ };
18075
+ var Lease = class {
18076
+ constructor(onRelease) {
18077
+ this.onRelease = onRelease;
18078
+ }
18079
+ static {
18080
+ __name(this, "Lease");
18081
+ }
18082
+ controller = new AbortController();
18083
+ signal = this.controller.signal;
18084
+ released = false;
18085
+ release() {
18086
+ if (this.released) return;
18087
+ this.released = true;
18088
+ this.onRelease(this);
18089
+ }
18090
+ abort(reason) {
18091
+ if (!this.signal.aborted) this.controller.abort(reason);
18092
+ }
18093
+ };
18094
+ var WorkspaceVoiceCoordinator = class {
18095
+ static {
18096
+ __name(this, "WorkspaceVoiceCoordinator");
18097
+ }
18098
+ states = /* @__PURE__ */ new Map();
18099
+ disposed = /* @__PURE__ */ new WeakSet();
18100
+ active = 0;
18101
+ acquire(runtime) {
18102
+ if (this.disposed.has(runtime)) {
18103
+ return { kind: "rejected", reason: "draining" };
18104
+ }
18105
+ const state = this.stateFor(runtime);
18106
+ if (state.draining) return { kind: "rejected", reason: "draining" };
18107
+ if (this.active >= MAX_CONCURRENT_VOICE_SESSIONS) {
18108
+ return { kind: "rejected", reason: "capacity" };
18109
+ }
18110
+ const lease = new Lease((current) => this.release(runtime, current));
18111
+ state.leases.add(lease);
18112
+ this.active++;
18113
+ return { kind: "admitted", lease };
18114
+ }
18115
+ beginWorkspaceDrain(runtime) {
18116
+ this.stateFor(runtime).draining = true;
18117
+ }
18118
+ cancelWorkspaceDrain(runtime) {
18119
+ const state = this.states.get(runtime);
18120
+ if (!state || state.completed) return;
18121
+ state.draining = false;
18122
+ if (state.leases.size === 0) this.states.delete(runtime);
18123
+ }
18124
+ completeWorkspaceDrain(runtime) {
18125
+ this.disposed.add(runtime);
18126
+ const state = this.states.get(runtime);
18127
+ if (!state) return;
18128
+ state.draining = true;
18129
+ state.completed = true;
18130
+ const abortReason = new VoiceLeaseAbortError(
18131
+ "workspace_removed",
18132
+ "Workspace drain completed"
18133
+ );
18134
+ for (const lease of state.leases) lease.abort(abortReason);
18135
+ this.deleteIfIdle(runtime, state);
18136
+ }
18137
+ getWorkspaceActivity(runtime) {
18138
+ return this.states.get(runtime)?.leases.size ?? 0;
18139
+ }
18140
+ async disposeRuntime(runtime, reason) {
18141
+ this.disposed.add(runtime);
18142
+ const state = this.states.get(runtime);
18143
+ if (!state) return;
18144
+ state.draining = true;
18145
+ state.completed = true;
18146
+ const abortReason = new VoiceLeaseAbortError(
18147
+ reason,
18148
+ reason === "workspace_removed" ? "Workspace runtime was removed" : "Daemon is shutting down"
18149
+ );
18150
+ for (const lease of state.leases) lease.abort(abortReason);
18151
+ if (state.leases.size === 0) {
18152
+ this.deleteIfIdle(runtime, state);
18153
+ return;
18154
+ }
18155
+ let resolveIdle;
18156
+ const idle = new Promise((resolve) => {
18157
+ resolveIdle = resolve;
18158
+ state.idleWaiters.add(resolve);
18159
+ });
18160
+ let timeout;
18161
+ let timedOut = false;
18162
+ try {
18163
+ await Promise.race([
18164
+ idle,
18165
+ new Promise((resolve) => {
18166
+ timeout = setTimeout(() => {
18167
+ timedOut = true;
18168
+ resolve();
18169
+ }, DISPOSE_WAIT_MS);
18170
+ timeout.unref?.();
18171
+ })
18172
+ ]);
18173
+ } finally {
18174
+ if (timeout) clearTimeout(timeout);
18175
+ if (resolveIdle) state.idleWaiters.delete(resolveIdle);
18176
+ }
18177
+ if (timedOut && state.leases.size > 0) {
18178
+ process.stderr.write(
18179
+ `qwen serve: Voice runtime disposal timed out with ${state.leases.size} active lease(s).
18180
+ `
18181
+ );
18182
+ }
18183
+ }
18184
+ stateFor(runtime) {
18185
+ let state = this.states.get(runtime);
18186
+ if (!state) {
18187
+ state = {
18188
+ draining: false,
18189
+ completed: false,
18190
+ leases: /* @__PURE__ */ new Set(),
18191
+ idleWaiters: /* @__PURE__ */ new Set()
18192
+ };
18193
+ this.states.set(runtime, state);
18194
+ }
18195
+ return state;
18196
+ }
18197
+ release(runtime, lease) {
18198
+ const state = this.states.get(runtime);
18199
+ if (!state || !state.leases.delete(lease)) return;
18200
+ this.active--;
18201
+ if (state.leases.size === 0) {
18202
+ for (const resolve of state.idleWaiters) resolve();
18203
+ state.idleWaiters.clear();
18204
+ }
18205
+ this.deleteIfIdle(runtime, state);
18206
+ }
18207
+ deleteIfIdle(runtime, state) {
18208
+ if (state.completed && state.leases.size === 0) this.states.delete(runtime);
18209
+ }
18210
+ };
18211
+
17836
18212
  export {
17837
18213
  require_express2 as require_express,
17838
18214
  sanitizeForStderr,
@@ -17863,6 +18239,7 @@ export {
17863
18239
  CLIENT_ID_HEADER,
17864
18240
  MAX_CLIENT_ID_LENGTH,
17865
18241
  MAX_TOOL_NAME_LENGTH,
18242
+ MAX_SKILL_NAME_LENGTH,
17866
18243
  MAX_SERVER_NAME_LENGTH,
17867
18244
  CLIENT_ID_RE,
17868
18245
  safeBody,
@@ -17884,7 +18261,14 @@ export {
17884
18261
  buildDaemonStatusResponse,
17885
18262
  allowOriginMode,
17886
18263
  listenerMaxConnections,
17887
- positiveFiniteOrNull
18264
+ positiveFiniteOrNull,
18265
+ resolveAcpHttpEnabled,
18266
+ QWEN_CDP_MCP_COMMAND_ENV,
18267
+ resolveCdpMcpCommand,
18268
+ isBrowserAutomationMcpAvailable,
18269
+ MAX_CONCURRENT_VOICE_SESSIONS,
18270
+ VoiceLeaseAbortError,
18271
+ WorkspaceVoiceCoordinator
17888
18272
  };
17889
18273
  /**
17890
18274
  * @license