@qwen-code/qwen-code 0.19.9-nightly.20260714.9dd8389eb → 0.19.10

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 (194) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +6 -0
  2. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  3. package/bundled/qc-helper/docs/qwen-serve.md +7 -2
  4. package/bundled/review/SKILL.md +23 -11
  5. package/chunks/{MaxSizedBox-QAYHOC4F.js → MaxSizedBox-67ODZ4SZ.js} +5 -6
  6. package/chunks/{StandaloneSessionPicker-D3R6YYX3.js → StandaloneSessionPicker-SIPBQT5Z.js} +17 -18
  7. package/chunks/{acpAgent-ENHBW72A.js → acpAgent-VPZJXLFX.js} +141 -80
  8. package/chunks/{agent-57LX4KMG.js → agent-Z7NWL6XL.js} +2 -3
  9. package/chunks/{agent-headless-AC6EVNAP.js → agent-headless-73HZ6ROQ.js} +2 -3
  10. package/chunks/{bridge-4OZH44MK.js → bridge-XFKW6S7Q.js} +5 -6
  11. package/chunks/{chunk-DPSWJWZI.js → chunk-2W3OOD4W.js} +1 -0
  12. package/chunks/{chunk-FDL4PB5H.js → chunk-3XJFUTNM.js} +8 -8
  13. package/chunks/{chunk-AAS2Q2TV.js → chunk-422XAKCK.js} +2 -2
  14. package/chunks/{chunk-7U7UIO5W.js → chunk-4FMG7EDJ.js} +19 -4
  15. package/chunks/{chunk-X7EBAABW.js → chunk-4YWLED2A.js} +1 -1
  16. package/chunks/{chunk-WN4D7YCI.js → chunk-5EBKKSBX.js} +1 -1
  17. package/chunks/{chunk-G6QTKQN4.js → chunk-5LROA5W4.js} +3 -3
  18. package/chunks/{chunk-SUWGUGAD.js → chunk-65N2J6V2.js} +2 -2
  19. package/chunks/{chunk-T2L6SGQY.js → chunk-6GETGQWP.js} +26 -6
  20. package/chunks/{chunk-T5C2OUCI.js → chunk-6GKMJPOC.js} +3 -3
  21. package/chunks/{chunk-K3PPUB46.js → chunk-6W6DI34P.js} +1 -1
  22. package/chunks/{chunk-WM5HY72H.js → chunk-7L4XBYVW.js} +2 -2
  23. package/chunks/{chunk-CLTWL6HD.js → chunk-7MJAZMXK.js} +5 -5
  24. package/chunks/{chunk-6HHAADP2.js → chunk-AAR5SGMD.js} +4 -4
  25. package/chunks/{chunk-P3S67A5R.js → chunk-B5I2IIWY.js} +3 -3
  26. package/chunks/{chunk-4DYYRLIE.js → chunk-CEW4HDPK.js} +639 -317
  27. package/chunks/{chunk-JR63TOV4.js → chunk-CJFNEBYB.js} +1 -1
  28. package/chunks/{chunk-PMRH4YYW.js → chunk-CUUXANEQ.js} +2 -1
  29. package/chunks/{chunk-Z56JO4JZ.js → chunk-DK33QJ3V.js} +6 -6
  30. package/chunks/{chunk-N7FCSERB.js → chunk-DPFBNG72.js} +1 -1
  31. package/chunks/{chunk-HZYUNZDQ.js → chunk-EQY6POVO.js} +1 -1
  32. package/chunks/{chunk-MBJ3D6SF.js → chunk-F7NXQH4Y.js} +1 -1
  33. package/chunks/{chunk-C4CXFRKY.js → chunk-FXMC7SL2.js} +25 -4
  34. package/chunks/{chunk-CSACSGAW.js → chunk-GGJII3FM.js} +2 -2
  35. package/chunks/{chunk-EU3U7USF.js → chunk-H3FQOPPS.js} +2 -2
  36. package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
  37. package/chunks/{chunk-MBP3K324.js → chunk-HHEFI4RP.js} +32 -11
  38. package/chunks/{chunk-B6ABUBYY.js → chunk-JSJFKYWT.js} +67 -5
  39. package/chunks/{chunk-QABSSDQH.js → chunk-K4PZ5F5T.js} +1 -1
  40. package/chunks/{chunk-SSFDPGFN.js → chunk-K7CRWKOE.js} +7879 -5472
  41. package/chunks/{chunk-J2TDDOSM.js → chunk-L37RC7MQ.js} +1 -1
  42. package/chunks/{chunk-V75IOTWF.js → chunk-L62SEJWY.js} +4 -4
  43. package/chunks/{chunk-HE54PGVI.js → chunk-LNUXFLLJ.js} +2 -2
  44. package/chunks/{chunk-PHYCWSDG.js → chunk-LQU7EVFA.js} +1 -1
  45. package/chunks/{chunk-AUGSSJX3.js → chunk-LTNI523B.js} +2 -2
  46. package/chunks/{chunk-4LJNI7MU.js → chunk-MO7O5722.js} +262 -7
  47. package/chunks/{chunk-S2QXYLUB.js → chunk-N6FXRR6P.js} +1 -1
  48. package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
  49. package/chunks/{chunk-XHW5VUIQ.js → chunk-OFEVHGVU.js} +157 -55
  50. package/chunks/{chunk-T7FSRWQ5.js → chunk-P6LART6G.js} +107 -6
  51. package/chunks/{chunk-GYGGUR4Q.js → chunk-Q5GLXH5Q.js} +3 -3
  52. package/chunks/{chunk-SE74CIZD.js → chunk-RDRVMDWV.js} +1 -1
  53. package/chunks/{chunk-DKXW66XA.js → chunk-SPUYQB4T.js} +1 -1
  54. package/chunks/{chunk-AGBFWLA5.js → chunk-TISZXPAX.js} +1 -1
  55. package/chunks/{chunk-ZLM3KXBT.js → chunk-TTUO4DNG.js} +14 -13
  56. package/chunks/{chunk-4QOPEEL2.js → chunk-UFOKA4PR.js} +1 -1
  57. package/chunks/{chunk-2MF6ICOL.js → chunk-V7EQTZYR.js} +36 -8
  58. package/chunks/{chunk-WWQ3QIJS.js → chunk-VBRRNQB7.js} +10 -10
  59. package/chunks/{chunk-OCC3UTWA.js → chunk-W34A5MJH.js} +1 -1
  60. package/chunks/{chunk-LAM6CGP5.js → chunk-WDW64OW3.js} +3 -3
  61. package/chunks/{chunk-DMTQY5GY.js → chunk-WDWJ4OQJ.js} +3 -3
  62. package/chunks/{chunk-B6KHOCU7.js → chunk-WIASPMLX.js} +8 -8
  63. package/chunks/{chunk-4FPUAYTT.js → chunk-WLXYAKV7.js} +4 -4
  64. package/chunks/{chunk-YWUK7OS7.js → chunk-WTSXKLG5.js} +1 -1
  65. package/chunks/{chunk-7BIZARI2.js → chunk-X362TMXZ.js} +4 -4
  66. package/chunks/{chunk-ASVORVFT.js → chunk-XLIRF7IK.js} +1 -1
  67. package/chunks/{chunk-DNKX35GS.js → chunk-XXJKGHZV.js} +4 -4
  68. package/chunks/{chunk-UI3W56WF.js → chunk-YU56QGXX.js} +1 -1
  69. package/chunks/{chunk-RJL5T4WJ.js → chunk-YX4LLZ3D.js} +47 -35
  70. package/chunks/{chunk-YH4J5XI3.js → chunk-YYPXHMWO.js} +4 -4
  71. package/chunks/{chunk-AAWKZ5R7.js → chunk-ZKMGAFYV.js} +1 -1
  72. package/chunks/{chunk-EUNRLYJG.js → chunk-ZQTZXVHP.js} +4 -4
  73. package/chunks/{computer-use-DIP5BWXP.js → computer-use-IYTX45WA.js} +2 -3
  74. package/chunks/{contextCommand-QU4GJWWD.js → contextCommand-272V77WU.js} +4 -5
  75. package/chunks/{create-sub-session-TCLIYVGR.js → create-sub-session-CBJMQLYP.js} +2 -3
  76. package/chunks/{daemon-CEZ27OH4.js → daemon-RNGFPMAB.js} +315 -36
  77. package/chunks/{daemon-status-provider-SIBFMLBQ.js → daemon-status-provider-L4STG5VO.js} +9 -10
  78. package/chunks/{earlyInputCapture-L66BEG2C.js → earlyInputCapture-EN4BRREQ.js} +2 -3
  79. package/chunks/{edit-Y5LAJSST.js → edit-OMAF2QDR.js} +2 -3
  80. package/chunks/{enter-worktree-X5LML7T4.js → enter-worktree-BBZX52HG.js} +2 -3
  81. package/chunks/{enterPlanMode-XWF32QOW.js → enterPlanMode-5NNFMBUY.js} +2 -3
  82. package/chunks/{environment-YVMA5F4I.js → environment-7TEWMJYN.js} +4 -5
  83. package/chunks/{errors-4Y5SUAOC.js → errors-I4VKVX3F.js} +4 -5
  84. package/chunks/{exit-worktree-SFHU7XYC.js → exit-worktree-FUWRJI33.js} +2 -3
  85. package/chunks/{exitPlanMode-FP3NAN6E.js → exitPlanMode-IHCJ5EEI.js} +2 -3
  86. package/chunks/{fast-path-ZJNFFCBM.js → fast-path-ZA57TOH4.js} +2 -2
  87. package/chunks/{gemini-5CAB22BI.js → gemini-UOAKVXBG.js} +91 -33
  88. package/chunks/{geminiContentGenerator-GE3HPIFB.js → geminiContentGenerator-G6UCE6MW.js} +1 -1
  89. package/chunks/{glob-YPACZAEL.js → glob-4GJQ2UFF.js} +2 -3
  90. package/chunks/{grep-IPR4XW37.js → grep-5QSYXF2E.js} +2 -3
  91. package/chunks/{handleAutoUpdate-P2KEP56V.js → handleAutoUpdate-ULHNWL6R.js} +6 -7
  92. package/chunks/{i18n-BRCT66AA.js → i18n-CYDUTF6F.js} +3 -4
  93. package/chunks/{initializer-34HXSK3A.js → initializer-NRFKUGIO.js} +7 -8
  94. package/chunks/{installationInfo-WOTDQMSC.js → installationInfo-WELKRHHE.js} +3 -4
  95. package/chunks/{list-XOGP7UPP.js → list-JVDXEG2E.js} +10 -11
  96. package/chunks/{loadedSettingsAdapter-L4YKGU6F.js → loadedSettingsAdapter-WAM4VUTG.js} +7 -8
  97. package/chunks/{mcp-HH7DIP7Y.js → mcp-YHOZN3ZM.js} +7 -8
  98. package/chunks/{monitor-25DEBT6U.js → monitor-R7XZPJHQ.js} +2 -3
  99. package/chunks/{nonInteractiveCli-CT3VSSLK.js → nonInteractiveCli-NSOB6D74.js} +34 -35
  100. package/chunks/{notebook-edit-TAVXSWQ6.js → notebook-edit-6RNKE2L2.js} +2 -3
  101. package/chunks/{openaiContentGenerator-6I7DKUAN.js → openaiContentGenerator-XNS5S64I.js} +2 -2
  102. package/chunks/{pidfile-SIQGCFLZ.js → pidfile-XE4RRR2P.js} +2 -3
  103. package/chunks/{qwenContentGenerator-5DDIXI2N.js → qwenContentGenerator-APDPJ3VN.js} +3 -4
  104. package/chunks/{read-file-WDOAYRFU.js → read-file-XSUWXSR7.js} +1 -1
  105. package/chunks/{ripGrep-MI7PHN3Q.js → ripGrep-APB3CDMU.js} +2 -3
  106. package/chunks/{run-qwen-serve-PNTYF3RE.js → run-qwen-serve-NWTGPERT.js} +224 -75
  107. package/chunks/{runtime-V3FBMUTG.js → runtime-EIO3NQKR.js} +8 -9
  108. package/chunks/{scheduler-4TAUIJBM.js → scheduler-JJDZBDRN.js} +2 -3
  109. package/chunks/{serve-WB2TR7XM.js → serve-WTIPB3EI.js} +7 -8
  110. package/chunks/{server-AF6LNFPK.js → server-NJPHQHLH.js} +2458 -755
  111. package/chunks/{session-BIGK4NRW.js → session-O4AO7FTS.js} +35 -36
  112. package/chunks/{settings-IXF5FIQO.js → settings-HQNDK7TG.js} +6 -7
  113. package/chunks/{shell-5VWJ2PPG.js → shell-UIXM6PWG.js} +2 -3
  114. package/chunks/{skill-SI667Y3B.js → skill-3XMB4ULV.js} +1 -1
  115. package/chunks/{spawnChannel-IKX6DD7J.js → spawnChannel-3R632QRM.js} +4 -5
  116. package/chunks/{src-55DZWDAK.js → src-USZKPUOC.js} +33 -4
  117. package/chunks/{standalone-update-MHLSFHE6.js → standalone-update-L5XW3D7K.js} +4 -5
  118. package/chunks/{startInteractiveUI-V2EDWLAX.js → startInteractiveUI-CPZOL2WB.js} +174 -122
  119. package/chunks/{team-create-IZAMLBJS.js → team-create-XXPRF3IQ.js} +2 -3
  120. package/chunks/{team-plan-approval-3R4RCKCP.js → team-plan-approval-EOTTKHDW.js} +2 -3
  121. package/chunks/{theme-manager-LCOXZ5DO.js → theme-manager-P6UITO2L.js} +2 -3
  122. package/chunks/{tool-search-NYNCD5LF.js → tool-search-DDNGK2LR.js} +1 -1
  123. package/chunks/{total-session-admission-PJWGOMQE.js → total-session-admission-PL5N7DNY.js} +5 -6
  124. package/chunks/{trustedFolders-DOJDHNYP.js → trustedFolders-C5LMF3UR.js} +3 -4
  125. package/chunks/types-ML3TRJQ5.js +16 -0
  126. package/chunks/{updateCheck-ZXL66KIG.js → updateCheck-QTVVISH7.js} +4 -5
  127. package/chunks/{validateNonInterActiveAuth-JSNJZCYY.js → validateNonInterActiveAuth-RY4RKBQG.js} +30 -31
  128. package/chunks/{version-3NLBENG5.js → version-U45RYOSD.js} +1 -1
  129. package/chunks/{workflow-BQYLF7XP.js → workflow-TCIAQYOA.js} +3 -4
  130. package/chunks/{workspace-providers-status-FA2DGEZW.js → workspace-providers-status-I3G2HYLY.js} +10 -11
  131. package/chunks/{workspace-registration-store-TARTAGMI.js → workspace-registration-store-IH5GLZ6Y.js} +1 -1
  132. package/chunks/{workspace-registry-AGE7WAXX.js → workspace-registry-QEKBELIX.js} +5 -6
  133. package/chunks/{workspace-service-ERC5VR2B.js → workspace-service-ORKHGLP3.js} +17 -14
  134. package/chunks/{workspace-skills-status-FKYWGNCN.js → workspace-skills-status-D7QCNDYY.js} +9 -10
  135. package/chunks/{write-file-S47KSK7Z.js → write-file-JGRQR5VM.js} +2 -3
  136. package/cli.js +11 -11
  137. package/package.json +3 -3
  138. package/web-shell/assets/{arc-Zj4EkBUY.js → arc-CUeDlxvE.js} +1 -1
  139. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DAk1Ua3Y.js → architectureDiagram-3BPJPVTR-PiUszkQA.js} +1 -1
  140. package/web-shell/assets/{blockDiagram-GPEHLZMM-DBNqUthM.js → blockDiagram-GPEHLZMM-s2wYSO7e.js} +1 -1
  141. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dq5QGJ53.js → c4Diagram-AAUBKEIU-DyLxZoz9.js} +1 -1
  142. package/web-shell/assets/channel-DkuJJ0qd.js +1 -0
  143. package/web-shell/assets/{chunk-2J33WTMH-DY0AeGru.js → chunk-2J33WTMH-Dsdai7Tk.js} +1 -1
  144. package/web-shell/assets/{chunk-4BX2VUAB-COX3OyIi.js → chunk-4BX2VUAB-DEosOjV7.js} +1 -1
  145. package/web-shell/assets/{chunk-55IACEB6-Csoyddbh.js → chunk-55IACEB6-sNsRLTXf.js} +1 -1
  146. package/web-shell/assets/{chunk-727SXJPM-BJPONdxX.js → chunk-727SXJPM-DkRNZzmh.js} +1 -1
  147. package/web-shell/assets/{chunk-AQP2D5EJ-syLVH6fg.js → chunk-AQP2D5EJ-BrsRNpzd.js} +1 -1
  148. package/web-shell/assets/{chunk-FMBD7UC4-Cfm59Nhw.js → chunk-FMBD7UC4-CI039lpl.js} +1 -1
  149. package/web-shell/assets/{chunk-ND2GUHAM-DZf6tAqS.js → chunk-ND2GUHAM-M-pkeIfu.js} +1 -1
  150. package/web-shell/assets/{chunk-QZHKN3VN-DKBp_v5q.js → chunk-QZHKN3VN-C4ckGNbH.js} +1 -1
  151. package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +1 -0
  152. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +1 -0
  153. package/web-shell/assets/{cose-bilkent-S5V4N54A-DUU3mMQ5.js → cose-bilkent-S5V4N54A-BciKUAFq.js} +1 -1
  154. package/web-shell/assets/{dagre-BM42HDAG-BUgNfbh-.js → dagre-BM42HDAG-C1nTSgU6.js} +1 -1
  155. package/web-shell/assets/{diagram-2AECGRRQ-DT7MVfAg.js → diagram-2AECGRRQ-BDPNWr1m.js} +1 -1
  156. package/web-shell/assets/{diagram-5GNKFQAL-Cv4YG-ec.js → diagram-5GNKFQAL-CNFhTszL.js} +1 -1
  157. package/web-shell/assets/{diagram-KO2AKTUF-BAe9LLkn.js → diagram-KO2AKTUF-CjPa4p5a.js} +1 -1
  158. package/web-shell/assets/{diagram-LMA3HP47-DW8wqTIP.js → diagram-LMA3HP47-ZzPykSyG.js} +1 -1
  159. package/web-shell/assets/{diagram-OG6HWLK6-CmkuWbaK.js → diagram-OG6HWLK6-0UVtZ9A4.js} +1 -1
  160. package/web-shell/assets/{erDiagram-TEJ5UH35-DwvdHjZ9.js → erDiagram-TEJ5UH35-CajDZCat.js} +1 -1
  161. package/web-shell/assets/{flowDiagram-I6XJVG4X-CSsXrhW_.js → flowDiagram-I6XJVG4X-BRuFBIvL.js} +1 -1
  162. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BtuznCdi.js → ganttDiagram-6RSMTGT7-BevGmJqG.js} +1 -1
  163. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DGmAm06g.js → gitGraphDiagram-PVQCEYII-DvPMpBMb.js} +1 -1
  164. package/web-shell/assets/index-Cnvv4VcI.css +5 -0
  165. package/web-shell/assets/index-D1Uyklxa.js +1088 -0
  166. package/web-shell/assets/{index-BEtz1cvN.js → index-DzHwQkQq.js} +1 -1
  167. package/web-shell/assets/{infoDiagram-5YYISTIA-OAiZ1q0K.js → infoDiagram-5YYISTIA-Oixn7tA9.js} +1 -1
  168. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DyK0KTIT.js → ishikawaDiagram-YF4QCWOH-BgKpeg-j.js} +1 -1
  169. package/web-shell/assets/{journeyDiagram-JHISSGLW-DzYJlwfO.js → journeyDiagram-JHISSGLW-74mwxIaA.js} +1 -1
  170. package/web-shell/assets/{kanban-definition-UN3LZRKU-CU_tcDwi.js → kanban-definition-UN3LZRKU-D4D6cEqA.js} +1 -1
  171. package/web-shell/assets/{linear-DvZXjF17.js → linear-atZRE_L2.js} +1 -1
  172. package/web-shell/assets/{mermaid.core-_ZFEQlOl.js → mermaid.core-KKudX-JC.js} +5 -5
  173. package/web-shell/assets/{mindmap-definition-RKZ34NQL-Or4p64HB.js → mindmap-definition-RKZ34NQL-CMCej9yG.js} +1 -1
  174. package/web-shell/assets/{pieDiagram-4H26LBE5-lXE-zZ6b.js → pieDiagram-4H26LBE5-nhx40X7q.js} +1 -1
  175. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DUXb9mUV.js → quadrantDiagram-W4KKPZXB-CUmVcN3M.js} +1 -1
  176. package/web-shell/assets/{requirementDiagram-4Y6WPE33-D_10uHfo.js → requirementDiagram-4Y6WPE33-C_vyEwyy.js} +1 -1
  177. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-E8c0fPqe.js → sankeyDiagram-5OEKKPKP-DU6G4VWR.js} +1 -1
  178. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CJMtFttK.js → sequenceDiagram-3UESZ5HK-DdeRR_KJ.js} +1 -1
  179. package/web-shell/assets/{stateDiagram-AJRCARHV-DhbviRbB.js → stateDiagram-AJRCARHV-C6iCI8ps.js} +1 -1
  180. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +1 -0
  181. package/web-shell/assets/{timeline-definition-PNZ67QCA-CM5yMkFK.js → timeline-definition-PNZ67QCA-B_Ea8Cb7.js} +1 -1
  182. package/web-shell/assets/{vennDiagram-CIIHVFJN-BCi-zWNN.js → vennDiagram-CIIHVFJN-BPUVZEJA.js} +1 -1
  183. package/web-shell/assets/{wardley-L42UT6IY-BJ_yJNjJ.js → wardley-L42UT6IY-BWEj0lKY.js} +1 -1
  184. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-TjtLk-qN.js → wardleyDiagram-YWT4CUSO-BvDsdIQw.js} +1 -1
  185. package/web-shell/assets/{xychartDiagram-2RQKCTM6-D1TjyoQ3.js → xychartDiagram-2RQKCTM6-crz0QhF_.js} +1 -1
  186. package/web-shell/index.html +2 -2
  187. package/chunks/chunk-CU3L64TP.js +0 -93
  188. package/chunks/types-JNKGKUJT.js +0 -12
  189. package/web-shell/assets/channel-DWfYijFS.js +0 -1
  190. package/web-shell/assets/classDiagram-4FO5ZUOK-DDht-78J.js +0 -1
  191. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DDht-78J.js +0 -1
  192. package/web-shell/assets/index-B9Xwf4OS.css +0 -5
  193. package/web-shell/assets/index-BUkM4ZXX.js +0 -1088
  194. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CntljfwW.js +0 -1
