@qwen-code/qwen-code 0.19.9 → 0.19.10-nightly.20260716.506ce0a1a

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 (323) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +14 -6
  2. package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
  3. package/bundled/qc-helper/docs/features/channels/dingtalk.md +33 -0
  4. package/bundled/qc-helper/docs/features/channels/overview.md +64 -20
  5. package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
  6. package/bundled/qc-helper/docs/features/code-review.md +88 -44
  7. package/bundled/qc-helper/docs/features/commands.md +6 -6
  8. package/bundled/qc-helper/docs/features/hooks.md +29 -0
  9. package/bundled/qc-helper/docs/features/sandbox.md +2 -0
  10. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  11. package/bundled/qc-helper/docs/qwen-serve.md +49 -20
  12. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  13. package/bundled/review/DESIGN.md +219 -33
  14. package/bundled/review/SKILL.md +429 -382
  15. package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-WOC3YDWA.js} +31 -32
  16. package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-H5HZCAFD.js} +49 -48
  17. package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-55YDJDNM.js} +922 -550
  18. package/chunks/{agent-HOLHB3RT.js → agent-H6VE5W3L.js} +26 -27
  19. package/chunks/{agent-headless-SXL6H56A.js → agent-headless-T4XJOCRU.js} +26 -27
  20. package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-HBRXJSP4.js} +78 -16
  21. package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-MIZLXBLF.js} +2 -2
  22. package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-XMJVPNWM.js} +2 -2
  23. package/chunks/{bridge-BCJQ7BBB.js → bridge-FTB6ZP3R.js} +31 -34
  24. package/chunks/{ca-UJ6HC4H2.js → ca-CODEN7TD.js} +9 -1
  25. package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
  26. package/chunks/channel-worker-manager-CUDPU4CN.js +418 -0
  27. package/chunks/channel-worker-supervisor-4XTO2ZD3.js +20 -0
  28. package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
  29. package/chunks/{chunk-VA4KQY6V.js → chunk-2JNR4VP2.js} +3 -3
  30. package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
  31. package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
  32. package/chunks/{chunk-CUMMSHH6.js → chunk-3DWIFU7L.js} +1 -1
  33. package/chunks/chunk-3MX7D6QN.js +516 -0
  34. package/chunks/{chunk-SJHDYNHF.js → chunk-4BJVSIS3.js} +3 -3
  35. package/chunks/{chunk-TO6QE22P.js → chunk-5CNYZ7TN.js} +26 -22
  36. package/chunks/{chunk-N3EMS75V.js → chunk-5DEJ4T6C.js} +1333 -1232
  37. package/chunks/chunk-5HBA2Z7V.js +28 -0
  38. package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
  39. package/chunks/{chunk-SCGXUJBT.js → chunk-6LI3L22E.js} +3 -3
  40. package/chunks/{chunk-K434OPES.js → chunk-6WPJRYLZ.js} +3 -3
  41. package/chunks/{chunk-YAUFFXDS.js → chunk-7GM2RWCR.js} +12 -11
  42. package/chunks/{chunk-OQ4DRIOA.js → chunk-7HWE2W74.js} +2 -2
  43. package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
  44. package/chunks/{chunk-MC23XKFE.js → chunk-A2HWMJVO.js} +37 -3
  45. package/chunks/{chunk-3G7CIHVV.js → chunk-ABNYOMDG.js} +4 -4
  46. package/chunks/{chunk-3AHXV67U.js → chunk-AGZLXLBY.js} +1 -1
  47. package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
  48. package/chunks/{chunk-Q4YQW46J.js → chunk-AMRZVQUY.js} +43 -40
  49. package/chunks/{chunk-W3JHSWRP.js → chunk-AN6C2U46.js} +4 -4
  50. package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
  51. package/chunks/{chunk-5SFOMFG4.js → chunk-AVEOWVOM.js} +36 -2
  52. package/chunks/{chunk-34MW4KTI.js → chunk-BA5JGE5F.js} +2 -2
  53. package/chunks/{chunk-5HOMWMCL.js → chunk-BSJAQUFD.js} +5492 -1336
  54. package/chunks/{chunk-L6P4KPHR.js → chunk-BWJKL5DB.js} +58 -38
  55. package/chunks/{chunk-PVZM22CK.js → chunk-C32JFRGV.js} +5 -5
  56. package/chunks/{chunk-AKIVHSJR.js → chunk-CZIHPO7L.js} +163 -782
  57. package/chunks/chunk-DL7RCO6V.js +493 -0
  58. package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
  59. package/chunks/{chunk-5VXNZWGF.js → chunk-ENUQSKEY.js} +1 -1
  60. package/chunks/{chunk-PDZ7MBDG.js → chunk-EWILX3BM.js} +27 -6
  61. package/chunks/{chunk-BMGVRZN4.js → chunk-EZWX232B.js} +1 -1
  62. package/chunks/{chunk-4GORAUCN.js → chunk-F333XEAU.js} +1 -1
  63. package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
  64. package/chunks/chunk-FEOZBUMT.js +77 -0
  65. package/chunks/{chunk-5U27BZ72.js → chunk-FKEGVMPX.js} +269 -83
  66. package/chunks/chunk-FNX3LGAK.js +34 -0
  67. package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
  68. package/chunks/{chunk-PODM4SZ4.js → chunk-G3BIBPI7.js} +5 -5
  69. package/chunks/{chunk-A3XKDTSH.js → chunk-GA65O2TB.js} +4 -4
  70. package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
  71. package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-GXGIM7QP.js} +67 -35
  72. package/chunks/{chunk-6PESIEKJ.js → chunk-GXUWGPYX.js} +68 -6
  73. package/chunks/chunk-GYTKQYDB.js +23 -0
  74. package/chunks/{chunk-GZRTYZ2R.js → chunk-H3XMJV7T.js} +218 -1
  75. package/chunks/{chunk-WQUQVGTF.js → chunk-HGRXW4HQ.js} +467 -106
  76. package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
  77. package/chunks/{chunk-ECNYL4AA.js → chunk-HUEWOHKV.js} +1 -1
  78. package/chunks/chunk-IDS7MSUP.js +74 -0
  79. package/chunks/{chunk-KHUQZZJ6.js → chunk-IHDRJLLR.js} +382 -36
  80. package/chunks/{chunk-CLFKOZEK.js → chunk-J4SEAF4X.js} +114 -4
  81. package/chunks/{chunk-B5ORX3FG.js → chunk-JGUT3LWZ.js} +6 -1
  82. package/chunks/{chunk-P67PFTUT.js → chunk-KEYEYCHZ.js} +4 -4
  83. package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
  84. package/chunks/{chunk-7PU4FYLG.js → chunk-KOXFAG6P.js} +4 -18
  85. package/chunks/{chunk-EGYZ275M.js → chunk-KWLVWNF5.js} +55 -7
  86. package/chunks/{chunk-XLA62MYB.js → chunk-KXECVZPD.js} +2 -2
  87. package/chunks/{chunk-IAVB3HM3.js → chunk-L4Y55KIS.js} +33 -1
  88. package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
  89. package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
  90. package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
  91. package/chunks/chunk-LXXMOYPL.js +22 -0
  92. package/chunks/{chunk-Q6I5QHMH.js → chunk-MFNKBXYH.js} +1 -1
  93. package/chunks/chunk-MR3PXB6E.js +48 -0
  94. package/chunks/{chunk-JZETEN3Z.js → chunk-N45S36AH.js} +3 -3
  95. package/chunks/{chunk-GWLSNBG4.js → chunk-NA3IG6XG.js} +748 -27
  96. package/chunks/{chunk-D5SKC4YG.js → chunk-O3M25JXE.js} +213 -29
  97. package/chunks/{chunk-EAXLGSFP.js → chunk-O6XGHDS5.js} +11 -11
  98. package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
  99. package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
  100. package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
  101. package/chunks/{chunk-CNEIYWSA.js → chunk-OVIV236K.js} +5 -5
  102. package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
  103. package/chunks/{chunk-E2IY465S.js → chunk-PWNOAWXB.js} +59 -12
  104. package/chunks/{chunk-B4G2WOFA.js → chunk-Q5MKHNIR.js} +28 -5
  105. package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
  106. package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
  107. package/chunks/{chunk-HKMAENAO.js → chunk-QDTGDM2T.js} +14 -9
  108. package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
  109. package/chunks/{chunk-W2UIXQDL.js → chunk-RTV5TUYB.js} +12 -4
  110. package/chunks/chunk-RW7DUKFO.js +91 -0
  111. package/chunks/{chunk-NVYTCB5Z.js → chunk-SA6QVLWI.js} +17325 -16259
  112. package/chunks/chunk-SJSI7PXU.js +59 -0
  113. package/chunks/{chunk-HVY356M2.js → chunk-SMGBWLNU.js} +3 -3
  114. package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
  115. package/chunks/{chunk-CC2ITGCF.js → chunk-STZQCNN3.js} +49 -6
  116. package/chunks/{chunk-HPDUL5MF.js → chunk-T2ZDAER2.js} +1 -1
  117. package/chunks/{chunk-XUOOWUZS.js → chunk-T3TQ3ACP.js} +1 -1
  118. package/chunks/{chunk-4C5BQ2D2.js → chunk-TIKDHS6V.js} +100 -17
  119. package/chunks/chunk-TV6K2FB4.js +224 -0
  120. package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
  121. package/chunks/{chunk-D2GFWEXB.js → chunk-UCUUH2JV.js} +6 -6
  122. package/chunks/{chunk-BAPGSC7U.js → chunk-UZP7K33Y.js} +23 -9
  123. package/chunks/{chunk-77XJ3SWN.js → chunk-VDAR6UO2.js} +8 -6
  124. package/chunks/{chunk-XYQSMABS.js → chunk-VKLVGA2D.js} +4 -4
  125. package/chunks/{chunk-JSG7ZSBC.js → chunk-VRR65QYW.js} +251 -3
  126. package/chunks/{chunk-U2NNEY4R.js → chunk-VT5AWJN4.js} +1 -1
  127. package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
  128. package/chunks/{chunk-X6TJ3YZV.js → chunk-WKEO3GLZ.js} +160 -60
  129. package/chunks/{chunk-J3JA76CF.js → chunk-WTNZ6DXB.js} +1 -1
  130. package/chunks/{chunk-VWPVHAMO.js → chunk-XIWQ5QST.js} +8 -1
  131. package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
  132. package/chunks/{chunk-3VAGG5T5.js → chunk-YYBZUIPL.js} +1015 -100
  133. package/chunks/{chunk-CCDMCZPP.js → chunk-YZ3SBNP7.js} +1 -1
  134. package/chunks/{chunk-ATAKVRIF.js → chunk-Z3XA2TNG.js} +7 -7
  135. package/chunks/{chunk-EMDMPBJ4.js → chunk-Z7SVC7PJ.js} +10 -3
  136. package/chunks/{chunk-AURZZYMD.js → chunk-ZIVSSTUG.js} +4 -4
  137. package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
  138. package/chunks/{chunk-34Z3U5RQ.js → chunk-ZQIYGQCG.js} +765 -168
  139. package/chunks/{computer-use-HM37RX6A.js → computer-use-NADT7ULB.js} +26 -27
  140. package/chunks/{config-utils-NV2SVGPB.js → config-utils-IQQT3GCI.js} +3 -2
  141. package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-U7NEJYJ7.js} +28 -29
  142. package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-EAB2U5XW.js} +2 -2
  143. package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-SUN33INC.js} +26 -27
  144. package/chunks/{cron-create-AMBKGZX6.js → cron-create-GMVKSXZT.js} +4 -4
  145. package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-VDZKUAVK.js} +4 -4
  146. package/chunks/{cron-list-WVP2JXER.js → cron-list-UG7C7RAR.js} +4 -4
  147. package/chunks/{daemon-ARHTSTXP.js → daemon-SJXEKP3H.js} +773 -126
  148. package/chunks/daemon-status-provider-WIIYLGZJ.js +74 -0
  149. package/chunks/{de-EBJN3OVN.js → de-NOXPCSYN.js} +9 -1
  150. package/chunks/{dist-XKU3ABM5.js → dist-4WCQEZIN.js} +4 -51
  151. package/chunks/{dist-QYCAEZIT.js → dist-DOPL5LSQ.js} +5 -1
  152. package/chunks/{dist-WKPOYU7O.js → dist-GXJVCOS7.js} +1 -1
  153. package/chunks/{dist-R7LN5AZE.js → dist-PX2ERZ6I.js} +2 -2
  154. package/chunks/{dist-PNVLTKTL.js → dist-V2YVLYOW.js} +215 -33
  155. package/chunks/{dist-VHV4EVHG.js → dist-VYWUKURL.js} +1 -1
  156. package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-6FRM6UMU.js} +27 -28
  157. package/chunks/{edit-VNI4NJ73.js → edit-7GOIQTCZ.js} +27 -28
  158. package/chunks/{en-5A6LA7RK.js → en-JFVULHTB.js} +11 -1
  159. package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-476E6WIK.js} +26 -27
  160. package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-IRJM6W3C.js} +42 -28
  161. package/chunks/{environment-5HSSRMJ7.js → environment-ROMULS2X.js} +30 -30
  162. package/chunks/{errors-HMFCJJ7P.js → errors-OUIWPUDY.js} +28 -29
  163. package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-PPSFK753.js} +26 -27
  164. package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-YKQMD4D7.js} +26 -27
  165. package/chunks/{fast-path-FRDMDVHG.js → fast-path-CNK2HHKH.js} +3 -3
  166. package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
  167. package/chunks/{fr-YXRABLYZ.js → fr-HVFNU42H.js} +9 -1
  168. package/chunks/{gemini-QYSEGHAX.js → gemini-WQNFT6TR.js} +216 -90
  169. package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-4QJH2JDP.js} +4 -4
  170. package/chunks/{glob-BRCSGFOT.js → glob-36TVLBWW.js} +28 -28
  171. package/chunks/{grep-EE2DUOSY.js → grep-QTYLNO2M.js} +26 -27
  172. package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-36FQFODK.js} +30 -31
  173. package/chunks/{i18n-BASPENNQ.js → i18n-JUGYPVSP.js} +27 -28
  174. package/chunks/initializer-OBBJUS25.js +72 -0
  175. package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-MCKTPX64.js} +27 -28
  176. package/chunks/{ja-7VQOANVG.js → ja-PY5AF544.js} +10 -2
  177. package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
  178. package/chunks/list-VW5QY4VJ.js +75 -0
  179. package/chunks/loadedSettingsAdapter-IELOOXG6.js +69 -0
  180. package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-QXWZSCYM.js} +5 -5
  181. package/chunks/{ls-ZB2BDP6T.js → ls-2OUTG3IZ.js} +4 -4
  182. package/chunks/{lsp-V5DN4YUJ.js → lsp-4VMNXZW6.js} +2 -2
  183. package/chunks/mcp-Q3EC37ZS.js +69 -0
  184. package/chunks/{monitor-X5Z3H4FY.js → monitor-DCZ27AFR.js} +26 -27
  185. package/chunks/nonInteractiveCli-KXD7PFO4.js +128 -0
  186. package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-YU4XF5LI.js} +27 -28
  187. package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-KL5WER2D.js} +13 -13
  188. package/chunks/{pidfile-D4I4FTVA.js → pidfile-WBOD7EJV.js} +27 -28
  189. package/chunks/processUtils-AOV4R34M.js +29 -0
  190. package/chunks/{pt-2C6YCSHL.js → pt-A3PRQXMU.js} +9 -1
  191. package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-YIGBHYE3.js} +28 -29
  192. package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
  193. package/chunks/{read-file-7SZSIZOL.js → read-file-WVL4Y76X.js} +9 -9
  194. package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-JUFHCKSC.js} +2 -2
  195. package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-DWSMBXYY.js} +2 -2
  196. package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-6GSWJERP.js} +26 -27
  197. package/chunks/{ru-6BBHVZZV.js → ru-IBCWUTOC.js} +9 -1
  198. package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-QYUQMEDT.js} +1233 -371
  199. package/chunks/{runtime-57WWRVHN.js → runtime-K2YZCNB3.js} +42 -38
  200. package/chunks/{scheduler-YBLGWSIL.js → scheduler-EQCSN7QV.js} +26 -27
  201. package/chunks/{send-message-F36YD6KQ.js → send-message-JZ752NWD.js} +3 -3
  202. package/chunks/{serve-R63NK3CV.js → serve-DX5UGZD4.js} +36 -35
  203. package/chunks/{server-Z22GCAXP.js → server-T6HJH3DR.js} +5869 -1398
  204. package/chunks/{session-HKAAI7BN.js → session-SNU6ACY6.js} +299 -100
  205. package/chunks/{settings-3EYN66GK.js → settings-AKHZZNEL.js} +34 -33
  206. package/chunks/{shell-6YXINTWJ.js → shell-EY74IEZK.js} +28 -27
  207. package/chunks/{skill-OO57P4X6.js → skill-DPU62O3H.js} +11 -11
  208. package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-RQZRWJ2V.js} +28 -30
  209. package/chunks/{src-G5UPLZSZ.js → src-7FITDSVC.js} +164 -52
  210. package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-XO3RK6DO.js} +28 -29
  211. package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-DVWZRHYQ.js} +728 -382
  212. package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-LELY6HAI.js} +3 -3
  213. package/chunks/{task-create-FRGOEIKY.js → task-create-QY3BIMNM.js} +8 -7
  214. package/chunks/{task-list-OW766BXZ.js → task-list-D2U47WBJ.js} +6 -5
  215. package/chunks/{task-stop-SIR5SNBN.js → task-stop-N6E5IYLH.js} +2 -2
  216. package/chunks/{task-update-YRA532MT.js → task-update-HJCQILLB.js} +8 -7
  217. package/chunks/{team-create-PECAAPXK.js → team-create-FOSRT62K.js} +26 -27
  218. package/chunks/{team-delete-6OSECUZC.js → team-delete-RCWYDRF4.js} +6 -5
  219. package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-6VUDV27J.js} +26 -27
  220. package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-6UT6IO5T.js} +27 -28
  221. package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-FKCGATPJ.js} +4 -4
  222. package/chunks/{tool-search-THVIWAPB.js → tool-search-ASSFMMN5.js} +10 -10
  223. package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-YYWUO23H.js} +32 -35
  224. package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
  225. package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-4BWV2IBK.js} +29 -29
  226. package/chunks/types-ML3TRJQ5.js +16 -0
  227. package/chunks/update-relaunch-74DLGH73.js +87 -0
  228. package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-CRFCGFO5.js} +31 -30
  229. package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-BTTEPBGQ.js} +76 -73
  230. package/chunks/{version-3UEA6ZIR.js → version-Y5JE5Q63.js} +1 -1
  231. package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-CFCWTCAP.js} +5 -6
  232. package/chunks/{workflow-QCCCMYP3.js → workflow-6WC7VPQN.js} +27 -28
  233. package/chunks/workspace-providers-status-RVG2C5ZS.js +72 -0
  234. package/chunks/workspace-registration-store-SLEU3D3X.js +27 -0
  235. package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-QMWGVOTF.js} +32 -35
  236. package/chunks/workspace-service-G572JSEU.js +84 -0
  237. package/chunks/workspace-skills-status-VSSMSMNK.js +71 -0
  238. package/chunks/{write-file-I3MUDRIE.js → write-file-5XVDRORP.js} +27 -28
  239. package/chunks/{zh-RQE7I22T.js → zh-PAUNIMHQ.js} +12 -2
  240. package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-GNEUIUFF.js} +12 -2
  241. package/cli-entry.js +92 -8
  242. package/cli.js +11 -11
  243. package/locales/ca.js +16 -0
  244. package/locales/de.js +16 -0
  245. package/locales/en.js +19 -0
  246. package/locales/fr.js +16 -0
  247. package/locales/ja.js +17 -1
  248. package/locales/pt.js +16 -0
  249. package/locales/ru.js +16 -0
  250. package/locales/zh-TW.js +20 -1
  251. package/locales/zh.js +20 -1
  252. package/package.json +3 -3
  253. package/web-shell/assets/{arc-C15hqnJe.js → arc-vx1tRwnX.js} +1 -1
  254. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-DBi6iUA1.js} +1 -1
  255. package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-Ga9JJ4Ak.js} +1 -1
  256. package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-D8Vi5FYw.js} +1 -1
  257. package/web-shell/assets/channel-B29zQDTL.js +1 -0
  258. package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-CSV6yQpU.js} +1 -1
  259. package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-toYlppdI.js} +1 -1
  260. package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-DbjzuyAr.js} +1 -1
  261. package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-IkkSjSkk.js} +1 -1
  262. package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-D5wUL6Zm.js} +1 -1
  263. package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-C3o2DXG0.js} +1 -1
  264. package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-CutIi14T.js} +1 -1
  265. package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-DZ0NRHH-.js} +1 -1
  266. package/web-shell/assets/classDiagram-4FO5ZUOK-BNGI2SvC.js +1 -0
  267. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BNGI2SvC.js +1 -0
  268. package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-B3Dl88UJ.js} +1 -1
  269. package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-DfTxfF6-.js} +1 -1
  270. package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-CJyH98yO.js} +1 -1
  271. package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-EbOiJNmW.js} +1 -1
  272. package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-AYNqpqqA.js} +1 -1
  273. package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-BY5VPa4H.js} +1 -1
  274. package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-BhMYAKlk.js} +1 -1
  275. package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-Bp8S_F9l.js} +1 -1
  276. package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-az3TE9PU.js} +1 -1
  277. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-CfkAEpCe.js} +3 -3
  278. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-D1QmjMCy.js} +1 -1
  279. package/web-shell/assets/index-C8sDwQUv.js +1130 -0
  280. package/web-shell/assets/index-CaBoc5bb.js +3 -0
  281. package/web-shell/assets/index-Dpg5Wymg.css +5 -0
  282. package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-D3ompLrG.js} +1 -1
  283. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-D3MRWp9I.js} +1 -1
  284. package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-DVkKCa44.js} +1 -1
  285. package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-BLif81wF.js} +1 -1
  286. package/web-shell/assets/{linear-C8wKCbIC.js → linear-BDU96EGS.js} +1 -1
  287. package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-B-CwC26B.js} +5 -5
  288. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-CS1WOJ4G.js} +1 -1
  289. package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-BzgtNXVP.js} +1 -1
  290. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-BRfGC8MA.js} +1 -1
  291. package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-CPBZkC7g.js} +1 -1
  292. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-nqNvinIk.js} +1 -1
  293. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-CM_Wdjh3.js} +1 -1
  294. package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-L0y-48VE.js} +1 -1
  295. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BX1DdF8s.js +1 -0
  296. package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-B_n5rb3A.js} +1 -1
  297. package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-C9NmLV5e.js} +1 -1
  298. package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-CrefK9gt.js} +1 -1
  299. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BUccf-bC.js} +1 -1
  300. package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-DM6ef92l.js} +1 -1
  301. package/web-shell/index.html +2 -2
  302. package/chunks/chunk-524RQP4Q.js +0 -305
  303. package/chunks/chunk-CARU2RR2.js +0 -24
  304. package/chunks/chunk-CU3L64TP.js +0 -93
  305. package/chunks/chunk-OCPBI7J5.js +0 -18
  306. package/chunks/chunk-TEGEBB2I.js +0 -122
  307. package/chunks/chunk-VTU57BWZ.js +0 -30
  308. package/chunks/daemon-status-provider-B2UTZUJ2.js +0 -76
  309. package/chunks/initializer-UTQ7FB7G.js +0 -71
  310. package/chunks/list-DEICDL65.js +0 -74
  311. package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
  312. package/chunks/mcp-L5JXEEIA.js +0 -68
  313. package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
  314. package/chunks/types-JNKGKUJT.js +0 -12
  315. package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
  316. package/chunks/workspace-service-RVLBMSMZ.js +0 -80
  317. package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
  318. package/web-shell/assets/channel-CLiQD50f.js +0 -1
  319. package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
  320. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
  321. package/web-shell/assets/index-D5IWFVk1.css +0 -5
  322. package/web-shell/assets/index-KFJRDhX7.js +0 -783
  323. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
