@qwen-code/qwen-code 0.19.2 → 0.19.3-nightly.20260630.e00fe6a27

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 (286) hide show
  1. package/bundled/extension-creator/SKILL.md +357 -0
  2. package/bundled/loop/SKILL.md +21 -7
  3. package/bundled/loop/SKILL.test.ts +41 -0
  4. package/bundled/loop/loop-task-file.test.ts +1064 -0
  5. package/bundled/loop/loop-task-file.ts +404 -0
  6. package/bundled/loop/loop-tick-resolver.test.ts +665 -0
  7. package/bundled/loop/loop-tick-resolver.ts +347 -0
  8. package/bundled/qc-helper/SKILL.md +26 -19
  9. package/bundled/qc-helper/docs/configuration/auth.md +11 -11
  10. package/bundled/qc-helper/docs/configuration/model-providers.md +13 -13
  11. package/bundled/qc-helper/docs/configuration/settings.md +76 -75
  12. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
  13. package/bundled/qc-helper/docs/features/commands.md +108 -77
  14. package/bundled/qc-helper/docs/features/hooks.md +6 -1
  15. package/bundled/qc-helper/docs/features/memory.md +52 -0
  16. package/bundled/qc-helper/docs/qwen-serve.md +24 -2
  17. package/bundled/qc-helper/docs/support/tos-privacy.md +16 -3
  18. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -0
  19. package/chunks/{MaxSizedBox-7RERNLFK.js → MaxSizedBox-T5X5MN5Q.js} +29 -27
  20. package/chunks/{StandaloneSessionPicker-S22XBSN6.js → StandaloneSessionPicker-P3E3WTOQ.js} +42 -37
  21. package/chunks/{acpAgent-4MCETHF2.js → acpAgent-QEP6DXFW.js} +864 -175
  22. package/chunks/{agent-K3ENVYSB.js → agent-UDANDUF7.js} +24 -23
  23. package/chunks/{agent-headless-HO3V3A3A.js → agent-headless-KYVSZHSO.js} +24 -23
  24. package/chunks/{anthropicContentGenerator-E3TQ5XJJ.js → anthropicContentGenerator-KWSJAQ7B.js} +33 -12
  25. package/chunks/{artifact-tool-QA4KRO3B.js → artifact-tool-D2X7G3C3.js} +2 -2
  26. package/chunks/{askUserQuestion-HMWXW6VN.js → askUserQuestion-UGETICJQ.js} +2 -2
  27. package/chunks/{bridge-4LV2HBH2.js → bridge-X42LXPTA.js} +31 -30
  28. package/chunks/{ca-7WC7ELX6.js → ca-IUFWESZL.js} +1 -0
  29. package/chunks/{chunk-JXQ23SNT.js → chunk-2JKEQWDZ.js} +623 -78
  30. package/chunks/{chunk-2TJ3YN6Q.js → chunk-2RJA6J57.js} +416 -401
  31. package/chunks/{chunk-3UALQ56H.js → chunk-3227DZO4.js} +1 -1
  32. package/chunks/{chunk-BGUDAULQ.js → chunk-3CPCDXFR.js} +5 -5
  33. package/chunks/{chunk-5RVSM6NW.js → chunk-3HUHAQF3.js} +1 -1
  34. package/chunks/{chunk-D5E5TMYH.js → chunk-3M4W4U5G.js} +16 -2
  35. package/chunks/{chunk-DBZUXSSV.js → chunk-4X7NIEQJ.js} +3 -3
  36. package/chunks/chunk-5GOVVXEV.js +73 -0
  37. package/chunks/{chunk-2BAQ3ACS.js → chunk-5SM4VT6V.js} +405 -5
  38. package/chunks/{chunk-NYOHZYHM.js → chunk-5XQ4A26L.js} +45 -3
  39. package/chunks/{chunk-CI5O6SQL.js → chunk-6FKEVYCD.js} +4 -4
  40. package/chunks/{chunk-ZD3NW5KL.js → chunk-7LM4XHPE.js} +63 -9
  41. package/chunks/chunk-7UNP2XM7.js +840 -0
  42. package/chunks/{chunk-OQHQHJRK.js → chunk-ARYCHZ4B.js} +151 -4775
  43. package/chunks/chunk-BC3C4F3Q.js +40 -0
  44. package/chunks/{chunk-CGEGHF2C.js → chunk-BKXBARJZ.js} +1 -1
  45. package/chunks/chunk-BMFMJINR.js +45 -0
  46. package/chunks/chunk-BOJWHRMX.js +11273 -0
  47. package/chunks/{chunk-CGOMICBE.js → chunk-BSZEQNUA.js} +34 -1
  48. package/chunks/{chunk-OIC6S73E.js → chunk-BUUQ5HPX.js} +1 -1
  49. package/chunks/{chunk-2BIF2NVV.js → chunk-BVSVIN45.js} +2 -2
  50. package/chunks/{chunk-TOEGRAVX.js → chunk-BX5YO7UW.js} +17 -5
  51. package/chunks/{chunk-4W4T77MO.js → chunk-BXVWV4GI.js} +109 -6
  52. package/chunks/{chunk-VQRYPFCV.js → chunk-CYHVPQYT.js} +10 -460
  53. package/chunks/{chunk-PRYMDRBV.js → chunk-DDMOU62Q.js} +1 -1
  54. package/chunks/{chunk-S566HKUS.js → chunk-DHXWNSJA.js} +15 -1
  55. package/chunks/{chunk-F6XNTYNE.js → chunk-E6XQPQXW.js} +30 -307
  56. package/chunks/{chunk-QBZ22PQX.js → chunk-EWALXUAD.js} +3 -1
  57. package/chunks/{chunk-EL5IHQON.js → chunk-EWYQFWYF.js} +6 -27
  58. package/chunks/{chunk-HG6YKEBI.js → chunk-F2DOT6UZ.js} +161 -30
  59. package/chunks/{chunk-JTYRZODB.js → chunk-FOOIZCWL.js} +16 -7
  60. package/chunks/{chunk-EX4W6ZYG.js → chunk-G5G4TFZ7.js} +1 -1
  61. package/chunks/{chunk-EW6C27XX.js → chunk-GEHVIWAT.js} +9 -3
  62. package/chunks/chunk-HEVBZSXG.js +4923 -0
  63. package/chunks/chunk-HFQ2XSE7.js +690 -0
  64. package/chunks/{chunk-PF523XJX.js → chunk-HPGTGMP3.js} +1 -1
  65. package/chunks/{chunk-OTBK43JR.js → chunk-HYCC3XM3.js} +1 -1
  66. package/chunks/{chunk-TMBPDHXD.js → chunk-I4H7PRWQ.js} +1 -1
  67. package/chunks/{chunk-EEEZIVFJ.js → chunk-JOLIREYR.js} +1 -1
  68. package/chunks/{chunk-TZM5JIAX.js → chunk-JYPQTRA3.js} +10 -7
  69. package/chunks/chunk-K5XU6E4T.js +167 -0
  70. package/chunks/{chunk-BS64PXY3.js → chunk-KFVU7ODN.js} +1 -1
  71. package/chunks/{chunk-3RJ3ZPPR.js → chunk-KKQWC6WS.js} +7 -7
  72. package/chunks/{chunk-3QFE4OTE.js → chunk-LBW7NW7X.js} +4 -4
  73. package/chunks/{chunk-Z7XXFPGP.js → chunk-LDWTYE33.js} +1 -1
  74. package/chunks/{chunk-EXMX5YHG.js → chunk-LP5E4YIH.js} +1 -1
  75. package/chunks/{chunk-ZUAXI2OA.js → chunk-M2U5NM24.js} +188 -11366
  76. package/chunks/{chunk-I5T6PIBQ.js → chunk-MBV2CTRL.js} +1010 -925
  77. package/chunks/{chunk-5JZLXFPD.js → chunk-MTHMXSNT.js} +11 -11
  78. package/chunks/{chunk-FPACXT7T.js → chunk-MTJVHQDP.js} +534 -164
  79. package/chunks/chunk-NDOC6M5S.js +481 -0
  80. package/chunks/{chunk-HGNSRCRB.js → chunk-NL4C3H6C.js} +1 -1
  81. package/chunks/{chunk-GZCJS5WH.js → chunk-O2VBQ3Y2.js} +2 -2
  82. package/chunks/{chunk-UN3C6GOR.js → chunk-PPFWEV7G.js} +10 -108
  83. package/chunks/{chunk-RS4HRC75.js → chunk-QI2CFVRF.js} +85 -8
  84. package/chunks/{chunk-XU5P23GN.js → chunk-QLDPRILK.js} +3 -3
  85. package/chunks/chunk-QYUE6W3T.js +123 -0
  86. package/chunks/{chunk-USGMPVOY.js → chunk-R3LHDWF2.js} +21 -12
  87. package/chunks/{chunk-BNXANYLH.js → chunk-RD6YJJJ6.js} +81 -1
  88. package/chunks/{chunk-PXFFKNCO.js → chunk-RIP623NO.js} +4877 -2469
  89. package/chunks/{chunk-XKBP7M7A.js → chunk-RYBSUGOR.js} +142 -30
  90. package/chunks/{chunk-BG4BIP7F.js → chunk-SBBN4BWR.js} +4 -2
  91. package/chunks/{chunk-T2VDEFUU.js → chunk-SKQZZVAV.js} +2 -2
  92. package/chunks/{chunk-5R4SBCX6.js → chunk-SL5MOGQH.js} +3 -3
  93. package/chunks/chunk-SMXULRAN.js +37 -0
  94. package/chunks/{chunk-WA5OJGFL.js → chunk-SS6WJMQK.js} +363 -76
  95. package/chunks/{chunk-UAARVVBI.js → chunk-TNWFHGN6.js} +1 -1
  96. package/chunks/{chunk-I2RFAW6Q.js → chunk-TT6Q3EN4.js} +7 -5
  97. package/chunks/chunk-UAKXW3DN.js +30 -0
  98. package/chunks/{chunk-C4K3FEQ2.js → chunk-UX4SGCGN.js} +32 -3
  99. package/chunks/{chunk-J6AW7O5D.js → chunk-WHDQZHRU.js} +2 -2
  100. package/chunks/{chunk-WGAEWQTF.js → chunk-WN6K47NR.js} +1 -2
  101. package/chunks/{chunk-UAARJR2G.js → chunk-WQT5SOI6.js} +2 -2
  102. package/chunks/{chunk-VYFMN7C6.js → chunk-WUMVIRTN.js} +225 -37
  103. package/chunks/{chunk-R36VMVEP.js → chunk-XJMKOTVV.js} +5 -5
  104. package/chunks/{chunk-TXVGVZYR.js → chunk-XJYUPHRC.js} +3 -3
  105. package/chunks/{chunk-2JD55C6G.js → chunk-Y6YMRS3U.js} +2 -2
  106. package/chunks/{chunk-LLFFKXZZ.js → chunk-YALKC62D.js} +56 -29
  107. package/chunks/{chunk-GYZQA2FO.js → chunk-YLZJCUH6.js} +1 -1
  108. package/chunks/chunk-YTFBURQD.js +313 -0
  109. package/chunks/{chunk-KBXLIVWQ.js → chunk-ZFPRYHWR.js} +2 -2
  110. package/chunks/{chunk-X6EDWN44.js → chunk-ZP6UKOPB.js} +1 -1
  111. package/chunks/{computer-use-6BBRNT6S.js → computer-use-LF2S6LUZ.js} +103 -49
  112. package/chunks/{contextCommand-UJAJ6N57.js → contextCommand-VPX5UG55.js} +26 -25
  113. package/chunks/{cron-create-4KQE6YLH.js → cron-create-SKEY55RG.js} +4 -4
  114. package/chunks/{cron-delete-THME66UP.js → cron-delete-I3NAT32Z.js} +6 -6
  115. package/chunks/{cron-list-7A54SJ5N.js → cron-list-6XRRL6TH.js} +5 -5
  116. package/chunks/{daemon-status-provider-CSL3BUOY.js → daemon-status-provider-5JAWZS4V.js} +34 -34
  117. package/chunks/{de-ACHALDED.js → de-EOW5PVHF.js} +1 -0
  118. package/chunks/{dist-BD27IA3L.js → dist-4FCNM6KJ.js} +2 -2
  119. package/chunks/{dist-OD2FY543.js → dist-O3H4PABL.js} +2 -2
  120. package/chunks/{dist-BOOH5JWN.js → dist-SCAAUWPS.js} +18 -4
  121. package/chunks/{dist-QHJRBCMP.js → dist-UKPWQJCL.js} +44 -2
  122. package/chunks/{dist-QFFZWACU.js → dist-VD7HXTML.js} +20 -9
  123. package/chunks/{earlyInputCapture-X6KMCSHD.js → earlyInputCapture-7FRQMU4P.js} +25 -24
  124. package/chunks/{edit-7J6WXARF.js → edit-REKJDIRL.js} +68 -27
  125. package/chunks/{en-NCUBOJOY.js → en-HPWEJBTR.js} +8 -0
  126. package/chunks/{enter-worktree-KULCKJPJ.js → enter-worktree-GBKUDCD3.js} +24 -23
  127. package/chunks/{enterPlanMode-H2CIOLMH.js → enterPlanMode-WB3Y4FGT.js} +24 -23
  128. package/chunks/{errors-6G2JYR54.js → errors-2XJDYO3M.js} +26 -25
  129. package/chunks/{exit-worktree-ECBWBVC5.js → exit-worktree-KKC7O2ZV.js} +24 -23
  130. package/chunks/{exitPlanMode-DQV56GTW.js → exitPlanMode-7HMS3TF7.js} +24 -23
  131. package/chunks/{fast-path-35JJFS3C.js → fast-path-XVNIYWGG.js} +4 -4
  132. package/chunks/{fast-path-settings-TSVI53EB.js → fast-path-settings-UQLRFDQP.js} +3 -2
  133. package/chunks/{fr-GVKZ27MF.js → fr-BN5NKSAC.js} +1 -0
  134. package/chunks/{gemini-NDTG7WAX.js → gemini-U5TPU3IQ.js} +210 -104
  135. package/chunks/{geminiContentGenerator-XTG6SFLA.js → geminiContentGenerator-ZVWRHXOO.js} +4 -4
  136. package/chunks/{glob-SJ2JBZK4.js → glob-FEJWIH2W.js} +24 -23
  137. package/chunks/{grep-BRMWFEWR.js → grep-KMP25IIA.js} +24 -23
  138. package/chunks/{headlessSafetyWarnings-LJ6FJX77.js → headlessSafetyWarnings-5DEDET4M.js} +24 -23
  139. package/chunks/{initializer-P5AXF7PV.js → initializer-FJTACLOH.js} +31 -28
  140. package/chunks/{ja-FKZ2WZ4D.js → ja-7DEUB2TS.js} +1 -0
  141. package/chunks/{keychain-token-storage-CSYMNRPP.js → keychain-token-storage-YLMDLKXT.js} +2 -2
  142. package/chunks/{list-6COK34BP.js → list-SCQXYJUW.js} +32 -29
  143. package/chunks/{loadedSettingsAdapter-XIUTN245.js → loadedSettingsAdapter-P6KPNAG7.js} +30 -27
  144. package/chunks/{loop-wakeup-33GPXJLA.js → loop-wakeup-FYEQEJUA.js} +7 -7
  145. package/chunks/{ls-BYQY7RVV.js → ls-R5WP4BGZ.js} +4 -4
  146. package/chunks/{lsp-X54RO4IV.js → lsp-GSICJMMW.js} +2 -2
  147. package/chunks/{monitor-DH7KFSJV.js → monitor-JU3HHHVY.js} +24 -23
  148. package/chunks/nonInteractiveCli-IZEKUHU3.js +100 -0
  149. package/chunks/{notebook-edit-D4R4ZLMA.js → notebook-edit-YHY3Z2QQ.js} +52 -23
  150. package/chunks/{openaiContentGenerator-F74IPQ6E.js → openaiContentGenerator-4WUVA3Q2.js} +13 -12
  151. package/chunks/{pt-SY5NCFGR.js → pt-TNZRNLQB.js} +1 -0
  152. package/chunks/{qwenContentGenerator-ATTK5P4D.js → qwenContentGenerator-MVYYR44B.js} +26 -25
  153. package/chunks/{qwenOAuth2-K4AASPCV.js → qwenOAuth2-6HNGHALT.js} +5 -4
  154. package/chunks/{read-file-767G23OY.js → read-file-NABEO2X4.js} +8 -8
  155. package/chunks/{read-mcp-resource-I5HCZJ6X.js → read-mcp-resource-DQQW7H7T.js} +2 -2
  156. package/chunks/{ripGrep-4OMMGSWX.js → ripGrep-YXLK6UTX.js} +24 -23
  157. package/chunks/{ru-FWNXJG4F.js → ru-NIAUBKCN.js} +1 -0
  158. package/chunks/{run-qwen-serve-REKSTYRA.js → run-qwen-serve-4B5QBMLQ.js} +144 -41
  159. package/chunks/{scheduler-UNTFDQLG.js → scheduler-XAKIYBDL.js} +24 -23
  160. package/chunks/{send-message-2DAFXEYP.js → send-message-EE4TWKVU.js} +2 -2
  161. package/chunks/{serve-KZ56QB5S.js → serve-4RXVLUKD.js} +30 -28
  162. package/chunks/{server-BV5TZUMU.js → server-7PA5QGIA.js} +11037 -8747
  163. package/chunks/{session-OIBXFSGD.js → session-WNVWRYAH.js} +194 -57
  164. package/chunks/{settings-WJTCBIRA.js → settings-YJH32TFF.js} +30 -27
  165. package/chunks/{shell-WC52IBHW.js → shell-YFLABOS5.js} +24 -23
  166. package/chunks/{skill-U7F7JR4M.js → skill-N3J7FUAY.js} +38 -11
  167. package/chunks/{spawnChannel-EI2E5BCW.js → spawnChannel-D6WVMFZJ.js} +26 -25
  168. package/chunks/{src-4F6FBZFI.js → src-IU5GDBEH.js} +88 -28
  169. package/chunks/{startInteractiveUI-SFRVB3CE.js → startInteractiveUI-QIPQTRT4.js} +2784 -2474
  170. package/chunks/{syntheticOutput-PPS3HDVA.js → syntheticOutput-T5YHQ6S2.js} +3 -3
  171. package/chunks/{task-create-OUYCA553.js → task-create-BLY7RHXX.js} +6 -6
  172. package/chunks/{task-list-WAX7I2IA.js → task-list-3QUYNVYR.js} +5 -5
  173. package/chunks/{task-stop-CAIL6FNH.js → task-stop-U4RATK2V.js} +2 -2
  174. package/chunks/{task-update-AHEO5OUT.js → task-update-U54O7KJX.js} +6 -6
  175. package/chunks/{team-create-3WC7CIIW.js → team-create-TP4CLLM3.js} +24 -23
  176. package/chunks/{team-delete-HGHFG23B.js → team-delete-LKBYPASD.js} +5 -5
  177. package/chunks/{theme-manager-DICFCT3P.js → theme-manager-N2TBIBZT.js} +25 -24
  178. package/chunks/{todoWrite-IFBMN3FH.js → todoWrite-OYXKTVYN.js} +4 -4
  179. package/chunks/{tool-search-L5K7HLER.js → tool-search-GBBSICYB.js} +101 -16
  180. package/chunks/trustedFolders-F7TBU5CD.js +76 -0
  181. package/chunks/types-QX5C3CHJ.js +12 -0
  182. package/chunks/{validateNonInterActiveAuth-GCH4Z6KI.js → validateNonInterActiveAuth-EQDQPSMI.js} +55 -50
  183. package/chunks/{web-fetch-B5IIQ5TT.js → web-fetch-PCVCML2X.js} +29 -15
  184. package/chunks/{workflow-OB3AND7I.js → workflow-ANJ4FYBK.js} +32 -30
  185. package/chunks/{workspace-providers-status-ZIR5EPOO.js → workspace-providers-status-462QQKQM.js} +32 -29
  186. package/chunks/workspace-service-VTG4G6CW.js +75 -0
  187. package/chunks/{write-file-SEXBNDZM.js → write-file-3P3WMQQW.js} +63 -27
  188. package/chunks/{zh-RBEGQVQT.js → zh-5EUYXASN.js} +8 -0
  189. package/chunks/{zh-TW-QGAVRXT3.js → zh-TW-TR3XYGE5.js} +8 -0
  190. package/cli-entry.js +20 -9
  191. package/cli.js +6 -6
  192. package/locales/ca.js +2 -0
  193. package/locales/de.js +2 -0
  194. package/locales/en.js +14 -0
  195. package/locales/fr.js +2 -0
  196. package/locales/ja.js +1 -0
  197. package/locales/pt.js +2 -0
  198. package/locales/ru.js +2 -0
  199. package/locales/zh-TW.js +12 -0
  200. package/locales/zh.js +12 -0
  201. package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +35 -0
  202. package/node_modules/@qwen-code/audio-capture/dist/index.js +48 -0
  203. package/node_modules/@qwen-code/audio-capture/dist/index.js.map +1 -0
  204. package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +7 -0
  205. package/node_modules/@qwen-code/audio-capture/dist/platform.js +18 -0
  206. package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +1 -0
  207. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +21 -0
  208. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +58 -0
  209. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +5 -0
  210. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +84 -0
  211. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +19 -0
  212. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +6 -0
  213. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  214. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +7 -0
  215. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +43 -0
  216. package/node_modules/@qwen-code/audio-capture/package.json +30 -0
  217. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  218. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  219. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
  220. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
  221. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  222. package/package.json +18 -6
  223. package/patches/chrome-devtools-mcp+1.4.0.patch +31 -0
  224. package/postinstall.js +50 -0
  225. package/web-shell/assets/{arc-D_ae_Y9k.js → arc-DIemsO_F.js} +1 -1
  226. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BMLRjppa.js → architectureDiagram-3BPJPVTR-CTlUvIQv.js} +1 -1
  227. package/web-shell/assets/{blockDiagram-GPEHLZMM-qVDQC8KL.js → blockDiagram-GPEHLZMM-DG0jmIZK.js} +1 -1
  228. package/web-shell/assets/{c4Diagram-AAUBKEIU-CxWS6MBd.js → c4Diagram-AAUBKEIU-WljDBi55.js} +1 -1
  229. package/web-shell/assets/channel-CbzRbdpA.js +1 -0
  230. package/web-shell/assets/{chunk-2J33WTMH-BtNuY5Yp.js → chunk-2J33WTMH-8nc6onr2.js} +1 -1
  231. package/web-shell/assets/{chunk-4BX2VUAB-BU-x368d.js → chunk-4BX2VUAB-EopXix8Z.js} +1 -1
  232. package/web-shell/assets/{chunk-55IACEB6-DRgTLvBu.js → chunk-55IACEB6-BE4Jz3N3.js} +1 -1
  233. package/web-shell/assets/{chunk-727SXJPM-D2aElv7q.js → chunk-727SXJPM-C_eErgDN.js} +1 -1
  234. package/web-shell/assets/{chunk-AQP2D5EJ-BwHCMRQ0.js → chunk-AQP2D5EJ-DFtVW-Is.js} +1 -1
  235. package/web-shell/assets/{chunk-FMBD7UC4-BMyPH-ku.js → chunk-FMBD7UC4-CJPyxIg9.js} +1 -1
  236. package/web-shell/assets/{chunk-ND2GUHAM-BNKTstUf.js → chunk-ND2GUHAM-Bk-xgj6M.js} +1 -1
  237. package/web-shell/assets/{chunk-QZHKN3VN-gD3vsFId.js → chunk-QZHKN3VN-p3Y4yaFB.js} +1 -1
  238. package/web-shell/assets/classDiagram-4FO5ZUOK-BFdyQ52h.js +1 -0
  239. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BFdyQ52h.js +1 -0
  240. package/web-shell/assets/{cose-bilkent-S5V4N54A-BG9FAsXE.js → cose-bilkent-S5V4N54A-BCMO6Js3.js} +1 -1
  241. package/web-shell/assets/{dagre-BM42HDAG-Cy1sR7om.js → dagre-BM42HDAG-DUMrwASf.js} +1 -1
  242. package/web-shell/assets/default-aEtf0G7-.svg +1 -0
  243. package/web-shell/assets/{diagram-2AECGRRQ-Bxi1I_Vu.js → diagram-2AECGRRQ-C5d7qJbL.js} +1 -1
  244. package/web-shell/assets/{diagram-5GNKFQAL-BGCJjO6y.js → diagram-5GNKFQAL-CjLzMhbT.js} +1 -1
  245. package/web-shell/assets/{diagram-KO2AKTUF-CMTeLXp7.js → diagram-KO2AKTUF-RCoNWeAm.js} +1 -1
  246. package/web-shell/assets/{diagram-LMA3HP47-BN1wyAGh.js → diagram-LMA3HP47-KThXjaNV.js} +1 -1
  247. package/web-shell/assets/{diagram-OG6HWLK6-UYSG_zcp.js → diagram-OG6HWLK6-DKsC2BWz.js} +1 -1
  248. package/web-shell/assets/{erDiagram-TEJ5UH35-DqXL08lw.js → erDiagram-TEJ5UH35-DJ2ukmq0.js} +1 -1
  249. package/web-shell/assets/{flowDiagram-I6XJVG4X-BPJ9SFji.js → flowDiagram-I6XJVG4X-zzqaARRX.js} +1 -1
  250. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BEd9Pnms.js → ganttDiagram-6RSMTGT7-kFUg-gqT.js} +1 -1
  251. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DrNRH3oi.js → gitGraphDiagram-PVQCEYII-C6JnMVzD.js} +1 -1
  252. package/web-shell/assets/index-B3XUm7dw.js +713 -0
  253. package/web-shell/assets/index-CHmzAWys.css +5 -0
  254. package/web-shell/assets/{infoDiagram-5YYISTIA-CFYBrkVI.js → infoDiagram-5YYISTIA-XqPVhp89.js} +1 -1
  255. package/web-shell/assets/insert-DmRbh9Rv.svg +1 -0
  256. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Dxsddth7.js → ishikawaDiagram-YF4QCWOH-D2k8sGpf.js} +1 -1
  257. package/web-shell/assets/{journeyDiagram-JHISSGLW-DxaDK80t.js → journeyDiagram-JHISSGLW-CQEST1GE.js} +1 -1
  258. package/web-shell/assets/{kanban-definition-UN3LZRKU-Q0jQCOct.js → kanban-definition-UN3LZRKU-DZ7kqVBC.js} +1 -1
  259. package/web-shell/assets/{linear-DGGM2kcP.js → linear-B6C_6q_E.js} +1 -1
  260. package/web-shell/assets/{mermaid.core-ByoxnWut.js → mermaid.core-CsyNP1qt.js} +5 -5
  261. package/web-shell/assets/{mindmap-definition-RKZ34NQL-C0ZseHsi.js → mindmap-definition-RKZ34NQL-B1VDIzJq.js} +1 -1
  262. package/web-shell/assets/{pieDiagram-4H26LBE5-MQXNhl5A.js → pieDiagram-4H26LBE5-DN0E7Jwu.js} +1 -1
  263. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DIR4ee2A.js → quadrantDiagram-W4KKPZXB-UKTQdHKm.js} +1 -1
  264. package/web-shell/assets/queue-DWpnpFgW.svg +1 -0
  265. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BTR0UdYQ.js → requirementDiagram-4Y6WPE33-BRGceQvN.js} +1 -1
  266. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-sfnhMELN.js → sankeyDiagram-5OEKKPKP-2DDyu41v.js} +1 -1
  267. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DXczHOHH.js → sequenceDiagram-3UESZ5HK-CT5iE8ZU.js} +1 -1
  268. package/web-shell/assets/{stateDiagram-AJRCARHV-DdE_KQFH.js → stateDiagram-AJRCARHV-CqMQ_s4G.js} +1 -1
  269. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CamhV5pM.js +1 -0
  270. package/web-shell/assets/{timeline-definition-PNZ67QCA-DIc61uE8.js → timeline-definition-PNZ67QCA-Di37QSZU.js} +1 -1
  271. package/web-shell/assets/{vennDiagram-CIIHVFJN-BF7ODmxB.js → vennDiagram-CIIHVFJN-DCXvpz5S.js} +1 -1
  272. package/web-shell/assets/{wardley-L42UT6IY-3pc1MEaw.js → wardley-L42UT6IY-CpUCk6OX.js} +1 -1
  273. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-9jnPcZuP.js → wardleyDiagram-YWT4CUSO-D01pVEBg.js} +1 -1
  274. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DcthaZK6.js → xychartDiagram-2RQKCTM6-DOu5JDoz.js} +1 -1
  275. package/web-shell/index.html +2 -2
  276. package/chunks/chunk-B6HQGTYR.js +0 -410
  277. package/chunks/chunk-R2BXK7SX.js +0 -13
  278. package/chunks/chunk-RKIZXJMB.js +0 -13
  279. package/chunks/nonInteractiveCli-7575LBXP.js +0 -91
  280. package/chunks/workspace-service-OM5D4OI2.js +0 -60
  281. package/web-shell/assets/channel-DYPNiTww.js +0 -1
  282. package/web-shell/assets/classDiagram-4FO5ZUOK-p_g25Tni.js +0 -1
  283. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-p_g25Tni.js +0 -1
  284. package/web-shell/assets/index-CpOXWDPh.js +0 -714
  285. package/web-shell/assets/index-oVK7qhre.css +0 -5
  286. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BHUSEndU.js +0 -1
