@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,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  runExitCleanup
5
- } from "./chunk-GYZQA2FO.js";
5
+ } from "./chunk-YLZJCUH6.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -5,17 +5,19 @@ import {
5
5
  } from "./chunk-3GONHQOA.js";
6
6
  import {
7
7
  getErrorMessage
8
- } from "./chunk-5R4SBCX6.js";
8
+ } from "./chunk-SL5MOGQH.js";
9
9
  import {
10
- isWorkspaceTrusted,
11
10
  loadSettings
12
- } from "./chunk-OQHQHJRK.js";
11
+ } from "./chunk-HEVBZSXG.js";
13
12
  import {
14
13
  getCurrentLanguage,
15
14
  initializeI18n,
16
15
  resolveLanguageSetting,
17
16
  t
18
- } from "./chunk-5JZLXFPD.js";
17
+ } from "./chunk-MTHMXSNT.js";
18
+ import {
19
+ isWorkspaceTrusted
20
+ } from "./chunk-ARYCHZ4B.js";
19
21
  import {
20
22
  writeStderrLine,
21
23
  writeStdoutLine
@@ -27,7 +29,7 @@ import {
27
29
  redactUrlCredentials,
28
30
  require_prompts,
29
31
  stripAnsi
30
- } from "./chunk-PXFFKNCO.js";
32
+ } from "./chunk-RIP623NO.js";
31
33
  import {
32
34
  init_esbuild_shims
33
35
  } from "./chunk-A4BMJM77.js";
@@ -0,0 +1,30 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-A4BMJM77.js";
6
+ import {
7
+ __name
8
+ } from "./chunk-J2S4EL5Y.js";
9
+
10
+ // packages/cli/src/serve/validate-server-name.ts
11
+ init_esbuild_shims();
12
+ var VALID_SERVER_NAME = /^[A-Za-z0-9_-]+$/;
13
+ var RESERVED_SERVER_NAMES = /* @__PURE__ */ new Set([
14
+ "__proto__",
15
+ "constructor",
16
+ "prototype"
17
+ ]);
18
+ function isValidServerName(name) {
19
+ return typeof name === "string" && name.length > 0 && name.length <= 256 && VALID_SERVER_NAME.test(name) && !RESERVED_SERVER_NAMES.has(name);
20
+ }
21
+ __name(isValidServerName, "isValidServerName");
22
+
23
+ export {
24
+ isValidServerName
25
+ };
26
+ /**
27
+ * @license
28
+ * Copyright 2026 Qwen Team
29
+ * SPDX-License-Identifier: Apache-2.0
30
+ */
@@ -31,11 +31,40 @@ function isAbortError(error) {
31
31
  return false;
32
32
  }
33
33
  __name(isAbortError, "isAbortError");
