@qwen-code/qwen-code 0.24.2 → 0.24.3

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 (382) hide show
  1. package/README.md +4 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  3. package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
  4. package/bundled/qc-helper/docs/features/code-review.md +3 -1
  5. package/bundled/qc-helper/docs/qwen-serve.md +1 -1
  6. package/bundled/qc-helper/docs/support/tos-privacy.md +29 -1
  7. package/bundled/review/SKILL.md +8 -7
  8. package/chunks/{MaxSizedBox-ME5JA4KF.js → MaxSizedBox-PVOJQQE2.js} +56 -49
  9. package/chunks/{StandaloneSessionPicker-W3GFW47V.js → StandaloneSessionPicker-RFTENTTJ.js} +74 -67
  10. package/chunks/{acp-subagent-executor-ZFDOLQUK.js → acp-subagent-executor-TQP6HLTE.js} +59 -52
  11. package/chunks/{acpAgent-GRN3VRGG.js → acpAgent-MHLAESGM.js} +203 -162
  12. package/chunks/{agent-I7GJXDQ2.js → agent-XFGNPR4N.js} +38 -32
  13. package/chunks/{agent-headless-CHQTBAY4.js → agent-headless-HXOWC5DL.js} +38 -32
  14. package/chunks/{anthropicContentGenerator-P3PBOK2C.js → anthropicContentGenerator-J22BAFBQ.js} +3 -3
  15. package/chunks/{artifact-tool-3B3YPLNI.js → artifact-tool-WR4WGBUS.js} +3 -2
  16. package/chunks/{askUserQuestion-YIK445UI.js → askUserQuestion-X4DR32XO.js} +3 -2
  17. package/chunks/{bridge-FPDMUBTB.js → bridge-GHWETITW.js} +59 -52
  18. package/chunks/bwrap-execution-LSZQILPP.js +34 -0
  19. package/chunks/{caption-audio-V6S7IOLZ.js → caption-audio-MORSEOKW.js} +5 -4
  20. package/chunks/{caption-image-LKRZR2BO.js → caption-image-XBQMQEWA.js} +5 -4
  21. package/chunks/{channel-management-service-B5JCH6G4.js → channel-management-service-DISO7Z3P.js} +2 -2
  22. package/chunks/{channel-settings-store-3QLN4ATE.js → channel-settings-store-7BHSX2TC.js} +63 -56
  23. package/chunks/{channel-worker-group-M4MSCXVZ.js → channel-worker-group-EJEMLDPE.js} +5 -5
  24. package/chunks/{channel-worker-manager-UEAF66Y2.js → channel-worker-manager-GI3GMPHV.js} +5 -5
  25. package/chunks/{channel-worker-supervisor-KNSB6NQS.js → channel-worker-supervisor-GGTS6MM5.js} +4 -4
  26. package/chunks/{chunk-JQ67JJHH.js → chunk-24TLKGI4.js} +21 -19
  27. package/chunks/{chunk-MOWCV77B.js → chunk-2FZL7GEG.js} +1 -1
  28. package/chunks/{chunk-3UOW7K5U.js → chunk-2PZPYVGY.js} +61 -53
  29. package/chunks/chunk-2SENA3WV.js +2808 -0
  30. package/chunks/{chunk-WLEIIPES.js → chunk-33E234BQ.js} +2 -2
  31. package/chunks/{chunk-JPRL7GPK.js → chunk-3QXU5BXM.js} +6 -6
  32. package/chunks/{chunk-MR5FRME7.js → chunk-3RXCA7OA.js} +2 -2
  33. package/chunks/{chunk-QBVHHMV4.js → chunk-4BKX4QZQ.js} +5 -5
  34. package/chunks/chunk-4M7RD5QQ.js +58 -0
  35. package/chunks/{chunk-2GM7XM6X.js → chunk-4TXKQWKL.js} +1 -1
  36. package/chunks/{chunk-FMJWXNYH.js → chunk-52TZ7P6X.js} +4 -4
  37. package/chunks/{chunk-JU5DOXQM.js → chunk-52YTEDEN.js} +1 -1
  38. package/chunks/{chunk-VE2U4MWB.js → chunk-5AMF3QJJ.js} +58 -32
  39. package/chunks/{chunk-QEPQKAUY.js → chunk-5E4BPDCX.js} +1 -1
  40. package/chunks/{chunk-4XNECBYG.js → chunk-5GYRIOWK.js} +1 -1
  41. package/chunks/{chunk-UKCBRQY5.js → chunk-5HNRXVPC.js} +4 -4
  42. package/chunks/chunk-5R36APDE.js +70 -0
  43. package/chunks/{chunk-RJNH4CSX.js → chunk-5VNH3GBD.js} +35 -5
  44. package/chunks/{chunk-TPDNW6O5.js → chunk-5XEZQQG3.js} +0 -8
  45. package/chunks/{chunk-D4JFXQ6K.js → chunk-64T2EGVQ.js} +3 -3
  46. package/chunks/{chunk-3J43HE2J.js → chunk-6GI7NAZS.js} +1 -1
  47. package/chunks/{chunk-GPKTOXFJ.js → chunk-6LXGKCPH.js} +2 -2
  48. package/chunks/{chunk-UE4ZRIXK.js → chunk-6XGXRH2Q.js} +1 -1
  49. package/chunks/{chunk-UZTJ5WJA.js → chunk-73R6BAOK.js} +1 -1
  50. package/chunks/{chunk-ICISMV7V.js → chunk-7GHC7XR7.js} +4 -4
  51. package/chunks/{chunk-AB5N5FEG.js → chunk-7HI22VYF.js} +1 -1
  52. package/chunks/{chunk-U5JK32FE.js → chunk-7JDVJX7A.js} +28 -5857
  53. package/chunks/{chunk-6GB4CDE4.js → chunk-A5UPWU53.js} +2 -2
  54. package/chunks/{chunk-7HMBOUQG.js → chunk-A5XFEBME.js} +3 -3
  55. package/chunks/{chunk-JG23BJ7Y.js → chunk-AJSG5SMC.js} +2 -2
  56. package/chunks/{chunk-7PQVNBGJ.js → chunk-AJTDW2YD.js} +6 -6
  57. package/chunks/{chunk-TICLGWQT.js → chunk-AOYY54ZY.js} +1 -1
  58. package/chunks/{chunk-E6UTJIPI.js → chunk-ATZ4RQ6I.js} +1 -1
  59. package/chunks/{chunk-QCCRC27E.js → chunk-AV3FOXNF.js} +1 -1
  60. package/chunks/{chunk-EDJCJMEW.js → chunk-B3UM2NWK.js} +1 -1
  61. package/chunks/{chunk-MJJQ5LM4.js → chunk-BC2TGXIK.js} +2 -2
  62. package/chunks/{chunk-T4D3QLUZ.js → chunk-BHU5SD32.js} +1 -1
  63. package/chunks/{chunk-2G3I5XLI.js → chunk-BTDQWQE7.js} +3 -3
  64. package/chunks/{chunk-42QJ7NLB.js → chunk-BVNEEYJM.js} +4 -55
  65. package/chunks/{chunk-XXXA63AB.js → chunk-CEG3V62N.js} +1 -1
  66. package/chunks/{chunk-GT3O7YG4.js → chunk-CGIKEQFI.js} +6 -6
  67. package/chunks/{chunk-65I7S4Z3.js → chunk-CHBZHMBA.js} +2 -35
  68. package/chunks/{chunk-GSMPCYYA.js → chunk-CJ2NHFIU.js} +8 -8
  69. package/chunks/{chunk-M64HFJ3A.js → chunk-D42TSQKU.js} +1 -1
  70. package/chunks/{chunk-NRWMNRBC.js → chunk-D4K23BD4.js} +1 -1
  71. package/chunks/{chunk-FSEZM6ZQ.js → chunk-DACSVV23.js} +1 -1
  72. package/chunks/{chunk-SHLIELH4.js → chunk-DBYIRDFG.js} +4 -4
  73. package/chunks/{chunk-ISF3Z6VK.js → chunk-DEY4A6ZJ.js} +1 -1
  74. package/chunks/{chunk-ES2Y3FEA.js → chunk-EJUVYCCB.js} +1 -1
  75. package/chunks/chunk-ELYIK7SN.js +47 -0
  76. package/chunks/{chunk-TSVKTGQ4.js → chunk-EPBR5TO4.js} +2 -2
  77. package/chunks/{chunk-4LDMRC23.js → chunk-EVNJAS37.js} +10 -7
  78. package/chunks/{chunk-UGLJ75YV.js → chunk-F2VBZ6LC.js} +4 -4
  79. package/chunks/{chunk-CCOIMIDP.js → chunk-F3JJ5TAQ.js} +9 -7
  80. package/chunks/{chunk-CK267TVO.js → chunk-FPFIAK47.js} +2 -2
  81. package/chunks/{chunk-PETY4UMR.js → chunk-FRC4RVRG.js} +1 -1
  82. package/chunks/{chunk-Q554UD37.js → chunk-FS5KMPLT.js} +1 -1
  83. package/chunks/{chunk-RAHX5SNW.js → chunk-FTJYHKI7.js} +1 -1
  84. package/chunks/{chunk-LKV5IRBA.js → chunk-FVACI3OI.js} +3 -3
  85. package/chunks/{chunk-QTEONSAO.js → chunk-G4DQHGSF.js} +3 -3
  86. package/chunks/{chunk-3SQIYYDQ.js → chunk-G7CUNATW.js} +1 -1
  87. package/chunks/{chunk-INLMCZR4.js → chunk-GKFEDGAE.js} +2 -2
  88. package/chunks/{chunk-MYXULCXF.js → chunk-GNGQGEZD.js} +1 -1
  89. package/chunks/{chunk-N63V7CTG.js → chunk-H5VUUFVD.js} +1 -1
  90. package/chunks/{chunk-RFVQJSIW.js → chunk-HDRYBFLF.js} +2 -2
  91. package/chunks/{chunk-EMG7QXJD.js → chunk-HZ5VA3H3.js} +5 -5
  92. package/chunks/{chunk-IXWDQRM4.js → chunk-HZU2DMPO.js} +12 -12
  93. package/chunks/{chunk-FDW5VK44.js → chunk-I3K2QRZ5.js} +1 -1
  94. package/chunks/{chunk-OMHE7I7L.js → chunk-IODSADQ4.js} +1 -1
  95. package/chunks/{chunk-ANKISCKU.js → chunk-JBUMBQAO.js} +12 -2
  96. package/chunks/{chunk-3TJ7LPMA.js → chunk-JCTHL2AB.js} +2 -2
  97. package/chunks/{chunk-2TK7KLDO.js → chunk-JXNPH2EP.js} +2 -2
  98. package/chunks/{chunk-SA4UQS3Y.js → chunk-KEIOGBLQ.js} +1 -1
  99. package/chunks/{chunk-XBOKF4YG.js → chunk-KL2BAPK7.js} +2180 -594
  100. package/chunks/{chunk-W2GM3FPJ.js → chunk-KORAYUXN.js} +16 -14
  101. package/chunks/{chunk-FJWGA4KA.js → chunk-KTKMSEN2.js} +5 -5
  102. package/chunks/{chunk-TAANUOHC.js → chunk-LFIKUSEE.js} +1 -1
  103. package/chunks/{chunk-VQUX7GWP.js → chunk-LWQKWO5I.js} +1710 -3754
  104. package/chunks/{chunk-ZHJSA55C.js → chunk-MHDXEHU5.js} +1 -1
  105. package/chunks/{chunk-LCMK6QMW.js → chunk-MJY6NCQF.js} +19 -17
  106. package/chunks/{chunk-DYGOUAKK.js → chunk-MNM5AZTY.js} +1 -1
  107. package/chunks/{chunk-UVZY7QW2.js → chunk-MSX7BUUO.js} +2 -2
  108. package/chunks/{chunk-REXIMUUM.js → chunk-N6APTOMX.js} +1 -1
  109. package/chunks/{chunk-QO2IAC7M.js → chunk-NAH3EHAD.js} +4 -4
  110. package/chunks/{chunk-D2YMJSVP.js → chunk-NBAZASOT.js} +16 -16
  111. package/chunks/{chunk-JPYUKGCM.js → chunk-NL5EDW4G.js} +3 -3
  112. package/chunks/{chunk-RGD7JAX6.js → chunk-NOTDB3KX.js} +34 -21
  113. package/chunks/{chunk-U6YCUEJQ.js → chunk-NSQYCACH.js} +2 -2
  114. package/chunks/chunk-NXRQI7RF.js +5861 -0
  115. package/chunks/{chunk-7WIDY7UD.js → chunk-O4OOA2XB.js} +4 -4
  116. package/chunks/{chunk-SZBKX3U3.js → chunk-ONVXBTN3.js} +4 -4
  117. package/chunks/{chunk-3GH6T7SH.js → chunk-OOBJCVOC.js} +11 -11
  118. package/chunks/{chunk-64LX7PWR.js → chunk-OOGQBSTQ.js} +99 -55
  119. package/chunks/{chunk-DPZAQ4XR.js → chunk-OTKB5NBZ.js} +8 -8
  120. package/chunks/{chunk-TDWH5KJE.js → chunk-OU26ZZOL.js} +1 -1
  121. package/chunks/{chunk-5YJEHFWB.js → chunk-OUKL6WIM.js} +2 -2
  122. package/chunks/{chunk-LELCSQ67.js → chunk-PI3663GU.js} +3 -3
  123. package/chunks/{chunk-E5JQUFYU.js → chunk-PPLSJANE.js} +2 -2
  124. package/chunks/{chunk-EMK56JRM.js → chunk-PYFGVKPR.js} +2 -2
  125. package/chunks/{chunk-X5N23GYD.js → chunk-Q2TJZRNE.js} +2 -2
  126. package/chunks/{chunk-TOCM6MGP.js → chunk-QQSN6DYY.js} +2 -2
  127. package/chunks/{chunk-5FATGXYO.js → chunk-SCCA4KIA.js} +8 -8
  128. package/chunks/{chunk-2PZMELFA.js → chunk-T4EEDGIV.js} +8 -8
  129. package/chunks/{chunk-QHBVY32Y.js → chunk-TEFMMDNL.js} +11 -11
  130. package/chunks/{chunk-DBOYH5UO.js → chunk-TK5X3N6Z.js} +1 -1
  131. package/chunks/{chunk-K2PTCHZG.js → chunk-TNANUFVW.js} +33 -27
  132. package/chunks/{chunk-MXOOWEZK.js → chunk-TTAC3FUB.js} +1 -1
  133. package/chunks/{chunk-5ROHUAQL.js → chunk-TULCOWNT.js} +8 -8
  134. package/chunks/{chunk-BJEZBTUO.js → chunk-TUYJ6S3L.js} +1 -1
  135. package/chunks/{chunk-KLL6VL42.js → chunk-TW7KLLRI.js} +46 -21
  136. package/chunks/{chunk-AK35QRVW.js → chunk-U5P7R5TF.js} +2 -2
  137. package/chunks/{chunk-PGYKW4PY.js → chunk-UI5A24EA.js} +1 -1
  138. package/chunks/{chunk-VYCIVHT7.js → chunk-URFKH5UA.js} +50 -29
  139. package/chunks/{chunk-AFLJYB2T.js → chunk-UYW4ZR6P.js} +5 -5
  140. package/chunks/{chunk-R6MPLPS7.js → chunk-V4VSJQKD.js} +2 -2
  141. package/chunks/{chunk-GZJLGE6Y.js → chunk-VBEEYWD5.js} +3 -3
  142. package/chunks/{chunk-TCO2ZOLV.js → chunk-VD66W3RA.js} +3 -3
  143. package/chunks/{chunk-5XWVWTLB.js → chunk-VM3RQNIN.js} +2 -2
  144. package/chunks/{chunk-HYLPVFWL.js → chunk-VT3MGD7H.js} +1 -1
  145. package/chunks/{chunk-6FZEVPBU.js → chunk-VZ6YDHDV.js} +1 -1
  146. package/chunks/{chunk-BIQXRY5B.js → chunk-W4T4DHDJ.js} +86 -5
  147. package/chunks/{chunk-GULGI7D3.js → chunk-WJ4NNSW7.js} +6 -6
  148. package/chunks/{chunk-GI7MRANQ.js → chunk-WJ6HMAU7.js} +3 -3
  149. package/chunks/{chunk-KVMLTZTU.js → chunk-WK5KFFP6.js} +1 -1
  150. package/chunks/{chunk-MOTCWW3N.js → chunk-WMHO25KU.js} +2 -2
  151. package/chunks/{chunk-TBVO3WMD.js → chunk-WQ7QSGFJ.js} +1 -1
  152. package/chunks/{chunk-4ZYD4QI5.js → chunk-WXHBA2D3.js} +1 -1
  153. package/chunks/{chunk-2I5YG2XF.js → chunk-X4ILFHRH.js} +1 -1
  154. package/chunks/{chunk-O6NXPJIT.js → chunk-XLN46XQ2.js} +11 -11
  155. package/chunks/{chunk-CXXHL3XJ.js → chunk-XPXMRRG3.js} +1 -1
  156. package/chunks/{chunk-ZJSCBHAJ.js → chunk-Y62EC3SO.js} +7 -7
  157. package/chunks/{chunk-S564PKIP.js → chunk-YAQ6GGRB.js} +1 -1
  158. package/chunks/{chunk-2VYTJ4MO.js → chunk-YDX2EK5J.js} +4 -4
  159. package/chunks/{chunk-PKX5AAEO.js → chunk-YIVRT5RA.js} +1 -1
  160. package/chunks/chunk-YPKYQHFS.js +25 -0
  161. package/chunks/{chunk-LCIR5C23.js → chunk-YWRTS5OJ.js} +3 -3
  162. package/chunks/{chunk-N75DNP5S.js → chunk-YYNQG3JO.js} +1 -1
  163. package/chunks/{chunk-IE7SAZGL.js → chunk-Z6Y6SFX7.js} +1 -1
  164. package/chunks/chunk-ZWMLPCLV.js +168 -0
  165. package/chunks/{clip-audio-OL5ZHBOH.js → clip-audio-4GTC7XXJ.js} +3 -2
  166. package/chunks/{clip-image-GKDHKWSA.js → clip-image-CVP6R7WG.js} +3 -2
  167. package/chunks/{clip-video-OE4GBBS2.js → clip-video-RMIOCVAT.js} +3 -2
  168. package/chunks/{codex-subagent-executor-XTYEHFTH.js → codex-subagent-executor-JQPB5UH6.js} +61 -54
  169. package/chunks/{config-utils-A7FSZDCO.js → config-utils-3PL3OQOI.js} +57 -50
  170. package/chunks/{container-execution-environment-XS6X47MH.js → container-execution-environment-RPXKL3HT.js} +9 -0
  171. package/chunks/{contextCommand-ODDENDGH.js → contextCommand-Z6ZTWN7F.js} +57 -50
  172. package/chunks/{convert-image-JT75DK5E.js → convert-image-24SLHDCH.js} +3 -2
  173. package/chunks/{core-runtime-7OWIKZP7.js → core-runtime-5KHWEMVQ.js} +55 -48
  174. package/chunks/{create-sub-session-MNPEQ4J2.js → create-sub-session-3RVVDCXG.js} +3 -2
  175. package/chunks/{create-sub-session-YFYNWAU3.js → create-sub-session-FB5YJFI5.js} +56 -49
  176. package/chunks/{cron-create-RHRWMLNX.js → cron-create-NXQ27MQQ.js} +2 -1
  177. package/chunks/{cron-delete-CTZBKOT2.js → cron-delete-2F75IAB5.js} +2 -1
  178. package/chunks/{cron-list-SGNRBA52.js → cron-list-7IEDSU4D.js} +2 -1
  179. package/chunks/{daemon-BPTR7VCR.js → daemon-25CH5S3X.js} +4 -1
  180. package/chunks/{daemon-git-worktree-guard-SJ7YWRBD.js → daemon-git-worktree-guard-LQ3XGSBU.js} +57 -50
  181. package/chunks/{daemon-status-provider-MCQ3OGR5.js → daemon-status-provider-PCJP7L7Z.js} +64 -57
  182. package/chunks/{daemon-trust-policy-BUGBZHZX.js → daemon-trust-policy-KXZY6JQN.js} +61 -54
  183. package/chunks/{daemon-trust-policy-monitor-7Q7XOMIB.js → daemon-trust-policy-monitor-QAZ4KXVK.js} +61 -54
  184. package/chunks/{deferred-core-runtime-Q2534BF7.js → deferred-core-runtime-UCXREDYD.js} +55 -48
  185. package/chunks/{display-image-XBM4DXNT.js → display-image-WYMDGOWV.js} +3 -2
  186. package/chunks/{downsample-audio-ZVH75DNJ.js → downsample-audio-T5P5IEPZ.js} +3 -2
  187. package/chunks/{downsample-image-4D6XYIRR.js → downsample-image-6L67FEII.js} +3 -2
  188. package/chunks/{downscale-video-CPSH7IDV.js → downscale-video-RYVKNSAU.js} +3 -2
  189. package/chunks/{edit-H5N6BDMS.js → edit-VPPFWFX7.js} +40 -33
  190. package/chunks/{enter-worktree-4TWVSLRD.js → enter-worktree-UF4HQH7B.js} +7 -5
  191. package/chunks/{enterPlanMode-WTIJMZPK.js → enterPlanMode-6TDM4B6A.js} +38 -32
  192. package/chunks/{environment-BHQMXGGR.js → environment-FXLJ7ENW.js} +57 -50
  193. package/chunks/{errors-Q3CZYRPL.js → errors-S6CL7DPU.js} +57 -50
  194. package/chunks/{exec-YFYZG5FI.js → exec-G6SFU4KT.js} +2 -1
  195. package/chunks/{execution-tool-RXGXRHKL.js → execution-tool-5OEN4XN4.js} +41 -34
  196. package/chunks/{execution-worker-5FBYMFHO.js → execution-worker-SNHQA7RC.js} +49 -42
  197. package/chunks/{exit-worktree-X5TWEER7.js → exit-worktree-KGKIHZF7.js} +7 -5
  198. package/chunks/{exitPlanMode-55IBAAUE.js → exitPlanMode-ZCPQQO2Q.js} +38 -32
  199. package/chunks/{extract-audio-WMI3JVZW.js → extract-audio-5YD7BSS3.js} +3 -2
  200. package/chunks/{extract-keyframes-XWYFKXJY.js → extract-keyframes-6SMSQOK5.js} +3 -2
  201. package/chunks/{fast-path-2QQ5KBFD.js → fast-path-VTQRLIDS.js} +6 -6
  202. package/chunks/{fast-path-settings-TLOSL5ML.js → fast-path-settings-4BKAJEUA.js} +3 -2
  203. package/chunks/{glob-VTPB5X62.js → glob-WUNZEBU7.js} +39 -33
  204. package/chunks/{goal-tools-YHMFTEOO.js → goal-tools-FWW63AA2.js} +38 -32
  205. package/chunks/{grep-AXABIEJD.js → grep-AIFXREQI.js} +4 -3
  206. package/chunks/{handleAutoUpdate-C3NOVKTN.js → handleAutoUpdate-H5X5JCSF.js} +58 -51
  207. package/chunks/{i18n-MSGWV3QQ.js → i18n-BRMNE6B6.js} +56 -49
  208. package/chunks/{image-gen-JK7PLS5E.js → image-gen-F4QUJLNV.js} +2 -1
  209. package/chunks/{initializer-HWN6XOPB.js → initializer-ZUO7ORBA.js} +61 -54
  210. package/chunks/{installationInfo-ABC2KRUN.js → installationInfo-DTMVU7BI.js} +55 -48
  211. package/chunks/{list-LF3J3XDD.js → list-EEGHEIRM.js} +64 -57
  212. package/chunks/{list-agents-6EQJPTZS.js → list-agents-QYEGD7BM.js} +2 -1
  213. package/chunks/{llm-NO6O6P34.js → llm-5E4HK3VQ.js} +144 -118
  214. package/chunks/{llm-content-generator-7HAG22CO.js → llm-content-generator-Z772NKES.js} +3 -3
  215. package/chunks/{loadedSettingsAdapter-AVY5HFYC.js → loadedSettingsAdapter-BCWAHAEI.js} +61 -54
  216. package/chunks/{local-execution-environment-APGBUWE4.js → local-execution-environment-W6LZ7CUB.js} +49 -42
  217. package/chunks/{loggingContentGenerator-4L2WNHZ6.js → loggingContentGenerator-OOHXYIMS.js} +40 -34
  218. package/chunks/{loop-wakeup-RF3XTGKT.js → loop-wakeup-76JNT4WU.js} +2 -1
  219. package/chunks/{ls-FDTLJBRV.js → ls-D7KTHDNN.js} +3 -2
  220. package/chunks/{lsp-DFJWXIPB.js → lsp-6UUCOSFX.js} +2 -1
  221. package/chunks/{managed-npm-update-J2ZPD66O.js → managed-npm-update-TDTR2CXP.js} +55 -48
  222. package/chunks/{mcp-3PIE3HYX.js → mcp-H7KOGB3R.js} +61 -54
  223. package/chunks/{model-call-collection-ZGJESJQG.js → model-call-collection-6XWFC7TH.js} +4 -3
  224. package/chunks/{model-configuration-TIUNBSA7.js → model-configuration-LQV2CJZZ.js} +61 -54
  225. package/chunks/{modelConfigUtils-5AOF7V2F.js → modelConfigUtils-3MJ6OTIS.js} +56 -49
  226. package/chunks/{monitor-KQQHCVPC.js → monitor-SXFWYHEN.js} +147 -80
  227. package/chunks/{nonInteractiveCli-DRHFARV2.js → nonInteractiveCli-JUWSNYL2.js} +100 -93
  228. package/chunks/{nonInteractiveToolExecutor-ZT47OSWE.js → nonInteractiveToolExecutor-3M2TJ5RN.js} +39 -33
  229. package/chunks/{notebook-edit-W2BQ4QPF.js → notebook-edit-BSQYYXUQ.js} +39 -33
  230. package/chunks/{ocr-image-2PSF2IAR.js → ocr-image-5S3CK7CF.js} +5 -4
  231. package/chunks/{omni-TNXXOXEW.js → omni-VT3TTIHP.js} +13 -12
  232. package/chunks/{openaiContentGenerator-G73YTTX6.js → openaiContentGenerator-4QM3346J.js} +17 -14
  233. package/chunks/{openaiResponsesContentGenerator-GT2QA7HT.js → openaiResponsesContentGenerator-KNBUZDP3.js} +2 -2
  234. package/chunks/{pidfile-65TYNQZO.js → pidfile-3HRF6UJA.js} +55 -48
  235. package/chunks/{processUtils-OYVVZD7E.js → processUtils-V56V4PBU.js} +2 -2
  236. package/chunks/{prompt-terminal-ledger-SOHAMM2Z.js → prompt-terminal-ledger-WOPLWLBQ.js} +56 -49
  237. package/chunks/{qwenContentGenerator-3FMMD3SU.js → qwenContentGenerator-VQ7N3TOC.js} +41 -35
  238. package/chunks/{reactive-degrade-RCHTZLHO.js → reactive-degrade-FPODY2BC.js} +10 -9
  239. package/chunks/{read-file-ZO5MAQRF.js → read-file-GQLJ3M7Z.js} +10 -7
  240. package/chunks/{read-mcp-resource-B2GMAZPJ.js → read-mcp-resource-5LHGYLKO.js} +2 -1
  241. package/chunks/{recall-media-memory-tool-LV4MEI4V.js → recall-media-memory-tool-KJSYTPWC.js} +2 -1
  242. package/chunks/{record-artifact-YZC2JO6M.js → record-artifact-HBLFENQR.js} +5 -3
  243. package/chunks/{record-source-UD4VB654.js → record-source-R573ATSB.js} +6 -5
  244. package/chunks/{report-findings-3VDQHUWI.js → report-findings-KJ4TYZ36.js} +6 -4
  245. package/chunks/{request-shutdown-IIQL6AP6.js → request-shutdown-NO5ZWADD.js} +5 -4
  246. package/chunks/{resumeHistoryUtils-WVAODL3D.js → resumeHistoryUtils-7LZ5SWKC.js} +61 -54
  247. package/chunks/{ripGrep-ICSMQC67.js → ripGrep-TBN4ADUY.js} +13 -10
  248. package/chunks/{run-qwen-serve-7JVXBD5X.js → run-qwen-serve-6GXQP7DD.js} +345 -122
  249. package/chunks/{runtime-SPDHMWL2.js → runtime-PBC4QVLS.js} +64 -57
  250. package/chunks/{sandbox-AGO4URGF.js → sandbox-SXY2ZJDN.js} +63 -56
  251. package/chunks/{sandboxConfig-GQSKEK3A.js → sandboxConfig-WZHAEK3H.js} +56 -49
  252. package/chunks/{scheduled-tasks-NESFIYHB.js → scheduled-tasks-WEC66H2D.js} +62 -55
  253. package/chunks/{scheduler-IMSC6H47.js → scheduler-MPMBQKNN.js} +57 -50
  254. package/chunks/{sdk-exporters-http-33ZUNG6F.js → sdk-exporters-http-LOJRQMTP.js} +2 -1
  255. package/chunks/{sdk-impl-UDJ5SKN5.js → sdk-impl-GRYEDRD7.js} +4 -3
  256. package/chunks/{send-message-5VICTSBX.js → send-message-POBGHN4M.js} +5 -4
  257. package/chunks/{serve-GE2YQFZW.js → serve-EV4HTTAM.js} +61 -54
  258. package/chunks/{server-LZDC5WLZ.js → server-KQJAQD55.js} +322 -189
  259. package/chunks/{session-NAL5T5QR.js → session-IRBWRKQX.js} +101 -94
  260. package/chunks/{session-attachments-root-SDTVDDHX.js → session-attachments-root-L75Y47VK.js} +55 -48
  261. package/chunks/{session-pr-refresh-QLHN7R76.js → session-pr-refresh-5MHLCSC2.js} +61 -54
  262. package/chunks/{settings-WC7MAKFU.js → settings-MI63DAKE.js} +60 -53
  263. package/chunks/{shell-UE45BTE7.js → shell-AQVVGISM.js} +38 -32
  264. package/chunks/{skill-NDQFTO4T.js → skill-VBSS653C.js} +12 -9
  265. package/chunks/{skill-settings-5QJZJXOA.js → skill-settings-MNLFQXDX.js} +61 -54
  266. package/chunks/{spawnChannel-DOUIQJXZ.js → spawnChannel-DMP56IUE.js} +58 -51
  267. package/chunks/{standalone-update-2DN4ELDA.js → standalone-update-I3RV7IE7.js} +57 -50
  268. package/chunks/{start-opentui-ui-LA3LPF6Y.js → start-opentui-ui-GJOXXN5L.js} +133 -124
  269. package/chunks/{startInteractiveUI-FESZ72F3.js → startInteractiveUI-TBIQDZLE.js} +139 -131
  270. package/chunks/{syntheticOutput-IBR4IZUU.js → syntheticOutput-DTUQ3N3J.js} +3 -2
  271. package/chunks/{task-create-LTAMU773.js → task-create-2LMS6ZFJ.js} +6 -5
  272. package/chunks/{task-list-JROVWKLY.js → task-list-D22BRKR6.js} +2 -1
  273. package/chunks/{task-stop-MHQKQDFQ.js → task-stop-UZDE2G5W.js} +3 -2
  274. package/chunks/{task-update-RMYMZM6A.js → task-update-RHBIB6YU.js} +6 -5
  275. package/chunks/{team-create-YNUMJ5GO.js → team-create-K7QPZ6P2.js} +40 -34
  276. package/chunks/{team-delete-EX7BR2LA.js → team-delete-WG4S3QD4.js} +2 -1
  277. package/chunks/{team-plan-approval-AZXG3HFN.js → team-plan-approval-LMMXJ44D.js} +38 -32
  278. package/chunks/{terminal-image-renderer-ZNSJFZVA.js → terminal-image-renderer-SU2YYNAJ.js} +57 -50
  279. package/chunks/{theme-manager-5HQOVK6C.js → theme-manager-BC6DCE6C.js} +55 -48
  280. package/chunks/{todoWrite-BF3INMCU.js → todoWrite-2DRDC5EG.js} +2 -1
  281. package/chunks/{tool-call-ZVU2G5XX.js → tool-call-WBTV7ZZW.js} +6 -5
  282. package/chunks/{tool-result-media-CGSR3JMM.js → tool-result-media-DACFNH2O.js} +10 -9
  283. package/chunks/{tool-search-ANXFKRMW.js → tool-search-Y3NA5GTO.js} +13 -10
  284. package/chunks/{total-session-admission-YBOZM7OG.js → total-session-admission-VXAFAHGR.js} +59 -52
  285. package/chunks/{transcribe-audio-AQZWRIF5.js → transcribe-audio-HGBJBFP4.js} +4 -3
  286. package/chunks/{trustedFolders-4ANVY47B.js → trustedFolders-PGLKXLUG.js} +56 -49
  287. package/chunks/{understand-video-segments-R2UXRHKY.js → understand-video-segments-5NFKV5QK.js} +5 -4
  288. package/chunks/{update-relaunch-A66PFRWV.js → update-relaunch-35THHY6N.js} +5 -5
  289. package/chunks/{updateCheck-CGW4ZICA.js → updateCheck-AU6FFINN.js} +57 -50
  290. package/chunks/{upload-config-53PGAD6C.js → upload-config-2DB2HD4X.js} +4 -4
  291. package/chunks/{useAutoAcceptIndicator-LCCWXBQX.js → useAutoAcceptIndicator-K3M2TEIO.js} +62 -55
  292. package/chunks/{validateNonInterActiveAuth-HGHZE5G5.js → validateNonInterActiveAuth-KTKBE2G4.js} +97 -90
  293. package/chunks/{version-AYPF2XZG.js → version-SGFPFOBG.js} +1 -1
  294. package/chunks/{web-fetch-BCIFCTLU.js → web-fetch-ME4GDH77.js} +12 -9
  295. package/chunks/{web-search-E262B3IC.js → web-search-7EZABURD.js} +6 -5
  296. package/chunks/{web-shell-static-G654DFN2.js → web-shell-static-4SY6HOTM.js} +4 -3
  297. package/chunks/{workflow-5UJVVBKP.js → workflow-IZZNKNON.js} +41 -35
  298. package/chunks/{workspace-providers-status-ZNWPVLFH.js → workspace-providers-status-AA7TXXGS.js} +66 -59
  299. package/chunks/{workspace-registration-store-CSOD2L3Q.js → workspace-registration-store-OLL5737M.js} +1 -1
  300. package/chunks/{workspace-registry-YLT7CXIQ.js → workspace-registry-7M2GJXVY.js} +59 -52
  301. package/chunks/{workspace-runtime-coordinator-VRJNYOYA.js → workspace-runtime-coordinator-644IZPWD.js} +60 -53
  302. package/chunks/{workspace-service-LD63VWNX.js → workspace-service-RJOV7URE.js} +65 -58
  303. package/chunks/{workspace-skills-status-OXAHXVR5.js → workspace-skills-status-TYYFTIPU.js} +64 -57
  304. package/chunks/{workspace-trust-reconciler-EMAYOLR6.js → workspace-trust-reconciler-64FF3I3X.js} +65 -58
  305. package/chunks/{write-file-GSN6CT5R.js → write-file-GWRXJDPC.js} +41 -34
  306. package/chunks/{zoom-image-5CPVN2KD.js → zoom-image-CNMQP3QF.js} +12 -9
  307. package/cli.js +12 -12
  308. package/execution-worker.js +1 -1
  309. package/export-transcript-document.css +1 -1
  310. package/export-transcript-document.js +105 -101
  311. package/package.json +3 -3
  312. package/sandboxBwrapRelay.js +29 -3
  313. package/web-shell/assets/{abnfDiagram-VCTEODGH-BoGedP8r.js → abnfDiagram-VCTEODGH-DjZkVYSo.js} +1 -1
  314. package/web-shell/assets/{arc-B0xm-EAq.js → arc-BVsUeysQ.js} +1 -1
  315. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DiNagfRJ.js → architectureDiagram-5GKGNRK7-Ctfncb9S.js} +1 -1
  316. package/web-shell/assets/{blockDiagram-NRAW4CY4-EEcQWUWl.js → blockDiagram-NRAW4CY4-jFV9xKqs.js} +1 -1
  317. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BvW_nn93.js → c4Diagram-UCG6FXSJ-CU_A3x5O.js} +1 -1
  318. package/web-shell/assets/capture-worklet-DvBxuiSL.js +76 -0
  319. package/web-shell/assets/channel-CE8bZRZ2.js +1 -0
  320. package/web-shell/assets/{chunk-2Q5K7J3B-B4jI17Cn.js → chunk-2Q5K7J3B-CDlmNk5p.js} +1 -1
  321. package/web-shell/assets/{chunk-5VM5RSS4-BJqaAvlZ.js → chunk-5VM5RSS4-BMiAkn3U.js} +1 -1
  322. package/web-shell/assets/{chunk-F27PBJKO-C0Ju4Hf-.js → chunk-F27PBJKO-Bvz9m7YM.js} +1 -1
  323. package/web-shell/assets/{chunk-G27WJ6UU-I1BYIJwg.js → chunk-G27WJ6UU-CGs4AxN_.js} +1 -1
  324. package/web-shell/assets/{chunk-JWPE2WC7-Cnyab3JU.js → chunk-JWPE2WC7-CKPFVJ7h.js} +1 -1
  325. package/web-shell/assets/{chunk-LCL6LL3I-DV-HUbga.js → chunk-LCL6LL3I-Dt_Ff67h.js} +1 -1
  326. package/web-shell/assets/{chunk-POPQ4Y6H-zromK3LN.js → chunk-POPQ4Y6H-D3wHu3Ch.js} +1 -1
  327. package/web-shell/assets/{chunk-SVP7TREG-CRTcS0Li.js → chunk-SVP7TREG-NFtvrgz1.js} +1 -1
  328. package/web-shell/assets/{chunk-XXDRQBXY-C7t9Y5dp.js → chunk-XXDRQBXY-Cw03Ej3w.js} +1 -1
  329. package/web-shell/assets/classDiagram-DTDB5LWJ-1hCsbRjl.js +1 -0
  330. package/web-shell/assets/classDiagram-v2-JRS7N3AN-1hCsbRjl.js +1 -0
  331. package/web-shell/assets/{cose-bilkent-JH36ORCC-pYqimMDR.js → cose-bilkent-JH36ORCC-DFD3DmsV.js} +1 -1
  332. package/web-shell/assets/{cynefin-OW5HDTMX-CZE7POLH.js → cynefin-OW5HDTMX-Daym82U1.js} +1 -1
  333. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DAiwFQTo.js → cynefinDiagram-5FMLGOSQ-CTa5PgQ3.js} +1 -1
  334. package/web-shell/assets/{dagre-3AP2YEHR-CujXJf4M.js → dagre-3AP2YEHR-CuORvpUv.js} +1 -1
  335. package/web-shell/assets/{diagram-S7CK7UJ4-jA7L0GxC.js → diagram-S7CK7UJ4-Ds71He45.js} +1 -1
  336. package/web-shell/assets/{diagram-UQ7AKVKN-Cq-AJp-u.js → diagram-UQ7AKVKN-DEWbfBhf.js} +1 -1
  337. package/web-shell/assets/{diagram-VSXAHHWV-Drk-2m9j.js → diagram-VSXAHHWV-moxkWVTb.js} +1 -1
  338. package/web-shell/assets/{diagram-VX7I27RA-BvjF2q85.js → diagram-VX7I27RA-DMtWByXT.js} +1 -1
  339. package/web-shell/assets/{diagram-Z3DM3KII-DFFJyEWC.js → diagram-Z3DM3KII-D8csrww3.js} +1 -1
  340. package/web-shell/assets/{ebnfDiagram-PWID7BFC-552tv6tR.js → ebnfDiagram-PWID7BFC-CijCPSwq.js} +1 -1
  341. package/web-shell/assets/{erDiagram-SSCWMZ5O-BO6qRo35.js → erDiagram-SSCWMZ5O-Bz0f1Ytn.js} +1 -1
  342. package/web-shell/assets/{flowDiagram-A5DVABFB-DCxuaOR6.js → flowDiagram-A5DVABFB-BjN3xBgP.js} +1 -1
  343. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BkKh0yeR.js → ganttDiagram-EL5Y4UJY-CossRCD9.js} +1 -1
  344. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-BQlQLZ8w.js → gitGraphDiagram-WWUBYQGX-BCpZDwQX.js} +1 -1
  345. package/web-shell/assets/{index-lb-zgZOV.js → index-C-WVh8Fm.js} +1 -1
  346. package/web-shell/assets/{index-B0bERnDx.js → index-CIE7rUer.js} +524 -489
  347. package/web-shell/assets/index-LyplXTTk.css +36 -0
  348. package/web-shell/assets/{infoDiagram-RXCK75RN-7Ba9Yqy8.js → infoDiagram-RXCK75RN-C2Vwsw4Z.js} +1 -1
  349. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-I6Gp1QB4.js → ishikawaDiagram-5VMMS53U-DkDEBYFn.js} +1 -1
  350. package/web-shell/assets/{journeyDiagram-EYS64GPL-BhgZwHgO.js → journeyDiagram-EYS64GPL-DCTEMRE3.js} +1 -1
  351. package/web-shell/assets/{kanban-definition-3QL26DDD-D9Dp43hm.js → kanban-definition-3QL26DDD-D1r1XE8n.js} +1 -1
  352. package/web-shell/assets/{layout-CgsZclxS.js → layout-CX0-JUt4.js} +1 -1
  353. package/web-shell/assets/{linear-Drh5DEW5.js → linear-Bg6PoA8B.js} +1 -1
  354. package/web-shell/assets/{mermaid.core-CDSrg0Wk.js → mermaid.core-q6WTQapr.js} +6 -6
  355. package/web-shell/assets/{mindmap-definition-FBJOCRG2-C6EqGkzE.js → mindmap-definition-FBJOCRG2-CsQVNPfK.js} +1 -1
  356. package/web-shell/assets/{pegDiagram-XKGWAZYB-pZrH8Go8.js → pegDiagram-XKGWAZYB-CvJB7Sma.js} +1 -1
  357. package/web-shell/assets/{pieDiagram-E7YTZNPT-BMOrGNAB.js → pieDiagram-E7YTZNPT-CBLnv-fW.js} +1 -1
  358. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-aOjXRFWV.js → quadrantDiagram-AXDQQJYC-B9u2xeJG.js} +1 -1
  359. package/web-shell/assets/{railroadDiagram-O6MQD6OU-C4V6eoOZ.js → railroadDiagram-O6MQD6OU-DLTUxIOO.js} +1 -1
  360. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C6NZbgbz.js → requirementDiagram-EFPCY7ZU-Dfl6QlBf.js} +1 -1
  361. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C7lEEAPR.js → sankeyDiagram-P5KCCOFB-CGw1J6DR.js} +1 -1
  362. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DSM8FnIj.js → sequenceDiagram-WJ2MYXX4-DNaPdQin.js} +1 -1
  363. package/web-shell/assets/{sizeCapture-X5ZJPWSS-BUvKK3KC.js → sizeCapture-X5ZJPWSS-C0lEm8df.js} +1 -1
  364. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BnMNYnSz.js → stateDiagram-HBIQ2CUA-DPzGUm1p.js} +1 -1
  365. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-jD2z0tDM.js +1 -0
  366. package/web-shell/assets/{swimlanes-XN3QIQJK-5wCXDaoD.js → swimlanes-XN3QIQJK-BQiJmDZ1.js} +1 -1
  367. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BdBIJlun.js +8 -0
  368. package/web-shell/assets/{timeline-definition-24CTP7MA-HwXl1O0d.js → timeline-definition-24CTP7MA-K5AxZP5Q.js} +1 -1
  369. package/web-shell/assets/{vennDiagram-4TSXK5OY-lz3VObUA.js → vennDiagram-4TSXK5OY-EBtlVIkN.js} +1 -1
  370. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-29xS19u_.js → wardleyDiagram-VM6X3IG4-DVFZJsSs.js} +1 -1
  371. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-BY8S5eJH.js → xychartDiagram-S5SC5T6Z-BVdZgHjH.js} +1 -1
  372. package/web-shell/index.html +2 -2
  373. package/web-shell/sw.js +1 -1
  374. package/web-shell/assets/channel-B_cQkC7L.js +0 -1
  375. package/web-shell/assets/classDiagram-DTDB5LWJ-Cun05rpU.js +0 -1
  376. package/web-shell/assets/classDiagram-v2-JRS7N3AN-Cun05rpU.js +0 -1
  377. package/web-shell/assets/index-iUOVxoEW.css +0 -36
  378. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D9jbQn8y.js +0 -1
  379. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DX2chy2x.js +0 -8
  380. package/chunks/{chunk-I2GU2HMQ.js → chunk-M6SELBSG.js} +5 -5
  381. /package/chunks/{chunk-JRP4GQAF.js → chunk-S5SS7OXV.js} +0 -0
  382. /package/chunks/{chunk-KA72THKQ.js → chunk-TOLTIUAR.js} +0 -0
