@qwen-code/qwen-code 0.19.7-nightly.20260708.394c1a289 → 0.19.8

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 (228) hide show
  1. package/bundled/qc-helper/docs/features/channels/overview.md +6 -3
  2. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
  3. package/bundled/qc-helper/docs/features/hooks.md +36 -34
  4. package/bundled/qc-helper/docs/features/memory.md +1 -1
  5. package/bundled/qc-helper/docs/qwen-serve.md +17 -10
  6. package/bundled/review/SKILL.md +6 -2
  7. package/chunks/{MaxSizedBox-XS37LWTD.js → MaxSizedBox-5DT2SD7B.js} +7 -7
  8. package/chunks/{StandaloneSessionPicker-LPALJTKN.js → StandaloneSessionPicker-EYRGH6PJ.js} +23 -21
  9. package/chunks/{acpAgent-4VE3FGJX.js → acpAgent-GRFTTRHW.js} +74 -69
  10. package/chunks/{agent-CCHERW6L.js → agent-H2DGKS77.js} +4 -4
  11. package/chunks/{agent-headless-55N6UBUU.js → agent-headless-KFMFIT6J.js} +4 -4
  12. package/chunks/{anthropicContentGenerator-AKYPSZIV.js → anthropicContentGenerator-CPF22MA7.js} +28 -1
  13. package/chunks/{bridge-U6HXOHE7.js → bridge-NA3ZQQKJ.js} +11 -10
  14. package/chunks/{ca-HCMB2I54.js → ca-MKD32FQL.js} +26 -1
  15. package/chunks/{channel-worker-supervisor-CRCVYQIE.js → channel-worker-supervisor-NZQUOEFJ.js} +3 -3
  16. package/chunks/{chunk-J43WPR6U.js → chunk-27BHARDE.js} +8 -8
  17. package/chunks/{chunk-KKWO4IX2.js → chunk-2EM7ECZD.js} +251 -71
  18. package/chunks/{chunk-E7HM76PR.js → chunk-3GNOQZDC.js} +1562 -1025
  19. package/chunks/{chunk-G7ZG7CA6.js → chunk-3UP777ZS.js} +8 -7
  20. package/chunks/{chunk-VEB3NYSO.js → chunk-5MBO76SL.js} +5 -0
  21. package/chunks/{chunk-N74BA4VP.js → chunk-6VK6FIMQ.js} +1 -1
  22. package/chunks/{chunk-2FHWCKWA.js → chunk-A5JOJ77H.js} +35 -14
  23. package/chunks/{chunk-PLGONYEL.js → chunk-AYNCLGTW.js} +5 -5
  24. package/chunks/{chunk-K34DD7FH.js → chunk-BOBOCR5H.js} +4 -3
  25. package/chunks/chunk-BOBRZZKD.js +468 -0
  26. package/chunks/{chunk-7I4MGFBN.js → chunk-BUZ6HGL4.js} +5 -5
  27. package/chunks/{chunk-FK77ILF5.js → chunk-BVYU3ZTI.js} +2 -2
  28. package/chunks/{chunk-TBAZMRW3.js → chunk-CD6USWHZ.js} +1 -1
  29. package/chunks/{chunk-PVXPDMGP.js → chunk-CHB5SLZZ.js} +2 -2
  30. package/chunks/{chunk-SJHAUELE.js → chunk-DCZWC4PF.js} +2 -2
  31. package/chunks/{chunk-YYU6H66M.js → chunk-DHOLNQLC.js} +11 -11
  32. package/chunks/{chunk-MOQOAH7N.js → chunk-DICGXFAI.js} +1 -1
  33. package/chunks/{chunk-KT3SI3CQ.js → chunk-DIWVZ3VM.js} +8 -8
  34. package/chunks/{chunk-2DYY5XUZ.js → chunk-E7EMCSUG.js} +1 -1
  35. package/chunks/{chunk-XQ2GVLNJ.js → chunk-EEN2TKST.js} +1 -1
  36. package/chunks/{chunk-DNV4FSN5.js → chunk-FBET5XZ2.js} +6 -4
  37. package/chunks/{chunk-GIY6JTTC.js → chunk-FQNC62B2.js} +4 -4
  38. package/chunks/{chunk-B34OV7K2.js → chunk-GGQQA4JW.js} +13 -0
  39. package/chunks/chunk-GLE2YUPU.js +34 -0
  40. package/chunks/{chunk-X265R5C6.js → chunk-GN3F6PIU.js} +1 -1
  41. package/chunks/{chunk-LC4SMGYY.js → chunk-GSHQYYIV.js} +45 -9
  42. package/chunks/{chunk-BGL43SJ3.js → chunk-HDOH3QYE.js} +1 -1
  43. package/chunks/{chunk-4AFOWB47.js → chunk-I6WGFJJ3.js} +63 -4
  44. package/chunks/{chunk-2NPS2UDH.js → chunk-IBY3Q3HG.js} +390 -9
  45. package/chunks/{chunk-AXTPFMRS.js → chunk-J7RCB6N5.js} +1 -1
  46. package/chunks/{chunk-QCSLZO6J.js → chunk-JCH35JB3.js} +1 -1
  47. package/chunks/{chunk-JYOWO2F7.js → chunk-JPALE3PA.js} +3 -3
  48. package/chunks/{chunk-5FL2K3ZB.js → chunk-JRQ7EVGE.js} +1 -1
  49. package/chunks/{chunk-BHRU4SDF.js → chunk-JZHIQJOE.js} +3 -3
  50. package/chunks/{chunk-FB2ULV4M.js → chunk-L46XKEGM.js} +14 -153
  51. package/chunks/{chunk-LKXDC3AW.js → chunk-L4AMBVQG.js} +9 -9
  52. package/chunks/{chunk-ME344634.js → chunk-LAXNEOBG.js} +1 -1
  53. package/chunks/{chunk-QHT5USLK.js → chunk-M7S4GK5Z.js} +66 -445
  54. package/chunks/{chunk-4RQIB5UZ.js → chunk-O2YT7VB4.js} +0 -34
  55. package/chunks/{chunk-TBLJNMI7.js → chunk-O33TBKDC.js} +10 -10
  56. package/chunks/chunk-O7FIRWJV.js +168 -0
  57. package/chunks/{chunk-4KJ2BPIT.js → chunk-OACJLMLD.js} +2 -38
  58. package/chunks/{chunk-CR5IU2RX.js → chunk-ON3JA3RU.js} +2 -2
  59. package/chunks/{chunk-VTCPREC7.js → chunk-OQXDAMKY.js} +3 -3
  60. package/chunks/{chunk-ELMPRVCB.js → chunk-P3XEEI3X.js} +1 -1
  61. package/chunks/{chunk-OU6FPTJZ.js → chunk-PMFULMLX.js} +296 -81
  62. package/chunks/{chunk-2YELHTUE.js → chunk-PUVCVELY.js} +1 -1
  63. package/chunks/{chunk-5OSSOBZC.js → chunk-RMLZAUWH.js} +4 -4
  64. package/chunks/{chunk-B6WUEODT.js → chunk-SQ2UATK7.js} +14 -8
  65. package/chunks/{chunk-TEYGKLIZ.js → chunk-TI3BWD4D.js} +1 -1
  66. package/chunks/{chunk-T2EJHSE3.js → chunk-TSPB77TG.js} +57 -35
  67. package/chunks/{chunk-L7IWK7JY.js → chunk-UX6OTBVD.js} +1 -1
  68. package/chunks/{chunk-XUSONNJ4.js → chunk-UXEW557D.js} +1 -1
  69. package/chunks/chunk-V35MD7KN.js +13 -0
  70. package/chunks/{chunk-B5FOCTEZ.js → chunk-VGGOPZUL.js} +6 -5
  71. package/chunks/{chunk-MYZWWRVW.js → chunk-WF4FAXDL.js} +2 -2
  72. package/chunks/{chunk-2SWMCXVR.js → chunk-WHJQ3JUS.js} +20 -8
  73. package/chunks/{chunk-VQJ64BIQ.js → chunk-WQTHLB5T.js} +3 -3
  74. package/chunks/chunk-XNXVCNAT.js +88 -0
  75. package/chunks/{chunk-TDGF35EN.js → chunk-XOHNA2S6.js} +1 -1
  76. package/chunks/{chunk-ZK5EI6NR.js → chunk-XYR5RUA5.js} +14 -5
  77. package/chunks/{chunk-YMWIKAEE.js → chunk-YDOXPLYL.js} +244 -47
  78. package/chunks/{chunk-UZCT5OLN.js → chunk-YHKAK72D.js} +11 -11
  79. package/chunks/{chunk-RFIL6REB.js → chunk-YKZIAK7C.js} +119 -29
  80. package/chunks/chunk-Z3I3QJK3.js +47 -0
  81. package/chunks/{chunk-3QDZDAJG.js → chunk-ZE6E424U.js} +1 -1
  82. package/chunks/chunk-ZL5HN75Q.js +61 -0
  83. package/chunks/{computer-use-4CTF6WS3.js → computer-use-WMY3UOBX.js} +4 -4
  84. package/chunks/{contextCommand-Z3XWQCY6.js → contextCommand-LXFZRP4L.js} +6 -6
  85. package/chunks/{daemon-F3I2RXP6.js → daemon-WPAENEBW.js} +48 -0
  86. package/chunks/{daemon-status-provider-6A4QCG6Q.js → daemon-status-provider-GJRXY5EN.js} +15 -13
  87. package/chunks/{de-PLLFDERI.js → de-ZFPPQVSF.js} +26 -1
  88. package/chunks/{dist-IMFFBMAT.js → dist-BEXOZXLQ.js} +1 -1
  89. package/chunks/{dist-OT7G2WNM.js → dist-E6UANPIM.js} +1 -1
  90. package/chunks/{dist-FQ5WRJPL.js → dist-H2AEJCZ5.js} +2 -2
  91. package/chunks/{dist-YTRKAVUB.js → dist-O2IRTRPP.js} +1 -1
  92. package/chunks/{dist-573HNSVO.js → dist-SCFLLYMK.js} +1 -1
  93. package/chunks/{dist-PKFTNUHO.js → dist-Z34QPAQW.js} +1 -1
  94. package/chunks/{earlyInputCapture-7O47HW62.js → earlyInputCapture-KNOYZ4MJ.js} +4 -4
  95. package/chunks/{edit-E32KWLF2.js → edit-OTYWAXGP.js} +5 -5
  96. package/chunks/{en-GA2RMXY5.js → en-N4EPZAQI.js} +26 -1
  97. package/chunks/{enter-worktree-ZKFFMHUD.js → enter-worktree-HNYBDVCX.js} +4 -4
  98. package/chunks/{enterPlanMode-HLDC6NGX.js → enterPlanMode-CJCNGT63.js} +4 -4
  99. package/chunks/environment-ATFTYMLZ.js +88 -0
  100. package/chunks/{errors-MTIDDXX7.js → errors-A54HAADA.js} +6 -6
  101. package/chunks/{exit-worktree-YHY72XA2.js → exit-worktree-DUUKOE3X.js} +4 -4
  102. package/chunks/{exitPlanMode-JNXKBZ2C.js → exitPlanMode-AMMSXOAJ.js} +4 -4
  103. package/chunks/{fast-path-DVAGBROV.js → fast-path-OV6NIP3K.js} +12 -3
  104. package/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-7RIFI3PK.js} +3 -2
  105. package/chunks/{fr-GWNQG4XH.js → fr-5WWMY53B.js} +26 -1
  106. package/chunks/{gemini-2TMHJVRC.js → gemini-NQ3WWBKB.js} +431 -135
  107. package/chunks/{geminiContentGenerator-WCH4GWD3.js → geminiContentGenerator-CDUNEJQE.js} +1 -1
  108. package/chunks/{glob-I6Y4AGKO.js → glob-ROV3YS4R.js} +4 -4
  109. package/chunks/{grep-3P2J3LU5.js → grep-NRITKDCD.js} +4 -4
  110. package/chunks/{handleAutoUpdate-4IVRMRG4.js → handleAutoUpdate-CEZJAARW.js} +6 -6
  111. package/chunks/{initializer-DVNCPVTC.js → initializer-BRFJKRRX.js} +11 -9
  112. package/chunks/{ja-2HOTA47X.js → ja-CUHZOLEJ.js} +26 -1
  113. package/chunks/{list-4D6QK2KZ.js → list-KVHF7O4X.js} +13 -11
  114. package/chunks/{loadedSettingsAdapter-GNGELH6Q.js → loadedSettingsAdapter-LL5PSFKX.js} +11 -9
  115. package/chunks/{ls-L654WOAT.js → ls-7MFU2QYW.js} +1 -1
  116. package/chunks/{lsp-M35KE54Y.js → lsp-XHDTPTGV.js} +2 -4
  117. package/chunks/{mcp-2IL72YJP.js → mcp-3GCXRTOQ.js} +11 -9
  118. package/chunks/{monitor-BLVCZAVX.js → monitor-FL2ZO33W.js} +4 -4
  119. package/chunks/{nonInteractiveCli-UD3V7UOO.js → nonInteractiveCli-PTQI3DV6.js} +44 -41
  120. package/chunks/{notebook-edit-5TVMWIWY.js → notebook-edit-6PULTHL5.js} +5 -5
  121. package/chunks/{openaiContentGenerator-5LJ5A7YY.js → openaiContentGenerator-YE42PKCY.js} +3 -3
  122. package/chunks/{pidfile-AN5JQJ2T.js → pidfile-NZYSCFRK.js} +4 -4
  123. package/chunks/{pt-2THT3YHA.js → pt-OLYN42DS.js} +26 -1
  124. package/chunks/{qwenContentGenerator-E2JSB4FJ.js → qwenContentGenerator-NX2E7PB7.js} +5 -5
  125. package/chunks/{read-file-N5DEFUDU.js → read-file-33XGP5HF.js} +2 -2
  126. package/chunks/{record-artifact-PP3LKHTS.js → record-artifact-SQ2OKRJW.js} +3 -3
  127. package/chunks/{ripGrep-BLJHTHKE.js → ripGrep-QWZLGTAN.js} +4 -4
  128. package/chunks/{ru-Z67YJHBG.js → ru-LDM3GWVQ.js} +26 -1
  129. package/chunks/{run-qwen-serve-4JDO64RN.js → run-qwen-serve-JK2DL7PI.js} +596 -143
  130. package/chunks/{scheduler-FQR4XA7J.js → scheduler-O4IGVZKK.js} +4 -4
  131. package/chunks/{send-message-OA6MV4EU.js → send-message-76GT3JMC.js} +1 -1
  132. package/chunks/{serve-ZOCFC7YM.js → serve-JTMIGANH.js} +13 -10
  133. package/chunks/{server-GEOYEPYT.js → server-SGNPKX2O.js} +667 -243
  134. package/chunks/{session-NJCONHGX.js → session-5BNM25EZ.js} +45 -42
  135. package/chunks/{settings-QBGGXANI.js → settings-3MI4XXP6.js} +20 -16
  136. package/chunks/{shell-2DVPSEKT.js → shell-YJKBE67T.js} +4 -4
  137. package/chunks/{skill-HIPXUHV7.js → skill-I22QK5XS.js} +2 -2
  138. package/chunks/{spawnChannel-3JYXY52G.js → spawnChannel-UNV6W4DU.js} +6 -6
  139. package/chunks/{src-NLEX4CUC.js → src-BBQSM46M.js} +8 -4
  140. package/chunks/{startInteractiveUI-TYGZIU27.js → startInteractiveUI-JII36UGN.js} +619 -288
  141. package/chunks/{task-create-RPFZNB4B.js → task-create-WCHTB435.js} +2 -2
  142. package/chunks/{task-update-5WUG5MVQ.js → task-update-XYWMHJGJ.js} +2 -2
  143. package/chunks/{team-create-MGX57SZJ.js → team-create-A7NUU5AQ.js} +4 -4
  144. package/chunks/{team-plan-approval-BO2N7J3E.js → team-plan-approval-TOQRJ2KI.js} +4 -4
  145. package/chunks/{theme-manager-WU7LOA64.js → theme-manager-WZ4RRMMB.js} +4 -4
  146. package/chunks/{tool-search-CLBKVEVK.js → tool-search-SZ4EFS2T.js} +3 -3
  147. package/chunks/total-session-admission-ULXJWXFV.js +72 -0
  148. package/chunks/{trustedFolders-GAQM2GHB.js → trustedFolders-LAZZPZ3D.js} +5 -5
  149. package/chunks/{updateCheck-RIK2YIQE.js → updateCheck-KONLM73X.js} +5 -5
  150. package/chunks/{validateNonInterActiveAuth-NS3GBIJZ.js → validateNonInterActiveAuth-MPKSRCXD.js} +41 -38
  151. package/chunks/{version-B3RSLP54.js → version-NO2XSNNP.js} +1 -1
  152. package/chunks/{workflow-7APPIGND.js → workflow-WO2H6NRI.js} +5 -5
  153. package/chunks/{workspace-providers-status-SC67GLMY.js → workspace-providers-status-3W7E7DFW.js} +14 -11
  154. package/chunks/workspace-registry-SXJZNN3O.js +74 -0
  155. package/chunks/{workspace-service-ZJHF22WA.js → workspace-service-CZRQZ4Q4.js} +17 -15
  156. package/chunks/{workspace-skills-status-NJEK6P6Y.js → workspace-skills-status-K7WFREPD.js} +12 -10
  157. package/chunks/{write-file-R6Z3VLRY.js → write-file-PX2Z7IBE.js} +5 -5
  158. package/chunks/{zh-7XVVRTDH.js → zh-J4F6QWQV.js} +26 -1
  159. package/chunks/{zh-TW-DPH554OG.js → zh-TW-XVDWOLSW.js} +26 -1
  160. package/cli.js +11 -11
  161. package/locales/ca.js +30 -0
  162. package/locales/de.js +30 -0
  163. package/locales/en.js +30 -0
  164. package/locales/fr.js +30 -0
  165. package/locales/ja.js +30 -0
  166. package/locales/pt.js +30 -0
  167. package/locales/ru.js +30 -0
  168. package/locales/zh-TW.js +30 -0
  169. package/locales/zh.js +30 -0
  170. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  171. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  172. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  173. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  174. package/package.json +3 -3
  175. package/web-shell/assets/{arc-C7hjaa7g.js → arc-BWyoJpY2.js} +1 -1
  176. package/web-shell/assets/{architectureDiagram-3BPJPVTR-pm9KtMZY.js → architectureDiagram-3BPJPVTR-BT0mGrz2.js} +1 -1
  177. package/web-shell/assets/{blockDiagram-GPEHLZMM-CApElKsU.js → blockDiagram-GPEHLZMM-BLgUWvyf.js} +1 -1
  178. package/web-shell/assets/{c4Diagram-AAUBKEIU-BeDe0-9N.js → c4Diagram-AAUBKEIU-DYx9M7oU.js} +1 -1
  179. package/web-shell/assets/channel-wmPUGHtg.js +1 -0
  180. package/web-shell/assets/{chunk-2J33WTMH-DJEkmLdl.js → chunk-2J33WTMH-CfMHWbuZ.js} +1 -1
  181. package/web-shell/assets/{chunk-4BX2VUAB-DXX8gdpe.js → chunk-4BX2VUAB-B1URoqEV.js} +1 -1
  182. package/web-shell/assets/{chunk-55IACEB6-DORmk1kQ.js → chunk-55IACEB6-DAIaM4QF.js} +1 -1
  183. package/web-shell/assets/{chunk-727SXJPM-DWmO4mCZ.js → chunk-727SXJPM-B2X34knw.js} +1 -1
  184. package/web-shell/assets/{chunk-AQP2D5EJ-C7LRaYw2.js → chunk-AQP2D5EJ-Cif-zLTQ.js} +1 -1
  185. package/web-shell/assets/{chunk-FMBD7UC4-CCdXgyC5.js → chunk-FMBD7UC4-H18WCXdY.js} +1 -1
  186. package/web-shell/assets/{chunk-ND2GUHAM-SyL_xvWc.js → chunk-ND2GUHAM-YFtetHi0.js} +1 -1
  187. package/web-shell/assets/{chunk-QZHKN3VN-BzOuCKxa.js → chunk-QZHKN3VN-By2hiH3r.js} +1 -1
  188. package/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +1 -0
  189. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +1 -0
  190. package/web-shell/assets/{cose-bilkent-S5V4N54A-BMPWyDKc.js → cose-bilkent-S5V4N54A-VrcnnLZu.js} +1 -1
  191. package/web-shell/assets/{dagre-BM42HDAG-B_GnPWik.js → dagre-BM42HDAG-CGo-IaVV.js} +1 -1
  192. package/web-shell/assets/{diagram-2AECGRRQ-fJqMc3S_.js → diagram-2AECGRRQ-Dl4QjzIB.js} +1 -1
  193. package/web-shell/assets/{diagram-5GNKFQAL-ximV3O9D.js → diagram-5GNKFQAL-qMLmsO0u.js} +1 -1
  194. package/web-shell/assets/{diagram-KO2AKTUF-2vVyjzqw.js → diagram-KO2AKTUF-CHlmuxPI.js} +1 -1
  195. package/web-shell/assets/{diagram-LMA3HP47-Dckcx1sT.js → diagram-LMA3HP47-BUwU3GwT.js} +1 -1
  196. package/web-shell/assets/{diagram-OG6HWLK6-BAVv47ga.js → diagram-OG6HWLK6-HEhwPDUM.js} +1 -1
  197. package/web-shell/assets/{erDiagram-TEJ5UH35-Bn3nf5J0.js → erDiagram-TEJ5UH35-1n0llBmM.js} +1 -1
  198. package/web-shell/assets/{flowDiagram-I6XJVG4X-BIbGF9JT.js → flowDiagram-I6XJVG4X-BN74uMnt.js} +1 -1
  199. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CDbhb3AH.js → ganttDiagram-6RSMTGT7-BoOq78i3.js} +1 -1
  200. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CbKG1a_w.js → gitGraphDiagram-PVQCEYII-CN8b00c8.js} +1 -1
  201. package/web-shell/assets/index-CNwoO1Cn.js +783 -0
  202. package/web-shell/assets/index-CWQ0z6kZ.css +5 -0
  203. package/web-shell/assets/{infoDiagram-5YYISTIA-DUFxTy8m.js → infoDiagram-5YYISTIA-CCurnIna.js} +1 -1
  204. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D69hrBG8.js → ishikawaDiagram-YF4QCWOH-AwuRqdUP.js} +1 -1
  205. package/web-shell/assets/{journeyDiagram-JHISSGLW-DsvEw51Y.js → journeyDiagram-JHISSGLW-B7IICk-E.js} +1 -1
  206. package/web-shell/assets/{kanban-definition-UN3LZRKU-lFFjZEYd.js → kanban-definition-UN3LZRKU-BYF0OKhx.js} +1 -1
  207. package/web-shell/assets/{linear-Bo5bWzvo.js → linear-GWWguGfD.js} +1 -1
  208. package/web-shell/assets/{mermaid.core-C_HKMJx5.js → mermaid.core-JqtkxvCl.js} +5 -5
  209. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DlV-NUTs.js → mindmap-definition-RKZ34NQL-B0MmHsZ6.js} +1 -1
  210. package/web-shell/assets/{pieDiagram-4H26LBE5-B2e6FH2a.js → pieDiagram-4H26LBE5-DhImUZLQ.js} +1 -1
  211. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D75kSk-b.js → quadrantDiagram-W4KKPZXB-DGeSC3DT.js} +1 -1
  212. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CQ6xakhM.js → requirementDiagram-4Y6WPE33-DkspY6Re.js} +1 -1
  213. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-J_XTKrcY.js → sankeyDiagram-5OEKKPKP-CaOofS2x.js} +1 -1
  214. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-D7jTcBtf.js → sequenceDiagram-3UESZ5HK-DFQ_kFnN.js} +1 -1
  215. package/web-shell/assets/{stateDiagram-AJRCARHV-CrlM_OT3.js → stateDiagram-AJRCARHV-D3snw0Tz.js} +1 -1
  216. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +1 -0
  217. package/web-shell/assets/{timeline-definition-PNZ67QCA-5oZi76Ef.js → timeline-definition-PNZ67QCA-l4zH8nLM.js} +1 -1
  218. package/web-shell/assets/{vennDiagram-CIIHVFJN-DO5YptPK.js → vennDiagram-CIIHVFJN-BnRlA98M.js} +1 -1
  219. package/web-shell/assets/{wardley-L42UT6IY-4t1eJDvM.js → wardley-L42UT6IY-BS0xUdmd.js} +1 -1
  220. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKZc661S.js → wardleyDiagram-YWT4CUSO-DKGBUWyQ.js} +1 -1
  221. package/web-shell/assets/{xychartDiagram-2RQKCTM6-su9hp08G.js → xychartDiagram-2RQKCTM6-DVb2HuOB.js} +1 -1
  222. package/web-shell/index.html +2 -2
  223. package/web-shell/assets/channel-BNf1dW-j.js +0 -1
  224. package/web-shell/assets/classDiagram-4FO5ZUOK-uOIGlzgi.js +0 -1
  225. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-uOIGlzgi.js +0 -1
  226. package/web-shell/assets/index-CnE2ur2L.js +0 -779
  227. package/web-shell/assets/index-hSKXrlSE.css +0 -5
  228. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Bs4TK_84.js +0 -1