@@ -6,21 +6,18 @@ import {
6
6
  import {
7
7
  CLIENT_MCP_OVER_WS_CONFIG_FLAG
8
8
  } from "./chunk-PZL23GTM.js";
9
- import {
10
- MAX_WORKSPACE_PATH_LENGTH
11
- } from "./chunk-W7FJ3N32.js";
12
9
  import {
13
10
  require_lib
14
11
  } from "./chunk-WBL3FJEU.js";
12
+ import {
13
+ MAX_WORKSPACE_PATH_LENGTH
14
+ } from "./chunk-W7FJ3N32.js";
15
15
  import {
16
16
  require_mime_db
17
17
  } from "./chunk-T2NCM2ET.js";
18
18
  import {
19
19
  writeStderrLine
20
20
  } from "./chunk-YUZI3WAC.js";
21
- import {
22
- require_once
23
- } from "./chunk-CU3L64TP.js";
24
21
  import {
25
22
  require_safer
26
23
  } from "./chunk-XWRJCPHC.js";
@@ -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) {
@@ -16451,6 +16528,7 @@ var SERVE_CAPABILITY_REGISTRY = {
16451
16528
  // the underlying ACP method from unstable_resumeSession to resumeSession.
16452
16529
  unstable_session_resume: { since: "v1" },
16453
16530
  session_list: { since: "v1" },
16531
+ session_source_metadata: { since: "v1" },
16454
16532
  session_prompt: { since: "v1" },
16455
16533
  session_cancel: { since: "v1" },
16456
16534
  session_events: { since: "v1" },
@@ -16553,6 +16631,7 @@ var SERVE_CAPABILITY_REGISTRY = {
16553
16631
  // unregistered — the toggle takes effect on the next ACP child spawn
16554
16632
  // (`tools.disabled` is consulted at `Config` construction time).
16555
16633
  workspace_tool_toggle: { since: "v1" },
16634
+ workspace_skill_toggle: { since: "v1" },
16556
16635
  workspace_settings: { since: "v1" },
16557
16636
  // `GET /workspace/permissions` is always available when this tag is
16558
16637
  // advertised. `POST /workspace/permissions` updates the active ACP
@@ -16598,6 +16677,9 @@ var SERVE_CAPABILITY_REGISTRY = {
16598
16677
  // may be `null` for too-short histories or transient model failures
16599
16678
  // (best-effort, never throws). SDK helper: `DaemonClient.recapSession`.
16600
16679
  session_recap: { since: "v1" },
16680
+ // `POST /session/:id/generate` streams a stateless, tool-free model call.
16681
+ // The ACP child prefers fastModel and falls back to the main session model.
16682
+ session_generation: { since: "v1" },
16601
16683
  // Side question (/btw) against the session's conversation context.
16602
16684
  // Single-turn, tool-free LLM call via runForkedAgent (cache path).
16603
16685
  session_btw: { since: "v1" },
@@ -16674,20 +16756,57 @@ var SERVE_CAPABILITY_REGISTRY = {
16674
16756
  // `POST /workspace/channel/reload`. The worker is stopped and relaunched;
16675
16757
  // on relaunch it re-reads settings.json (channels / proxy / per-channel
16676
16758
  // model), so channel settings changes apply without a full daemon restart.
16677
- // Advertised CONDITIONALLY only when the daemon was started with
16678
- // `--channel` (i.e. a channel worker exists to reload).
16759
+ // Advertised CONDITIONALLY while the runtime manager has a committed or
16760
+ // recoverable channel worker selection.
16679
16761
  channel_reload: { since: "v1" },
16762
+ // Runtime GET/PUT/DELETE control for daemon-managed channel selection.
16763
+ // The route exists even when no selection was supplied at daemon boot.
16764
+ channel_control: { since: "v1" },
16680
16765
  // Multi-workspace sessions closed loop (issue #6378 Phase 2a). Advertised
16681
16766
  // only when one daemon hosts more than one registered workspace runtime.
16682
16767
  multi_workspace_sessions: { since: "v1" },
16768
+ // Singular session rewind routes resolve the owning live workspace runtime.
16769
+ multi_workspace_session_rewind: { since: "v1" },
16770
+ // Singular session shell routes resolve the owning live workspace runtime.
16771
+ multi_workspace_session_shell: { since: "v1" },
16772
+ persistent_workspace_registration: { since: "v1" },
16773
+ workspace_runtime_removal: { since: "v1" },
16683
16774
  // Workspace-qualified core REST routes under `/workspaces/:workspace/...`.
16684
16775
  // Covers core file/status/permissions/trust/lifecycle/MCP/tool, memory,
16685
16776
  // workspace agent CRUD, and persisted session organization surfaces.
16686
16777
  // Workspace-qualified settings also require the existing
16687
16778
  // `workspace_settings` tag because that surface depends on settings
16688
- // persistence. ACP/WebSocket, auth, voice, and extensions stay on their
16689
- // existing primary-workspace routes in this phase.
16779
+ // persistence. ACP/WebSocket and auth stay outside this core tag;
16780
+ // workspace-qualified Voice REST/WebSocket routes use their separate
16781
+ // `workspace_qualified_voice` capability below. V2 extension management
16782
+ // is advertised separately via `extension_management_v2`.
16690
16783
  workspace_qualified_rest_core: { since: "v1" },
16784
+ // Workspace-qualified Voice REST and WebSocket routes. This tag is enough
16785
+ // to discover plural modalities because legacy Voice tags describe only
16786
+ // the primary runtime and may be absent for a secondary-only setup.
16787
+ workspace_qualified_voice: { since: "v1" },
16788
+ // Global extension catalog/mutations plus workspace-qualified activation
16789
+ // projections. This is additive to the legacy primary-workspace
16790
+ // `workspace_extensions` contract.
16791
+ extension_management_v2: { since: "v1" },
16792
+ // Workspace-qualified, daemon-local persisted transcript paging. The tag is
16793
+ // unconditional because the route also serves a trusted single-workspace
16794
+ // primary; authorization is evaluated for the selected runtime per request.
16795
+ workspace_persisted_transcript: { since: "v1" },
16796
+ // Workspace-qualified full session export from active persisted storage.
16797
+ // This is separate from `session_export` so clients do not infer the plural
16798
+ // route from the legacy primary-workspace export capability.
16799
+ workspace_session_export: { since: "v1" },
16800
+ // Workspace-qualified full session export from archived persisted storage.
16801
+ // This remains independent from active export so older daemons cannot ignore
16802
+ // archive intent and return an active transcript with the same session id.
16803
+ workspace_archived_session_export: { since: "v1" },
16804
+ // Workspace-qualified ACP transport (issue #6378 Phase 4):
16805
+ // `/workspaces/:workspace/acp` mounts a per-runtime ACP dispatcher (HTTP +
16806
+ // WebSocket) for each registered workspace, with per-runtime device-flow and
16807
+ // reverse client-MCP. Legacy `/acp` stays bound to the primary runtime.
16808
+ // Advertised only when the daemon hosts more than one workspace runtime.
16809
+ workspace_qualified_acp: { since: "v1" },
16691
16810
  // Phase 2 "reverse tool channel" (issue #5626). A connected WS client (e.g.
16692
16811
  // the Chrome extension) can host an MCP server that the daemon's agent
16693
16812
  // calls by carrying `mcp_message` JSON-RPC frames over the daemon WS,
@@ -16748,13 +16867,48 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
16748
16867
  "session_artifacts_persistence",
16749
16868
  (toggles) => toggles.sessionArtifactsPersistenceAvailable === true
16750
16869
  ],
16870
+ [
16871
+ "session_generation",
16872
+ (toggles) => toggles.sessionGenerationAvailable === true
16873
+ ],
16751
16874
  ["rate_limit", (toggles) => toggles.rateLimit === true],
16752
16875
  ["workspace_reload", (toggles) => toggles.reloadAvailable === true],
16753
16876
  ["channel_reload", (toggles) => toggles.channelReloadAvailable === true],
16877
+ ["channel_control", (toggles) => toggles.channelControlAvailable === true],
16754
16878
  [
16755
16879
  "multi_workspace_sessions",
16756
16880
  (toggles) => toggles.multiWorkspaceSessionsEnabled === true
16757
16881
  ],
16882
+ [
16883
+ "multi_workspace_session_rewind",
16884
+ (toggles) => toggles.multiWorkspaceSessionsEnabled === true
16885
+ ],
16886
+ [
16887
+ "multi_workspace_session_shell",
16888
+ (toggles) => toggles.multiWorkspaceSessionsEnabled === true && toggles.sessionShellCommandEnabled === true
16889
+ ],
16890
+ [
16891
+ "persistent_workspace_registration",
16892
+ (toggles) => toggles.persistentWorkspaceRegistrationAvailable === true
16893
+ ],
16894
+ [
16895
+ "workspace_runtime_removal",
16896
+ (toggles) => toggles.workspaceRuntimeRemovalAvailable === true
16897
+ ],
16898
+ [
16899
+ "workspace_qualified_acp",
16900
+ // The plural routes are pre-mounted for workspaces registered after app
16901
+ // creation, but the capability becomes meaningful only once a secondary
16902
+ // runtime exists. Until then the qualified primary route is only an alias
16903
+ // for the always-available legacy `/acp` surface.
16904
+ (toggles) => toggles.acpHttpEnabled === true && toggles.multiWorkspaceSessionsEnabled === true
16905
+ ],
16906
+ [
16907
+ "workspace_qualified_voice",
16908
+ // Like qualified ACP, the plural Voice surface is mounted ahead of time
16909
+ // but only becomes useful once the daemon has a secondary runtime.
16910
+ (toggles) => toggles.acpHttpEnabled === true && toggles.multiWorkspaceSessionsEnabled === true
16911
+ ],
16758
16912
  ["client_mcp_over_ws", (toggles) => toggles.clientMcpOverWsEnabled === true],
16759
16913
  ["cdp_tunnel_over_ws", (toggles) => toggles.cdpTunnelOverWsEnabled === true],
16760
16914
  [
@@ -16826,6 +16980,7 @@ var PROTOTYPE_POLLUTION_KEYS = /* @__PURE__ */ new Set([
16826
16980
  var CLIENT_ID_HEADER = "x-qwen-client-id";
16827
16981
  var MAX_CLIENT_ID_LENGTH = 128;
16828
16982
  var MAX_TOOL_NAME_LENGTH = 256;
16983
+ var MAX_SKILL_NAME_LENGTH = 256;
16829
16984
  var MAX_SERVER_NAME_LENGTH = 256;
16830
16985
  var CLIENT_ID_RE = /^[A-Za-z0-9._:-]+$/;
16831
16986
  var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
@@ -16928,7 +17083,8 @@ __name(validateMcpRuntimeServerName, "validateMcpRuntimeServerName");
16928
17083
  function parseAndValidateWorkspaceClientId(req, res, bridge) {
16929
17084
  const raw = parseClientIdHeader(req, res);
16930
17085
  if (raw === null || raw === void 0) return raw;
16931
- if (!bridge.knownClientIds().has(raw)) {
17086
+ const bridges = Array.isArray(bridge) ? bridge : [bridge];
17087
+ if (!bridges.some((candidate) => candidate.knownClientIds().has(raw))) {
16932
17088
  res.status(400).json({
16933
17089
  error: `Client id "${raw}" is not registered for this workspace`,
16934
17090
  code: "invalid_client_id",
@@ -17024,7 +17180,8 @@ init_esbuild_shims();
17024
17180
  var MAX_BUCKETS = 1e4;
17025
17181
  var GC_REQUEST_INTERVAL = 1e3;
17026
17182
  var GC_TIMER_INTERVAL_MS = 5 * 60 * 1e3;
17027
- function resolveTier(method, path3) {
17183
+ var WORKSPACE_QUALIFIED_ACP_PATH = /^\/workspaces\/[^/]+\/acp$/i;
17184
+ function resolveTier(method, path3, workspaceQualifiedAcpEnabled) {
17028
17185
  const p = path3.endsWith("/") && path3.length > 1 ? path3.slice(0, -1) : path3;
17029
17186
  if (method === "OPTIONS") return null;
17030
17187
  if ((method === "GET" || method === "HEAD") && (p === "/health" || p === "/demo"))
@@ -17034,6 +17191,8 @@ function resolveTier(method, path3) {
17034
17191
  if (method === "GET" && p.startsWith("/session/") && p.endsWith("/events"))
17035
17192
  return null;
17036
17193
  if (p === "/acp" || p.startsWith("/acp/")) return null;
17194
+ if (workspaceQualifiedAcpEnabled && WORKSPACE_QUALIFIED_ACP_PATH.test(p))
17195
+ return null;
17037
17196
  if (method === "POST" && p.startsWith("/session/") && p.endsWith("/prompt"))
17038
17197
  return "prompt";
17039
17198
  if (method !== "GET" && method !== "HEAD") return "mutation";
@@ -17137,7 +17296,11 @@ function createRateLimiter(config) {
17137
17296
  next();
17138
17297
  return;
17139
17298
  }
17140
- const tier = resolveTier(req.method, req.path);
17299
+ const tier = resolveTier(
17300
+ req.method,
17301
+ req.path,
17302
+ config.workspaceQualifiedAcpEnabled === true
17303
+ );
17141
17304
  if (tier === null) {
17142
17305
  next();
17143
17306
  return;
@@ -17298,6 +17461,7 @@ async function buildDaemonStatusResponse(detail, input) {
17298
17461
  null
17299
17462
  );
17300
17463
  const acpSnapshot = input.acpHandle?.registry.getSnapshot();
17464
+ const acpAggregate = input.acpHandle?.getSnapshot();
17301
17465
  const rateLimitHits = input.rateLimiter?.getHitCounts() ?? zeroRateHits();
17302
17466
  let pendingPrompts = 0;
17303
17467
  let derivedQueuedPrompts = 0;
@@ -17324,22 +17488,25 @@ async function buildDaemonStatusResponse(detail, input) {
17324
17488
  state: "disabled",
17325
17489
  channels: []
17326
17490
  };
17491
+ const channelWorkers = (workspaceRuntimes?.length ?? 1) > 1 ? input.getChannelWorkerSnapshots?.() : void 0;
17327
17492
  const totalAdmissionSnapshot = input.getTotalSessionAdmissionSnapshot?.();
17328
17493
  const issues = [];
17329
17494
  let full;
17330
17495
  pushRuntimeIssues(
17331
17496
  issues,
17332
17497
  acpSnapshot,
17498
+ acpAggregate,
17333
17499
  rateLimitHits,
17334
17500
  input,
17335
17501
  channelWorker,
17502
+ channelWorkers,
17336
17503
  totalAdmissionSnapshot,
17337
17504
  workspaceSnapshots
17338
17505
  );
17339
17506
  if (detail === "full") {
17340
17507
  full = await buildFullStatus(
17341
17508
  input,
17342
- acpSnapshot,
17509
+ acpAggregate,
17343
17510
  workspaceSnapshots.flatMap((item) => item.snapshot.sessions)
17344
17511
  );
17345
17512
  pushFullIssues(issues, full);
@@ -17404,16 +17571,17 @@ async function buildDaemonStatusResponse(detail, input) {
17404
17571
  },
17405
17572
  channel: { live: aggregatedChannelLive },
17406
17573
  channelWorker,
17574
+ ...channelWorkers && channelWorkers.length > 0 ? { channelWorkers } : {},
17407
17575
  transport: {
17408
17576
  restSseActive: input.getRestSseActive(),
17409
17577
  acp: {
17410
17578
  enabled: acpSnapshot !== void 0,
17411
- connections: acpSnapshot?.connectionCount ?? 0,
17412
- connectionStreams: acpSnapshot?.connectionStreams ?? 0,
17413
- sessionStreams: acpSnapshot?.sessionStreams ?? 0,
17414
- sseStreams: acpSnapshot?.sseStreams ?? 0,
17415
- wsStreams: acpSnapshot?.wsStreams ?? 0,
17416
- pendingClientRequests: acpSnapshot?.pendingClientRequests ?? 0
17579
+ connections: acpAggregate?.connectionCount ?? 0,
17580
+ connectionStreams: acpAggregate?.connectionStreams ?? 0,
17581
+ sessionStreams: acpAggregate?.sessionStreams ?? 0,
17582
+ sseStreams: acpAggregate?.sseStreams ?? 0,
17583
+ wsStreams: acpAggregate?.wsStreams ?? 0,
17584
+ pendingClientRequests: acpAggregate?.pendingClientRequests ?? 0
17417
17585
  }
17418
17586
  },
17419
17587
  rateLimit: {
@@ -17550,7 +17718,7 @@ async function withTimeout(promise, section, timeoutMs) {
17550
17718
  }
17551
17719
  }
17552
17720
  __name(withTimeout, "withTimeout");
17553
- function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWorker, totalAdmissionSnapshot, workspaceSnapshots) {
17721
+ function pushRuntimeIssues(issues, acpSnapshot, acpAggregate, rateLimitHits, input, channelWorker, channelWorkers, totalAdmissionSnapshot, workspaceSnapshots) {
17554
17722
  for (const { workspaceCwd, snapshot } of workspaceSnapshots) {
17555
17723
  if (snapshot.limits.maxSessions !== null && snapshot.limits.maxSessions > 0 && snapshot.sessionCount / snapshot.limits.maxSessions >= CAPACITY_WARNING_RATIO) {
17556
17724
  issues.push({
@@ -17575,12 +17743,19 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
17575
17743
  });
17576
17744
  }
17577
17745
  }
17578
- if (acpSnapshot !== void 0 && acpSnapshot.connectionCap !== null && acpSnapshot.connectionCap > 0 && acpSnapshot.connectionCount / acpSnapshot.connectionCap >= CAPACITY_WARNING_RATIO) {
17579
- issues.push({
17580
- code: "connection_capacity_high",
17581
- severity: "warning",
17582
- message: `ACP connections are at ${acpSnapshot.connectionCount}/${acpSnapshot.connectionCap}.`
17583
- });
17746
+ if (acpSnapshot !== void 0 && acpSnapshot.connectionCap !== null && acpSnapshot.connectionCap > 0) {
17747
+ const cap = acpSnapshot.connectionCap;
17748
+ const busiest = (acpAggregate?.mounts ?? []).reduce(
17749
+ (max, m) => Math.max(max, m.connectionCount),
17750
+ acpSnapshot.connectionCount
17751
+ );
17752
+ if (busiest / cap >= CAPACITY_WARNING_RATIO) {
17753
+ issues.push({
17754
+ code: "connection_capacity_high",
17755
+ severity: "warning",
17756
+ message: `ACP connections are at ${busiest}/${cap} on the busiest workspace mount.`
17757
+ });
17758
+ }
17584
17759
  }
17585
17760
  const pendingPermissionCount = workspaceSnapshots.reduce(
17586
17761
  (sum, item) => sum + item.snapshot.pendingPermissionCount,
@@ -17610,6 +17785,16 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
17610
17785
  message: `${sumRateHits(rateLimitHits)} request(s) have been rejected by rate limiting since start.`
17611
17786
  });
17612
17787
  }
17788
+ const groupedWorkers = channelWorkers && channelWorkers.length > 0 ? channelWorkers : void 0;
17789
+ const workers = groupedWorkers ?? [channelWorker];
17790
+ for (const worker of workers) {
17791
+ pushChannelWorkerIssues(issues, worker, groupedWorkers !== void 0);
17792
+ }
17793
+ }
17794
+ __name(pushRuntimeIssues, "pushRuntimeIssues");
17795
+ function pushChannelWorkerIssues(issues, channelWorker, grouped) {
17796
+ const workspace = "workspaceCwd" in channelWorker ? ` for workspace ${channelWorker.workspaceCwd}` : "";
17797
+ const section = grouped ? "runtime.channelWorkers" : "runtime.channelWorker";
17613
17798
  if (channelWorker.enabled && (channelWorker.state === "exited" || channelWorker.state === "failed")) {
17614
17799
  const detailParts = [
17615
17800
  channelWorker.pid !== void 0 ? `pid=${channelWorker.pid}` : void 0,
@@ -17628,8 +17813,8 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
17628
17813
  issues.push({
17629
17814
  code: "channel_worker_exited",
17630
17815
  severity: isPermanentFailure ? "error" : "warning",
17631
- message: `Channel worker is ${channelWorker.state}${details}${error}.`,
17632
- section: "runtime.channelWorker"
17816
+ message: `Channel worker${workspace} is ${channelWorker.state}${details}${error}.`,
17817
+ section
17633
17818
  });
17634
17819
  }
17635
17820
  if (channelWorker.enabled && channelWorker.state === "running" && channelWorker.requestedChannels !== void 0) {
@@ -17641,13 +17826,13 @@ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWor
17641
17826
  issues.push({
17642
17827
  code: "channel_worker_partial_connect",
17643
17828
  severity: "warning",
17644
- message: `Channel worker connected ${channelWorker.channels.length}/${channelWorker.requestedChannels.length} channel(s). Failed: ${failed.join(", ")}.`,
17645
- section: "runtime.channelWorker"
17829
+ message: `Channel worker${workspace} connected ${channelWorker.channels.length}/${channelWorker.requestedChannels.length} channel(s). Failed: ${failed.join(", ")}.`,
17830
+ section
17646
17831
  });
17647
17832
  }
17648
17833
  }
17649
17834
  }
17650
- __name(pushRuntimeIssues, "pushRuntimeIssues");
17835
+ __name(pushChannelWorkerIssues, "pushChannelWorkerIssues");
17651
17836
  function pushFullIssues(issues, full) {
17652
17837
  for (const [name, section] of Object.entries(full.workspace)) {
17653
17838
  if (section.status === "unavailable") {
@@ -17865,20 +18050,177 @@ function copyNumber(from, to, key) {
17865
18050
  }
17866
18051
  __name(copyNumber, "copyNumber");
17867
18052
 
18053
+ // packages/cli/src/serve/acp-http-enabled.ts
18054
+ init_esbuild_shims();
18055
+ function resolveAcpHttpEnabled(env = process.env) {
18056
+ return env["QWEN_SERVE_ACP_HTTP"] !== "0";
18057
+ }
18058
+ __name(resolveAcpHttpEnabled, "resolveAcpHttpEnabled");
18059
+
17868
18060
  // packages/cli/src/serve/cdp-mcp-command.ts
17869
18061
  init_esbuild_shims();
17870
18062
  var QWEN_CDP_MCP_COMMAND_ENV = "QWEN_CDP_MCP_COMMAND";
17871
- var QWEN_SERVE_ACP_HTTP_ENV = "QWEN_SERVE_ACP_HTTP";
17872
18063
  function resolveCdpMcpCommand(env) {
17873
18064
  const command = env[QWEN_CDP_MCP_COMMAND_ENV]?.trim();
17874
18065
  return command ? command : void 0;
17875
18066
  }
17876
18067
  __name(resolveCdpMcpCommand, "resolveCdpMcpCommand");
17877
18068
  function isBrowserAutomationMcpAvailable(opts, env) {
17878
- return opts.cdpTunnelOverWs === true && !opts.token && env[QWEN_SERVE_ACP_HTTP_ENV] !== "0" && resolveCdpMcpCommand(env) !== void 0;
18069
+ return opts.cdpTunnelOverWs === true && !opts.token && resolveAcpHttpEnabled(env) && resolveCdpMcpCommand(env) !== void 0;
17879
18070
  }
17880
18071
  __name(isBrowserAutomationMcpAvailable, "isBrowserAutomationMcpAvailable");
17881
18072
 
18073
+ // packages/cli/src/serve/voice/workspace-voice-coordinator.ts
18074
+ init_esbuild_shims();
18075
+ var MAX_CONCURRENT_VOICE_SESSIONS = 8;
18076
+ var DISPOSE_WAIT_MS = 5e3;
18077
+ var VoiceLeaseAbortError = class extends Error {
18078
+ constructor(kind, message) {
18079
+ super(message);
18080
+ this.kind = kind;
18081
+ this.name = "VoiceLeaseAbortError";
18082
+ }
18083
+ static {
18084
+ __name(this, "VoiceLeaseAbortError");
18085
+ }
18086
+ };
18087
+ var Lease = class {
18088
+ constructor(onRelease) {
18089
+ this.onRelease = onRelease;
18090
+ }
18091
+ static {
18092
+ __name(this, "Lease");
18093
+ }
18094
+ controller = new AbortController();
18095
+ signal = this.controller.signal;
18096
+ released = false;
18097
+ release() {
18098
+ if (this.released) return;
18099
+ this.released = true;
18100
+ this.onRelease(this);
18101
+ }
18102
+ abort(reason) {
18103
+ if (!this.signal.aborted) this.controller.abort(reason);
18104
+ }
18105
+ };
18106
+ var WorkspaceVoiceCoordinator = class {
18107
+ static {
18108
+ __name(this, "WorkspaceVoiceCoordinator");
18109
+ }
18110
+ states = /* @__PURE__ */ new Map();
18111
+ disposed = /* @__PURE__ */ new WeakSet();
18112
+ active = 0;
18113
+ acquire(runtime) {
18114
+ if (this.disposed.has(runtime)) {
18115
+ return { kind: "rejected", reason: "draining" };
18116
+ }
18117
+ const state = this.stateFor(runtime);
18118
+ if (state.draining) return { kind: "rejected", reason: "draining" };
18119
+ if (this.active >= MAX_CONCURRENT_VOICE_SESSIONS) {
18120
+ return { kind: "rejected", reason: "capacity" };
18121
+ }
18122
+ const lease = new Lease((current) => this.release(runtime, current));
18123
+ state.leases.add(lease);
18124
+ this.active++;
18125
+ return { kind: "admitted", lease };
18126
+ }
18127
+ beginWorkspaceDrain(runtime) {
18128
+ this.stateFor(runtime).draining = true;
18129
+ }
18130
+ cancelWorkspaceDrain(runtime) {
18131
+ const state = this.states.get(runtime);
18132
+ if (!state || state.completed) return;
18133
+ state.draining = false;
18134
+ if (state.leases.size === 0) this.states.delete(runtime);
18135
+ }
18136
+ completeWorkspaceDrain(runtime) {
18137
+ this.disposed.add(runtime);
18138
+ const state = this.states.get(runtime);
18139
+ if (!state) return;
18140
+ state.draining = true;
18141
+ state.completed = true;
18142
+ const abortReason = new VoiceLeaseAbortError(
18143
+ "workspace_removed",
18144
+ "Workspace drain completed"
18145
+ );
18146
+ for (const lease of state.leases) lease.abort(abortReason);
18147
+ this.deleteIfIdle(runtime, state);
18148
+ }
18149
+ getWorkspaceActivity(runtime) {
18150
+ return this.states.get(runtime)?.leases.size ?? 0;
18151
+ }
18152
+ async disposeRuntime(runtime, reason) {
18153
+ this.disposed.add(runtime);
18154
+ const state = this.states.get(runtime);
18155
+ if (!state) return;
18156
+ state.draining = true;
18157
+ state.completed = true;
18158
+ const abortReason = new VoiceLeaseAbortError(
18159
+ reason,
18160
+ reason === "workspace_removed" ? "Workspace runtime was removed" : "Daemon is shutting down"
18161
+ );
18162
+ for (const lease of state.leases) lease.abort(abortReason);
18163
+ if (state.leases.size === 0) {
18164
+ this.deleteIfIdle(runtime, state);
18165
+ return;
18166
+ }
18167
+ let resolveIdle;
18168
+ const idle = new Promise((resolve) => {
18169
+ resolveIdle = resolve;
18170
+ state.idleWaiters.add(resolve);
18171
+ });
18172
+ let timeout;
18173
+ let timedOut = false;
18174
+ try {
18175
+ await Promise.race([
18176
+ idle,
18177
+ new Promise((resolve) => {
18178
+ timeout = setTimeout(() => {
18179
+ timedOut = true;
18180
+ resolve();
18181
+ }, DISPOSE_WAIT_MS);
18182
+ timeout.unref?.();
18183
+ })
18184
+ ]);
18185
+ } finally {
18186
+ if (timeout) clearTimeout(timeout);
18187
+ if (resolveIdle) state.idleWaiters.delete(resolveIdle);
18188
+ }
18189
+ if (timedOut && state.leases.size > 0) {
18190
+ process.stderr.write(
18191
+ `qwen serve: Voice runtime disposal timed out with ${state.leases.size} active lease(s).
18192
+ `
18193
+ );
18194
+ }
18195
+ }
18196
+ stateFor(runtime) {
18197
+ let state = this.states.get(runtime);
18198
+ if (!state) {
18199
+ state = {
18200
+ draining: false,
18201
+ completed: false,
18202
+ leases: /* @__PURE__ */ new Set(),
18203
+ idleWaiters: /* @__PURE__ */ new Set()
18204
+ };
18205
+ this.states.set(runtime, state);
18206
+ }
18207
+ return state;
18208
+ }
18209
+ release(runtime, lease) {
18210
+ const state = this.states.get(runtime);
18211
+ if (!state || !state.leases.delete(lease)) return;
18212
+ this.active--;
18213
+ if (state.leases.size === 0) {
18214
+ for (const resolve of state.idleWaiters) resolve();
18215
+ state.idleWaiters.clear();
18216
+ }
18217
+ this.deleteIfIdle(runtime, state);
18218
+ }
18219
+ deleteIfIdle(runtime, state) {
18220
+ if (state.completed && state.leases.size === 0) this.states.delete(runtime);
18221
+ }
18222
+ };
18223
+
17882
18224
  export {
17883
18225
  require_express2 as require_express,
17884
18226
  sanitizeForStderr,
@@ -17909,6 +18251,7 @@ export {
17909
18251
  CLIENT_ID_HEADER,
17910
18252
  MAX_CLIENT_ID_LENGTH,
17911
18253
  MAX_TOOL_NAME_LENGTH,
18254
+ MAX_SKILL_NAME_LENGTH,
17912
18255
  MAX_SERVER_NAME_LENGTH,
17913
18256
  CLIENT_ID_RE,
17914
18257
  safeBody,
@@ -17931,10 +18274,13 @@ export {
17931
18274
  allowOriginMode,
17932
18275
  listenerMaxConnections,
17933
18276
  positiveFiniteOrNull,
18277
+ resolveAcpHttpEnabled,
17934
18278
  QWEN_CDP_MCP_COMMAND_ENV,
17935
- QWEN_SERVE_ACP_HTTP_ENV,
17936
18279
  resolveCdpMcpCommand,
17937
- isBrowserAutomationMcpAvailable
18280
+ isBrowserAutomationMcpAvailable,
18281
+ MAX_CONCURRENT_VOICE_SESSIONS,
18282
+ VoiceLeaseAbortError,
18283
+ WorkspaceVoiceCoordinator
17938
18284
  };
17939
18285
  /**
17940
18286
  * @license