@@ -7,12 +7,12 @@ import {
7
7
  hostAssignsIpv6Loopback,
8
8
  isOwnInterfaceAddress
9
9
  } from "./chunk-24FVUD5P.js";
10
- import {
11
- RUNTIME_STARTUP_CANCELLED_MESSAGE
12
- } from "./chunk-QUPXZXLV.js";
13
10
  import {
14
11
  resolveRemoteServeToken
15
12
  } from "./chunk-F23YN37B.js";
13
+ import {
14
+ RUNTIME_STARTUP_CANCELLED_MESSAGE
15
+ } from "./chunk-QUPXZXLV.js";
16
16
  import {
17
17
  ACCESS_LOG_CONTROLLER_LOCAL,
18
18
  CAPABILITIES_SCHEMA_VERSION,
@@ -51,7 +51,7 @@ import {
51
51
  prepareManagedScratchRoot,
52
52
  resolveAcpHttpEnabled,
53
53
  toDaemonStatusMemoryLimits
54
- } from "./chunk-3GH6T7SH.js";
54
+ } from "./chunk-OOBJCVOC.js";
55
55
  import {
56
56
  ConversationDirectoryIdentityError,
57
57
  assertExactConversationRootIdentity,
@@ -64,24 +64,28 @@ import {
64
64
  materializeConversationDirectoryIdentity,
65
65
  revalidateConversationRootIdentity
66
66
  } from "./chunk-PB7JBAHF.js";
67
- import {
68
- setDeferredRuntimeRequestTiming
69
- } from "./chunk-LAUEEBDL.js";
70
67
  import {
71
68
  formatHostForAuthority,
72
69
  isLoopbackAddress,
73
70
  isLoopbackBind
74
71
  } from "./chunk-DMEUXLSS.js";
72
+ import {
73
+ setDeferredRuntimeRequestTiming
74
+ } from "./chunk-LAUEEBDL.js";
75
75
  import {
76
76
  normalizeSessionIdForLookup
77
77
  } from "./chunk-ZEZKIS2K.js";
78
78
  import {
79
79
  require_express
80
- } from "./chunk-MOWCV77B.js";
80
+ } from "./chunk-2FZL7GEG.js";
81
81
  import {
82
82
  resolveWebShellDir
83
83
  } from "./chunk-FBX2SDQ4.js";