34
+ function describeErrorCause(cause) {
35
+ if (cause == null) return void 0;
36
+ if (cause instanceof AggregateError && Array.isArray(cause.errors)) {
37
+ const inner = cause.errors.map((e) => describeSingleError(e)).filter((s) => Boolean(s));
38
+ if (inner.length > 0) {
39
+ return [...new Set(inner)].join("; ");
40
+ }
41
+ }
42
+ return describeSingleError(cause);
43
+ }
44
+ __name(describeErrorCause, "describeErrorCause");
45
+ function describeSingleError(err) {
46
+ if (err instanceof Error) {
47
+ const code = err.code;
48
+ const codeStr = typeof code === "string" ? code : void 0;
49
+ const msg = err.message?.trim();
50
+ if (msg && codeStr && !msg.includes(codeStr)) {
51
+ return `${codeStr}: ${msg}`;
52
+ }
53
+ return msg || codeStr || (err.name !== "Error" ? err.name : void 0);
54
+ }
55
+ if (err && typeof err === "object" && "code" in err) {
56
+ const code = err.code;
57
+ if (typeof code === "string" && code) return code;
58
+ }
59
+ const str = String(err);
60
+ return str && str !== "[object Object]" ? str : void 0;
61
+ }
62
+ __name(describeSingleError, "describeSingleError");
34
63
  function getErrorMessage(error) {
35
64
  if (error instanceof Error) {
36
- const cause = error.cause;
37
- if (cause instanceof Error && cause.message !== error.message) {
38
- return `${error.message} (cause: ${cause.message})`;
65
+ const detail = describeErrorCause(error.cause);
66
+ if (detail && detail !== error.message) {
67
+ return `${error.message} (cause: ${detail})`;
39
68
  }
40
69
  return error.message;
41
70
  }
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  functionResponsePartsToString
5
- } from "./chunk-2TJ3YN6Q.js";
5
+ } from "./chunk-2RJA6J57.js";
6
6
  import {
7
7
  parseAndFormatApiError
8
- } from "./chunk-PXFFKNCO.js";
8
+ } from "./chunk-RIP623NO.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-A4BMJM77.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  parseRule
5
- } from "./chunk-PXFFKNCO.js";
5
+ } from "./chunk-RIP623NO.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -127,7 +127,6 @@ export {
127
127
  isPermissionRuleType,
128
128
  readPermissionRuleSet,
129
129
  normalizePermissionRules,
130
- normalizePermissionRuleInputs,
131
130
  buildPermissionSettings
132
131
  };