@@ -2,6 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  CAPABILITIES_SCHEMA_VERSION,
5
+ ClientMcpSenderRegistry,
5
6
  SERVE_CAPABILITY_REGISTRY,
6
7
  allowOriginCors,
7
8
  allowOriginMode,
@@ -20,27 +21,29 @@ import {
20
21
  positiveFiniteOrNull,
21
22
  require_express,
22
23
  resolveWebShellDir
23
- } from "./chunk-FPACXT7T.js";
24
+ } from "./chunk-MTJVHQDP.js";
24
25
  import "./chunk-3HX5LZ6R.js";
25
26
  import "./chunk-7RYW5LQV.js";
26
27
  import {
27
28
  getCliVersion
28
- } from "./chunk-BS64PXY3.js";
29
+ } from "./chunk-KFVU7ODN.js";
30
+ import "./chunk-EWALXUAD.js";
29
31
  import {
30
32
  canonicalizeWorkspace
31
33
  } from "./chunk-SEZC2725.js";
32
- import {
33
- writeStderrLine,
34
- writeStdoutLine
35
- } from "./chunk-Y6Z2O3WR.js";
36
34
  import {
37
35
  loadServeFastPathSettings,
38
36
  preResolveServeFastPathHomeEnvOverrides
39
- } from "./chunk-3RJ3ZPPR.js";
37
+ } from "./chunk-KKQWC6WS.js";
40
38
  import {
41
39
  getGlobalQwenDirLite,
42
40
  resolveConfigPathLite
43
- } from "./chunk-UN3C6GOR.js";
41
+ } from "./chunk-PPFWEV7G.js";
42
+ import {
43
+ writeStderrLine,
44
+ writeStdoutLine
45
+ } from "./chunk-Y6Z2O3WR.js";
46
+ import "./chunk-QYUE6W3T.js";
44
47
  import "./chunk-5P5XGNYH.js";