84
84
  import "./chunk-NYWWQ437.js";
85
+ import {
86
+ ConversationRuntimeOwnershipError,
87
+ LIVE_HOST_PROTOCOL_VERSION
88
+ } from "./chunk-TBUYRX6R.js";
85
89
  import {
86
90
  resolveSessionRestoreTimeoutMs
87
91
  } from "./chunk-4JRM2BSM.js";
@@ -106,29 +110,25 @@ import {
106
110
  resolveChannelCwd
107
111
  } from "./chunk-VGLXXHTF.js";
108
112
  import {
109
- ConversationRuntimeOwnershipError,
110
- LIVE_HOST_PROTOCOL_VERSION
111
- } from "./chunk-TBUYRX6R.js";
113
+ assertChannelControlWorkspaceCapacity
114
+ } from "./chunk-VT3MGD7H.js";
115
+ import {
116
+ LOAD_REPLAY_META_KEY
117
+ } from "./chunk-FL4QZ67W.js";
118
+ import "./chunk-OY4DP3XV.js";
112
119
  import "./chunk-CKXUWR6I.js";
113
120
  import "./chunk-TZBFVXNX.js";
114
121
  import {
115
122
  consumeServeFastPathRejectedLoaderKeys,
116
123
  loadServeFastPathSettings,
117
124
  preResolveServeFastPathHomeEnvOverrides
118
- } from "./chunk-BJEZBTUO.js";
119
- import "./chunk-BIQXRY5B.js";
125
+ } from "./chunk-TUYJ6S3L.js";
126
+ import "./chunk-W4T4DHDJ.js";
120
127
  import {
121
128
  resolveMaxRegisteredWorkspaces,
122
129
  resolveWorkspaceInputs,
123
130
  workspaceRegistrationId
124
- } from "./chunk-FSEZM6ZQ.js";
125
- import {
126
- assertChannelControlWorkspaceCapacity
127
- } from "./chunk-HYLPVFWL.js";
128
- import {
129
- LOAD_REPLAY_META_KEY
130
- } from "./chunk-FL4QZ67W.js";
131
- import "./chunk-OY4DP3XV.js";
131
+ } from "./chunk-DACSVV23.js";
132
132
  import {
133
133
  canonicalizeWorkspace,
134
134
  translateAndCheckAbsoluteWorkspacePath
@@ -136,19 +136,19 @@ import {
136
136
  import {
137
137
  ExtraCaInspectionError,
138
138
  loadableCertificates
139
- } from "./chunk-I2GU2HMQ.js";
139
+ } from "./chunk-M6SELBSG.js";
140
140
  import "./chunk-FYJ7W2PI.js";
141
141
  import "./chunk-Z7B6SRPM.js";
142
142
  import {
143
143
  ChannelWebhookEnqueueError
144
144
  } from "./chunk-STUJ7IMZ.js";
145
+ import {
146
+ QWEN_SERVER_TOKEN_ENV
147
+ } from "./chunk-GYTKQYDB.js";
145
148
  import {
146
149
  normalizeWorkerDiagnostic,
147
150
  sanitizeWorkerDiagnostic
148
151
  } from "./chunk-X2R47SFR.js";
149
- import {
150
- QWEN_SERVER_TOKEN_ENV
151
- } from "./chunk-GYTKQYDB.js";
152
152
  import {
153
153
  channelSelectionNames,
154
154
  normalizeServeChannelSelection
@@ -158,9 +158,6 @@ import {
158
158
  isChannelDeliveryError
159
159
  } from "./chunk-RKFGE7JH.js";
160
160
  import "./chunk-UDG5EZJI.js";
161
- import {
162
- redactLogCredentials
163
- } from "./chunk-M5GB774H.js";
164
161
  import {
165
162
  EXTERNAL_TOOL_GUARD_PROVIDER_ATTACHED_VALUE,
166
163
  EXTERNAL_TOOL_GUARD_REQUIRED_VALUE,
@@ -168,6 +165,9 @@ import {
168
165
  PRIVATE_EXTERNAL_TOOL_GUARD_ENV,
169
166
  PRIVATE_EXTERNAL_TOOL_GUARD_PROVIDER_ENV
170
167
  } from "./chunk-3VUENPWF.js";
168
+ import {
169
+ redactLogCredentials
170
+ } from "./chunk-M5GB774H.js";
171
171
  import {
172
172
  sanitizeLogText
173
173
  } from "./chunk-YWZOEHBT.js";
@@ -189,7 +189,7 @@ import {
189
189
  } from "./chunk-6V4XP46I.js";
190
190
  import {
191
191
  getCliVersion
192
- } from "./chunk-4XNECBYG.js";
192
+ } from "./chunk-5GYRIOWK.js";
193
193
  import "./chunk-2RJJSLCF.js";
194
194
  import "./chunk-NPQ5ZKRP.js";
195
195
  import {
@@ -202,18 +202,20 @@ import {
202
202
  } from "./chunk-32CM56LO.js";
203
203
  import "./chunk-LJZSMWOH.js";
204
204
  import "./chunk-GOFAQQZA.js";
205
- import "./chunk-65I7S4Z3.js";
205
+ import "./chunk-CHBZHMBA.js";
206
+ import "./chunk-4M7RD5QQ.js";
206
207
  import "./chunk-HEOH7JZY.js";
207
- import "./chunk-TWPJO254.js";
208
208
  import "./chunk-XIOVKC72.js";
209
+ import "./chunk-ELYIK7SN.js";
210
+ import "./chunk-TWPJO254.js";
209
211
  import {
210
212
  require_proper_lockfile
211
213
  } from "./chunk-VNTJJ4WQ.js";
212
214
  import "./chunk-XWRJCPHC.js";
213
- import "./chunk-5ETULJLP.js";
214
215
  import {
215
216
  MEMORY_PROJECT_SCOPES
216
217
  } from "./chunk-HD7O6WLV.js";
218
+ import "./chunk-5ETULJLP.js";
217
219
  import {
218
220
  TraceFlags,
219
221
  init_esm,
@@ -3036,6 +3038,15 @@ function resolveChannelWorkspaceGroups(input) {
3036
3038
  );
3037
3039
  }
3038
3040
  const namesByWorkspace = /* @__PURE__ */ new Map();
3041
+ const skipped = [];
3042
+ const { preferredOwners, tolerant } = input;
3043
+ const reject = /* @__PURE__ */ __name((name, code, message) => {
3044
+ if (!tolerant?.has(name)) {
3045
+ return { ok: false, error: { code, channel: name, message } };
3046
+ }
3047
+ skipped.push({ code, channel: name, message });
3048
+ return void 0;
3049
+ }, "reject");
3039
3050
  for (const name of selection.names) {
3040
3051
  const owners = [];
3041
3052
  for (const workspace of workspaces) {
@@ -3055,37 +3066,39 @@ function resolveChannelWorkspaceGroups(input) {
3055
3066
  }
3056
3067
  }
3057
3068
  if (owners.length === 0) {
3058
- return {
3059
- ok: false,
3060
- error: {
3061
- code: "channel_workspace_mismatch",
3062
- channel: name,
3063
- message: `Channel "${name}" is not configured in any registered workspace, or its "cwd" points outside them.`
3064
- }
3065
- };
3069
+ const rejected = reject(
3070
+ name,
3071
+ "channel_workspace_mismatch",
3072
+ `Channel "${name}" is not configured in any registered workspace, or its "cwd" points outside them.`
3073
+ );
3074
+ if (rejected) return rejected;
3075
+ continue;
3066
3076
  }
3077
+ let owner = owners[0];
3067
3078
  if (owners.length > 1) {
3068
- return {
3069
- ok: false,
3070
- error: {
3071
- code: "ambiguous_channel_workspace",
3072
- channel: name,
3073
- message: `Channel "${name}" is configured in multiple registered workspaces (${owners.map((owner2) => owner2.workspaceCwd).join(
3079
+ const preferred = preferredOwners?.get(name);
3080
+ const hinted = preferred === void 0 ? void 0 : owners.find((candidate) => candidate.workspaceCwd === preferred);
3081
+ if (!hinted) {
3082
+ const rejected = reject(
3083
+ name,
3084
+ "ambiguous_channel_workspace",
3085
+ `Channel "${name}" is configured in multiple registered workspaces (${owners.map((candidate) => candidate.workspaceCwd).join(
3074
3086
  ", "
3075
3087
  )}). Define it in one workspace's settings or set an explicit "cwd".`
3076
- }
3077
- };
3088
+ );
3089
+ if (rejected) return rejected;
3090
+ continue;
3091
+ }
3092
+ owner = hinted;
3078
3093
  }
3079
- const owner = owners[0];
3080
3094
  if (!owner.trusted) {
3081
- return {
3082
- ok: false,
3083
- error: {
3084
- code: "untrusted_workspace",
3085
- channel: name,
3086
- message: `Channel "${name}" targets untrusted workspace "${owner.workspaceCwd}".`
3087
- }
3088
- };
3095
+ const rejected = reject(
3096
+ name,
3097
+ "untrusted_workspace",
3098
+ `Channel "${name}" targets untrusted workspace "${owner.workspaceCwd}".`
3099
+ );
3100
+ if (rejected) return rejected;
3101
+ continue;
3089
3102
  }
3090
3103
  const names = namesByWorkspace.get(owner.workspaceCwd) ?? [];
3091
3104
  names.push(name);
@@ -3096,11 +3109,138 @@ function resolveChannelWorkspaceGroups(input) {
3096
3109
  groups: [...namesByWorkspace.entries()].map(([workspaceCwd, names]) => ({
3097
3110
  workspaceCwd,
3098
3111
  selection: { mode: "names", names }
3099
- }))
3112
+ })),
3113
+ // Omitted when nothing was skipped so a caller that never passes
3114
+ // `tolerant` keeps seeing the exact result shape it saw before.
3115
+ ...skipped.length > 0 ? { skipped } : {}
3100
3116
  };