@@ -1,16 +1,10 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import {
4
- relaunchApp
5
- } from "./chunk-AXTPFMRS.js";
6
- import {
7
- MINIMUM_MAX_HEIGHT,
8
- MaxSizedBox
9
- } from "./chunk-CR5IU2RX.js";
10
3
  import {
11
4
  CODE_FENCE_RE,
12
5
  SHELL_COMMAND_NAME,
13
6
  SHELL_NAME,
7
+ TABLE_MAX_ROW_LINES,
14
8
  TABLE_ROW_RE,
15
9
  TABLE_SEPARATOR_RE,
16
10
  TOOL_STATUS,
@@ -22,7 +16,7 @@ import {
22
16
  getCommandSubcommandNames,
23
17
  splitMarkdownTableRow,
24
18
  useSessionStats
25
- } from "./chunk-LC4SMGYY.js";
19
+ } from "./chunk-GSHQYYIV.js";
26
20
  import {
27
21
  Colors,
28
22
  RowMouseController,
@@ -31,7 +25,7 @@ import {
31
25
  useMouseEvents,
32
26
  useSettings,
33
27
  useTerminalSize
34
- } from "./chunk-MYZWWRVW.js";
28
+ } from "./chunk-WF4FAXDL.js";
35
29
  import {
36
30
  buildResumedHistoryItems,
37
31
  calculateAverageLatency,
@@ -44,7 +38,14 @@ import {
44
38
  levelLabel,
45
39
  useKeypress,
46
40
  wrapForMultiplexer
47
- } from "./chunk-J43WPR6U.js";
41
+ } from "./chunk-27BHARDE.js";
42
+ import {
43
+ relaunchApp
44
+ } from "./chunk-J7RCB6N5.js";
45
+ import {
46
+ MINIMUM_MAX_HEIGHT,
47
+ MaxSizedBox
48
+ } from "./chunk-ON3JA3RU.js";
48
49
  import {
49
50
  theme
50
51
  } from "./chunk-IFEWJXFS.js";