45
48
  import "./chunk-SKAZWEV5.js";
46
49
  import "./chunk-UWCTAVOD.js";
@@ -347,6 +350,8 @@ __name(initDaemonLogger, "initDaemonLogger");
347
350
 
348
351
  // packages/cli/src/serve/run-qwen-serve.ts
349
352
  var QWEN_SERVER_TOKEN_ENV = "QWEN_SERVER_TOKEN";
353
+ var QWEN_SERVE_CLIENT_MCP_OVER_WS_ENV = "QWEN_SERVE_CLIENT_MCP_OVER_WS";
354
+ var QWEN_SERVE_CDP_TUNNEL_OVER_WS_ENV = "QWEN_SERVE_CDP_TUNNEL_OVER_WS";
350
355
  var QWEN_SERVE_PROMPT_DEADLINE_MS_ENV = "QWEN_SERVE_PROMPT_DEADLINE_MS";
351
356
  var QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS_ENV = "QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS";
352
357
  var SHUTDOWN_FORCE_CLOSE_MS = 5e3;
@@ -515,7 +520,7 @@ function shouldPreheatBridge(deps) {
515
520
  __name(shouldPreheatBridge, "shouldPreheatBridge");
516
521
  var coreRuntimePromise;
517
522
  function loadCoreRuntime() {
518
- coreRuntimePromise ??= import("./src-4F6FBZFI.js");
523
+ coreRuntimePromise ??= import("./src-IU5GDBEH.js");
519
524
  return coreRuntimePromise;
520
525
  }
521
526
  __name(loadCoreRuntime, "loadCoreRuntime");
@@ -545,11 +550,13 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
545
550
  var settingsRuntimePromise;
546
551
  function loadSettingsRuntimeModules() {
547
552
  settingsRuntimePromise ??= Promise.all([
548
- import("./settings-WJTCBIRA.js"),
549
- import("./loadedSettingsAdapter-XIUTN245.js")
550
- ]).then(([settings, loadedSettingsAdapter]) => ({
553
+ import("./settings-YJH32TFF.js"),
554
+ import("./loadedSettingsAdapter-P6KPNAG7.js"),
555
+ import("./trustedFolders-F7TBU5CD.js")
556
+ ]).then(([settings, loadedSettingsAdapter, trustedFolders]) => ({
551
557
  settings,
552
- loadedSettingsAdapter
558
+ loadedSettingsAdapter,
559
+ trustedFolders
553
560
  }));
554
561
  return settingsRuntimePromise;
555
562
  }
@@ -560,15 +567,17 @@ async function loadServeRuntimeModules() {
560
567
  bridgeModule,
561
568
  spawnChannelModule,
562
569
  workspaceModule,
570
+ workspaceTypesModule,
563
571
  daemonStatusProviderModule,
564
572
  workspaceProvidersStatusModule
565
573
  ] = await Promise.all([
566
- import("./server-BV5TZUMU.js"),
567
- import("./bridge-4LV2HBH2.js"),
568
- import("./spawnChannel-EI2E5BCW.js"),
569
- import("./workspace-service-OM5D4OI2.js"),
570
- import("./daemon-status-provider-CSL3BUOY.js"),
571
- import("./workspace-providers-status-ZIR5EPOO.js")
574
+ import("./server-7PA5QGIA.js"),
575
+ import("./bridge-X42LXPTA.js"),
576
+ import("./spawnChannel-D6WVMFZJ.js"),
577
+ import("./workspace-service-VTG4G6CW.js"),
578
+ import("./types-QX5C3CHJ.js"),
579
+ import("./daemon-status-provider-5JAWZS4V.js"),
580
+ import("./workspace-providers-status-462QQKQM.js")
572
581
  ]);
573
582
  return {
574
583
  createServeApp: serverModule.createServeApp,
@@ -577,6 +586,7 @@ async function loadServeRuntimeModules() {
577
586
  createAcpSessionBridge: bridgeModule.createAcpSessionBridge,
578
587
  createSpawnChannelFactory: spawnChannelModule.createSpawnChannelFactory,
579
588
  createDaemonWorkspaceService: workspaceModule.createDaemonWorkspaceService,
589
+ WorkspaceSettingsPartialPersistError: workspaceTypesModule.WorkspaceSettingsPartialPersistError,
580
590
  createDaemonStatusProvider: daemonStatusProviderModule.createDaemonStatusProvider,
581
591
  createWorkspaceProvidersStatusProvider: workspaceProvidersStatusModule.createWorkspaceProvidersStatusProvider
582
592
  };
@@ -612,7 +622,11 @@ function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled) {
612
622
  persistSettingAvailable: true,
613
623
  sessionShellCommandEnabled,
614
624
  rateLimit: opts.rateLimit === true,
615
- reloadAvailable: true
625
+ reloadAvailable: true,
626
+ // Advertise the same WS feature flags as the runtime path (serve-features.ts)
627
+ // so the bootstrap `/capabilities` window doesn't briefly under-report them.
628
+ clientMcpOverWsEnabled: opts.clientMcpOverWs === true,
629
+ cdpTunnelOverWsEnabled: opts.cdpTunnelOverWs === true
616
630
  });
617
631
  }