133
132
  /**
@@ -7,10 +7,10 @@ import {
7
7
  eastAsianWidth,
8
8
  isFullWidth,
9
9
  isWide
10
- } from "./chunk-CGOMICBE.js";
10
+ } from "./chunk-BSZEQNUA.js";
11
11
  import {
12
12
  stripAnsi
13
- } from "./chunk-PXFFKNCO.js";
13
+ } from "./chunk-RIP623NO.js";
14
14
  import {
15
15
  init_esbuild_shims
16
16
  } from "./chunk-A4BMJM77.js";
@@ -1,14 +1,25 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
- MID_TURN_QUEUE_DRAIN_METHOD
5
- } from "./chunk-QBZ22PQX.js";
4
+ DEFAULT_RING_SIZE,
5
+ EVENT_SCHEMA_VERSION,
6
+ EventBus
7
+ } from "./chunk-ALX6BUYW.js";
8
+ import {
9
+ defaultSpawnChannelFactory
10
+ } from "./chunk-LP5E4YIH.js";
11
+ import {
12
+ ClientSideConnection,
13
+ PROTOCOL_VERSION,
14
+ RequestError
15
+ } from "./chunk-UFC57OYT.js";
6
16
  import {
7
17
  MCP_RESTART_SERVER_DEADLINE_MS
8
18
  } from "./chunk-P7M4GA57.js";
9
19
  import {
10
20
  BranchWhilePromptActiveError,
11
21
  CancelSentinelCollisionError,
22
+ CdWhilePromptActiveError,
12
23
  InvalidClientIdError,
13
24
  InvalidPermissionOptionError,
14
25
  InvalidRewindTargetError,
@@ -24,23 +35,7 @@ import {
24
35
  SessionShellDisabledError,
25
36
  WorkspaceMismatchError,
26
37
  isNotCurrentlyGeneratingCancelError
27
- } from "./chunk-S566HKUS.js";
28
- import {
29
- canonicalizeWorkspace
30
- } from "./chunk-SEZC2725.js";
31
- import {
32
- DEFAULT_RING_SIZE,
33
- EVENT_SCHEMA_VERSION,
34
- EventBus
35
- } from "./chunk-ALX6BUYW.js";
36
- import {
37
- defaultSpawnChannelFactory
38
- } from "./chunk-EXMX5YHG.js";
39
- import {
40
- ClientSideConnection,
41
- PROTOCOL_VERSION,
42
- RequestError
43
- } from "./chunk-UFC57OYT.js";
38
+ } from "./chunk-DHXWNSJA.js";
44
39
  import {
45
40
  BridgeChannelClosedError,
46
41
  BridgeTimeoutError,
@@ -49,15 +44,21 @@ import {
49
44
  STATUS_SCHEMA_VERSION,
50
45
  createIdleWorkspaceExtensionsStatus,
51
46
  createIdleWorkspaceHooksStatus
52
- } from "./chunk-D5E5TMYH.js";
47
+ } from "./chunk-3M4W4U5G.js";
48
+ import {
49
+ MID_TURN_QUEUE_DRAIN_METHOD
50
+ } from "./chunk-EWALXUAD.js";
51
+ import {
52
+ canonicalizeWorkspace
53
+ } from "./chunk-SEZC2725.js";
53
54
  import {
54
55
  ShellExecutionService,
55
56
  TrustGateError
56
- } from "./chunk-PXFFKNCO.js";
57
+ } from "./chunk-RIP623NO.js";
57
58
  import {
58
59
  DAEMON_TRACEPARENT_META_KEY,
59
60
  DAEMON_TRACESTATE_META_KEY
60
- } from "./chunk-WA5OJGFL.js";
61
+ } from "./chunk-SS6WJMQK.js";
61
62
  import {
62
63
  init_esbuild_shims
63
64
  } from "./chunk-A4BMJM77.js";
@@ -1099,7 +1100,7 @@ function sliceLineRange(content, startLine, endLine) {
1099
1100
  }
1100
1101
  __name(sliceLineRange, "sliceLineRange");
1101
1102
  var BridgeClient = class {
1102
- constructor(resolveEntry, resolvePendingRestoreEvents, mediator, permissionTimeoutMs, maxPendingPerSession, fileSystem, onModelPromoted, onModePromoted) {
1103
+ constructor(resolveEntry, resolvePendingRestoreEvents, mediator, permissionTimeoutMs, maxPendingPerSession, fileSystem, onModelPromoted, onModePromoted, clientMcpSender) {
1103
1104
  this.resolveEntry = resolveEntry;
1104
1105
  this.resolvePendingRestoreEvents = resolvePendingRestoreEvents;
1105
1106
  this.mediator = mediator;
@@ -1108,6 +1109,7 @@ var BridgeClient = class {
1108
1109
  this.fileSystem = fileSystem;
1109
1110
  this.onModelPromoted = onModelPromoted;
1110
1111
  this.onModePromoted = onModePromoted;
1112
+ this.clientMcpSender = clientMcpSender;
1111
1113
  }
1112
1114
  static {
1113
1115
  __name(this, "BridgeClient");
@@ -1254,6 +1256,9 @@ var BridgeClient = class {
1254
1256
  * treats that as "drain unsupported" and stops asking.
1255
1257
  */
1256
1258
  async extMethod(method, params) {
1259
+ if (method === SERVE_CONTROL_EXT_METHODS.clientMcpMessage) {
1260
+ return this.handleClientMcpMessage(params);
1261
+ }
1257
1262
  if (method !== MID_TURN_QUEUE_DRAIN_METHOD) {
1258
1263
  throw RequestError.methodNotFound(method);
1259
1264
  }
@@ -1283,6 +1288,52 @@ var BridgeClient = class {
1283
1288
  }
1284
1289
  return { messages };
1285
1290
  }