@@ -434,7 +434,7 @@ var WorkspaceRegistrationStore = class {
434
434
  return removed;
435
435
  }
436
436
  async update(mutate) {
437
- const { atomicWriteFile } = await import("./src-55DZWDAK.js");
437
+ const { atomicWriteFile } = await import("./src-USZKPUOC.js");
438
438
  return withInProcessLock(this.filePath, async () => {
439
439
  const lock = await acquireFileLock(this.filePath);
440
440
  let committed = false;
@@ -2,19 +2,19 @@
2
2
  "use strict";
3
3
  import {
4
4
  getErrorMessage
5
- } from "./chunk-SUWGUGAD.js";
5
+ } from "./chunk-65N2J6V2.js";
6
6
  import {
7
7
  extensionToOutputString,
8
8
  getExtensionManager
9
- } from "./chunk-6HHAADP2.js";
9
+ } from "./chunk-AAR5SGMD.js";
10
10
  import {
11
11
  loadSettings
12
- } from "./chunk-T2L6SGQY.js";
12
+ } from "./chunk-6GETGQWP.js";
13
13
  import {
14
14
  initializeI18n,
15
15
  resolveLanguageSetting,
16
16
  t
17
- } from "./chunk-SE74CIZD.js";
17
+ } from "./chunk-RDRVMDWV.js";
18
18
  import {
19
19
  writeStderrLine,
20
20
  writeStdoutLine
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-QHTIBUWB.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-SE74CIZD.js";
11
+ } from "./chunk-RDRVMDWV.js";
12
12
  import {
13
13
  require_clean,
14
14
  require_constants,
@@ -27,7 +27,7 @@ import {
27
27
  ansi_regex_exports,
28
28
  init_ansi_regex,
29
29
  stripAnsi
30
- } from "./chunk-SSFDPGFN.js";
30
+ } from "./chunk-K7CRWKOE.js";
31
31
  import {
32
32
  require_graceful_fs
33
33
  } from "./chunk-E2UVIFI2.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  runExitCleanup