@@ -56,7 +57,7 @@ import {
56
57
  require_jsx_runtime,
57
58
  use_is_screen_reader_enabled_default,
58
59
  use_stdin_default
59
- } from "./chunk-ELMPRVCB.js";
60
+ } from "./chunk-P3XEEI3X.js";
60
61
  import {
61
62
  isTerminalGoalStatusKind
62
63
  } from "./chunk-SAIILPQ3.js";
@@ -67,10 +68,6 @@ import {
67
68
  resolveColor,
68
69
  themeManager
69
70
  } from "./chunk-PC4ZXHU2.js";
70
- import {
71
- require_has_flag,
72
- require_source
73
- } from "./chunk-3GONHQOA.js";
74
71
  import {
75
72
  cpLen,
76
73
  cpSlice,
@@ -81,10 +78,14 @@ import {
81
78
  stripUnsafeCharacters,
82
79
  toCodePoints,
83
80
  wrapToVisualLines
84
- } from "./chunk-ZK5EI6NR.js";
81
+ } from "./chunk-XYR5RUA5.js";
85
82
  import {
86
83
  eastAsianWidth
87
84
  } from "./chunk-LGFAYIKX.js";
85
+ import {
86
+ require_has_flag,
87
+ require_source
88
+ } from "./chunk-3GONHQOA.js";
88
89
  import {
89
90
  formatDuration,
90
91
  formatMemoryUsage,
@@ -93,18 +94,18 @@ import {
93
94
  } from "./chunk-KHDZHZMH.js";
94
95
  import {
95
96
  createLoadedSettingsAdapter
96
- } from "./chunk-L7IWK7JY.js";
97
+ } from "./chunk-UX6OTBVD.js";
97
98
  import {
98
99
  getPersistScopeForModelSelection
99
- } from "./chunk-QHT5USLK.js";
100
+ } from "./chunk-M7S4GK5Z.js";
100
101
  import {
101
102
  getCurrentLanguage,
102
103
  localizeToolDisplayName,
103
104
  t
104
- } from "./chunk-TBLJNMI7.js";
105
+ } from "./chunk-O33TBKDC.js";
105
106
  import {
106
107
  isWorkspaceTrusted
107
- } from "./chunk-MOQOAH7N.js";
108
+ } from "./chunk-DICGXFAI.js";
108
109
  import {
109
110
  ALL_PROVIDERS,
110
111
  IdeClient,
@@ -125,11 +126,11 @@ import {
125
126
  resolveMetadataKey,
126
127
  resolveOwnsModel,
127
128
  stripAnsi
128
- } from "./chunk-E7HM76PR.js";
129
+ } from "./chunk-3GNOQZDC.js";
129
130
  import {
130
131
  MAIN_SOURCE,
131
132
  getMCPServerStatus
132
- } from "./chunk-7I4MGFBN.js";
133
+ } from "./chunk-BUZ6HGL4.js";
133
134
  import {
134
135
  ToolDisplayNames,
135
136
  ToolNames,
@@ -5260,7 +5261,6 @@ __name(labelMayDeceive, "labelMayDeceive");
5260
5261
  // packages/cli/src/ui/utils/TableRenderer.tsx
5261
5262
  var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
5262
5263
  var MIN_COLUMN_WIDTH = 3;
5263
- var MAX_ROW_LINES = 4;
5264
5264
  var ABSOLUTE_MIN_HORIZONTAL_TABLE_WIDTH = 24;
5265
5265
  var SAFETY_MARGIN = 4;
5266
5266
  var INLINE_MATH_MAX_CHARS = 1024;
@@ -5614,7 +5614,7 @@ var TableRenderer = /* @__PURE__ */ __name(({
5614
5614
  ABSOLUTE_MIN_HORIZONTAL_TABLE_WIDTH,
5615
5615
  colCount * MIN_COLUMN_WIDTH + borderOverhead + SAFETY_MARGIN
5616
5616
  );
5617
- const useVerticalFormat = rowMetrics.length > 0 && (contentWidth < minHorizontalTableWidth || maxRowLines > MAX_ROW_LINES);
5617
+ const useVerticalFormat = rowMetrics.length > 0 && (contentWidth < minHorizontalTableWidth || maxRowLines > TABLE_MAX_ROW_LINES);
5618
5618
  const getAlign = /* @__PURE__ */ __name((colIndex) => aligns?.[colIndex] ?? "left", "getAlign");
5619
5619
  function renderBorderLine(type) {
5620
5620
  const [left, mid, cross, right] = {
@@ -8192,12 +8192,16 @@ var MarkdownDisplayInternal = /* @__PURE__ */ __name(({
8192
8192
  return cols === headerCells;
8193
8193
  });
8194
8194
  const lineAfterHeader = rest[0];
8195
- let couldStillBeTable = lineAfterHeader === void 0 || tableSeparatorRegex.test(lineAfterHeader);
8195
+ const separatorIsTrailing = rest.length === 1;
8196
+ const looksLikeSeparatorPrefix = lineAfterHeader !== void 0 && lineAfterHeader.includes("|") && /^[\s|:-]*$/.test(lineAfterHeader);
8197
+ let couldStillBeTable = lineAfterHeader === void 0 || tableSeparatorRegex.test(lineAfterHeader) || separatorIsTrailing && looksLikeSeparatorPrefix;
8196
8198
  if (couldStillBeTable && lineAfterHeader !== void 0 && /\|\s*$/.test(lineAfterHeader)) {
8197
8199
  const sepCols = splitMarkdownTableRow(lineAfterHeader).filter(
8198
8200
  (c) => c.length > 0
8199
8201
  ).length;
8200
- if (sepCols !== headerCells) couldStillBeTable = false;
8202
+ if (sepCols !== headerCells && (sepCols > headerCells || !separatorIsTrailing)) {
8203
+ couldStillBeTable = false;
8204
+ }
8201
8205
  }
8202
8206
  if (!hasMatchingSeparator && couldStillBeTable) {
8203
8207
  lines = lines.slice(0, start);
@@ -14221,25 +14225,43 @@ function isCollapsibleTool(toolName) {
14221
14225
  return COLLAPSIBLE_CATEGORIES.has(getToolCategory(toolName));
14222
14226
  }
14223
14227
  __name(isCollapsibleTool, "isCollapsibleTool");
14228
+ function safeDescription(raw) {
14229
+ if (!raw) return void 0;
14230
+ const stripped = raw.replace(
14231
+ /\x1b\][^\x07]*\x07|\x1b[()][A-Z0-9]|\x1b\[[0-9;]*[a-zA-Z]|\x1b./g,
14232
+ ""
14233
+ );
14234
+ const cleaned = stripped.replace(/[\x00-\x1f\x7f]/g, " ").trim();
14235
+ if (cleaned.startsWith("{") || cleaned.startsWith("[")) return void 0;
14236
+ return cleaned || void 0;
14237
+ }
14238
+ __name(safeDescription, "safeDescription");
14224
14239
  function buildToolSummary(toolCalls, isActive) {
14225
14240
  if (toolCalls.length === 0) return "";
14226
- const counts = /* @__PURE__ */ new Map();
14241
+ const toolsByCategory = /* @__PURE__ */ new Map();
14227
14242
  for (const tool of toolCalls) {
14228
14243
  const cat = getToolCategory(tool.name);
14229
- counts.set(cat, (counts.get(cat) ?? 0) + 1);
14244
+ const arr = toolsByCategory.get(cat) ?? [];
14245
+ arr.push(tool);
14246
+ toolsByCategory.set(cat, arr);
14230
14247
  }
14231
14248
  const parts = [];
14232
14249
  for (const cat of CATEGORY_ORDER) {
14233
- const count = counts.get(cat);
14234
- if (!count) continue;
14250
+ const tools = toolsByCategory.get(cat);
14251
+ if (!tools || tools.length === 0) continue;
14235
14252
  const template = CATEGORY_TEMPLATES[cat];
14236
14253
  const verb = isActive ? template.activeVerb : template.pastVerb;
14237
14254
  const lower = parts.length > 0;
14238
14255
  const v = lower ? verb.toLowerCase() : verb;
14239
- if (count === 1) {
14240
- parts.push(`${v} 1 ${template.singular}`);
14256
+ if (tools.length === 1) {
14257
+ const safeDesc = safeDescription(tools[0].description);
14258
+ if (safeDesc !== void 0) {
14259
+ parts.push(`${v} ${safeDesc}`);
14260
+ } else {
14261
+ parts.push(`${v} 1 ${template.singular}`);
14262
+ }
14241
14263
  } else {
14242
- parts.push(`${v} ${count} ${template.plural}`);
14264
+ parts.push(`${v} ${tools.length} ${template.plural}`);
14243
14265
  }
14244
14266
  }
14245
14267
  return parts.join(", ");
@@ -14462,12 +14484,12 @@ var SubagentScrollbackSummary = /* @__PURE__ */ __name(({ data }) => {
14462
14484
  }
14463
14485
  const tail = parts.length > 0 ? ` \xB7 ${parts.join(" \xB7 ")}` : "";
14464
14486
  const typePrefix = data.subagentName ? `${escapeAnsiCtrlCodes(data.subagentName)}: ` : "";
14465
- const safeDescription = escapeAnsiCtrlCodes(data.taskDescription ?? "");
14487
+ const safeDescription2 = escapeAnsiCtrlCodes(data.taskDescription ?? "");
14466
14488
  const reason = data.status !== "completed" && data.terminateReason ? ` \xB7 ${escapeAnsiCtrlCodes(data.terminateReason)}` : "";
14467
14489
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Box_default, { paddingLeft: 1, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Text, { wrap: "truncate-end", children: [
14468
14490
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text, { color, children: `${glyph} ` }),
14469
14491
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text, { bold: true, children: typePrefix }),
14470
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text, { color: theme.text.secondary, children: safeDescription }),
14492
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text, { color: theme.text.secondary, children: safeDescription2 }),
14471
14493
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text, { color: theme.text.secondary, children: tail }),
14472
14494
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text, { color: theme.text.secondary, children: reason })
14473
14495
  ] }) });
@@ -6,7 +6,7 @@ import {
6
6
  getNestedProperty,
7
7
  getPersistScopeForModelSelection,
8
8
  restoreSettingsFromBackup
9
- } from "./chunk-QHT5USLK.js";
9
+ } from "./chunk-M7S4GK5Z.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-A4BMJM77.js";
@@ -14,7 +14,7 @@ import {
14
14
  init_esbuild_shims();
15
15
  async function getCliVersion() {
16
16
  const pkgJson = await getPackageJson();
17
- return "0.19.7-nightly.20260708.394c1a289";
17
+ return "0.19.8";
18
18
  }
19
19
  __name(getCliVersion, "getCliVersion");
20
20
 
@@ -0,0 +1,13 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-A4BMJM77.js";
6
+
7
+ // packages/cli/src/serve/acp-session-bridge.ts
8
+ init_esbuild_shims();
9
+ /**
10
+ * @license
11
+ * Copyright 2025 Qwen Team
12
+ * SPDX-License-Identifier: Apache-2.0
13
+ */
@@ -5,7 +5,7 @@ import {
5
5
  isTranscribableVoiceModel,
6
6
  readVoiceLanguage,
7
7
  resolveVoiceTransport
8
- } from "./chunk-3QDZDAJG.js";
8
+ } from "./chunk-ZE6E424U.js";
9
9
  import {
10
10
  resolvePath
11
11
  } from "./chunk-E7KNELIZ.js";
@@ -368,12 +368,12 @@ async function assertVoiceBaseUrlNetworkAllowed(voiceConfig, lookupHost) {
368
368
  }
369
369
  }