618
632
  __name(currentServeFeaturesForRunQwenServe, "currentServeFeaturesForRunQwenServe");
@@ -952,7 +966,16 @@ async function runQwenServe(optsIn, deps = {}) {
952
966
  ...optsIn,
953
967
  token,
954
968
  promptDeadlineMs,
955
- writerIdleTimeoutMs
969
+ writerIdleTimeoutMs,
970
+ // Reverse tool channel (issue #5626, Phase 2). Opt-in via env until the
971
+ // public contract settles — the WS `mcp_register` / `mcp_message` frames
972
+ // and the child↔parent `client_mcp/message` round-trip stay dormant
973
+ // otherwise. An explicit `clientMcpOverWs` in `optsIn` (embedded callers)
974
+ // still wins.
975
+ clientMcpOverWs: optsIn.clientMcpOverWs ?? process.env[QWEN_SERVE_CLIENT_MCP_OVER_WS_ENV] === "1",
976
+ // CDP tunnel (Plan C, issue #5626). Opt-in via env until the contract
977
+ // settles; an explicit `cdpTunnelOverWs` in `optsIn` still wins.
978
+ cdpTunnelOverWs: optsIn.cdpTunnelOverWs ?? process.env[QWEN_SERVE_CDP_TUNNEL_OVER_WS_ENV] === "1"
956
979
  };