1291
+ /**
1292
+ * Reverse tool channel (issue #5626, Phase 2) — answer the child's
1293
+ * `qwen/control/client_mcp/message` ext-method. The child's session
1294
+ * `McpClientManager` calls this when its agent drives a client-hosted
1295
+ * (extension) MCP server: `params` carries the advertised `server` name and
1296
+ * the JSON-RPC `payload` (initialize / tools/list / tools/call / a
1297
+ * notification). We resolve the per-WS-connection sender via the injected
1298
+ * `clientMcpSender` lookup, deliver the payload over the daemon WS, and
1299
+ * return the correlated response as `{ payload }`.
1300
+ *
1301
+ * Rejects with ACP `methodNotFound` when no `clientMcpSender` is wired (Mode
1302
+ * A / tests can't host a client MCP server), and `invalidParams` when the
1303
+ * frame is malformed or the named server is no longer hosted (e.g. the
1304
+ * extension disconnected mid-turn) — the agent's `SdkControlClientTransport`
1305
+ * surfaces that as a transport error rather than hanging.
1306
+ */
1307
+ async handleClientMcpMessage(params) {
1308
+ if (!this.clientMcpSender) {
1309
+ throw RequestError.methodNotFound(
1310
+ SERVE_CONTROL_EXT_METHODS.clientMcpMessage
1311
+ );
1312
+ }
1313
+ const server = params["server"];
1314
+ if (typeof server !== "string" || server.length === 0) {
1315
+ throw RequestError.invalidParams(
1316
+ void 0,
1317
+ "`server` must be a non-empty string"
1318
+ );
1319
+ }
1320
+ const payload = params["payload"];
1321
+ if (payload === null || typeof payload !== "object") {
1322
+ throw RequestError.invalidParams(
1323
+ void 0,
1324
+ "`payload` must be a JSON-RPC message object"
1325
+ );
1326
+ }
1327
+ const send = this.clientMcpSender(server);
1328
+ if (!send) {
1329
+ throw RequestError.invalidParams(
1330
+ void 0,
1331
+ `client-hosted MCP server '${server}' is not currently connected`
1332
+ );
1333
+ }
1334
+ const response = await send(payload);
1335
+ return { payload: response };
1336
+ }
1286
1337
  /**
1287
1338
  * Handle child->bridge ACP `extNotification` calls. Six methods are
1288
1339
  * recognized — `qwen/notify/session/model-update`,
@@ -1990,6 +2041,7 @@ var PERSIST_TIMEOUT_MS = 5e3;
1990
2041
  var MCP_RESTART_TIMEOUT_MS = 3e5;
1991
2042
  var MCP_OAUTH_TIMEOUT_MS = 6e5;
1992
2043
  var DAEMON_RETRY_META_KEY = "qwen.daemon.retry";
2044
+ var DAEMON_CONTINUE_META_KEY = "qwen.daemon.continueLastTurn";
1993
2045
  var SESSION_RECAP_TIMEOUT_MS = 6e4;
1994
2046
  var SESSION_BTW_TIMEOUT_MS = 6e4;
1995
2047
  var SHELL_COMMAND_TIMEOUT_MS = 12e4;
@@ -2174,6 +2226,14 @@ function createAcpSessionBridge(opts) {
2174
2226
  const aliveChannels = /* @__PURE__ */ new Set();
2175
2227
  let inFlightChannelSpawn;
2176
2228
  const byId = /* @__PURE__ */ new Map();
2229
+ const toSessionSummary = /* @__PURE__ */ __name((entry) => ({
2230
+ sessionId: entry.sessionId,
2231
+ workspaceCwd: entry.workspaceCwd,
2232
+ createdAt: entry.createdAt,
2233
+ displayName: entry.displayName,
2234
+ clientCount: entry.clientIds.size,
2235
+ hasActivePrompt: entry.promptActive
2236
+ }), "toSessionSummary");
2177
2237
  const permissionConsensusQuorum = opts.permissionConsensusQuorum;