3101
3117
  }
3102
3118
  __name(resolveChannelWorkspaceGroups, "resolveChannelWorkspaceGroups");
3103
3119
 
3120
+ // packages/cli/src/serve/channel-startup-restore.ts
3121
+ init_esbuild_shims();
3122
+ function errorMessage(error) {
3123
+ return error instanceof Error ? error.message : String(error);
3124
+ }
3125
+ __name(errorMessage, "errorMessage");
3126
+ function isUsableEntry(name) {
3127
+ return Boolean(name) && name === name.trim() && sanitizeLogText(name, name.length) === name;
3128
+ }
3129
+ __name(isUsableEntry, "isUsableEntry");
3130
+ function resolveStartupChannelSelection(input) {
3131
+ const diagnostics = [];
3132
+ const claimsByName = /* @__PURE__ */ new Map();
3133
+ const names = [];
3134
+ let primaryAllWorkspace;
3135
+ for (const workspace of input.workspaces) {
3136
+ const workspaceCwd = workspace.workspaceCwd;
3137
+ let raw;
3138
+ try {
3139
+ raw = input.loadStartupChannels(workspaceCwd);
3140
+ } catch (error) {
3141
+ diagnostics.push({
3142
+ code: "settings_unreadable",
3143
+ workspaceCwd,
3144
+ message: errorMessage(error)
3145
+ });
3146
+ continue;
3147
+ }
3148
+ if (raw === void 0) continue;
3149
+ if (!Array.isArray(raw) || !raw.every((name) => typeof name === "string")) {
3150
+ diagnostics.push({
3151
+ code: "invalid_setting",
3152
+ workspaceCwd,
3153
+ message: "serve.channels must be a string array."
3154
+ });
3155
+ continue;
3156
+ }
3157
+ const entries = raw.filter((name, index) => {
3158
+ if (isUsableEntry(name)) return true;
3159
+ diagnostics.push({
3160
+ code: "invalid_entry",
3161
+ workspaceCwd,
3162
+ // Keep the operator-facing wording the single-workspace restore has
3163
+ // always logged; the workspace it came from is a log field.
3164
+ message: `ignored invalid workspace serve.channels entry at index ${index}`
3165
+ });
3166
+ return false;
3167
+ });
3168
+ let selection;
3169
+ try {
3170
+ selection = normalizeServeChannelSelection(entries, "serve.channels");
3171
+ } catch (error) {
3172
+ diagnostics.push({
3173
+ code: "invalid_setting",
3174
+ workspaceCwd,
3175
+ message: errorMessage(error)
3176
+ });
3177
+ continue;
3178
+ }
3179
+ if (!selection) continue;
3180
+ if (selection.mode === "all") {
3181
+ if (workspace.primary) {
3182
+ primaryAllWorkspace = workspaceCwd;
3183
+ continue;
3184
+ }
3185
+ diagnostics.push({
3186
+ code: "all_is_primary_only",
3187
+ workspaceCwd,
3188
+ message: `serve.channels selection "all" is primary-workspace only; workspace "${workspaceCwd}" was not restored.`
3189
+ });
3190
+ continue;
3191
+ }
3192
+ for (const name of selection.names) {
3193
+ const claims = claimsByName.get(name);
3194
+ if (claims) {
3195
+ claims.push({ workspaceCwd, primary: workspace.primary });
3196
+ continue;
3197
+ }
3198
+ claimsByName.set(name, [{ workspaceCwd, primary: workspace.primary }]);
3199
+ names.push(name);
3200
+ }
3201
+ }
3202
+ if (primaryAllWorkspace !== void 0) {
3203
+ if (names.length > 0) {
3204
+ diagnostics.push({
3205
+ code: "all_is_primary_only",
3206
+ workspaceCwd: primaryAllWorkspace,
3207
+ message: `serve.channels selection "all" is primary-workspace only; channels listed by other workspaces were not restored: ${names.join(
3208
+ ", "
3209
+ )}.`
3210
+ });
3211
+ }
3212
+ return {
3213
+ selection: { mode: "all" },
3214
+ ownerHints: /* @__PURE__ */ new Map(),
3215
+ tolerantNames: /* @__PURE__ */ new Set(),
3216
+ diagnostics
3217
+ };
3218
+ }
3219
+ const ownerHints = /* @__PURE__ */ new Map();
3220
+ const tolerantNames = /* @__PURE__ */ new Set();
3221
+ for (const [name, claims] of claimsByName) {
3222
+ if (claims.length > 1) {
3223
+ diagnostics.push({
3224
+ code: "claimed_by_multiple_workspaces",
3225
+ workspaceCwd: claims[0].workspaceCwd,
3226
+ channel: name,
3227
+ message: `Channel "${name}" is listed in the serve.channels of several workspaces (${claims.map((claim) => claim.workspaceCwd).join(", ")}); its owner is resolved from the channel config alone.`
3228
+ });
3229
+ }
3230
+ if (claims.every((claim) => !claim.primary)) tolerantNames.add(name);
3231
+ if (claims.length === 1 && !claims[0].primary) {
3232
+ ownerHints.set(name, claims[0].workspaceCwd);
3233
+ }
3234
+ }
3235
+ return {
3236
+ selection: names.length > 0 ? { mode: "names", names } : void 0,
3237
+ ownerHints,
3238
+ tolerantNames,
3239
+ diagnostics
3240
+ };
3241
+ }
3242
+ __name(resolveStartupChannelSelection, "resolveStartupChannelSelection");
3243
+
3104
3244
  // packages/cli/src/serve/run-qwen-serve.ts