957
980
  validateRateLimitOptions(opts);
958
981
  if (!opts.hostname.startsWith("[") && opts.hostname.split(":").length === 2) {
@@ -1132,10 +1155,25 @@ async function runQwenServe(optsIn, deps = {}) {
1132
1155
  }
1133
1156
  const childEnvOverrides = {
1134
1157
  QWEN_SERVE_MCP_CLIENT_BUDGET: opts.mcpClientBudget !== void 0 ? String(opts.mcpClientBudget) : void 0,
1135
- QWEN_SERVE_MCP_BUDGET_MODE: opts.mcpBudgetMode
1158
+ QWEN_SERVE_MCP_BUDGET_MODE: opts.mcpBudgetMode,
1159
+ // CDP tunnel (Plan C, #5626): forward the flag + bound port so the spawned
1160
+ // ACP child can auto-register chrome-devtools-mcp against this `/cdp`
1161
+ // endpoint. Only meaningful with a fixed `--port`: the override map is frozen
1162
+ // at bridge construction, so an ephemeral `--port 0` (resolved only after
1163
+ // `listen`) can't be threaded here. Leave the port unset in that case so the
1164
+ // child surfaces a clear diagnostic instead of a bogus port "0".
1165
+ QWEN_SERVE_CDP_TUNNEL_OVER_WS: opts.cdpTunnelOverWs ? "1" : void 0,
1166
+ QWEN_SERVE_CDP_TUNNEL_PORT: opts.cdpTunnelOverWs && opts.port > 0 ? String(opts.port) : void 0,
1167
+ // Tell the child whether `/cdp` requires bearer auth. The ACP child can't
1168
+ // inherit QWEN_SERVER_TOKEN (the spawn path scrubs it) and chrome-devtools-
1169
+ // mcp is launched with `--wsEndpoint` only, so it can't authenticate against
1170
+ // an auth-gated `/cdp`. The child uses this flag to skip auto-registering the
1171
+ // browser tools (with a diagnostic) instead of registering tools that can't
1172
+ // connect. See buildCdpTunnelMcpServer in acpAgent.ts.
1173
+ QWEN_SERVE_CDP_TUNNEL_AUTH_REQUIRED: opts.cdpTunnelOverWs && (token || opts.requireAuth) ? "1" : void 0
1136
1174
  };
1137
- const cliVersion = await getCliVersion();
1138
- const trustedWorkspace = deps.trustedWorkspace ?? true;
1175
+ const cliVersionPromise = getCliVersion();
1176
+ let cliVersion;
1139
1177
  const diagnosticSink = /* @__PURE__ */ __name((line, level) => daemonLog.raw(line, level), "diagnosticSink");
1140
1178
  let actualPort = opts.port;
1141
1179
  const webShellDir = opts.serveWebShell === false ? void 0 : resolveWebShellDir();
@@ -1178,11 +1216,13 @@ async function runQwenServe(optsIn, deps = {}) {
1178
1216
  () => runtimeStartupError
1179
1217
  );
1180
1218
  const buildRuntime = /* @__PURE__ */ __name(async () => {
1181
- const [runtime, core, settingsRuntime] = await Promise.all([
1219
+ const [runtime, core, settingsRuntime, resolvedCliVersion] = await Promise.all([
1182
1220
  loadServeRuntimeModules(),
1183
1221
  loadCoreRuntime(),
1184
- loadSettingsRuntimeModules()
1222
+ loadSettingsRuntimeModules(),
1223
+ cliVersionPromise
1185
1224
  ]);
1225
+ cliVersion = resolvedCliVersion;
1186
1226
  let runtimeBootSettings;
1187
1227
  try {
1188
1228
  runtimeBootSettings = settingsRuntime.settings.loadSettings(boundWorkspace);
@@ -1191,15 +1231,35 @@ async function runQwenServe(optsIn, deps = {}) {
1191
1231
  `qwen serve: could not read full settings for runtime startup (${err instanceof Error ? err.message : String(err)}); falling back to defaults.`
1192
1232
  );
1193
1233
  }
1234
+ const trustedWorkspace = deps.trustedWorkspace ?? (runtimeBootSettings ? settingsRuntime.trustedFolders.getWorkspaceTrustStatus(
1235
+ runtimeBootSettings.merged,
1236
+ boundWorkspace
1237
+ ).effective.state === "trusted" : true);
1238
+ if (deps.trustedWorkspace === void 0 && runtimeBootSettings && !trustedWorkspace) {
1239
+ daemonLog.warn(
1240
+ "workspace file writes are disabled because the bound workspace is not trusted",
1241
+ { workspace: boundWorkspace }
1242
+ );
1243
+ }
1194
1244
  const daemonWorkspaceHash = core.hashDaemonWorkspace(boundWorkspace);
1195
- const daemonTelemetrySettings = await core.resolveTelemetrySettings({
1196
- env: process.env,
1197
- settings: runtimeBootSettings?.merged.telemetry
1198
- });
1245
+ let daemonTelemetrySettings;
1246
+ try {
1247
+ daemonTelemetrySettings = await core.resolveTelemetrySettings({
1248
+ env: process.env,
1249
+ settings: runtimeBootSettings?.merged.telemetry
1250
+ });
1251
+ } catch (err) {
1252
+ if (err instanceof core.FatalConfigError) {
1253
+ throw new core.FatalConfigError(
1254
+ `Invalid telemetry configuration: ${err.message}.`
1255
+ );
1256
+ }
1257
+ throw err;
1258
+ }
1199
1259
  core.initializeTelemetry(
1200
1260
  createDaemonTelemetryRuntimeConfig(
1201
1261
  daemonTelemetrySettings,
1202
- cliVersion,
1262
+ resolvedCliVersion,
1203
1263
  `daemon:${daemonWorkspaceHash}:${process.pid}`,
1204
1264
  {
1205
1265
  otlpEndpoint: core.DEFAULT_OTLP_ENDPOINT,
@@ -1257,6 +1317,7 @@ async function runQwenServe(optsIn, deps = {}) {
1257
1317
  });
1258
1318
  const statusProvider = runtime.createDaemonStatusProvider();
1259
1319
  const workspaceProvidersStatusProvider = runtime.createWorkspaceProvidersStatusProvider();
1320
+ const clientMcpSenderRegistry = new ClientMcpSenderRegistry();
1260
1321
  const persistDisabledToolsFn = /* @__PURE__ */ __name((workspace, toolName, enabled) => withSettingsLock(workspace, async () => {
1261
1322
  const fresh = settingsRuntime.settings.loadSettings(workspace);
1262
1323
  const wsScope = fresh.forScope(WORKSPACE_SETTING_SCOPE).settings;
@@ -1271,7 +1332,42 @@ async function runQwenServe(optsIn, deps = {}) {
1271
1332
  [...next].sort()
1272
1333
  );
1273
1334
  }), "persistDisabledToolsFn");
1335
+ const persistSettingFn = /* @__PURE__ */ __name((workspace, scope, key, value) => withSettingsLock(workspace, async () => {
1336
+ const fresh = settingsRuntime.settings.loadSettings(workspace);
1337
+ fresh.setValue(scope, key, value);
1338
+ return fresh;
1339
+ }), "persistSettingFn");
1340
+ const persistSettingsFn = /* @__PURE__ */ __name((workspace, writes) => withSettingsLock(workspace, async () => {
1341
+ const fresh = settingsRuntime.settings.loadSettings(workspace);
1342
+ const writesByScope = /* @__PURE__ */ new Map();
1343
+ for (const write of writes) {
1344
+ writesByScope.set(
1345
+ write.scope,
1346
+ (writesByScope.get(write.scope) ?? 0) + 1
1347
+ );
1348
+ }
1349
+ const committedScopes = /* @__PURE__ */ new Set();
1350
+ let committed = 0;
1351
+ try {
1352
+ fresh.setValues(writes, (scope) => {
1353
+ committedScopes.add(scope);
1354
+ committed += writesByScope.get(scope) ?? 0;
1355
+ });
1356
+ } catch (err) {
1357
+ const failedWrite = writes.find((write) => !committedScopes.has(write.scope)) ?? writes[committed];
1358
+ const message = `persistSettings partial failure (workspace=${workspace}, committed=${committed}/${writes.length}, failedKey=${failedWrite?.key ?? "<unknown>"}, failedScope=${failedWrite?.scope ?? "<unknown>"}): ${err instanceof Error ? err.message : String(err)}`;
1359
+ writeStderrLine(`qwen serve: ${message}`);
1360
+ throw new runtime.WorkspaceSettingsPartialPersistError(
1361
+ message,
1362
+ writes.filter((write) => committedScopes.has(write.scope)),
1363
+ err
1364
+ );
1365
+ }
1366
+ }), "persistSettingsFn");
1274
1367
  const bridge = deps.bridge ?? runtime.createAcpSessionBridge({
1368
+ // Reverse tool channel: let `BridgeClient.extMethod` reach the WS
1369
+ // connection that hosts a named client MCP server (#5626).
1370
+ clientMcpSender: clientMcpSenderRegistry.lookup,
1275
1371
  maxSessions: opts.maxSessions,
1276
1372
  ...opts.maxPendingPromptsPerSession !== void 0 ? { maxPendingPromptsPerSession: opts.maxPendingPromptsPerSession } : {},
1277
1373
  ...opts.eventRingSize !== void 0 ? { eventRingSize: opts.eventRingSize } : {},
@@ -1305,6 +1401,8 @@ async function runQwenServe(optsIn, deps = {}) {
1305
1401
  workspaceProvidersStatusProvider,
1306
1402
  isChannelLive: /* @__PURE__ */ __name(() => bridge.isChannelLive(), "isChannelLive"),
1307
1403
  persistDisabledTools: persistDisabledToolsFn,
1404
+ persistSetting: persistSettingFn,
1405
+ persistSettings: persistSettingsFn,
1308
1406
  reloadDaemonEnv: /* @__PURE__ */ __name((workspace) => withSettingsLock(workspace, async () => {
1309
1407
  const fresh = settingsRuntime.settings.loadSettings(workspace, {
1310
1408
  skipLoadEnvironment: true
@@ -1328,16 +1426,17 @@ async function runQwenServe(optsIn, deps = {}) {
1328
1426
  bridge,
1329
1427
  webShellDir,
1330
1428
  boundWorkspace,
1331
- qwenCodeVersion: cliVersion,
1429
+ qwenCodeVersion: resolvedCliVersion,
1332
1430
  startup,
1333
1431
  fsFactory,
1334
1432
  daemonLog,
1335
1433
  workspace: workspaceService,
1434
+ // Reverse tool channel (#5626): the SAME registry wired into `bridge` above,
1435
+ // so the WS provider and the child-answering bridge share one sender map.
1436
+ clientMcpSenderRegistry,
1336
1437
  persistDisabledTools: persistDisabledToolsFn,
1337
- persistSetting: /* @__PURE__ */ __name((workspace, scope, key, value) => withSettingsLock(workspace, async () => {
1338
- const fresh = settingsRuntime.settings.loadSettings(workspace);
1339
- fresh.setValue(scope, key, value);
1340
- }), "persistSetting"),
1438
+ persistSetting: persistSettingFn,
1439
+ persistSettings: persistSettingsFn,
1341
1440
  installAuthProvider: /* @__PURE__ */ __name((req) => withSettingsLock(
1342
1441
  boundWorkspace,
1343
1442
  async () => {
@@ -1351,23 +1450,26 @@ async function runQwenServe(optsIn, deps = {}) {
1351
1450
  });
1352
1451
  const plan = core.buildInstallPlan(provider, inputs);
1353
1452
  const fresh = settingsRuntime.settings.loadSettings(boundWorkspace);
1453
+ const adapter = settingsRuntime.loadedSettingsAdapter.createLoadedSettingsAdapter(
1454
+ fresh
1455
+ );
1354
1456
  await core.applyProviderInstallPlan(plan, {
1355
- settings: settingsRuntime.loadedSettingsAdapter.createLoadedSettingsAdapter(
1356
- fresh
1357
- ),
1457
+ settings: adapter,
1358
1458
  doRefreshAuth: false
1359
1459
  });
1360
1460
  core.emitDaemonLog("Auth provider installed.", {
1361
1461
  "qwen-code.daemon.auth.provider_id": provider.id,
1362
1462
  "qwen-code.daemon.auth.auth_type": plan.authType
1363
1463
  });
1464
+ const effectiveModelId = adapter.getValue("model.name") ?? plan.modelSelection?.modelId;
1465
+ const effectiveBaseUrl = adapter.getValue("model.baseUrl") ?? plan.modelSelection?.baseUrl ?? inputs.baseUrl;
1364
1466
  return {
1365
1467
  v: 1,
1366
1468
  providerId: provider.id,
1367
1469
  providerLabel: provider.label,
1368
1470
  authType: plan.authType,
1369
- ...plan.modelSelection?.modelId ? { modelId: plan.modelSelection.modelId } : {},
1370
- ...inputs.baseUrl ? { baseUrl: inputs.baseUrl } : {},
1471
+ ...effectiveModelId ? { modelId: effectiveModelId } : {},
1472
+ ...effectiveBaseUrl ? { baseUrl: effectiveBaseUrl } : {},
1371
1473
  message: `Successfully configured ${provider.label}. Use /model to switch models.`
1372
1474
  };
1373
1475
  }
@@ -1383,6 +1485,7 @@ async function runQwenServe(optsIn, deps = {}) {
1383
1485
  runtimeStartupSettled = true;
1384
1486
  markRuntimeReady();
1385
1487
  }
1488
+ cliVersion ??= await cliVersionPromise;
1386
1489
  const bootstrapApp = createBootstrapServeApp({
1387
1490
  opts,
1388
1491
  getPort: /* @__PURE__ */ __name(() => actualPort, "getPort"),
@@ -6,50 +6,51 @@ import {
6
6
  import {
7
7
  FILE_HISTORY_DIR,
8
8
  getSubagentsRootDir
9
- } from "./chunk-PXFFKNCO.js";
9
+ } from "./chunk-RIP623NO.js";
10
10
  import "./chunk-K5PGHDBN.js";
11
11
  import "./chunk-5P5XGNYH.js";
12
12
  import "./chunk-SKAZWEV5.js";
13
- import "./chunk-TXVGVZYR.js";
14
- import "./chunk-XU5P23GN.js";
15
- import "./chunk-2BIF2NVV.js";
16
- import "./chunk-BG4BIP7F.js";
17
- import "./chunk-ZD3NW5KL.js";
13
+ import "./chunk-XJYUPHRC.js";
14
+ import "./chunk-QLDPRILK.js";
15
+ import "./chunk-BVSVIN45.js";
16
+ import "./chunk-SBBN4BWR.js";
17
+ import "./chunk-7LM4XHPE.js";
18
18
  import "./chunk-2MPVVENX.js";
19
19
  import "./chunk-ZTQ26VBE.js";
20
- import "./chunk-GZCJS5WH.js";
20
+ import "./chunk-O2VBQ3Y2.js";
21
21
  import "./chunk-MLZQVCF3.js";
22
22
  import "./chunk-LQ7TMOCE.js";
23
23
  import "./chunk-LD2XBG6Z.js";
24
- import "./chunk-OTBK43JR.js";
25
- import "./chunk-HGNSRCRB.js";
26
- import "./chunk-EEEZIVFJ.js";
27
- import "./chunk-PRYMDRBV.js";
28
- import "./chunk-WA5OJGFL.js";
24
+ import "./chunk-HYCC3XM3.js";
25
+ import "./chunk-NL4C3H6C.js";
26
+ import "./chunk-JOLIREYR.js";
27
+ import "./chunk-DDMOU62Q.js";
28
+ import "./chunk-SS6WJMQK.js";
29
29
  import "./chunk-3PJXIDKI.js";
30
30
  import "./chunk-UWCTAVOD.js";
31
31
  import "./chunk-OFEVLU4C.js";
32
32
  import "./chunk-OMX7CUOE.js";
33
- import "./chunk-BNXANYLH.js";
34
- import "./chunk-T2VDEFUU.js";
35
- import "./chunk-OIC6S73E.js";
36
- import "./chunk-TOEGRAVX.js";
37
- import "./chunk-BGUDAULQ.js";
38
- import "./chunk-EW6C27XX.js";
33
+ import "./chunk-RD6YJJJ6.js";
34
+ import "./chunk-SKQZZVAV.js";
35
+ import "./chunk-BUUQ5HPX.js";
36
+ import "./chunk-BX5YO7UW.js";
37
+ import "./chunk-3CPCDXFR.js";
38
+ import "./chunk-GEHVIWAT.js";
39
39
  import "./chunk-22IFUCVR.js";
40
- import "./chunk-64WXLC72.js";
41
- import "./chunk-3UALQ56H.js";
42
- import "./chunk-F6XNTYNE.js";
43
- import "./chunk-CGEGHF2C.js";
40
+ import "./chunk-3227DZO4.js";
41
+ import "./chunk-YTFBURQD.js";
42
+ import "./chunk-BKXBARJZ.js";
44
43
  import "./chunk-IRJWHZWU.js";
45
44
  import "./chunk-SYCJMSIJ.js";
46
45
  import "./chunk-55ZMG67I.js";
47
46
  import "./chunk-H6BD2ELD.js";
48
47
  import "./chunk-5IFG2VC4.js";
48
+ import "./chunk-64WXLC72.js";
49
+ import "./chunk-E6XQPQXW.js";
49
50
  import {
50
51
  Storage,
51
52
  createDebugLogger
52
- } from "./chunk-C4K3FEQ2.js";
53
+ } from "./chunk-UX4SGCGN.js";
53
54
  import "./chunk-ZERZSAZL.js";
54
55
  import "./chunk-QN5NZ3UQ.js";
55
56
  import "./chunk-BR4QREVK.js";
@@ -10,8 +10,8 @@ import {
10
10
  BaseToolInvocation,
11
11
  ToolDisplayNames,
12
12
  ToolNames
13
- } from "./chunk-TOEGRAVX.js";
14
- import "./chunk-C4K3FEQ2.js";
13
+ } from "./chunk-BX5YO7UW.js";
14
+ import "./chunk-UX4SGCGN.js";
15
15
  import "./chunk-Z2Z3GUXZ.js";
16
16
  import {
17
17
  init_esbuild_shims
@@ -3,56 +3,58 @@
3
3
  import {
4
4
  maybeOpenWebShellBrowser,
5
5
  serveCommand
6
- } from "./chunk-DBZUXSSV.js";
7
- import "./chunk-R2BXK7SX.js";
6
+ } from "./chunk-4X7NIEQJ.js";
8
7
  import "./chunk-ALX6BUYW.js";
9
8
  import "./chunk-5DWXLGOM.js";
10
- import "./chunk-OQHQHJRK.js";
11
- import "./chunk-5JZLXFPD.js";
9
+ import "./chunk-HEVBZSXG.js";
10
+ import "./chunk-MTHMXSNT.js";
12
11
  import "./chunk-TLRYABYP.js";
12
+ import "./chunk-PPFWEV7G.js";
13
+ import "./chunk-ARYCHZ4B.js";
13
14
  import "./chunk-Y6Z2O3WR.js";
14
- import "./chunk-UN3C6GOR.js";
15
- import "./chunk-PXFFKNCO.js";
15
+ import "./chunk-QYUE6W3T.js";
16
+ import "./chunk-RIP623NO.js";
16
17
  import "./chunk-K5PGHDBN.js";
17
18
  import "./chunk-5P5XGNYH.js";
18
19
  import "./chunk-SKAZWEV5.js";
19
- import "./chunk-TXVGVZYR.js";
20
- import "./chunk-XU5P23GN.js";
21
- import "./chunk-2BIF2NVV.js";
22
- import "./chunk-BG4BIP7F.js";
23
- import "./chunk-ZD3NW5KL.js";
20
+ import "./chunk-XJYUPHRC.js";
21
+ import "./chunk-QLDPRILK.js";
22
+ import "./chunk-BVSVIN45.js";
23
+ import "./chunk-SBBN4BWR.js";
24
+ import "./chunk-7LM4XHPE.js";
24
25
  import "./chunk-2MPVVENX.js";
25
26
  import "./chunk-ZTQ26VBE.js";
26
- import "./chunk-GZCJS5WH.js";
27
+ import "./chunk-O2VBQ3Y2.js";
27
28
  import "./chunk-MLZQVCF3.js";
28
29
  import "./chunk-LQ7TMOCE.js";
29
30
  import "./chunk-LD2XBG6Z.js";
30
- import "./chunk-OTBK43JR.js";
31
- import "./chunk-HGNSRCRB.js";
32
- import "./chunk-EEEZIVFJ.js";
33
- import "./chunk-PRYMDRBV.js";
34
- import "./chunk-WA5OJGFL.js";
31
+ import "./chunk-HYCC3XM3.js";
32
+ import "./chunk-NL4C3H6C.js";
33
+ import "./chunk-JOLIREYR.js";
34
+ import "./chunk-DDMOU62Q.js";
35
+ import "./chunk-SS6WJMQK.js";
35
36
  import "./chunk-3PJXIDKI.js";
36
37
  import "./chunk-UWCTAVOD.js";
37
38
  import "./chunk-OFEVLU4C.js";
38
39
  import "./chunk-OMX7CUOE.js";
39
- import "./chunk-BNXANYLH.js";
40
- import "./chunk-T2VDEFUU.js";
41
- import "./chunk-OIC6S73E.js";
42
- import "./chunk-TOEGRAVX.js";
43
- import "./chunk-BGUDAULQ.js";
44
- import "./chunk-EW6C27XX.js";
40
+ import "./chunk-RD6YJJJ6.js";
41
+ import "./chunk-SKQZZVAV.js";
42
+ import "./chunk-BUUQ5HPX.js";
43
+ import "./chunk-BX5YO7UW.js";
44
+ import "./chunk-3CPCDXFR.js";
45
+ import "./chunk-GEHVIWAT.js";
45
46
  import "./chunk-22IFUCVR.js";
46
- import "./chunk-64WXLC72.js";
47
- import "./chunk-3UALQ56H.js";
48
- import "./chunk-F6XNTYNE.js";
49
- import "./chunk-CGEGHF2C.js";
47
+ import "./chunk-3227DZO4.js";
48
+ import "./chunk-YTFBURQD.js";
49
+ import "./chunk-BKXBARJZ.js";
50
50
  import "./chunk-IRJWHZWU.js";
51
51
  import "./chunk-SYCJMSIJ.js";
52
52
  import "./chunk-55ZMG67I.js";
53
53
  import "./chunk-H6BD2ELD.js";
54
54
  import "./chunk-5IFG2VC4.js";
55
- import "./chunk-C4K3FEQ2.js";
55
+ import "./chunk-64WXLC72.js";
56
+ import "./chunk-E6XQPQXW.js";
57
+ import "./chunk-UX4SGCGN.js";
56
58
  import "./chunk-ZERZSAZL.js";
57
59
  import "./chunk-QN5NZ3UQ.js";
58
60
  import "./chunk-BR4QREVK.js";