2178
2238
  if (permissionConsensusQuorum !== void 0 && (!Number.isInteger(permissionConsensusQuorum) || permissionConsensusQuorum < 1)) {
2179
2239
  throw new Error(
@@ -2294,7 +2354,14 @@ function createAcpSessionBridge(opts) {
2294
2354
  },
2295
2355
  originator
2296
2356
  );
2297
- }
2357
+ },
2358
+ // Reverse tool channel (issue #5626, Phase 2): forward the optional
2359
+ // client-hosted-MCP sender lookup so `BridgeClient.extMethod` can
2360
+ // answer `qwen/control/client_mcp/message` from the child by reaching
2361
+ // the per-WS-connection `ClientMcpRegistrar`. Omitted callers (tests,
2362
+ // Mode A) never host a client MCP server, so the method stays
2363
+ // unreachable.
2364
+ opts.clientMcpSender
2298
2365
  );
2299
2366
  const connection = new ClientSideConnection(() => client, channel.stream);
2300
2367
  const info = {
@@ -2828,6 +2895,7 @@ function createAcpSessionBridge(opts) {
2828
2895
  // Late attachers get the same ACP state the original restore
2829
2896
  // caller saw; spawn-only sessions don't carry a state payload.
2830
2897
  state: existing.restoreState ?? {},
2898
+ hasActivePrompt: existing.promptActive,
2831
2899
  ...replayFieldsFor(existing, action)
2832
2900
  };
2833
2901
  }
@@ -2860,7 +2928,8 @@ function createAcpSessionBridge(opts) {
2860
2928
  ...restored,
2861
2929
  attached: true,
2862
2930
  clientId: registerClient(entry, req.clientId),
2863
- createdAt: entry.createdAt
2931
+ createdAt: entry.createdAt,
2932
+ hasActivePrompt: entry.promptActive
2864
2933
  };
2865
2934
  }
2866
2935
  if (byId.size + inFlightSpawns.size + inFlightRestores.size >= maxSessions) {
@@ -2948,6 +3017,7 @@ function createAcpSessionBridge(opts) {
2948
3017
  clientId: clientId2,
2949
3018
  createdAt: racedEntry.createdAt,
2950
3019
  state: racedEntry.restoreState ?? {},
3020
+ hasActivePrompt: racedEntry.promptActive,
2951
3021
  ...replayFieldsFor(racedEntry, action)
2952
3022
  };
2953
3023
  }
@@ -2969,6 +3039,7 @@ function createAcpSessionBridge(opts) {
2969
3039
  clientId,
2970
3040
  createdAt: entry.createdAt,
2971
3041
  state,
3042
+ hasActivePrompt: entry.promptActive,
2972
3043
  ...replayFieldsFor(entry, action)
2973
3044
  };