3105
3245
  var QWEN_SERVE_CLIENT_MCP_OVER_WS_ENV = "QWEN_SERVE_CLIENT_MCP_OVER_WS";
3106
3246
  var QWEN_SERVE_CDP_TUNNEL_OVER_WS_ENV = "QWEN_SERVE_CDP_TUNNEL_OVER_WS";
@@ -3946,12 +4086,12 @@ __name(hasRetryableChannelWorkerShutdownError, "hasRetryableChannelWorkerShutdow
3946
4086
  var channelWorkerRuntimePromise;
3947
4087
  async function loadChannelWorkerRuntime() {
3948
4088
  channelWorkerRuntimePromise ??= Promise.all([
3949
- import("./channel-worker-supervisor-KNSB6NQS.js"),
3950
- import("./pidfile-65TYNQZO.js"),
3951
- import("./runtime-SPDHMWL2.js"),
4089
+ import("./channel-worker-supervisor-GGTS6MM5.js"),
4090
+ import("./pidfile-3HRF6UJA.js"),
4091
+ import("./runtime-PBC4QVLS.js"),
3952
4092
  import("./cli-entry-path-4VJ3Y6T2.js"),
3953
- import("./channel-worker-group-M4MSCXVZ.js"),
3954
- import("./channel-worker-manager-UEAF66Y2.js")
4093
+ import("./channel-worker-group-EJEMLDPE.js"),
4094
+ import("./channel-worker-manager-GI3GMPHV.js")
3955
4095
  ]).then(
3956
4096
  ([
3957
4097
  supervisor,
@@ -4058,7 +4198,7 @@ function shouldPreheatBridge(deps) {
4058
4198
  __name(shouldPreheatBridge, "shouldPreheatBridge");
4059
4199
  var coreRuntimePromise;
4060
4200
  function loadCoreRuntime() {
4061
- coreRuntimePromise ??= import("./core-runtime-7OWIKZP7.js");
4201
+ coreRuntimePromise ??= import("./core-runtime-5KHWEMVQ.js");
4062
4202
  return coreRuntimePromise;
4063
4203
  }
4064
4204
  __name(loadCoreRuntime, "loadCoreRuntime");
@@ -4094,10 +4234,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
4094
4234
  var settingsRuntimePromise;
4095
4235
  function loadSettingsRuntimeModules() {
4096
4236
  settingsRuntimePromise ??= Promise.all([
4097
- import("./settings-WC7MAKFU.js"),
4098
- import("./environment-BHQMXGGR.js"),
4099
- import("./loadedSettingsAdapter-AVY5HFYC.js"),
4100
- import("./trustedFolders-4ANVY47B.js")
4237
+ import("./settings-MI63DAKE.js"),
4238
+ import("./environment-FXLJ7ENW.js"),
4239
+ import("./loadedSettingsAdapter-BCWAHAEI.js"),
4240
+ import("./trustedFolders-PGLKXLUG.js")
4101
4241
  ]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
4102
4242
  settings,
4103
4243
  environment,
@@ -4110,8 +4250,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
4110
4250
  var channelWebhookConfigRuntimePromise;
4111
4251
  function loadChannelWebhookConfigRuntime() {
4112
4252
  channelWebhookConfigRuntimePromise ??= Promise.all([
4113
- import("./runtime-SPDHMWL2.js"),
4114
- import("./config-utils-A7FSZDCO.js")
4253
+ import("./runtime-PBC4QVLS.js"),
4254
+ import("./config-utils-3PL3OQOI.js")
4115
4255
  ]).then(([channelRuntime, configUtils]) => ({
4116
4256
  loadChannelsConfig: channelRuntime.loadChannelsConfig,
4117
4257
  parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
@@ -4138,19 +4278,19 @@ async function loadServeRuntimeModules() {
4138
4278
  workspaceRuntimeCoordinatorModule,
4139
4279
  promptLedgerModule
4140
4280
  ] = await Promise.all([
4141
- import("./server-LZDC5WLZ.js"),
4142
- import("./bridge-FPDMUBTB.js"),
4143
- import("./spawnChannel-DOUIQJXZ.js"),
4281
+ import("./server-KQJAQD55.js"),
4282
+ import("./bridge-GHWETITW.js"),
4283
+ import("./spawnChannel-DMP56IUE.js"),
4144
4284
  import("./process-registry-MDKO6QY2.js"),
4145
- import("./workspace-service-LD63VWNX.js"),
4285
+ import("./workspace-service-RJOV7URE.js"),
4146
4286
  import("./types-HKLPXZB3.js"),
4147
- import("./daemon-status-provider-MCQ3OGR5.js"),
4148
- import("./workspace-providers-status-ZNWPVLFH.js"),
4149
- import("./workspace-skills-status-OXAHXVR5.js"),
4150
- import("./total-session-admission-YBOZM7OG.js"),
4151
- import("./workspace-registry-YLT7CXIQ.js"),
4152
- import("./workspace-runtime-coordinator-VRJNYOYA.js"),
4153
- import("./prompt-terminal-ledger-SOHAMM2Z.js")
4287
+ import("./daemon-status-provider-PCJP7L7Z.js"),
4288
+ import("./workspace-providers-status-AA7TXXGS.js"),
4289
+ import("./workspace-skills-status-TYYFTIPU.js"),
4290
+ import("./total-session-admission-VXAFAHGR.js"),
4291
+ import("./workspace-registry-7M2GJXVY.js"),
4292
+ import("./workspace-runtime-coordinator-644IZPWD.js"),
4293
+ import("./prompt-terminal-ledger-WOPLWLBQ.js")
4154
4294
  ]);
4155
4295
  return {
4156
4296
  createServeApp: serverModule.createServeApp,
@@ -5253,7 +5393,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5253
5393
  let workspaceRegistrationStore = deps.workspaceRegistrationStore;
5254
5394
  const explicitWorkspaceCount = workspaceInputs.length;
5255
5395
  if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
5256
- const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-CSOD2L3Q.js");
5396
+ const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-OLL5737M.js");
5257
5397
  workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
5258
5398
  }
5259
5399
  if (workspaceRegistrationStore) {
@@ -5366,6 +5506,9 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5366
5506
  });
5367
5507
  loggerLifecycle.initialized(daemonLog);
5368
5508
  let channelSelectionFromSettings = false;
5509
+ let bootChannelOwnerHints = /* @__PURE__ */ new Map();
5510
+ let channelOwnerHints = /* @__PURE__ */ new Map();
5511
+ let channelStartupTolerantNames = /* @__PURE__ */ new Set();
5369
5512
  const reportConfiguredChannelStartupFailure = /* @__PURE__ */ __name((error) => {
5370
5513
  const message = sanitizeLogText(
5371
5514
  redactLogCredentials(
@@ -5381,31 +5524,64 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5381
5524
  `workspace serve.channels was not restored: ${detail} Continuing without channels`
5382
5525
  );
5383
5526
  }, "reportConfiguredChannelStartupFailure");
5384
- if (!opts.channelSelection && bootSettings?.serve?.channels !== void 0) {
5527
+ const reportStartupChannelDiagnostic = /* @__PURE__ */ __name((diagnostic) => {
5528
+ const detail = sanitizeLogText(
5529
+ redactLogCredentials(diagnostic.message),
5530
+ 512
5531
+ );
5532
+ if (diagnostic.code === "invalid_entry") {
5533
+ daemonLog.warn(detail, { workspaceCwd: diagnostic.workspaceCwd });
5534
+ return;
5535
+ }
5536
+ if (diagnostic.code === "claimed_by_multiple_workspaces") {
5537
+ daemonLog.warn(detail, {
5538
+ code: diagnostic.code,
5539
+ workspaceCwd: diagnostic.workspaceCwd,
5540
+ ...diagnostic.channel ? { channel: diagnostic.channel } : {}
5541
+ });
5542
+ return;
5543
+ }
5544
+ writeStderrLine(
5545
+ `qwen serve: workspace ${JSON.stringify(
5546
+ diagnostic.workspaceCwd
5547
+ )} serve.channels: ${detail}`
5548
+ );
5549
+ daemonLog.warn(`workspace serve.channels not fully restored: ${detail}`, {
5550
+ code: diagnostic.code,
5551
+ workspaceCwd: diagnostic.workspaceCwd,
5552
+ ...diagnostic.channel ? { channel: diagnostic.channel } : {}
5553
+ });
5554
+ }, "reportStartupChannelDiagnostic");
5555
+ const startupChannelWorkspaces = workspaceInputs.map((workspace, index) => ({
5556
+ workspaceCwd: workspace.cwd,
5557
+ primary: index === 0
5558
+ }));
5559
+ if (!opts.channelSelection && (bootSettings?.serve?.channels !== void 0 || startupChannelWorkspaces.length > 1)) {
5385
5560
  try {
5386
- const rawChannels = bootSettings.serve.channels;
5387
- if (!Array.isArray(rawChannels) || !rawChannels.every((name) => typeof name === "string")) {
5388
- throw new Error("serve.channels must be a string array.");
5389
- }
5390
- const configuredChannels = rawChannels.filter((name, index) => {
5391
- if (!name || name !== name.trim() || sanitizeLogText(name, name.length) !== name) {
5392
- daemonLog.warn(
5393
- `ignored invalid workspace serve.channels entry at index ${index}`
5394
- );
5395
- return false;
5396
- }
5397
- return true;
5561
+ const restored = resolveStartupChannelSelection({
5562
+ workspaces: startupChannelWorkspaces,
5563
+ // The fast path already read the primary workspace; every other
5564
+ // registered workspace is read here, through the same loader, so a
5565
+ // secondary workspace contributes exactly what it would contribute if
5566
+ // it were the one the daemon bound to.
5567
+ loadStartupChannels: /* @__PURE__ */ __name((workspaceCwd) => (workspaceCwd === boundWorkspace ? bootSettings : (deps.loadWorkspaceBootSettings ?? loadServeFastPathSettings)(
5568
+ workspaceCwd
5569
+ ))?.serve?.channels, "loadStartupChannels")
5398
5570
  });
5399
- opts.channelSelection = normalizeServeChannelSelection(
5400
- configuredChannels,
5401
- "serve.channels"
5402
- );
5571
+ for (const diagnostic of restored.diagnostics) {
5572
+ reportStartupChannelDiagnostic(diagnostic);
5573
+ }
5574
+ opts.channelSelection = restored.selection;
5403
5575
  if (opts.channelSelection) {
5404
5576
  channelSelectionFromSettings = true;
5577
+ bootChannelOwnerHints = restored.ownerHints;
5578
+ channelOwnerHints = restored.ownerHints;
5579
+ channelStartupTolerantNames = restored.tolerantNames;
5405
5580
  channelRuntime = await ensureChannelRuntime();
5406
5581
  daemonLog.info("restoring channels from workspace serve.channels", {
5407
5582
  channels: channelSelectionNames(opts.channelSelection),
5408
- workspaceCwd: boundWorkspace
5583
+ workspaceCwd: boundWorkspace,
5584
+ ...restored.ownerHints.size > 0 ? { requestedByWorkspace: Object.fromEntries(restored.ownerHints) } : {}
5409
5585
  });
5410
5586
  }
5411
5587
  } catch (error) {
@@ -5590,7 +5766,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5590
5766
  "qwen serve: required external tool guard handshake succeeded."
5591
5767
  );
5592
5768
  }
5593
- const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-SJ7YWRBD.js");
5769
+ const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-LQ3XGSBU.js");
5594
5770
  const daemonToolGuardHandler = createDaemonToolGuard(
5595
5771
  externalToolGuardHandler
5596
5772
  );
@@ -5941,7 +6117,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5941
6117
  loadCoreRuntime(),
5942
6118
  loadSettingsRuntimeModules(),
5943
6119
  cliVersionPromise,
5944
- import("./daemon-trust-policy-BUGBZHZX.js")
6120
+ import("./daemon-trust-policy-KXZY6JQN.js")
5945
6121
  ]);
5946
6122
  getWorkspaceRuntimeCoordinatorIfSupported = runtime.getWorkspaceRuntimeCoordinatorIfSupported;
5947
6123
  cliVersion = resolvedCliVersion;
@@ -6389,7 +6565,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6389
6565
  skillSettingStrings,
6390
6566
  skillToggleBlockForName,
6391
6567
  updateWorkspaceSkillSettingLists
6392
- } = await import("./skill-settings-5QJZJXOA.js");
6568
+ } = await import("./skill-settings-MNLFQXDX.js");
6393
6569
  const fresh = loadSettingsForPersistence(workspace);
6394
6570
  const workspaceDisabled = skillSettingStrings(
6395
6571
  fresh,
@@ -6453,7 +6629,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6453
6629
  skillSettingStrings,
6454
6630
  skillToggleBlockForName,
6455
6631
  updateWorkspaceSkillSettingLists
6456
- } = await import("./skill-settings-5QJZJXOA.js");
6632
+ } = await import("./skill-settings-MNLFQXDX.js");
6457
6633
  const fresh = loadSettingsForPersistence(workspace);
6458
6634
  const initialDisabled = skillSettingStrings(
6459
6635
  fresh,
@@ -6566,10 +6742,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6566
6742
  }
6567
6743
  }), "persistSettingsFn");
6568
6744
  const [{ createSubSessionLauncher }, scheduledTaskRoutes] = await Promise.all([
6569
- import("./create-sub-session-YFYNWAU3.js"),
6570
- import("./scheduled-tasks-NESFIYHB.js")
6745
+ import("./create-sub-session-FB5YJFI5.js"),
6746
+ import("./scheduled-tasks-WEC66H2D.js")
6571
6747
  ]);
6572
- const { sessionAttachmentsRoots } = await import("./session-attachments-root-SDTVDDHX.js");
6748
+ const { sessionAttachmentsRoots } = await import("./session-attachments-root-L75Y47VK.js");
6573
6749
  const createCurrentSessionScheduledTaskHandler = /* @__PURE__ */ __name((workspaceCwd, runtimeBaseDir, getBridge, assertGenerationOpen) => async ({
6574
6750
  callerSessionId,
6575
6751
  cron,
@@ -7417,7 +7593,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7417
7593
  };
7418
7594
  sessionPrRefreshTimer?.dispose();
7419
7595
  const refreshGeneration = ++sessionPrRefreshGeneration;
7420
- void import("./session-pr-refresh-QLHN7R76.js").then((mod) => {
7596
+ void import("./session-pr-refresh-5MHLCSC2.js").then((mod) => {
7421
7597
  if (refreshGeneration !== sessionPrRefreshGeneration) return;
7422
7598
  sessionPrRefreshTimer = mod.startSessionPrRefreshTimer({
7423
7599
  workspaceRegistry,
@@ -8092,8 +8268,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8092
8268
  { createChannelManagementService },
8093
8269
  { WorkspaceChannelSettingsStore }
8094
8270
  ] = await Promise.all([
8095
- import("./channel-management-service-B5JCH6G4.js"),
8096
- import("./channel-settings-store-3QLN4ATE.js")
8271
+ import("./channel-management-service-DISO7Z3P.js"),
8272
+ import("./channel-settings-store-7BHSX2TC.js")
8097
8273
  ]);
8098
8274
  return createChannelManagementService({
8099
8275
  workspaceCwd: targetRuntime.workspaceCwd,
@@ -8256,7 +8432,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8256
8432
  ),
8257
8433
  updateModelContextWindow: /* @__PURE__ */ __name((workspace, key, size, assertGenerationOpen) => withSettingsLock(workspace, async () => {
8258
8434
  assertGenerationOpen();
8259
- const { updateModelContextWindow } = await import("./model-configuration-TIUNBSA7.js");
8435
+ const { updateModelContextWindow } = await import("./model-configuration-LQV2CJZZ.js");
8260
8436
  return updateModelContextWindow(
8261
8437
  loadSettingsForPersistence(workspace),
8262
8438
  key,
@@ -8294,7 +8470,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8294
8470
  const adapter = settingsRuntime.loadedSettingsAdapter.createLoadedSettingsAdapter(
8295
8471
  fresh
8296
8472
  );
8297
- const { getAuthTypeFromEnv } = await import("./modelConfigUtils-5AOF7V2F.js");
8473
+ const { getAuthTypeFromEnv } = await import("./modelConfigUtils-3MJ6OTIS.js");
8298
8474
  const hasConversationAuth = adapter.getValue("security.auth.selectedType") || getAuthTypeFromEnv(primaryRuntimeEnv.effectiveEnv);
8299
8475
  await core.applyProviderInstallPlan(plan, {
8300
8476
  settings: adapter,
@@ -8333,8 +8509,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8333
8509
  { createWorkspaceTrustReconciler },
8334
8510
  { createDaemonTrustPolicyMonitor }
8335
8511
  ] = await Promise.all([
8336
- import("./workspace-trust-reconciler-EMAYOLR6.js"),
8337
- import("./daemon-trust-policy-monitor-7Q7XOMIB.js")
8512
+ import("./workspace-trust-reconciler-64FF3I3X.js"),
8513
+ import("./daemon-trust-policy-monitor-QAZ4KXVK.js")
8338
8514
  ]);
8339
8515
  const materializationFor = /* @__PURE__ */ __name((entry, snapshot, decision) => {
8340
8516
  const boundWorkspaces2 = entry.primary && decision.targetTrusted ? runtime.resolveBoundWorkspacesFromIdeEnv(
@@ -8531,7 +8707,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8531
8707
  // through (and start the runtime) exactly like the warm app would.
8532
8708
  // Dynamic import keeps web-shell-static out of the serve fast-path
8533
8709
  // static closure (see the import-boundary guards in fast-path.test.ts).
8534
- isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-G654DFN2.js").then(
8710
+ isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-4SY6HOTM.js").then(
8535
8711
  (webShellStatic) => webShellStatic.isPreAuthWebShellRequest(req)
8536
8712
  ) : void 0
8537
8713
  });
@@ -8642,7 +8818,9 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8642
8818
  const settings = settingsByWorkspace.get(cwd);
8643
8819
  if (!settings) return {};
8644
8820
  return channelRuntime.loadChannelsConfig(cwd, settings);
8645
- }, "loadChannelsConfig")
8821
+ }, "loadChannelsConfig"),
8822
+ preferredOwners: channelOwnerHints,
8823
+ tolerant: channelStartupTolerantNames
8646
8824
  });
8647
8825
  if (!grouping.ok) {
8648
8826
  throw Object.assign(new Error(grouping.error.message), {
@@ -8650,17 +8828,17 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8650
8828
  ...grouping.error.channel ? { channel: grouping.error.channel } : {}
8651
8829
  });
8652
8830
  }
8653
- return grouping.groups;
8831
+ return { groups: grouping.groups, skipped: grouping.skipped ?? [] };
8654
8832
  }, "resolveChannelWorkspaceGroupsAtListen");
8655
8833
  if (opts.channelSelection) {
8656
8834
  try {
8657
8835
  channelValidationSettingsRuntime = await loadSettingsRuntimeModules();
8658
- channelValidationTrustPolicy = await import("./daemon-trust-policy-BUGBZHZX.js");
8836
+ channelValidationTrustPolicy = await import("./daemon-trust-policy-KXZY6JQN.js");
8659
8837
  channelValidationTrustSnapshot = await channelValidationTrustPolicy.readDaemonTrustPolicySnapshot();
8660
8838
  if (opts.channelSelection.mode === "names" && workspaceInputs.length > MAX_CHANNEL_CONTROL_WORKSPACES) {
8661
- const groups = resolveChannelWorkspaceGroupsAtListen();
8839
+ const resolved = resolveChannelWorkspaceGroupsAtListen();
8662
8840
  assertChannelControlWorkspaceCapacity(
8663
- groups?.map((group) => group.workspaceCwd) ?? []
8841
+ resolved?.groups.map((group) => group.workspaceCwd) ?? []
8664
8842
  );
8665
8843
  }
8666
8844
  reserveChannelServicePidfile(opts.channelSelection);
@@ -9093,7 +9271,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
9093
9271
  loadChannelsConfig: /* @__PURE__ */ __name((cwd) => {
9094
9272
  const settings = settingsByWorkspace.get(cwd);
9095
9273
  return settings ? workerRuntime.loadChannelsConfig(cwd, settings) : {};
9096
- }, "loadChannelsConfig")
9274
+ }, "loadChannelsConfig"),
9275
+ // A runtime change must resolve ownership the way this daemon
9276
+ // already resolved it; without the hint a name that only boot could
9277
+ // disambiguate would start failing every PUT as ambiguous. Runtime
9278
+ // changes stay fail-fast, so no name is tolerated here.
9279
+ preferredOwners: channelOwnerHints
9097
9280
  });
9098
9281
  if (!grouping.ok) {
9099
9282
  throw Object.assign(new Error(grouping.error.message), {
@@ -9234,6 +9417,14 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
9234
9417
  initialLeaseReserved: channelPidfileReserved,
9235
9418
  onCommittedSelection: /* @__PURE__ */ __name((_selection, groups) => {
9236
9419
  channelWorkspaceGroups = groups;
9420
+ channelOwnerHints = new Map([
9421
+ ...bootChannelOwnerHints,
9422
+ ...groups.flatMap(
9423
+ (group) => group.selection.mode === "names" ? group.selection.names.map(
9424
+ (name) => [name, group.workspaceCwd]
9425
+ ) : []
9426
+ )
9427
+ ]);
9237
9428
  channelWebhookConfigVersion += 1;
9238
9429
  refreshChannelWebhookConfigs?.();
9239
9430
  }, "onCommittedSelection"),
@@ -9694,7 +9885,39 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
9694
9885
  closeHost = handle.close;
9695
9886
  handle.close = () => serveAppLifecycle.close();
9696
9887
  try {
9697
- channelWorkspaceGroups = resolveChannelWorkspaceGroupsAtListen();
9888
+ const resolved = resolveChannelWorkspaceGroupsAtListen();
9889
+ channelWorkspaceGroups = resolved?.groups;
9890
+ if (resolved) {
9891
+ for (const skip of resolved.skipped) {
9892
+ const detail = sanitizeLogText(
9893
+ redactLogCredentials(skip.message),
9894
+ 512
9895
+ );
9896
+ writeStderrLine(
9897
+ `qwen serve: channel "${skip.channel}" was not restored: ${detail}`
9898
+ );
9899
+ daemonLog.warn(`channel was not restored: ${detail}`, {
9900
+ code: skip.code,
9901
+ channel: skip.channel
9902
+ });
9903
+ }
9904
+ if (resolved.skipped.length > 0) {
9905
+ const hosted = new Set(
9906
+ resolved.groups.flatMap(
9907
+ (group) => group.selection.mode === "names" ? group.selection.names : []
9908
+ )
9909
+ );
9910
+ const remaining = opts.channelSelection?.mode === "names" ? opts.channelSelection.names.filter((name) => hosted.has(name)) : [];
9911
+ opts.channelSelection = remaining.length > 0 ? { mode: "names", names: remaining } : void 0;
9912
+ if (!opts.channelSelection) {
9913
+ channelWorkspaceGroups = void 0;
9914
+ removeCurrentServePidfile();
9915
+ reportConfiguredChannelStartupFailure(
9916
+ new Error("No configured channel could be hosted.")
9917
+ );
9918
+ }
9919
+ }
9920
+ }
9698
9921
  } catch (err) {
9699
9922
  removeCurrentServePidfile();
9700
9923
  const error2 = err instanceof Error ? err : new Error(String(err));