370
370
  __name(assertVoiceBaseUrlNetworkAllowed, "assertVoiceBaseUrlNetworkAllowed");
371
- function readApiKey(settings, model, baseUrl) {
371
+ function readApiKey(settings, model, baseUrl, env) {
372
372
  if (!model.envKey && !isQwenBaseUrl(baseUrl)) {
373
373
  return void 0;
374
374
  }
375
375
  const envKey = model.envKey ?? DEFAULT_OPENAI_API_KEY;
376
- const envValue = process.env[envKey];
376
+ const envValue = (env ?? process.env)[envKey];
377
377
  if (envValue && envValue.trim().length > 0) {
378
378
  return envValue.trim();
379
379
  }
@@ -391,7 +391,8 @@ __name(readApiKey, "readApiKey");
391
391
  function resolveVoiceTranscriptionConfig({
392
392
  config,
393
393
  settings,
394
- voiceModel
394
+ voiceModel,
395
+ env
395
396
  }) {
396
397
  const matches = config.getAllConfiguredModels().filter((model2) => model2.id === voiceModel);
397
398
  if (matches.length === 0) {
@@ -423,7 +424,7 @@ function resolveVoiceTranscriptionConfig({
423
424
  `Voice model '${voiceModel}' must not use a private-network baseUrl.`
424
425
  );
425
426
  }
426
- const apiKey = readApiKey(settings, model, normalizedBaseUrl);
427
+ const apiKey = readApiKey(settings, model, normalizedBaseUrl, env);
427
428
  if (model.envKey && !apiKey) {
428
429
  throw new Error(`Voice model '${voiceModel}' requires ${model.envKey}.`);
429
430
  }
@@ -4,11 +4,11 @@ import {
4
4
  disableMouseEvents,
5
5
  enableMouseEvents,
6
6
  useKeypressContext
7
- } from "./chunk-J43WPR6U.js";
7
+ } from "./chunk-27BHARDE.js";
8
8
  import {
9
9
  use_stdin_default,
10
10
  use_stdout_default
11
- } from "./chunk-ELMPRVCB.js";
11
+ } from "./chunk-P3XEEI3X.js";
12
12
  import {
13
13
  require_react
14
14
  } from "./chunk-KYMBIKIW.js";
@@ -3,22 +3,25 @@
3
3
  import {
4
4
  HEADLESS_YOLO_NO_SANDBOX_WARNING
5
5
  } from "./chunk-BJBWRCSK.js";
6
+ import {
7
+ DEFAULT_RING_SIZE
8
+ } from "./chunk-3UP777ZS.js";
9
+ import {
10
+ DEFAULT_COMPACTED_REPLAY_MAX_BYTES
11
+ } from "./chunk-GLE2YUPU.js";
6
12
  import {
7
13
  normalizeServeChannelSelection
8
14
  } from "./chunk-MX2YXRER.js";
9
15
  import {
10
16
  loadSettings
11
- } from "./chunk-QHT5USLK.js";
12
- import {
13
- DEFAULT_RING_SIZE
14
- } from "./chunk-G7ZG7CA6.js";
17
+ } from "./chunk-M7S4GK5Z.js";
15
18
  import {
16
19
  writeStderrLine
17
20
  } from "./chunk-Y6Z2O3WR.js";
18
21
  import {
19
22
  MCP_BUDGET_WARN_FRACTION,
20
23
  parsePositiveIntegerEnv
21
- } from "./chunk-E7HM76PR.js";
24
+ } from "./chunk-3GNOQZDC.js";
22
25
  import {
23
26
  openBrowserSecurely,
24
27
  shouldLaunchBrowser
@@ -88,6 +91,9 @@ var serveCommand = {
88
91
  type: "number",
89
92
  default: 20,
90
93
  description: "Cap on concurrent live sessions. New spawn requests beyond this return 503; attach to existing sessions still works. Set to 0 to disable."
94
+ }).option("max-total-sessions", {
95
+ type: "number",
96
+ description: "Non-negative integer cap on concurrent live sessions across all workspace runtimes. Set to 0 to disable."
91
97
  }).option("max-pending-prompts-per-session", {
92
98
  type: "number",
93
99
  default: 5,
@@ -96,7 +102,7 @@ var serveCommand = {
96
102
  type: "string",
97
103
  array: true,
98
104
  requiresArg: true,
99
- description: "Absolute workspace path this daemon binds to. POST /session requests with a mismatched cwd return 400 workspace_mismatch. Defaults to process.cwd() when omitted. For multi-workspace deployments, run one `qwen serve` per workspace on separate ports (or behind an external orchestrator)."
105
+ description: "Absolute workspace path this daemon binds to. POST /session requests with a mismatched cwd return 400 workspace_mismatch. Defaults to process.cwd() when omitted. Repeat for sessions-only multi-workspace mode; legacy workspace APIs remain primary-workspace only."
100
106
  }).option("max-connections", {
101
107
  type: "number",
102
108
  default: 256,
@@ -139,10 +145,14 @@ var serveCommand = {
139
145
  // one place rather than drifting between CLI and bus.
140
146
  default: DEFAULT_RING_SIZE,
141
147
  description: "Per-session SSE replay ring depth. Sets the replay backlog available to `GET /session/:id/events` reconnects that send a `Last-Event-ID: N` header. Larger = more reconnect headroom at the cost of a few hundred KB extra RAM per session. Must be a positive finite integer."
148
+ }).option("compacted-replay-max-bytes", {
149
+ type: "number",
150
+ default: DEFAULT_COMPACTED_REPLAY_MAX_BYTES,
151
+ description: "Per-session in-memory compacted replay snapshot byte cap for `POST /session/:id/load` late attaches. Larger = more recent history in load snapshots at higher heap cost. Must be a positive safe integer no larger than 256 MiB."
142
152
  }).option("http-bridge", {
143
153
  type: "boolean",
144
154
  default: true,
145
- description: "Stage 1 mode: one `qwen --acp` child per daemon (the daemon binds to one workspace at boot, multiplexing N sessions onto that child via the agent's native `newSession()`). Stage 2 native in-process mode is not yet implemented; this flag will become opt-in then."
155
+ description: "HTTP bridge mode: one `qwen --acp` child per registered workspace (sessions-only multi-workspace routing is enabled when multiple --workspace values are supplied). Stage 2 native in-process mode is not yet implemented; this flag will become opt-in then."
146
156
  }).option("mcp-client-budget", {
147
157
  type: "number",
148
158
  description: "Cap on live MCP clients spawned inside the ACP child for the bound workspace. Positive integer. Combine with --mcp-budget-mode to control behavior at the cap. When unset, mode defaults to off (no accounting-driven enforcement, but GET /workspace/mcp still reports `clientCount`). Distinct from claude-code MCP_SERVER_CONNECTION_BATCH_SIZE which gates startup concurrency, not the total client count."
@@ -287,7 +297,7 @@ var serveCommand = {
287
297
  process.exit(1);
288
298
  }
289
299
  }
290
- const { runQwenServe } = await import("./run-qwen-serve-4JDO64RN.js");
300
+ const { runQwenServe } = await import("./run-qwen-serve-JK2DL7PI.js");
291
301
  try {
292
302
  const handle = await runQwenServe({
293
303
  port: argv.port,
@@ -295,9 +305,11 @@ var serveCommand = {
295
305
  token: argv.token,
296
306
  mode: "http-bridge",
297
307
  maxSessions: argv["max-sessions"],
308
+ ...argv["max-total-sessions"] !== void 0 ? { maxTotalSessions: argv["max-total-sessions"] } : {},
298
309
  maxPendingPromptsPerSession,
299
310
  maxConnections: argv["max-connections"],
300
311
  eventRingSize: argv["event-ring-size"],
312
+ compactedReplayMaxBytes: argv["compacted-replay-max-bytes"],
301
313
  workspace: argv.workspace,
302
314
  requireAuth: argv["require-auth"],
303
315
  enableSessionShell: argv["enable-session-shell"],
@@ -2,18 +2,18 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-TBLJNMI7.js";
5
+ } from "./chunk-O33TBKDC.js";
6
6
  import {
7
7
  computeThresholds,
8
8
  getCoreSystemPrompt
9
- } from "./chunk-E7HM76PR.js";
9
+ } from "./chunk-3GNOQZDC.js";
10
10
  import {
11
11
  buildSkillLlmContent
12
12
  } from "./chunk-NQKLOAVJ.js";
13
13
  import {
14
14
  DiscoveredMCPTool,
15
15
  uiTelemetryService
16
- } from "./chunk-7I4MGFBN.js";
16
+ } from "./chunk-BUZ6HGL4.js";
17
17
  import {
18
18
  ToolNames
19
19
  } from "./chunk-X3YGAX7V.js";
@@ -0,0 +1,88 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ SessionNotFoundError
5
+ } from "./chunk-GGQQA4JW.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-A4BMJM77.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/cli/src/serve/workspace-registry.ts
14
+ init_esbuild_shims();
15
+ function createWorkspaceRegistry(inputRuntimes) {
16
+ if (inputRuntimes.length === 0) {
17
+ throw new Error(
18
+ "WorkspaceRegistry requires at least one workspace runtime."
19
+ );
20
+ }
21
+ const primaryRuntimes = inputRuntimes.filter((runtime) => runtime.primary);
22
+ if (primaryRuntimes.length !== 1) {
23
+ throw new Error(
24
+ "WorkspaceRegistry requires exactly one primary workspace runtime."
25
+ );
26
+ }
27
+ const byCwd = /* @__PURE__ */ new Map();
28
+ const byId = /* @__PURE__ */ new Map();
29
+ for (const runtime of inputRuntimes) {
30
+ if (byCwd.has(runtime.workspaceCwd)) {
31
+ throw new Error(
32
+ `Duplicate workspace runtime cwd ${JSON.stringify(
33
+ runtime.workspaceCwd
34
+ )}.`
35
+ );
36
+ }
37
+ byCwd.set(runtime.workspaceCwd, runtime);
38
+ if (byId.has(runtime.workspaceId)) {
39
+ throw new Error(
40
+ `Duplicate workspace runtime id ${JSON.stringify(
41
+ runtime.workspaceId
42
+ )}.`
43
+ );
44
+ }
45
+ byId.set(runtime.workspaceId, runtime);
46
+ }
47
+ const runtimes = Object.freeze([...inputRuntimes]);
48
+ const primary = primaryRuntimes[0];
49
+ return {
50
+ primary,
51
+ list: /* @__PURE__ */ __name(() => runtimes, "list"),
52
+ getByWorkspaceCwd: /* @__PURE__ */ __name((workspaceCwd) => byCwd.get(workspaceCwd), "getByWorkspaceCwd"),
53
+ getByWorkspaceId: /* @__PURE__ */ __name((workspaceId) => byId.get(workspaceId), "getByWorkspaceId"),
54
+ resolveWorkspaceCwd: /* @__PURE__ */ __name((workspaceCwd) => workspaceCwd === void 0 ? primary : byCwd.get(workspaceCwd), "resolveWorkspaceCwd"),
55
+ resolveLiveSessionOwner: /* @__PURE__ */ __name((sessionId) => {
56
+ const matches = [];
57
+ for (const runtime of runtimes) {
58
+ try {
59
+ runtime.bridge.getSessionSummary(sessionId);
60
+ matches.push(runtime);
61
+ } catch (err) {
62
+ if (err instanceof SessionNotFoundError) continue;
63
+ throw err;
64
+ }
65
+ }
66
+ if (matches.length === 0) return { kind: "not_found" };
67
+ if (matches.length === 1) {
68
+ return { kind: "found", runtime: matches[0] };
69
+ }
70
+ return { kind: "ambiguous", runtimes: matches };
71
+ }, "resolveLiveSessionOwner")
72
+ };
73
+ }
74
+ __name(createWorkspaceRegistry, "createWorkspaceRegistry");
75
+ function createSingleWorkspaceRegistry(runtime) {
76
+ return createWorkspaceRegistry([runtime]);
77
+ }
78
+ __name(createSingleWorkspaceRegistry, "createSingleWorkspaceRegistry");
79
+
80
+ export {
81
+ createWorkspaceRegistry,
82
+ createSingleWorkspaceRegistry
83
+ };
84
+ /**
85
+ * @license
86
+ * Copyright 2026 Qwen Team
87
+ * SPDX-License-Identifier: Apache-2.0
88
+ */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  isTeamAutoMemPath
5
- } from "./chunk-4KJ2BPIT.js";
5
+ } from "./chunk-OACJLMLD.js";
6
6
  import {
7
7
  createDebugLogger
8
8
  } from "./chunk-22MNNNXE.js";
@@ -7,7 +7,7 @@ import {
7
7
  ansiRegex,
8
8
  init_ansi_regex,
9
9
  stripAnsi
10
- } from "./chunk-E7HM76PR.js";
10
+ } from "./chunk-3GNOQZDC.js";
11
11
  import {
12
12
  init_esbuild_shims
13
13
  } from "./chunk-A4BMJM77.js";