2974
3045
  })().finally(() => {
@@ -3059,7 +3130,7 @@ function createAcpSessionBridge(opts) {
3059
3130
  }
3060
3131
  __name(closeSessionImpl, "closeSessionImpl");
3061
3132
  startSessionReaper();
3062
- return {
3133
+ const bridgeApi = {
3063
3134
  getDaemonStatusSnapshot() {
3064
3135
  return {
3065
3136
  limits: {
@@ -3146,7 +3217,8 @@ function createAcpSessionBridge(opts) {
3146
3217
  workspaceCwd: existing.workspaceCwd,
3147
3218
  attached: true,
3148
3219
  clientId,
3149
- createdAt: existing.createdAt
3220
+ createdAt: existing.createdAt,
3221
+ hasActivePrompt: existing.promptActive
3150
3222
  };
3151
3223
  }
3152
3224
  const inFlight = inFlightSpawns.get(workspaceKey);
@@ -3170,7 +3242,12 @@ function createAcpSessionBridge(opts) {
3170
3242
  ).catch(() => {
3171
3243
  });
3172
3244
  }
3173
- return { ...session, attached: true, clientId };
3245
+ return {
3246
+ ...session,
3247
+ attached: true,
3248
+ clientId,
3249
+ hasActivePrompt: attachedEntry.promptActive
3250
+ };
3174
3251
  }
3175
3252
  }
3176
3253
  if (byId.size + inFlightSpawns.size + inFlightRestores.size >= maxSessions) {
@@ -3245,6 +3322,7 @@ function createAcpSessionBridge(opts) {
3245
3322
  const requestedRetry = req.retry === true;
3246
3323
  const isRetry = requestedRetry && entry.retryAllowed;
3247
3324
  entry.retryAllowed = false;
3325
+ const isContinue = context?.continue === true;
3248
3326
  const promptRequest = (() => {
3249
3327
  const copy = {
3250
3328
  ...normalized
@@ -3252,9 +3330,13 @@ function createAcpSessionBridge(opts) {
3252
3330
  delete copy.retry;
3253
3331
  const meta = copy._meta && typeof copy._meta === "object" ? { ...copy._meta } : {};
3254
3332
  delete meta[DAEMON_RETRY_META_KEY];
3333
+ delete meta[DAEMON_CONTINUE_META_KEY];
3255
3334
  if (isRetry) {
3256
3335
  meta[DAEMON_RETRY_META_KEY] = true;
3257
3336
  }
3337
+ if (isContinue) {
3338
+ meta[DAEMON_CONTINUE_META_KEY] = true;
3339
+ }
3258
3340
  if (Object.keys(meta).length > 0) {
3259
3341
  copy._meta = meta;
3260
3342
  } else {
@@ -3273,7 +3355,7 @@ function createAcpSessionBridge(opts) {
3273
3355
  }
3274
3356
  try {
3275
3357
  entry.cancelBroadcast = false;
3276
- if (!isRetry) {
3358
+ if (!isRetry && !isContinue) {
3277
3359
  echoPromptToSessionBus(
3278
3360
  entry,
3279
3361
  promptRequest,
@@ -3616,6 +3698,59 @@ function createAcpSessionBridge(opts) {
3616
3698
  );
3617
3699
  return branchResult;
3618
3700
  },
3701
+ async changeSessionCwd(sessionId, req, context) {
3702
+ if (shuttingDown) throw new Error("AcpSessionBridge is shutting down");
3703
+ const entry = byId.get(sessionId);
3704
+ if (!entry) throw new SessionNotFoundError(sessionId);
3705
+ const originatorClientId = resolveTrustedClientId(
3706
+ entry,
3707
+ context?.clientId
3708
+ );
3709
+ const cdPromise = entry.promptQueue.then(async () => {
3710
+ if (entry.promptActive) {
3711
+ throw new CdWhilePromptActiveError(sessionId);
3712
+ }
3713
+ const ci = await ensureChannel();
3714
+ const raw = await ci.connection.extMethod(
3715
+ SERVE_CONTROL_EXT_METHODS.sessionCd,
3716
+ {
3717
+ sessionId,
3718
+ path: req.path
3719
+ }
3720
+ );
3721
+ const extResult = raw;
3722
+ if (typeof extResult?.previousCwd !== "string" || typeof extResult?.newCwd !== "string" || !Array.isArray(extResult?.warnings)) {
3723
+ throw new Error(
3724
+ `changeSessionCwd: unexpected response shape from agent: ${JSON.stringify(raw)}`
3725
+ );
3726
+ }
3727
+ if (extResult.previousCwd !== extResult.newCwd) {
3728
+ entry.events.publish({
3729
+ type: "session_cwd_changed",
3730
+ data: {
3731
+ sessionId,
3732
+ previousCwd: extResult.previousCwd,
3733
+ newCwd: extResult.newCwd
3734
+ },
3735
+ ...originatorClientId ? { originatorClientId } : {}
3736
+ });
3737
+ }
3738
+ return extResult;
3739
+ });
3740
+ entry.promptQueue = cdPromise.then(
3741
+ () => void 0,
3742
+ () => void 0
3743
+ );
3744
+ const result = await withTimeout(
3745
+ cdPromise,
3746
+ Math.max(initTimeoutMs, 3e4),
3747
+ "changeSessionCwd"
3748
+ );
3749
+ writeStderrLine(
3750
+ `qwen serve: session ${sessionId} cwd changed: ${result.previousCwd} -> ${result.newCwd}` + (result.warnings.length > 0 ? ` (warnings: ${result.warnings.join("; ")})` : "")
3751
+ );
3752
+ return { sessionId, ...result };
3753
+ },
3619
3754
  async closeSession(sessionId, context, closeOpts) {
3620
3755
  return closeSessionImpl(sessionId, context, closeOpts);
3621
3756
  },
@@ -3679,18 +3814,16 @@ function createAcpSessionBridge(opts) {
3679
3814
  const out = [];
3680
3815
  for (const entry of byId.values()) {
3681
3816
  if (entry.workspaceCwd === key) {
3682
- out.push({
3683
- sessionId: entry.sessionId,
3684
- workspaceCwd: entry.workspaceCwd,
3685
- createdAt: entry.createdAt,
3686
- displayName: entry.displayName,
3687
- clientCount: entry.clientIds.size,
3688
- hasActivePrompt: entry.promptActive
3689
- });
3817
+ out.push(toSessionSummary(entry));
3690
3818
  }
3691
3819
  }
3692
3820
  return out;
3693
3821
  },
3822
+ getSessionSummary(sessionId) {
3823
+ const entry = byId.get(sessionId);
3824
+ if (!entry) throw new SessionNotFoundError(sessionId);
3825
+ return toSessionSummary(entry);
3826
+ },
3694
3827
  recordHeartbeat(sessionId, context) {
3695
3828
  const entry = byId.get(sessionId);
3696
3829
  if (!entry) throw new SessionNotFoundError(sessionId);
@@ -3790,6 +3923,27 @@ function createAcpSessionBridge(opts) {
3790
3923
  { serverName }
3791
3924
  );
3792
3925
  },
3926
+ async getWorkspaceMcpResourcesStatus(serverName) {
3927
+ return requestWorkspaceStatus(
3928
+ SERVE_STATUS_EXT_METHODS.workspaceMcpResources,
3929
+ () => ({
3930
+ v: STATUS_SCHEMA_VERSION,
3931
+ workspaceCwd: boundWorkspace,
3932
+ serverName,
3933
+ initialized: false,
3934
+ acpChannelLive: false,
3935
+ resources: [],
3936
+ errors: [
3937
+ {
3938
+ kind: "mcp_resources",
3939
+ status: "not_started",
3940
+ hint: "spawn a session to populate"
3941
+ }
3942
+ ]
3943
+ }),
3944
+ { serverName }
3945
+ );
3946
+ },
3793
3947
  async getWorkspaceToolsStatus() {
3794
3948
  return requestWorkspaceStatus(
3795
3949
  SERVE_STATUS_EXT_METHODS.workspaceTools,
@@ -3853,6 +4007,39 @@ function createAcpSessionBridge(opts) {
3853
4007
  SERVE_CONTROL_EXT_METHODS.sessionGoalClear
3854
4008
  );
3855
4009
  },
4010
+ async continueSession(sessionId, context) {
4011
+ const entry = byId.get(sessionId);
4012
+ if (!entry) throw new SessionNotFoundError(sessionId);
4013
+ resolveTrustedClientId(entry, context?.clientId);
4014
+ const decision = await requestSessionStatus(sessionId, SERVE_CONTROL_EXT_METHODS.sessionContinue);
4015
+ if (!decision.accepted) {
4016
+ return decision;
4017
+ }
4018
+ const liveEntry = byId.get(sessionId);
4019
+ if (!liveEntry) throw new SessionNotFoundError(sessionId);
4020
+ const lastEventId = liveEntry.events.lastEventId;
4021
+ const promptId = context?.promptId;
4022
+ const promptPromise = bridgeApi.sendPrompt(
4023
+ sessionId,
4024
+ { sessionId, prompt: [] },
4025
+ void 0,
4026
+ {
4027
+ ...context?.clientId !== void 0 ? { clientId: context.clientId } : {},
4028
+ ...promptId !== void 0 ? { promptId } : {},
4029
+ continue: true
4030
+ }
4031
+ );
4032
+ promptPromise.catch((err) => {
4033
+ teeServeDebugLine(
4034
+ `continueSession: continuation turn failed for ${sessionId}: ${err instanceof Error ? err.message : String(err)}`
4035
+ );
4036
+ });
4037
+ return {
4038
+ ...decision,
4039
+ ...promptId !== void 0 ? { promptId } : {},
4040
+ lastEventId
4041
+ };
4042
+ },
3856
4043
  async getSessionStatsStatus(sessionId) {
3857
4044
  return requestSessionStatus(
3858
4045
  sessionId,
@@ -4728,6 +4915,7 @@ function createAcpSessionBridge(opts) {
4728
4915
  }
4729
4916
  }
4730
4917
  };
4918
+ return bridgeApi;
4731
4919
  }
4732
4920
  __name(createAcpSessionBridge, "createAcpSessionBridge");
4733
4921
  async function withTimeout(p, ms, label) {
@@ -3,24 +3,24 @@
3
3
  import {
4
4
  AUTO_THEME_NAME,
5
5
  themeManager
6
- } from "./chunk-TMBPDHXD.js";
6
+ } from "./chunk-I4H7PRWQ.js";
7
7
  import {
8
8
  initializeI18n,
9
9
  resolveLanguageSetting,
10
10
  t
11
- } from "./chunk-5JZLXFPD.js";
11
+ } from "./chunk-MTHMXSNT.js";
12
12
  import {
13
13
  IdeClient
14
- } from "./chunk-PXFFKNCO.js";
14
+ } from "./chunk-RIP623NO.js";
15
15
  import {
16
16
  AuthEvent,
17
17
  IdeConnectionEvent,
18
18
  logAuth,
19
19
  logIdeConnection
20
- } from "./chunk-WA5OJGFL.js";
20
+ } from "./chunk-SS6WJMQK.js";
21
21
  import {
22
22
  getErrorMessage
23
- } from "./chunk-C4K3FEQ2.js";
23
+ } from "./chunk-UX4SGCGN.js";
24
24
  import {
25
25
  init_esbuild_shims
26
26
  } from "./chunk-A4BMJM77.js";
@@ -3,17 +3,17 @@
3
3
  import {
4
4
  getInboxesDir,
5
5
  require_proper_lockfile
6
- } from "./chunk-2BIF2NVV.js";
6
+ } from "./chunk-BVSVIN45.js";
7
7
  import {
8
8
  Mutex
9
9
  } from "./chunk-OMX7CUOE.js";
10
10
  import {
11
11
  atomicWriteJSON
12
- } from "./chunk-3UALQ56H.js";
12
+ } from "./chunk-3227DZO4.js";
13
13
  import {
14
14
  createDebugLogger,
15
15
  isNodeError
16
- } from "./chunk-C4K3FEQ2.js";
16
+ } from "./chunk-UX4SGCGN.js";
17
17
  import {
18
18
  init_esbuild_shims
19
19
  } from "./chunk-A4BMJM77.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createTask
5
- } from "./chunk-XU5P23GN.js";
5
+ } from "./chunk-QLDPRILK.js";
6
6
  import {
7
7
  resolveActiveTeamName
8
8
  } from "./chunk-LD2XBG6Z.js";
@@ -11,7 +11,7 @@ import {
11
11
  BaseToolInvocation,
12
12
  ToolDisplayNames,
13
13
  ToolNames
14
- } from "./chunk-TOEGRAVX.js";
14
+ } from "./chunk-BX5YO7UW.js";
15
15
  import {
16
16
  init_esbuild_shims
17
17
  } from "./chunk-A4BMJM77.js";