5
- } from "./chunk-AGBFWLA5.js";
5
+ } from "./chunk-TISZXPAX.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  functionResponsePartsToString
5
- } from "./chunk-RJL5T4WJ.js";
5
+ } from "./chunk-YX4LLZ3D.js";
6
6
  import {
7
7
  parseAndFormatApiError
8
- } from "./chunk-SSFDPGFN.js";
8
+ } from "./chunk-K7CRWKOE.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-5O2XNYP6.js";
@@ -18,9 +18,6 @@ import {
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) {
@@ -16553,6 +16630,7 @@ var SERVE_CAPABILITY_REGISTRY = {
16553
16630
  // unregistered — the toggle takes effect on the next ACP child spawn
16554
16631
  // (`tools.disabled` is consulted at `Config` construction time).
16555
16632
  workspace_tool_toggle: { since: "v1" },
16633
+ workspace_skill_toggle: { since: "v1" },
16556
16634
  workspace_settings: { since: "v1" },
16557
16635
  // `GET /workspace/permissions` is always available when this tag is
16558
16636
  // advertised. `POST /workspace/permissions` updates the active ACP
@@ -16694,13 +16772,27 @@ var SERVE_CAPABILITY_REGISTRY = {
16694
16772
  // workspace agent CRUD, and persisted session organization surfaces.
16695
16773
  // Workspace-qualified settings also require the existing
16696
16774
  // `workspace_settings` tag because that surface depends on settings
16697
- // persistence. ACP/WebSocket, auth, voice, and extensions stay on their
16698
- // existing primary-workspace routes in this phase.
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`.
16699
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" },
16700
16788
  // Workspace-qualified, daemon-local persisted transcript paging. The tag is
16701
16789
  // unconditional because the route also serves a trusted single-workspace
16702
16790
  // primary; authorization is evaluated for the selected runtime per request.
16703
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" },
16704
16796
  // Workspace-qualified ACP transport (issue #6378 Phase 4):
16705
16797
  // `/workspaces/:workspace/acp` mounts a per-runtime ACP dispatcher (HTTP +
16706
16798
  // WebSocket) for each registered workspace, with per-runtime device-flow and
@@ -16799,6 +16891,12 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
16799
16891
  // for the always-available legacy `/acp` surface.
16800
16892
  (toggles) => toggles.acpHttpEnabled === true && toggles.multiWorkspaceSessionsEnabled === true
16801
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
+ ],
16802
16900
  ["client_mcp_over_ws", (toggles) => toggles.clientMcpOverWsEnabled === true],
16803
16901
  ["cdp_tunnel_over_ws", (toggles) => toggles.cdpTunnelOverWsEnabled === true],
16804
16902
  [
@@ -16870,6 +16968,7 @@ var PROTOTYPE_POLLUTION_KEYS = /* @__PURE__ */ new Set([
16870
16968
  var CLIENT_ID_HEADER = "x-qwen-client-id";
16871
16969
  var MAX_CLIENT_ID_LENGTH = 128;
16872
16970
  var MAX_TOOL_NAME_LENGTH = 256;
16971
+ var MAX_SKILL_NAME_LENGTH = 256;
16873
16972
  var MAX_SERVER_NAME_LENGTH = 256;
16874
16973
  var CLIENT_ID_RE = /^[A-Za-z0-9._:-]+$/;
16875
16974
  var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
@@ -16972,7 +17071,8 @@ __name(validateMcpRuntimeServerName, "validateMcpRuntimeServerName");
16972
17071
  function parseAndValidateWorkspaceClientId(req, res, bridge) {
16973
17072
  const raw = parseClientIdHeader(req, res);
16974
17073
  if (raw === null || raw === void 0) return raw;
16975
- if (!bridge.knownClientIds().has(raw)) {
17074
+ const bridges = Array.isArray(bridge) ? bridge : [bridge];
17075
+ if (!bridges.some((candidate) => candidate.knownClientIds().has(raw))) {
16976
17076
  res.status(400).json({
16977
17077
  error: `Client id "${raw}" is not registered for this workspace`,
16978
17078
  code: "invalid_client_id",
@@ -17958,6 +18058,157 @@ function isBrowserAutomationMcpAvailable(opts, env) {
17958
18058
  }
17959
18059
  __name(isBrowserAutomationMcpAvailable, "isBrowserAutomationMcpAvailable");
17960
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
+
17961
18212
  export {
17962
18213
  require_express2 as require_express,
17963
18214
  sanitizeForStderr,
@@ -17988,6 +18239,7 @@ export {
17988
18239
  CLIENT_ID_HEADER,
17989
18240
  MAX_CLIENT_ID_LENGTH,
17990
18241
  MAX_TOOL_NAME_LENGTH,
18242
+ MAX_SKILL_NAME_LENGTH,
17991
18243
  MAX_SERVER_NAME_LENGTH,
17992
18244
  CLIENT_ID_RE,
17993
18245
  safeBody,
@@ -18013,7 +18265,10 @@ export {
18013
18265
  resolveAcpHttpEnabled,
18014
18266
  QWEN_CDP_MCP_COMMAND_ENV,
18015
18267
  resolveCdpMcpCommand,
18016
- isBrowserAutomationMcpAvailable
18268
+ isBrowserAutomationMcpAvailable,
18269
+ MAX_CONCURRENT_VOICE_SESSIONS,
18270
+ VoiceLeaseAbortError,
18271
+ WorkspaceVoiceCoordinator
18017
18272
  };
18018
18273
  /**
18019
18274
  * @license
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  parseRule
5
- } from "./chunk-SSFDPGFN.js";
5
+ } from "./chunk-K7CRWKOE.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -33,10 +33,36 @@ var WorkspacePermissionRulesSessionRequiredError = class extends Error {
33
33
  this.name = "WorkspacePermissionRulesSessionRequiredError";
34
34
  }
35
35
  };
36
+ var WorkspaceSkillNotFoundError = class extends Error {
37
+ constructor(skillName) {
38
+ super(`Skill not found: ${skillName}`);
39
+ this.skillName = skillName;
40
+ this.name = "WorkspaceSkillNotFoundError";
41
+ }
42
+ static {
43
+ __name(this, "WorkspaceSkillNotFoundError");
44
+ }
45
+ };
46
+ var WorkspaceSkillNotToggleableError = class extends Error {
47
+ constructor(skillName, reason, lockedScope) {
48
+ super(
49
+ lockedScope ? `Skill ${skillName} is locked by ${lockedScope} settings` : `Skill ${skillName} is not toggleable: ${reason}`
50
+ );
51
+ this.skillName = skillName;
52
+ this.reason = reason;
53
+ this.lockedScope = lockedScope;
54
+ this.name = "WorkspaceSkillNotToggleableError";
55
+ }
56
+ static {
57
+ __name(this, "WorkspaceSkillNotToggleableError");
58
+ }
59
+ };
36
60
 
37
61
  export {
38
62
  WorkspaceSettingsPartialPersistError,
39
- WorkspacePermissionRulesSessionRequiredError
63
+ WorkspacePermissionRulesSessionRequiredError,
64
+ WorkspaceSkillNotFoundError,
65
+ WorkspaceSkillNotToggleableError
40
66
  };
41
67
  /**
42
68
  * @license