@@ -280,7 +280,8 @@ function sanitizeSensitiveText(text, maxLength = 200) {
280
280
  }
281
281
  __name(sanitizeSensitiveText, "sanitizeSensitiveText");
282
282
  var FILENAME_CONTROL_CHARS_REGEX = /[\x00-\x1f\x7f-\x9f]/g;
283
- function escapeFilenameControlChar(ch) {
283
+ var MULTILINE_CONTROL_CHARS_REGEX = /[\x00-\x08\x0b-\x1f\x7f-\x9f]/g;
284
+ function escapeControlChar(ch) {
284
285
  switch (ch) {
285
286
  case "\b":
286
287
  return "\\b";
@@ -298,14 +299,21 @@ function escapeFilenameControlChar(ch) {
298
299
  }
299
300
  }
300
301
  }
301
- __name(escapeFilenameControlChar, "escapeFilenameControlChar");
302
+ __name(escapeControlChar, "escapeControlChar");
302
303
  function sanitizeFilenameForDisplay(name) {
303
304
  return escapeAnsiCtrlCodes(name).replace(
304
305
  FILENAME_CONTROL_CHARS_REGEX,
305
- escapeFilenameControlChar
306
+ escapeControlChar
306
307
  );
307
308
  }
308
309
  __name(sanitizeFilenameForDisplay, "sanitizeFilenameForDisplay");
310
+ function sanitizeMultilineForDisplay(text) {
311
+ return escapeAnsiCtrlCodes(text).replace(
312
+ MULTILINE_CONTROL_CHARS_REGEX,
313
+ escapeControlChar
314
+ );
315
+ }
316
+ __name(sanitizeMultilineForDisplay, "sanitizeMultilineForDisplay");
309
317
 
310
318
  export {
311
319
  stringWidth,
@@ -318,7 +326,8 @@ export {
318
326
  wrapToVisualLines,
319
327
  escapeAnsiCtrlCodes,
320
328
  sanitizeSensitiveText,
321
- sanitizeFilenameForDisplay
329
+ sanitizeFilenameForDisplay,
330
+ sanitizeMultilineForDisplay
322
331
  };
323
332
  /**
324
333
  * @license