@qwen-code/qwen-code 0.24.5-preview.0 → 0.24.5

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 (353) hide show
  1. package/bundled/browser-use/SKILL.md +11 -10
  2. package/bundled/browser-use/runtime/index.js +70 -31
  3. package/bundled/browser-use/runtime/native-host.js +1 -0
  4. package/bundled/browser-use/runtime/scripts/native-host-setup.js +1 -0
  5. package/bundled/computer-use/SKILL.md +182 -224
  6. package/bundled/qc-helper/docs/configuration/model-providers.md +13 -2
  7. package/bundled/qc-helper/docs/conversations-recovery.md +10 -0
  8. package/bundled/qc-helper/docs/features/browser-use.md +22 -12
  9. package/bundled/qc-helper/docs/features/channels/dingtalk.md +2 -2
  10. package/bundled/qc-helper/docs/features/channels/dws.md +7 -7
  11. package/bundled/qc-helper/docs/features/channels/feishu.md +1 -1
  12. package/bundled/qc-helper/docs/features/channels/github.md +13 -9
  13. package/bundled/qc-helper/docs/features/channels/gitlab.md +12 -5
  14. package/bundled/qc-helper/docs/features/channels/overview.md +121 -46
  15. package/bundled/qc-helper/docs/features/channels/plugins.md +12 -12
  16. package/bundled/qc-helper/docs/features/channels/qqbot.md +5 -5
  17. package/bundled/qc-helper/docs/features/channels/telegram.md +5 -5
  18. package/bundled/qc-helper/docs/features/channels/wecom.md +5 -4
  19. package/bundled/qc-helper/docs/features/channels/weixin.md +3 -3
  20. package/bundled/qc-helper/docs/features/code-review.md +4 -0
  21. package/bundled/qc-helper/docs/features/computer-use.md +1 -1
  22. package/bundled/qc-helper/docs/quickstart.md +14 -14
  23. package/bundled/qc-helper/docs/qwen-serve.md +10 -4
  24. package/bundled/review/SKILL.md +44 -9
  25. package/bundled/review/references/persistence.md +3 -4
  26. package/chunks/{MaxSizedBox-3RXPTLCS.js → MaxSizedBox-4MLWQHF3.js} +33 -31
  27. package/chunks/{StandaloneSessionPicker-74775YBZ.js → StandaloneSessionPicker-PDNU6KJJ.js} +50 -48
  28. package/chunks/{acp-subagent-executor-OQXOMTFK.js → acp-subagent-executor-JB2J6N73.js} +35 -33
  29. package/chunks/{acpAgent-MD56LD7L.js → acpAgent-CAPZFZCW.js} +123 -97
  30. package/chunks/{agent-75EZNG2Q.js → agent-MTWGIPWC.js} +18 -16
  31. package/chunks/{agent-headless-TQ6MWUDT.js → agent-headless-Z27XJSXK.js} +18 -16
  32. package/chunks/{anthropicContentGenerator-DCDXTX3R.js → anthropicContentGenerator-VAFZRJWG.js} +3 -3
  33. package/chunks/{askUserQuestion-2NU6CXK2.js → askUserQuestion-V4OFZD5D.js} +1 -1
  34. package/chunks/{bridge-KGJYQUWD.js → bridge-BUCSJHCE.js} +35 -33
  35. package/chunks/{channel-management-service-YN4A3BJ6.js → channel-management-service-Q2B7WUPL.js} +27 -10
  36. package/chunks/{channel-settings-store-773UOD6B.js → channel-settings-store-U25CVEL6.js} +42 -40
  37. package/chunks/{channel-worker-group-AKPVHRUO.js → channel-worker-group-QNX4OIMZ.js} +5 -5
  38. package/chunks/{channel-worker-manager-TDAQSKWX.js → channel-worker-manager-IJCPV4WY.js} +24 -5
  39. package/chunks/{channel-worker-supervisor-PUMSN4J2.js → channel-worker-supervisor-ENJ2AE2N.js} +4 -4
  40. package/chunks/{chunk-OU4ZCLGJ.js → chunk-242INZ6Y.js} +1 -1
  41. package/chunks/{chunk-JOFZBTVL.js → chunk-245NB3M4.js} +1 -1
  42. package/chunks/{chunk-LISITUEH.js → chunk-26KGIWIW.js} +1 -1
  43. package/chunks/{chunk-WPHZEGFC.js → chunk-2RQEWY2P.js} +1 -1
  44. package/chunks/{chunk-DCTJ3GVF.js → chunk-2SCE6YR2.js} +3 -3
  45. package/chunks/{chunk-STKUN7BR.js → chunk-2XNGG7R3.js} +1 -1
  46. package/chunks/{chunk-OQE7AA2W.js → chunk-36ZMEEBW.js} +16 -12
  47. package/chunks/{chunk-Y53WH7VD.js → chunk-44K6Q5AW.js} +3 -3
  48. package/chunks/{chunk-N4VKU36J.js → chunk-465XOJLQ.js} +1 -1
  49. package/chunks/{chunk-HD4IXPPC.js → chunk-4A4XNQEZ.js} +3 -3
  50. package/chunks/{chunk-RXB6Y33E.js → chunk-4VULJ3LV.js} +1 -1
  51. package/chunks/{chunk-EBRC4GX2.js → chunk-4XXUGJJS.js} +1 -1
  52. package/chunks/{chunk-MVC4XLNM.js → chunk-53IRNMPU.js} +118 -5
  53. package/chunks/{chunk-VGLXXHTF.js → chunk-5BLOZPTW.js} +1 -1
  54. package/chunks/{chunk-3SK2A75W.js → chunk-5OJQLD3P.js} +3 -3
  55. package/chunks/{chunk-WVNCMGAO.js → chunk-6FURC4LI.js} +1 -1
  56. package/chunks/{chunk-WVTM33Q3.js → chunk-6KXQIDK2.js} +4 -4
  57. package/chunks/{chunk-ZKDUQHU4.js → chunk-7MNHZUTA.js} +35 -18
  58. package/chunks/{chunk-JEIPBSGX.js → chunk-7P5WZQXF.js} +7 -7
  59. package/chunks/{chunk-GGUOO2XC.js → chunk-7RCAMBLN.js} +1 -1
  60. package/chunks/{chunk-FBLGI2SO.js → chunk-AAOMFXVZ.js} +7 -7
  61. package/chunks/{chunk-JM76TMGV.js → chunk-ACLD6C3R.js} +8798 -7901
  62. package/chunks/{chunk-4FCWKBOC.js → chunk-ALTMZEBU.js} +6 -6
  63. package/chunks/{chunk-ZHQSWNO6.js → chunk-AN62TPO6.js} +1 -1
  64. package/chunks/{chunk-U5DPG7JW.js → chunk-AYTI24XN.js} +1 -1
  65. package/chunks/{chunk-B53FO7JN.js → chunk-AZN2GSLM.js} +2 -2
  66. package/chunks/{chunk-6KQQPPFF.js → chunk-B3J4BSPL.js} +1 -1
  67. package/chunks/{chunk-SLSH5TFD.js → chunk-BMCDSO77.js} +4 -4
  68. package/chunks/{chunk-DBYUN4U3.js → chunk-BUDUHXX3.js} +1 -1
  69. package/chunks/{chunk-TS4Y2MHO.js → chunk-CGREZDGO.js} +1 -1
  70. package/chunks/chunk-CLNDQINM.js +523 -0
  71. package/chunks/{chunk-LNUQA3OE.js → chunk-CVRZNFXO.js} +1 -1
  72. package/chunks/{chunk-3DBI3LLL.js → chunk-CWLTXYKP.js} +4 -4
  73. package/chunks/{chunk-B3XMX4SN.js → chunk-DACCX4JI.js} +4 -4
  74. package/chunks/{chunk-YWZOEHBT.js → chunk-DE2WI7RU.js} +192 -62
  75. package/chunks/{chunk-3TQVPDCN.js → chunk-DU53RB7A.js} +2 -2
  76. package/chunks/{chunk-2KZURPTB.js → chunk-DZCTQ2MF.js} +6 -1
  77. package/chunks/{chunk-35SABQFH.js → chunk-DZUNDX4M.js} +1 -1
  78. package/chunks/{chunk-4INF7OYV.js → chunk-ELY2U74S.js} +2 -2
  79. package/chunks/chunk-EMGHODF7.js +56 -0
  80. package/chunks/{chunk-5FZKG4JB.js → chunk-EMOTEATH.js} +1 -1
  81. package/chunks/{chunk-LW7WW3Z5.js → chunk-ERGQUKZ2.js} +1 -1
  82. package/chunks/{chunk-TNWJJEDT.js → chunk-ES6EQNGR.js} +6 -6
  83. package/chunks/{chunk-E3TLOFX7.js → chunk-EUHSEMO4.js} +62 -7
  84. package/chunks/{chunk-N25B6FZN.js → chunk-EYCDA5MN.js} +2 -0
  85. package/chunks/{chunk-GPTEZLRR.js → chunk-F4ERRMCO.js} +25 -23
  86. package/chunks/{chunk-SXFZ5P7F.js → chunk-FE7D3WKV.js} +1 -1
  87. package/chunks/{chunk-XEXNBTYX.js → chunk-FH45BQGZ.js} +3 -3
  88. package/chunks/{chunk-CAORZAZD.js → chunk-FLBUHGL4.js} +10 -10
  89. package/chunks/{chunk-X2R47SFR.js → chunk-FLVPNMCS.js} +1 -1
  90. package/chunks/{chunk-5SZSV2CK.js → chunk-FVIJFKEQ.js} +3 -3
  91. package/chunks/{chunk-KFLDZ3HB.js → chunk-G6XRNTXF.js} +1 -1
  92. package/chunks/{chunk-2JHQ2J3Y.js → chunk-G72UHXC3.js} +5 -5
  93. package/chunks/{chunk-4A255ZI6.js → chunk-GAHZJLQG.js} +2 -2
  94. package/chunks/{chunk-7IVZOKKW.js → chunk-GKJGKTWJ.js} +3 -3
  95. package/chunks/{chunk-KY4HZXLV.js → chunk-GLPNIOEV.js} +33 -2
  96. package/chunks/{chunk-6PRSQUPJ.js → chunk-GQZZGEMS.js} +1 -1
  97. package/chunks/{chunk-G2AE7GYZ.js → chunk-GRUASRWC.js} +1 -1
  98. package/chunks/{chunk-HH7R6RLK.js → chunk-GTQ35GRO.js} +1 -1
  99. package/chunks/{chunk-LWRJLRZS.js → chunk-GYLDOFLU.js} +3 -3
  100. package/chunks/{chunk-MZRJ2JJS.js → chunk-HDSI3RDN.js} +136 -9
  101. package/chunks/{chunk-RO5K7QUL.js → chunk-HHMJ5ONX.js} +45 -31
  102. package/chunks/{chunk-E4HNTYHK.js → chunk-HVVQYSBA.js} +32 -9
  103. package/chunks/{chunk-H2GVLBFU.js → chunk-I36GIR6K.js} +64 -2
  104. package/chunks/{chunk-VTFLRL55.js → chunk-IBRV4T3I.js} +2 -2
  105. package/chunks/{chunk-4VSTV4C2.js → chunk-IH22ZGZI.js} +53 -2
  106. package/chunks/{chunk-AOW7WIWE.js → chunk-IQH7Q5OP.js} +4 -4
  107. package/chunks/{chunk-OB444SG3.js → chunk-IYKGSUTA.js} +1 -1
  108. package/chunks/{chunk-HS5OZTQF.js → chunk-J2FLXQJM.js} +1 -1
  109. package/chunks/{chunk-BBCH7PBA.js → chunk-KACKEW2M.js} +2 -2
  110. package/chunks/{chunk-JE3J5HFM.js → chunk-KAOHUUM7.js} +62 -251
  111. package/chunks/{chunk-JCMDVGPR.js → chunk-KGLPVCX7.js} +2 -2
  112. package/chunks/{chunk-QKXZOHHQ.js → chunk-LDURD6EP.js} +15 -62
  113. package/chunks/{chunk-O4IH5UEC.js → chunk-LLIYDIGU.js} +20 -20
  114. package/chunks/{chunk-3XHMOJCP.js → chunk-MBC3PULP.js} +1 -1
  115. package/chunks/{chunk-SRZA7OU4.js → chunk-MMCGLNPP.js} +6 -6
  116. package/chunks/{chunk-3NG2ZQAJ.js → chunk-NZC74TT2.js} +1 -1
  117. package/chunks/{chunk-47C3HPMW.js → chunk-O5YL6KSX.js} +47 -18
  118. package/chunks/{chunk-EIHZ4FFM.js → chunk-O6PPYFQN.js} +3 -3
  119. package/chunks/{chunk-XCU752HT.js → chunk-OICDXWXP.js} +13 -19
  120. package/chunks/{chunk-VJCKLKZX.js → chunk-OOU7XOZF.js} +3 -3
  121. package/chunks/{chunk-OM5NSL25.js → chunk-P4P7CH7H.js} +38 -38
  122. package/chunks/{chunk-CIS4SY3R.js → chunk-PPBZHGEQ.js} +3 -3
  123. package/chunks/{chunk-PB7JBAHF.js → chunk-PVBIEIVZ.js} +0 -1
  124. package/chunks/{chunk-GG3MO6NO.js → chunk-PWGMHXIV.js} +2 -2
  125. package/chunks/{chunk-6N2PJAZG.js → chunk-PX2ZOOGQ.js} +1 -1
  126. package/chunks/{chunk-NNN2PKPV.js → chunk-PYYPSK6Q.js} +36 -495
  127. package/chunks/{chunk-TKOQGFRE.js → chunk-PZOWKCPJ.js} +1 -1
  128. package/chunks/{chunk-PJ546DX4.js → chunk-Q36IJ74U.js} +17 -11
  129. package/chunks/chunk-Q4FJVWI4.js +78 -0
  130. package/chunks/{chunk-PA4HU5IQ.js → chunk-QATPE3SN.js} +13 -7
  131. package/chunks/{chunk-MBUUQJPV.js → chunk-QGKAYDES.js} +5 -5
  132. package/chunks/{chunk-TFBQ5CKI.js → chunk-QNEBHC2E.js} +1 -1
  133. package/chunks/{chunk-6NA357SF.js → chunk-QTNSMJKU.js} +1 -1
  134. package/chunks/{chunk-TDLEDOJN.js → chunk-QU7VULWX.js} +5 -4
  135. package/chunks/{chunk-LOTGIM6V.js → chunk-R3IFSY55.js} +20 -20
  136. package/chunks/{chunk-ZX6EZ7EH.js → chunk-RBE3WRSN.js} +3 -3
  137. package/chunks/{chunk-YSZ2XZTG.js → chunk-RBKZ6SK4.js} +5 -5
  138. package/chunks/{chunk-FLRFAPDA.js → chunk-RCL6OXZC.js} +5 -5
  139. package/chunks/{chunk-H4W6TJFJ.js → chunk-RONRTFAQ.js} +1 -1
  140. package/chunks/{chunk-ZEGLZ3MN.js → chunk-SCYKHWRM.js} +5 -5
  141. package/chunks/{chunk-STUJ7IMZ.js → chunk-SI7XKACY.js} +56 -56
  142. package/chunks/{chunk-RL2HSTEB.js → chunk-SYZPPX3O.js} +1492 -1140
  143. package/chunks/{chunk-VUYJRNG5.js → chunk-T7TJPVTY.js} +3 -3
  144. package/chunks/{chunk-4V5YKOBI.js → chunk-TF7UC7F6.js} +3 -3
  145. package/chunks/{chunk-NXZD3VNX.js → chunk-TL7DSR47.js} +1 -1
  146. package/chunks/{chunk-BVFBDXI2.js → chunk-TPFV5YZK.js} +1 -1
  147. package/chunks/{chunk-YIHOHHJL.js → chunk-TZHXHWEW.js} +1 -1
  148. package/chunks/{chunk-3X5BDEXS.js → chunk-U6RMVE5X.js} +8 -8
  149. package/chunks/{chunk-HRVFPNGT.js → chunk-VFNKO4FK.js} +4 -4
  150. package/chunks/{chunk-VPALWDQL.js → chunk-VUIH3BQL.js} +31 -12
  151. package/chunks/{chunk-WVNML4HH.js → chunk-VW33WARJ.js} +1 -1
  152. package/chunks/{chunk-MICQVBPI.js → chunk-WCLHOKAZ.js} +1 -1
  153. package/chunks/{chunk-KMQ2ZH3Q.js → chunk-WVWCRZ6M.js} +2 -2
  154. package/chunks/{chunk-5NFAKADR.js → chunk-WZCVB2ER.js} +1 -36
  155. package/chunks/{chunk-JNQEW7B2.js → chunk-X3A72KX5.js} +6 -6
  156. package/chunks/{chunk-3JSIWFNA.js → chunk-XHHUGXYW.js} +527 -135
  157. package/chunks/{chunk-VIA4STCR.js → chunk-YCCBLTSL.js} +3 -3
  158. package/chunks/{chunk-Q5IEY2TN.js → chunk-Z3I5B4DH.js} +1 -1
  159. package/chunks/{chunk-O346IB64.js → chunk-ZAJNI63I.js} +1 -1
  160. package/chunks/{chunk-QR4U27UW.js → chunk-ZJFCDRVP.js} +4 -4
  161. package/chunks/{codex-subagent-executor-437LQYGM.js → codex-subagent-executor-IKWULWIZ.js} +35 -33
  162. package/chunks/{config-utils-CVLI36KM.js → config-utils-3IOTAFBG.js} +38 -34
  163. package/chunks/{contextCommand-2KSW7H5F.js → contextCommand-ZKG2JFCR.js} +33 -31
  164. package/chunks/{core-runtime-4IB27E7J.js → core-runtime-5CAK5DSM.js} +32 -30
  165. package/chunks/{create-sub-session-A73TQDAN.js → create-sub-session-DG4CVOQC.js} +33 -31
  166. package/chunks/{daemon-Y6AOK7LF.js → daemon-D4OAVQKB.js} +1 -1
  167. package/chunks/{daemon-git-worktree-guard-BTKVV3DZ.js → daemon-git-worktree-guard-S3SFT3H7.js} +32 -30
  168. package/chunks/{daemon-status-provider-ETDIOWMS.js → daemon-status-provider-GG64ZJR3.js} +40 -38
  169. package/chunks/{daemon-trust-policy-U5SPHJLP.js → daemon-trust-policy-XNWYLQ32.js} +38 -36
  170. package/chunks/{daemon-trust-policy-monitor-QKRCO5WI.js → daemon-trust-policy-monitor-DR5CRWMM.js} +38 -36
  171. package/chunks/{deferred-core-runtime-FRELZPIE.js → deferred-core-runtime-V4Q674KN.js} +32 -30
  172. package/chunks/{dist-54LGNLWW.js → dist-3M75XY4G.js} +1 -1
  173. package/chunks/{dist-YZBMQPNS.js → dist-6U5NQYA7.js} +5 -5
  174. package/chunks/{dist-FVMLRUVM.js → dist-AS2RPYOB.js} +1 -1
  175. package/chunks/{dist-HANHY2MK.js → dist-GFT4GU72.js} +2 -2
  176. package/chunks/{dist-Y5GP7SWL.js → dist-J7JK3GPY.js} +10 -9
  177. package/chunks/{dist-O723VE2K.js → dist-JTPRKF5H.js} +30 -27
  178. package/chunks/{dist-MGZKUISU.js → dist-MOO5VOC5.js} +7 -20
  179. package/chunks/{dist-IZ66D5A3.js → dist-NJ2L5QKL.js} +1 -1
  180. package/chunks/{dist-EI2XAB4W.js → dist-YC6LDCKH.js} +22 -28
  181. package/chunks/{edit-TQ3CABYP.js → edit-FPIWTN3L.js} +20 -18
  182. package/chunks/{enter-worktree-J46XVFRS.js → enter-worktree-55OWD4LT.js} +4 -3
  183. package/chunks/{enterPlanMode-JHOWELZO.js → enterPlanMode-GDZVXYB2.js} +18 -16
  184. package/chunks/{environment-LUM7XX27.js → environment-Q2BVTUQO.js} +36 -32
  185. package/chunks/{errors-SH32ID5I.js → errors-MZTLVUEM.js} +34 -32
  186. package/chunks/{execution-sandbox-settings-HIYVUBII.js → execution-sandbox-settings-3WJ67GX3.js} +3 -1
  187. package/chunks/{execution-tool-IIEL25CL.js → execution-tool-DZ4XSEFZ.js} +21 -19
  188. package/chunks/{execution-worker-NKKEZ4XF.js → execution-worker-L3TM3F5D.js} +24 -22
  189. package/chunks/{exit-worktree-BC4SDZCC.js → exit-worktree-MI6N4OUP.js} +4 -3
  190. package/chunks/{exitPlanMode-PUICCCQ5.js → exitPlanMode-VIGOD2KP.js} +18 -16
  191. package/chunks/{fast-path-QH3QTZZA.js → fast-path-JCKEFUUL.js} +4 -4
  192. package/chunks/{fast-path-settings-TQAYWLXR.js → fast-path-settings-VIYSH3SD.js} +2 -2
  193. package/chunks/{glob-OEB4WH3Z.js → glob-UOKQZHKL.js} +18 -16
  194. package/chunks/{goal-tools-KWGKFUSK.js → goal-tools-G4RIX4ER.js} +18 -16
  195. package/chunks/{handleAutoUpdate-KEA7JSUD.js → handleAutoUpdate-UZZEGL3N.js} +34 -32
  196. package/chunks/{i18n-AC3MUXKZ.js → i18n-IL33FVND.js} +32 -30
  197. package/chunks/{initializer-WBD32BEX.js → initializer-BCXBRM6Y.js} +38 -36
  198. package/chunks/{installationInfo-JRGFTKWY.js → installationInfo-V7OKUOJV.js} +32 -30
  199. package/chunks/{list-S7KW7NBX.js → list-LQHG6SXA.js} +41 -39
  200. package/chunks/{llm-E32WLISX.js → llm-JWCANCDC.js} +85 -74
  201. package/chunks/{llm-content-generator-OMKJHC5P.js → llm-content-generator-OXMMHUVK.js} +3 -3
  202. package/chunks/{loadedSettingsAdapter-5OSU3J46.js → loadedSettingsAdapter-EKXSRWMY.js} +38 -36
  203. package/chunks/{local-execution-environment-IQHCTUJ5.js → local-execution-environment-XIQLRMLF.js} +24 -22
  204. package/chunks/{loggingContentGenerator-JIYG3LJS.js → loggingContentGenerator-6KHNZDTZ.js} +20 -18
  205. package/chunks/{managed-npm-update-RKAT7AMQ.js → managed-npm-update-MBUH5TIX.js} +32 -30
  206. package/chunks/managed-runtime-attestation-worker-G23AEEMF.js +367 -0
  207. package/chunks/{mcp-SV72BZKG.js → mcp-AYVCEEN7.js} +38 -36
  208. package/chunks/{model-call-collection-PKDMVCZN.js → model-call-collection-OKUGOY4B.js} +1 -1
  209. package/chunks/{model-configuration-A52XMQW7.js → model-configuration-Q3MNGG3B.js} +38 -36
  210. package/chunks/{modelConfigUtils-7O4P3SLE.js → modelConfigUtils-WC5XDR34.js} +33 -31
  211. package/chunks/{monitor-ZXRV2DJB.js → monitor-7JUZXYZN.js} +18 -16
  212. package/chunks/{nonInteractiveCli-UPSGIYRC.js → nonInteractiveCli-B3GCZ6NJ.js} +74 -73
  213. package/chunks/{nonInteractiveToolExecutor-TDKVR43J.js → nonInteractiveToolExecutor-IUHO7PXG.js} +19 -17
  214. package/chunks/{notebook-edit-FBVHAHYM.js → notebook-edit-IYDACZDW.js} +19 -17
  215. package/chunks/{omni-3NREMV2Q.js → omni-DLBHISHC.js} +10 -7
  216. package/chunks/{openaiContentGenerator-EWPBZFIT.js → openaiContentGenerator-W5GN6H6Z.js} +12 -10
  217. package/chunks/{openaiResponsesContentGenerator-3CI3PINB.js → openaiResponsesContentGenerator-BXXRYJQQ.js} +5 -5
  218. package/chunks/{pidfile-BBUANGZX.js → pidfile-QIBF53CW.js} +32 -30
  219. package/chunks/{processUtils-6OHQLG7W.js → processUtils-2LU22KCR.js} +2 -2
  220. package/chunks/{prompt-terminal-ledger-ZBFYXJ4L.js → prompt-terminal-ledger-LXFVLR6C.js} +33 -31
  221. package/chunks/{qwenContentGenerator-62F5IKXJ.js → qwenContentGenerator-LYMLXBWI.js} +21 -19
  222. package/chunks/{reactive-degrade-URJMXJ7N.js → reactive-degrade-HPYBJHYA.js} +6 -6
  223. package/chunks/{read-file-IM4Q5TKI.js → read-file-SXS2MKDY.js} +6 -3
  224. package/chunks/{record-artifact-K4XSMW4X.js → record-artifact-XP3X7RE5.js} +3 -2
  225. package/chunks/{record-source-XZCI3IGU.js → record-source-2VBLKVIE.js} +2 -2
  226. package/chunks/{report-findings-MCGXBQFX.js → report-findings-D2QUYUOG.js} +4 -3
  227. package/chunks/{request-shutdown-TT62PREA.js → request-shutdown-R5SA5GE3.js} +1 -1
  228. package/chunks/{resumeHistoryUtils-O3NQMDVR.js → resumeHistoryUtils-UPGZGP5V.js} +35 -33
  229. package/chunks/{ripGrep-BG2FEVIV.js → ripGrep-X33VVIN5.js} +8 -5
  230. package/chunks/{run-qwen-serve-GMLWJITM.js → run-qwen-serve-CUB2NZ6P.js} +278 -79
  231. package/chunks/{runtime-SSGPOXRZ.js → runtime-2DAVBADX.js} +43 -41
  232. package/chunks/{sandboxConfig-ALYLLNWY.js → sandboxConfig-ESBH3F27.js} +34 -32
  233. package/chunks/{scheduled-tasks-QJTC5XQ7.js → scheduled-tasks-TGWYXZWW.js} +38 -36
  234. package/chunks/{scheduler-PEXTY7IG.js → scheduler-XGLZCXPN.js} +34 -32
  235. package/chunks/{send-message-3UM7XRTB.js → send-message-FBU6WDID.js} +1 -1
  236. package/chunks/{serve-OVAUTKXK.js → serve-7RX4AIID.js} +38 -36
  237. package/chunks/{server-3MMYOOJW.js → server-MJETIFJS.js} +1789 -375
  238. package/chunks/{session-PZBIKBQJ.js → session-7AVYU3TC.js} +75 -74
  239. package/chunks/{session-attachments-root-ESP5CNBV.js → session-attachments-root-RONFQ3D3.js} +32 -30
  240. package/chunks/{session-pr-refresh-B3N7PKUP.js → session-pr-refresh-ZPT6TAD4.js} +37 -35
  241. package/chunks/{settings-KSQ2DGPY.js → settings-FPMUAVWD.js} +37 -35
  242. package/chunks/{shell-3V26EVNC.js → shell-THD5EYOK.js} +18 -16
  243. package/chunks/{skill-XP7F3LBV.js → skill-2D6KXDC5.js} +52 -13
  244. package/chunks/{skill-settings-PDESL7S3.js → skill-settings-XW7X244B.js} +38 -36
  245. package/chunks/{spawnChannel-NVO7CCBW.js → spawnChannel-DBSAAUUT.js} +34 -32
  246. package/chunks/{standalone-update-FDWS2EGF.js → standalone-update-TFAWA676.js} +33 -31
  247. package/chunks/{start-opentui-ui-WIFFY5UD.js → start-opentui-ui-VYMAXPBH.js} +87 -86
  248. package/chunks/{startInteractiveUI-YBLIRIHD.js → startInteractiveUI-Z54XKH35.js} +1037 -966
  249. package/chunks/{task-create-PEI7AJLE.js → task-create-PVF66J3R.js} +2 -2
  250. package/chunks/{task-update-MQZRWBGK.js → task-update-RSIITTOK.js} +2 -2
  251. package/chunks/{team-create-Z5JUEMB7.js → team-create-TPCELNBJ.js} +18 -16
  252. package/chunks/{team-plan-approval-ZLLHMEQN.js → team-plan-approval-RUURGHQL.js} +18 -16
  253. package/chunks/{terminal-image-renderer-QFO2JTTT.js → terminal-image-renderer-SLJVUD4Z.js} +32 -30
  254. package/chunks/{theme-manager-N7ILUTRY.js → theme-manager-VBOIN2KT.js} +32 -30
  255. package/chunks/{tool-call-PLSQ34VE.js → tool-call-DUHP6UXC.js} +2 -2
  256. package/chunks/{tool-result-media-OAHUKGRK.js → tool-result-media-WU6QAREN.js} +10 -7
  257. package/chunks/{tool-search-534QKE2X.js → tool-search-ET4NH2LK.js} +7 -4
  258. package/chunks/{total-session-admission-EZJQKTPF.js → total-session-admission-UWMJWTWP.js} +35 -33
  259. package/chunks/{trustedFolders-4ZEV6RXD.js → trustedFolders-3WNZBUH7.js} +33 -31
  260. package/chunks/{update-relaunch-GB3SGRDP.js → update-relaunch-SHS3BD6V.js} +5 -5
  261. package/chunks/{updateCheck-DVAGAEQ4.js → updateCheck-MDF2FCRN.js} +32 -30
  262. package/chunks/{upload-config-DMZVTDH7.js → upload-config-LVVUIKA2.js} +4 -4
  263. package/chunks/{useAutoAcceptIndicator-PTQBS42B.js → useAutoAcceptIndicator-26OOM7OM.js} +41 -39
  264. package/chunks/{validateNonInterActiveAuth-DU3WXVSU.js → validateNonInterActiveAuth-TBCZCQIN.js} +72 -71
  265. package/chunks/{version-PNMZGKCV.js → version-MICV7I4Y.js} +1 -1
  266. package/chunks/{web-fetch-LMCOAHW6.js → web-fetch-3O2DFRE5.js} +13 -9
  267. package/chunks/{web-search-N7RR74LA.js → web-search-5FS3NB3D.js} +4 -4
  268. package/chunks/{web-shell-static-GI6FVIMI.js → web-shell-static-E3O6NW7Y.js} +4 -3
  269. package/chunks/{workflow-ZZPHI7FK.js → workflow-FRJO5ZUI.js} +19 -17
  270. package/chunks/{workspace-providers-status-TU73CNRF.js → workspace-providers-status-I5MO7Z2T.js} +43 -41
  271. package/chunks/{workspace-registration-store-743FRSOU.js → workspace-registration-store-CBHKV34L.js} +1 -1
  272. package/chunks/{workspace-registry-S7QTXFWM.js → workspace-registry-2UKNZO5M.js} +35 -33
  273. package/chunks/{workspace-runtime-coordinator-GWNDUIGO.js → workspace-runtime-coordinator-TKCI5WJW.js} +36 -34
  274. package/chunks/{workspace-service-CERZFJ3B.js → workspace-service-M3ZKR6WL.js} +40 -38
  275. package/chunks/{workspace-skills-status-5M3EIAUY.js → workspace-skills-status-OC3EYL7U.js} +41 -39
  276. package/chunks/{workspace-trust-reconciler-Q3LUKMQB.js → workspace-trust-reconciler-YQZSUOH4.js} +41 -39
  277. package/chunks/{write-file-CT54LXQL.js → write-file-BATJLBJX.js} +21 -19
  278. package/chunks/{zoom-image-EU3PGSZM.js → zoom-image-5I7DDLQE.js} +10 -6
  279. package/cli-entry.js +13 -0
  280. package/cli.js +24 -12
  281. package/execution-worker.js +1 -1
  282. package/export-transcript-document.css +1 -1
  283. package/export-transcript-document.js +104 -104
  284. package/package.json +3 -3
  285. package/web-shell/assets/{abnfDiagram-VCTEODGH-DDYEvG-M.js → abnfDiagram-VCTEODGH-DQHroFS1.js} +1 -1
  286. package/web-shell/assets/{arc-DQncKWFX.js → arc-BrOc_HVh.js} +1 -1
  287. package/web-shell/assets/{architectureDiagram-5GKGNRK7-C0-8u9zj.js → architectureDiagram-5GKGNRK7-DXce8IH6.js} +1 -1
  288. package/web-shell/assets/{blockDiagram-NRAW4CY4-Cpt59Ge5.js → blockDiagram-NRAW4CY4-96A3Q3-l.js} +1 -1
  289. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BvESWh83.js → c4Diagram-UCG6FXSJ-CQBg2PSg.js} +1 -1
  290. package/web-shell/assets/channel-CBP6pwSs.js +1 -0
  291. package/web-shell/assets/{chunk-2Q5K7J3B-wKulGIU6.js → chunk-2Q5K7J3B-i_jhVz-t.js} +1 -1
  292. package/web-shell/assets/{chunk-5VM5RSS4-BX6kRoq7.js → chunk-5VM5RSS4-Cx3gMrWT.js} +1 -1
  293. package/web-shell/assets/{chunk-F27PBJKO-wA4IqTt-.js → chunk-F27PBJKO-B9WwW7C0.js} +1 -1
  294. package/web-shell/assets/{chunk-G27WJ6UU-B7hzevlb.js → chunk-G27WJ6UU-B8t0FNPI.js} +1 -1
  295. package/web-shell/assets/{chunk-JWPE2WC7-BdBg9pJg.js → chunk-JWPE2WC7-Dg0__6CF.js} +1 -1
  296. package/web-shell/assets/{chunk-LCL6LL3I-DghmF6LJ.js → chunk-LCL6LL3I-DUwE5g3m.js} +1 -1
  297. package/web-shell/assets/{chunk-POPQ4Y6H-BbReTOod.js → chunk-POPQ4Y6H-BirYW5iS.js} +1 -1
  298. package/web-shell/assets/{chunk-SVP7TREG-C1t0_19D.js → chunk-SVP7TREG-_ONJKtFF.js} +1 -1
  299. package/web-shell/assets/{chunk-XXDRQBXY-DQBby5mI.js → chunk-XXDRQBXY-DGi0chgj.js} +1 -1
  300. package/web-shell/assets/classDiagram-DTDB5LWJ-_4_fFrN3.js +1 -0
  301. package/web-shell/assets/classDiagram-v2-JRS7N3AN-_4_fFrN3.js +1 -0
  302. package/web-shell/assets/{cose-bilkent-JH36ORCC-CNrSyg7B.js → cose-bilkent-JH36ORCC-BSSFxREn.js} +1 -1
  303. package/web-shell/assets/{cynefin-OW5HDTMX-DoxgDRN-.js → cynefin-OW5HDTMX-h-oYVCez.js} +1 -1
  304. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BmUwbS8Q.js → cynefinDiagram-5FMLGOSQ-CXj6T7Pm.js} +1 -1
  305. package/web-shell/assets/{dagre-3AP2YEHR-BJrOVIjc.js → dagre-3AP2YEHR-Ch9GIhJm.js} +1 -1
  306. package/web-shell/assets/{diagram-S7CK7UJ4-TDX4KU9V.js → diagram-S7CK7UJ4-Cq3W541T.js} +1 -1
  307. package/web-shell/assets/{diagram-UQ7AKVKN-D3VUQkGl.js → diagram-UQ7AKVKN-Bm1R5-sN.js} +1 -1
  308. package/web-shell/assets/{diagram-VSXAHHWV-CqCpgViy.js → diagram-VSXAHHWV-BW2qG6Vh.js} +1 -1
  309. package/web-shell/assets/{diagram-VX7I27RA-CthqfwCs.js → diagram-VX7I27RA-DN96PhRe.js} +1 -1
  310. package/web-shell/assets/{diagram-Z3DM3KII-BRY3Ahvu.js → diagram-Z3DM3KII-A8MnwaJr.js} +1 -1
  311. package/web-shell/assets/{ebnfDiagram-PWID7BFC-tJvTnIwp.js → ebnfDiagram-PWID7BFC-CZTpUypI.js} +1 -1
  312. package/web-shell/assets/{erDiagram-SSCWMZ5O-DT4b7w5B.js → erDiagram-SSCWMZ5O-CbxCRFru.js} +1 -1
  313. package/web-shell/assets/{flowDiagram-A5DVABFB-C5oirWSf.js → flowDiagram-A5DVABFB-Bt1PM2Dy.js} +1 -1
  314. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-ZD3kNlO4.js → ganttDiagram-EL5Y4UJY-CTgim3LX.js} +1 -1
  315. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Bp1sg_wH.js → gitGraphDiagram-WWUBYQGX-h4jX7S4l.js} +1 -1
  316. package/web-shell/assets/{index-DSIzVof7.js → index-BDxWHGNm.js} +1 -1
  317. package/web-shell/assets/index-Bd3iA5Er.js +2407 -0
  318. package/web-shell/assets/index-DuwfO01z.css +36 -0
  319. package/web-shell/assets/{infoDiagram-RXCK75RN-Btumz_CZ.js → infoDiagram-RXCK75RN-DsIsFmZ4.js} +1 -1
  320. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Dx8_uvso.js → ishikawaDiagram-5VMMS53U-BgF2V3rC.js} +1 -1
  321. package/web-shell/assets/{journeyDiagram-EYS64GPL-DS5spUhj.js → journeyDiagram-EYS64GPL-CJ2ibWhB.js} +1 -1
  322. package/web-shell/assets/{kanban-definition-3QL26DDD-DttC9d4D.js → kanban-definition-3QL26DDD-oqNfpjND.js} +1 -1
  323. package/web-shell/assets/{layout-BDOJQJbX.js → layout-DKF2f-UC.js} +1 -1
  324. package/web-shell/assets/{linear-BsUVMxld.js → linear-CadmYA8J.js} +1 -1
  325. package/web-shell/assets/{mermaid.core-De4-EW4Z.js → mermaid.core-BSD13L-h.js} +6 -6
  326. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BsYY98Wv.js → mindmap-definition-FBJOCRG2-Cg3jlHzV.js} +1 -1
  327. package/web-shell/assets/{pegDiagram-XKGWAZYB-DXnnQrVY.js → pegDiagram-XKGWAZYB-BGzqlBWk.js} +1 -1
  328. package/web-shell/assets/{pieDiagram-E7YTZNPT-DGLAGUYR.js → pieDiagram-E7YTZNPT-BVDdPYnC.js} +1 -1
  329. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Y8DcMTa5.js → quadrantDiagram-AXDQQJYC-D7maRW6r.js} +1 -1
  330. package/web-shell/assets/{railroadDiagram-O6MQD6OU-ZgauslUZ.js → railroadDiagram-O6MQD6OU-C7J0Nnqc.js} +1 -1
  331. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-Kxtu4twe.js → requirementDiagram-EFPCY7ZU-CDEpUB7S.js} +1 -1
  332. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BKsLF9EA.js → sankeyDiagram-P5KCCOFB-DoA0BWeR.js} +1 -1
  333. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-D8sCv1NK.js → sequenceDiagram-WJ2MYXX4-DlqRjDLl.js} +1 -1
  334. package/web-shell/assets/{sizeCapture-X5ZJPWSS-BX8sokZX.js → sizeCapture-X5ZJPWSS-3l2EJ1DB.js} +1 -1
  335. package/web-shell/assets/{stateDiagram-HBIQ2CUA-DFMl58kv.js → stateDiagram-HBIQ2CUA-Bdq0N6Lr.js} +1 -1
  336. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DtdYpKZp.js +1 -0
  337. package/web-shell/assets/{swimlanes-XN3QIQJK-BnMwURLN.js → swimlanes-XN3QIQJK-B4ArxdLV.js} +1 -1
  338. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-B_iL0Dc4.js +8 -0
  339. package/web-shell/assets/{timeline-definition-24CTP7MA-C8y77DDz.js → timeline-definition-24CTP7MA-B_Ug6D_k.js} +1 -1
  340. package/web-shell/assets/{vennDiagram-4TSXK5OY-DOWQgX9u.js → vennDiagram-4TSXK5OY-BR9tvaDT.js} +1 -1
  341. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BM0AVIzE.js → wardleyDiagram-VM6X3IG4-BdGIt6qE.js} +1 -1
  342. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-B18-YghG.js → xychartDiagram-S5SC5T6Z-NxS8XkXN.js} +1 -1
  343. package/web-shell/index.html +2 -2
  344. package/web-shell/sw.js +1 -1
  345. package/bundled/computer-use/references/macos.md +0 -208
  346. package/bundled/computer-use/references/windows-linux.md +0 -247
  347. package/web-shell/assets/channel-B88Zt8_x.js +0 -1
  348. package/web-shell/assets/classDiagram-DTDB5LWJ-Dp-7ruHm.js +0 -1
  349. package/web-shell/assets/classDiagram-v2-JRS7N3AN-Dp-7ruHm.js +0 -1
  350. package/web-shell/assets/index-CpxLhWqx.js +0 -2337
  351. package/web-shell/assets/index-mr0Sw0G-.css +0 -36
  352. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B3HSbbo2.js +0 -1
  353. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-FnO0SUMi.js +0 -8
@@ -49,9 +49,10 @@ import {
49
49
  parseDaemonStatusDetail,
50
50
  positiveFiniteOrNull,
51
51
  prepareManagedScratchRoot,
52
+ pushChannelRestoreIssues,
52
53
  resolveAcpHttpEnabled,
53
54
  toDaemonStatusMemoryLimits
54
- } from "./chunk-H2GVLBFU.js";
55
+ } from "./chunk-I36GIR6K.js";
55
56
  import {
56
57
  ConversationDirectoryIdentityError,
57
58
  assertExactConversationRootIdentity,
@@ -63,7 +64,7 @@ import {
63
64
  isSameConversationDirectoryObject,
64
65
  materializeConversationDirectoryIdentity,
65
66
  revalidateConversationRootIdentity
66
- } from "./chunk-PB7JBAHF.js";
67
+ } from "./chunk-PVBIEIVZ.js";
67
68
  import {
68
69
  formatHostForAuthority,
69
70
  isLoopbackAddress,
@@ -79,12 +80,13 @@ import {
79
80
  normalizeSessionIdForLookup
80
81
  } from "./chunk-ZEZKIS2K.js";
81
82
  import "./chunk-NYWWQ437.js";
82
- import {
83
- require_express
84
- } from "./chunk-5NFAKADR.js";
83
+ import "./chunk-EMGHODF7.js";
85
84
  import {
86
85
  resolveWebShellDir
87
86
  } from "./chunk-FBX2SDQ4.js";
87
+ import {
88
+ require_express
89
+ } from "./chunk-WZCVB2ER.js";
88
90
  import {
89
91
  ConversationRuntimeOwnershipError,
90
92
  LIVE_HOST_PROTOCOL_VERSION
@@ -112,16 +114,16 @@ import {
112
114
  import "./chunk-CKXUWR6I.js";
113
115
  import {
114
116
  resolveChannelCwd
115
- } from "./chunk-VGLXXHTF.js";
116
- import "./chunk-4VSTV4C2.js";
117
+ } from "./chunk-5BLOZPTW.js";
118
+ import "./chunk-IH22ZGZI.js";
117
119
  import {
118
120
  resolveMaxRegisteredWorkspaces,
119
121
  resolveWorkspaceInputs,
120
122
  workspaceRegistrationId
121
- } from "./chunk-SXFZ5P7F.js";
123
+ } from "./chunk-FE7D3WKV.js";
122
124
  import {
123
125
  assertChannelControlWorkspaceCapacity
124
- } from "./chunk-ZX6EZ7EH.js";
126
+ } from "./chunk-RBE3WRSN.js";
125
127
  import {
126
128
  LOAD_REPLAY_META_KEY
127
129
  } from "./chunk-LDH7MN44.js";
@@ -133,19 +135,19 @@ import {
133
135
  import {
134
136
  ExtraCaInspectionError,
135
137
  loadableCertificates
136
- } from "./chunk-CIS4SY3R.js";
138
+ } from "./chunk-PPBZHGEQ.js";
137
139
  import "./chunk-FYJ7W2PI.js";
138
140
  import "./chunk-Z7B6SRPM.js";
139
141
  import {
140
142
  ChannelWebhookEnqueueError
141
- } from "./chunk-STUJ7IMZ.js";
143
+ } from "./chunk-SI7XKACY.js";
142
144
  import {
143
145
  QWEN_SERVER_TOKEN_ENV
144
146
  } from "./chunk-GYTKQYDB.js";
145
147
  import {
146
148
  normalizeWorkerDiagnostic,
147
149
  sanitizeWorkerDiagnostic
148
- } from "./chunk-X2R47SFR.js";
150
+ } from "./chunk-FLVPNMCS.js";
149
151
  import {
150
152
  channelSelectionNames,
151
153
  normalizeServeChannelSelection
@@ -171,13 +173,13 @@ import {
171
173
  import "./chunk-TZBFVXNX.js";
172
174
  import {
173
175
  sanitizeLogText
174
- } from "./chunk-YWZOEHBT.js";
176
+ } from "./chunk-DE2WI7RU.js";
175
177
  import "./chunk-6HOTTZKB.js";
176
178
  import {
177
179
  consumeServeFastPathRejectedLoaderKeys,
178
180
  loadServeFastPathSettings,
179
181
  preResolveServeFastPathHomeEnvOverrides
180
- } from "./chunk-HS5OZTQF.js";
182
+ } from "./chunk-J2FLXQJM.js";
181
183
  import "./chunk-BW4333PP.js";
182
184
  import {
183
185
  acquireInheritedLoaderEnvScrub,
@@ -188,13 +190,13 @@ import {
188
190
  } from "./chunk-CCGFXABG.js";
189
191
  import {
190
192
  getCliVersion
191
- } from "./chunk-STKUN7BR.js";
193
+ } from "./chunk-2XNGG7R3.js";
192
194
  import "./chunk-2RJJSLCF.js";
193
195
  import {
194
196
  InvalidExecutionSandboxConfigError,
195
197
  assertExecutionSandboxSupported,
196
198
  readOperatorSandboxSettings
197
- } from "./chunk-KY4HZXLV.js";
199
+ } from "./chunk-GLPNIOEV.js";
198
200
  import {
199
201
  getGlobalQwenDirLite,
200
202
  resolveConfigPathLite
@@ -3017,6 +3019,53 @@ var ChannelDeliveryAuthorizationStore = class {
3017
3019
  }
3018
3020
  };
3019
3021
 
3022
+ // packages/cli/src/serve/channel-restore-failures.ts
3023
+ init_esbuild_shims();
3024
+ function restoreFailureMessage(message) {
3025
+ return sanitizeLogText(
3026
+ redactLogCredentials(normalizeWorkerDiagnostic(message)),
3027
+ 512
3028
+ );
3029
+ }
3030
+ __name(restoreFailureMessage, "restoreFailureMessage");
3031
+ function createChannelRestoreFailures(options = {}) {
3032
+ const byWorkspace = /* @__PURE__ */ new Map();
3033
+ const isStale = options.isStale ?? (() => false);
3034
+ return {
3035
+ record(failures) {
3036
+ for (const failure of failures) {
3037
+ let channels = byWorkspace.get(failure.workspaceCwd);
3038
+ if (!channels) {
3039
+ channels = /* @__PURE__ */ new Map();
3040
+ byWorkspace.set(failure.workspaceCwd, channels);
3041
+ }
3042
+ channels.set(failure.channel, {
3043
+ workspaceCwd: failure.workspaceCwd,
3044
+ channel: failure.channel,
3045
+ message: restoreFailureMessage(failure.message)
3046
+ });
3047
+ }
3048
+ },
3049
+ get(workspaceCwd, channel) {
3050
+ const failure = byWorkspace.get(workspaceCwd)?.get(channel);
3051
+ return failure && !isStale(failure) ? failure : void 0;
3052
+ },
3053
+ list() {
3054
+ return [...byWorkspace.values()].flatMap((channels) => [...channels.values()]).filter((failure) => !isStale(failure));
3055
+ },
3056
+ clear(workspaceCwd, channel) {
3057
+ const channels = byWorkspace.get(workspaceCwd);
3058
+ if (!channels) return;
3059
+ channels.delete(channel);
3060
+ if (channels.size === 0) byWorkspace.delete(workspaceCwd);
3061
+ },
3062
+ clearAll() {
3063
+ byWorkspace.clear();
3064
+ }
3065
+ };
3066
+ }
3067
+ __name(createChannelRestoreFailures, "createChannelRestoreFailures");
3068
+
3020
3069
  // packages/cli/src/serve/channel-workspace-grouping.ts
3021
3070
  init_esbuild_shims();
3022
3071
  function resolveChannelOwnerCwd(rawCwd, workspaceCwd) {
@@ -3244,6 +3293,7 @@ function resolveStartupChannelSelection(input) {
3244
3293
  selection: { mode: "all" },
3245
3294
  ownerHints: /* @__PURE__ */ new Map(),
3246
3295
  tolerantNames: /* @__PURE__ */ new Set(),
3296
+ claimants: /* @__PURE__ */ new Map(),
3247
3297
  diagnostics
3248
3298
  };
3249
3299
  }
@@ -3267,6 +3317,12 @@ function resolveStartupChannelSelection(input) {
3267
3317
  selection: names.length > 0 ? { mode: "names", names } : void 0,
3268
3318
  ownerHints,
3269
3319
  tolerantNames,
3320
+ claimants: new Map(
3321
+ [...claimsByName].map(([name, claims]) => [
3322
+ name,
3323
+ claims.map((claim) => claim.workspaceCwd)
3324
+ ])
3325
+ ),
3270
3326
  diagnostics
3271
3327
  };
3272
3328
  }
@@ -4117,12 +4173,12 @@ __name(hasRetryableChannelWorkerShutdownError, "hasRetryableChannelWorkerShutdow
4117
4173
  var channelWorkerRuntimePromise;
4118
4174
  async function loadChannelWorkerRuntime() {
4119
4175
  channelWorkerRuntimePromise ??= Promise.all([
4120
- import("./channel-worker-supervisor-PUMSN4J2.js"),
4121
- import("./pidfile-BBUANGZX.js"),
4122
- import("./runtime-SSGPOXRZ.js"),
4176
+ import("./channel-worker-supervisor-ENJ2AE2N.js"),
4177
+ import("./pidfile-QIBF53CW.js"),
4178
+ import("./runtime-2DAVBADX.js"),
4123
4179
  import("./cli-entry-path-4VJ3Y6T2.js"),
4124
- import("./channel-worker-group-AKPVHRUO.js"),
4125
- import("./channel-worker-manager-TDAQSKWX.js")
4180
+ import("./channel-worker-group-QNX4OIMZ.js"),
4181
+ import("./channel-worker-manager-IJCPV4WY.js")
4126
4182
  ]).then(
4127
4183
  ([
4128
4184
  supervisor,
@@ -4229,7 +4285,7 @@ function shouldPreheatBridge(deps) {
4229
4285
  __name(shouldPreheatBridge, "shouldPreheatBridge");
4230
4286
  var coreRuntimePromise;
4231
4287
  function loadCoreRuntime() {
4232
- coreRuntimePromise ??= import("./core-runtime-4IB27E7J.js");
4288
+ coreRuntimePromise ??= import("./core-runtime-5CAK5DSM.js");
4233
4289
  return coreRuntimePromise;
4234
4290
  }
4235
4291
  __name(loadCoreRuntime, "loadCoreRuntime");
@@ -4265,10 +4321,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
4265
4321
  var settingsRuntimePromise;
4266
4322
  function loadSettingsRuntimeModules() {
4267
4323
  settingsRuntimePromise ??= Promise.all([
4268
- import("./settings-KSQ2DGPY.js"),
4269
- import("./environment-LUM7XX27.js"),
4270
- import("./loadedSettingsAdapter-5OSU3J46.js"),
4271
- import("./trustedFolders-4ZEV6RXD.js")
4324
+ import("./settings-FPMUAVWD.js"),
4325
+ import("./environment-Q2BVTUQO.js"),
4326
+ import("./loadedSettingsAdapter-EKXSRWMY.js"),
4327
+ import("./trustedFolders-3WNZBUH7.js")
4272
4328
  ]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
4273
4329
  settings,
4274
4330
  environment,
@@ -4281,8 +4337,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
4281
4337
  var channelWebhookConfigRuntimePromise;
4282
4338
  function loadChannelWebhookConfigRuntime() {
4283
4339
  channelWebhookConfigRuntimePromise ??= Promise.all([
4284
- import("./runtime-SSGPOXRZ.js"),
4285
- import("./config-utils-CVLI36KM.js")
4340
+ import("./runtime-2DAVBADX.js"),
4341
+ import("./config-utils-3IOTAFBG.js")
4286
4342
  ]).then(([channelRuntime, configUtils]) => ({
4287
4343
  loadChannelsConfig: channelRuntime.loadChannelsConfig,
4288
4344
  parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
@@ -4309,19 +4365,19 @@ async function loadServeRuntimeModules() {
4309
4365
  workspaceRuntimeCoordinatorModule,
4310
4366
  promptLedgerModule
4311
4367
  ] = await Promise.all([
4312
- import("./server-3MMYOOJW.js"),
4313
- import("./bridge-KGJYQUWD.js"),
4314
- import("./spawnChannel-NVO7CCBW.js"),
4368
+ import("./server-MJETIFJS.js"),
4369
+ import("./bridge-BUCSJHCE.js"),
4370
+ import("./spawnChannel-DBSAAUUT.js"),
4315
4371
  import("./process-registry-MDKO6QY2.js"),
4316
- import("./workspace-service-CERZFJ3B.js"),
4372
+ import("./workspace-service-M3ZKR6WL.js"),
4317
4373
  import("./types-HKLPXZB3.js"),
4318
- import("./daemon-status-provider-ETDIOWMS.js"),
4319
- import("./workspace-providers-status-TU73CNRF.js"),
4320
- import("./workspace-skills-status-5M3EIAUY.js"),
4321
- import("./total-session-admission-EZJQKTPF.js"),
4322
- import("./workspace-registry-S7QTXFWM.js"),
4323
- import("./workspace-runtime-coordinator-GWNDUIGO.js"),
4324
- import("./prompt-terminal-ledger-ZBFYXJ4L.js")
4374
+ import("./daemon-status-provider-GG64ZJR3.js"),
4375
+ import("./workspace-providers-status-I5MO7Z2T.js"),
4376
+ import("./workspace-skills-status-OC3EYL7U.js"),
4377
+ import("./total-session-admission-UWMJWTWP.js"),
4378
+ import("./workspace-registry-2UKNZO5M.js"),
4379
+ import("./workspace-runtime-coordinator-TKCI5WJW.js"),
4380
+ import("./prompt-terminal-ledger-LXFVLR6C.js")
4325
4381
  ]);
4326
4382
  return {
4327
4383
  createServeApp: serverModule.createServeApp,
@@ -4562,6 +4618,7 @@ function createBootstrapServeApp(input) {
4562
4618
  getRuntimeError,
4563
4619
  getChannelWorkerSnapshot,
4564
4620
  getChannelWorkerSnapshots,
4621
+ getChannelRestoreFailures,
4565
4622
  onHealthServed
4566
4623
  } = input;
4567
4624
  const app = (0, import_express.default)();
@@ -4659,6 +4716,7 @@ function createBootstrapServeApp(input) {
4659
4716
  };
4660
4717
  const daemonLogStatus = daemonLog.getStatus();
4661
4718
  const issues = [issue];
4719
+ pushChannelRestoreIssues(issues, getChannelRestoreFailures());
4662
4720
  if (daemonLogStatus.health === "degraded") {
4663
4721
  issues.push({
4664
4722
  code: "daemon_log_degraded",
@@ -5432,7 +5490,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5432
5490
  let workspaceRegistrationStore = deps.workspaceRegistrationStore;
5433
5491
  const explicitWorkspaceCount = workspaceInputs.length;
5434
5492
  if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
5435
- const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-743FRSOU.js");
5493
+ const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-CBHKV34L.js");
5436
5494
  workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
5437
5495
  }
5438
5496
  if (workspaceRegistrationStore) {
@@ -5550,9 +5608,22 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5550
5608
  });
5551
5609
  loggerLifecycle.initialized(daemonLog);
5552
5610
  let channelSelectionFromSettings = false;
5553
- let bootChannelOwnerHints = /* @__PURE__ */ new Map();
5611
+ const channelSelectionFromFlag = opts.channelSelection !== void 0;
5612
+ const bootChannelOwnerHints = /* @__PURE__ */ new Map();
5554
5613
  let channelOwnerHints = /* @__PURE__ */ new Map();
5555
5614
  let channelStartupTolerantNames = /* @__PURE__ */ new Set();
5615
+ const lateRestoredWorkspaces = /* @__PURE__ */ new Set();
5616
+ let bootChannelClaimants = /* @__PURE__ */ new Map();
5617
+ const channelRestoreFailures = createChannelRestoreFailures({
5618
+ isStale: /* @__PURE__ */ __name((failure) => {
5619
+ if (channelWorkerManager?.committedChannelNames().includes(failure.channel)) {
5620
+ return true;
5621
+ }
5622
+ const registry = (runtimeApp ?? runtimeAppForCleanup)?.locals?.["workspaceRegistry"];
5623
+ return registry ? !registry.getByWorkspaceCwd(failure.workspaceCwd) : false;
5624
+ }, "isStale")
5625
+ });
5626
+ let channelHostingStoppedByOperator = false;
5556
5627
  const reportConfiguredChannelStartupFailure = /* @__PURE__ */ __name((error) => {
5557
5628
  const message = sanitizeLogText(
5558
5629
  redactLogCredentials(
@@ -5600,6 +5671,20 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5600
5671
  workspaceCwd: workspace.cwd,
5601
5672
  primary: index === 0
5602
5673
  }));
5674
+ const loadStartupChannelsFor = /* @__PURE__ */ __name((workspaceCwd) => (workspaceCwd === boundWorkspace ? bootSettings : loadServeFastPathSettings(workspaceCwd))?.serve?.channels, "loadStartupChannelsFor");
5675
+ const startupChannelsForWorkspace = /* @__PURE__ */ __name((workspaceCwd) => {
5676
+ const restored = resolveStartupChannelSelection({
5677
+ // Never the primary workspace, and read from disk rather than from the
5678
+ // boot snapshot: this runs long after boot, and the file may have been
5679
+ // edited since — through the management API among other things.
5680
+ workspaces: [{ workspaceCwd, primary: false }],
5681
+ loadStartupChannels: /* @__PURE__ */ __name((cwd) => loadServeFastPathSettings(cwd)?.serve?.channels, "loadStartupChannels")
5682
+ });
5683
+ for (const diagnostic of restored.diagnostics) {
5684
+ reportStartupChannelDiagnostic(diagnostic);
5685
+ }
5686
+ return restored.selection?.mode === "names" ? restored.selection.names : [];
5687
+ }, "startupChannelsForWorkspace");
5603
5688
  if (!opts.channelSelection && (bootSettings?.serve?.channels !== void 0 || startupChannelWorkspaces.length > 1)) {
5604
5689
  try {
5605
5690
  const restored = resolveStartupChannelSelection({
@@ -5608,9 +5693,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5608
5693
  // registered workspace is read here, through the same loader, so a
5609
5694
  // secondary workspace contributes exactly what it would contribute if
5610
5695
  // it were the one the daemon bound to.
5611
- loadStartupChannels: /* @__PURE__ */ __name((workspaceCwd) => (workspaceCwd === boundWorkspace ? bootSettings : (deps.loadWorkspaceBootSettings ?? loadServeFastPathSettings)(
5612
- workspaceCwd
5613
- ))?.serve?.channels, "loadStartupChannels")
5696
+ loadStartupChannels: loadStartupChannelsFor
5614
5697
  });
5615
5698
  for (const diagnostic of restored.diagnostics) {
5616
5699
  reportStartupChannelDiagnostic(diagnostic);
@@ -5618,14 +5701,21 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5618
5701
  opts.channelSelection = restored.selection;
5619
5702
  if (opts.channelSelection) {
5620
5703
  channelSelectionFromSettings = true;
5621
- bootChannelOwnerHints = restored.ownerHints;
5622
- channelOwnerHints = restored.ownerHints;
5704
+ for (const [name, owner] of restored.ownerHints) {
5705
+ bootChannelOwnerHints.set(name, owner);
5706
+ }
5707
+ channelOwnerHints = new Map(bootChannelOwnerHints);
5623
5708
  channelStartupTolerantNames = restored.tolerantNames;
5709
+ bootChannelClaimants = restored.claimants;
5624
5710
  channelRuntime = await ensureChannelRuntime();
5625
5711
  daemonLog.info("restoring channels from workspace serve.channels", {
5626
5712
  channels: channelSelectionNames(opts.channelSelection),
5627
5713
  workspaceCwd: boundWorkspace,
5628
- ...restored.ownerHints.size > 0 ? { requestedByWorkspace: Object.fromEntries(restored.ownerHints) } : {}
5714
+ ...restored.ownerHints.size > 0 ? {
5715
+ // The daemon log renders each field with String(), so an
5716
+ // object here would print as "[object Object]".
5717
+ requestedByWorkspace: [...restored.ownerHints].map(([name, owner]) => `${name}@${owner}`).join(",")
5718
+ } : {}
5629
5719
  });
5630
5720
  }
5631
5721
  } catch (error) {
@@ -5810,7 +5900,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5810
5900
  "qwen serve: required external tool guard handshake succeeded."
5811
5901
  );
5812
5902
  }
5813
- const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-BTKVV3DZ.js");
5903
+ const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-S3SFT3H7.js");
5814
5904
  const daemonToolGuardHandler = createDaemonToolGuard(
5815
5905
  externalToolGuardHandler
5816
5906
  );
@@ -5979,8 +6069,39 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5979
6069
  await manager.shutdown().catch(() => void 0);
5980
6070
  throw daemonDrainingError();
5981
6071
  }
5982
- return manager.setSelection(selection);
6072
+ const result = await manager.setSelection(selection);
6073
+ channelHostingStoppedByOperator = false;
6074
+ channelRestoreFailures.clearAll();
6075
+ return result;
5983
6076
  }, "setChannelWorkerSelection");
6077
+ const channelStartupMessages = /* @__PURE__ */ __name((err) => {
6078
+ const startupFailures = err?.startupFailures;
6079
+ return new Map(
6080
+ (Array.isArray(startupFailures) ? startupFailures : []).map((failure) => [failure.channel, failure.message])
6081
+ );
6082
+ }, "channelStartupMessages");
6083
+ const lateRestoreFailures = /* @__PURE__ */ __name((workspaceCwd, requested, err) => {
6084
+ const committed = new Set(channelWorkerManager?.committedChannelNames());
6085
+ const reported = channelStartupMessages(err);
6086
+ const message = err instanceof Error ? err.message : String(err);
6087
+ return requested.filter((channel) => !committed.has(channel)).map((channel) => ({
6088
+ workspaceCwd,
6089
+ channel,
6090
+ message: reported.get(channel) ?? message
6091
+ }));
6092
+ }, "lateRestoreFailures");
6093
+ const addChannelsToSelection = /* @__PURE__ */ __name(async (names) => {
6094
+ if (channelControlDraining) throw daemonDrainingError();
6095
+ const manager = await ensureChannelWorkerManager?.();
6096
+ if (!manager) throw new Error("Channel worker manager is unavailable.");
6097
+ if (channelControlDraining) {
6098
+ await manager.shutdown().catch(() => void 0);
6099
+ throw daemonDrainingError();
6100
+ }
6101
+ await manager.addChannels(names, {
6102
+ precondition: /* @__PURE__ */ __name(() => !channelHostingStoppedByOperator, "precondition")
6103
+ });
6104
+ }, "addChannelsToSelection");
5984
6105
  const stopChannelWorker = /* @__PURE__ */ __name(async () => {
5985
6106
  if (channelControlDraining) throw daemonDrainingError();
5986
6107
  const manager = channelWorkerManager ?? await channelWorkerManagerStarting;
@@ -5991,7 +6112,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5991
6112
  if (!manager) {
5992
6113
  return { changed: false, state: getChannelWorkerControl() };
5993
6114
  }
5994
- return manager.stopSelection();
6115
+ const result = await manager.stopSelection();
6116
+ if (result.changed) {
6117
+ channelHostingStoppedByOperator = true;
6118
+ channelRestoreFailures.clearAll();
6119
+ }
6120
+ return result;
5995
6121
  }, "stopChannelWorker");
5996
6122
  const reloadChannelWorker = /* @__PURE__ */ __name(async () => {
5997
6123
  if (channelControlDraining) throw daemonDrainingError();
@@ -6161,7 +6287,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6161
6287
  loadCoreRuntime(),
6162
6288
  loadSettingsRuntimeModules(),
6163
6289
  cliVersionPromise,
6164
- import("./daemon-trust-policy-U5SPHJLP.js")
6290
+ import("./daemon-trust-policy-XNWYLQ32.js")
6165
6291
  ]);
6166
6292
  getWorkspaceRuntimeCoordinatorIfSupported = runtime.getWorkspaceRuntimeCoordinatorIfSupported;
6167
6293
  cliVersion = resolvedCliVersion;
@@ -6614,7 +6740,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6614
6740
  skillSettingStrings,
6615
6741
  skillToggleBlockForName,
6616
6742
  updateWorkspaceSkillSettingLists
6617
- } = await import("./skill-settings-PDESL7S3.js");
6743
+ } = await import("./skill-settings-XW7X244B.js");
6618
6744
  const fresh = loadSettingsForPersistence(workspace);
6619
6745
  const workspaceDisabled = skillSettingStrings(
6620
6746
  fresh,
@@ -6678,7 +6804,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6678
6804
  skillSettingStrings,
6679
6805
  skillToggleBlockForName,
6680
6806
  updateWorkspaceSkillSettingLists
6681
- } = await import("./skill-settings-PDESL7S3.js");
6807
+ } = await import("./skill-settings-XW7X244B.js");
6682
6808
  const fresh = loadSettingsForPersistence(workspace);
6683
6809
  const initialDisabled = skillSettingStrings(
6684
6810
  fresh,
@@ -6791,10 +6917,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6791
6917
  }
6792
6918
  }), "persistSettingsFn");
6793
6919
  const [{ createSubSessionLauncher }, scheduledTaskRoutes] = await Promise.all([
6794
- import("./create-sub-session-A73TQDAN.js"),
6795
- import("./scheduled-tasks-QJTC5XQ7.js")
6920
+ import("./create-sub-session-DG4CVOQC.js"),
6921
+ import("./scheduled-tasks-TGWYXZWW.js")
6796
6922
  ]);
6797
- const { sessionAttachmentsRoots } = await import("./session-attachments-root-ESP5CNBV.js");
6923
+ const { sessionAttachmentsRoots } = await import("./session-attachments-root-RONFQ3D3.js");
6798
6924
  const createCurrentSessionScheduledTaskHandler = /* @__PURE__ */ __name((workspaceCwd, runtimeBaseDir, getBridge, assertGenerationOpen) => async ({
6799
6925
  callerSessionId,
6800
6926
  cron,
@@ -7651,7 +7777,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7651
7777
  };
7652
7778
  sessionPrRefreshTimer?.dispose();
7653
7779
  const refreshGeneration = ++sessionPrRefreshGeneration;
7654
- void import("./session-pr-refresh-B3N7PKUP.js").then((mod) => {
7780
+ void import("./session-pr-refresh-ZPT6TAD4.js").then((mod) => {
7655
7781
  if (refreshGeneration !== sessionPrRefreshGeneration) return;
7656
7782
  sessionPrRefreshTimer = mod.startSessionPrRefreshTimer({
7657
7783
  workspaceRegistry,
@@ -8084,22 +8210,67 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8084
8210
  );
8085
8211
  channelWebhookConfigVersion += 1;
8086
8212
  refreshChannelWebhookConfigs?.();
8087
- if (!channelWorkerManager) return;
8088
- try {
8089
- if (runtimeAdded.trusted) {
8090
- await channelWorkerManager.restoreWorkspace(
8091
- runtimeAdded.workspaceCwd
8092
- );
8093
- }
8094
- await channelWorkerManager.refreshWorkspaces();
8095
- } catch (err) {
8213
+ if (channelWorkerManager) {
8214
+ const manager = channelWorkerManager;
8215
+ const activatedCwd = runtimeAdded.workspaceCwd;
8216
+ const activatedTrusted = runtimeAdded.trusted;
8217
+ void (async () => {
8218
+ try {
8219
+ if (activatedTrusted) {
8220
+ await manager.restoreWorkspace(activatedCwd);
8221
+ }
8222
+ await manager.refreshWorkspaces();
8223
+ } catch (err) {
8224
+ daemonLog.error(
8225
+ "workspace channel worker startup error",
8226
+ err instanceof Error ? err : null
8227
+ );
8228
+ } finally {
8229
+ writeChannelWorkerPidfile();
8230
+ }
8231
+ })();
8232
+ }
8233
+ const workspaceCwd = runtimeAdded.workspaceCwd;
8234
+ if (!runtimeAdded.trusted || runtimeAdded.primary || channelSelectionFromFlag || lateRestoredWorkspaces.has(workspaceCwd) || // A remote workspace's `serve.channels` is not this daemon's to
8235
+ // host, the same exclusion boot applies.
8236
+ readSshWorkspace(workspaceCwd)) {
8237
+ return;
8238
+ }
8239
+ if (channelHostingStoppedByOperator) {
8240
+ daemonLog.info(
8241
+ "skipping serve.channels for a workspace registered after boot: channel hosting was stopped",
8242
+ { workspaceCwd }
8243
+ );
8244
+ return;
8245
+ }
8246
+ if (channelWorkerManager?.state().selection?.mode === "all") {
8247
+ return;
8248
+ }
8249
+ const requested = startupChannelsForWorkspace(workspaceCwd);
8250
+ if (requested.length === 0) return;
8251
+ lateRestoredWorkspaces.add(workspaceCwd);
8252
+ daemonLog.info(
8253
+ "restoring serve.channels for a workspace registered after boot",
8254
+ { workspaceCwd, channels: requested }
8255
+ );
8256
+ void addChannelsToSelection(requested).catch((err) => {
8096
8257
  daemonLog.error(
8097
- "workspace channel worker startup error",
8098
- err instanceof Error ? err : null
8258
+ `serve.channels for a workspace registered after boot were not restored: ${sanitizeLogText(
8259
+ redactLogCredentials(
8260
+ err instanceof Error ? err.message : String(err)
8261
+ ),
8262
+ 512
8263
+ )}`,
8264
+ null,
8265
+ { workspaceCwd }
8099
8266
  );
8100
- } finally {
8267
+ if (channelControlDraining) return;
8268
+ channelRestoreFailures.record(
8269
+ lateRestoreFailures(workspaceCwd, requested, err)
8270
+ );
8271
+ }).finally(() => {
8101
8272
  writeChannelWorkerPidfile();
8102
- }
8273
+ });
8103
8274
  },
8104
8275
  beginDrain(runtimeToDrain) {
8105
8276
  if (runtimeToDrain.primary) {
@@ -8335,13 +8506,14 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8335
8506
  { createChannelManagementService },
8336
8507
  { WorkspaceChannelSettingsStore }
8337
8508
  ] = await Promise.all([
8338
- import("./channel-management-service-YN4A3BJ6.js"),
8339
- import("./channel-settings-store-773UOD6B.js")
8509
+ import("./channel-management-service-Q2B7WUPL.js"),
8510
+ import("./channel-settings-store-U25CVEL6.js")
8340
8511
  ]);
8341
8512
  return createChannelManagementService({
8342
8513
  workspaceCwd: targetRuntime.workspaceCwd,
8343
8514
  store: new WorkspaceChannelSettingsStore(targetRuntime.workspaceCwd),
8344
- manager: await ensureChannelWorkerManager()
8515
+ manager: await ensureChannelWorkerManager(),
8516
+ restoreFailures: channelRestoreFailures
8345
8517
  });
8346
8518
  })();
8347
8519
  channelManagementServices.set(targetRuntime, pending);
@@ -8427,6 +8599,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8427
8599
  daemonLog,
8428
8600
  getChannelWorkerSnapshot,
8429
8601
  getChannelWorkerSnapshots,
8602
+ getChannelRestoreFailures: /* @__PURE__ */ __name(() => channelRestoreFailures.list(), "getChannelRestoreFailures"),
8430
8603
  getChannelWorkerControl,
8431
8604
  isChannelControlDraining: /* @__PURE__ */ __name(() => channelControlDraining, "isChannelControlDraining"),
8432
8605
  isChannelControlInitializing: /* @__PURE__ */ __name(() => channelWorkerManagerStarting !== void 0, "isChannelControlInitializing"),
@@ -8499,7 +8672,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8499
8672
  ),
8500
8673
  updateModelContextWindow: /* @__PURE__ */ __name((workspace, key, size, assertGenerationOpen) => withSettingsLock(workspace, async () => {
8501
8674
  assertGenerationOpen();
8502
- const { updateModelContextWindow } = await import("./model-configuration-A52XMQW7.js");
8675
+ const { updateModelContextWindow } = await import("./model-configuration-Q3MNGG3B.js");
8503
8676
  return updateModelContextWindow(
8504
8677
  loadSettingsForPersistence(workspace),
8505
8678
  key,
@@ -8537,7 +8710,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8537
8710
  const adapter = settingsRuntime.loadedSettingsAdapter.createLoadedSettingsAdapter(
8538
8711
  fresh
8539
8712
  );
8540
- const { getAuthTypeFromEnv } = await import("./modelConfigUtils-7O4P3SLE.js");
8713
+ const { getAuthTypeFromEnv } = await import("./modelConfigUtils-WC5XDR34.js");
8541
8714
  const hasConversationAuth = adapter.getValue("security.auth.selectedType") || getAuthTypeFromEnv(primaryRuntimeEnv.effectiveEnv);
8542
8715
  await core.applyProviderInstallPlan(plan, {
8543
8716
  settings: adapter,
@@ -8576,8 +8749,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8576
8749
  { createWorkspaceTrustReconciler },
8577
8750
  { createDaemonTrustPolicyMonitor }
8578
8751
  ] = await Promise.all([
8579
- import("./workspace-trust-reconciler-Q3LUKMQB.js"),
8580
- import("./daemon-trust-policy-monitor-QKRCO5WI.js")
8752
+ import("./workspace-trust-reconciler-YQZSUOH4.js"),
8753
+ import("./daemon-trust-policy-monitor-DR5CRWMM.js")
8581
8754
  ]);
8582
8755
  const materializationFor = /* @__PURE__ */ __name((entry, snapshot, decision) => {
8583
8756
  const boundWorkspaces2 = entry.primary && decision.targetTrusted ? runtime.resolveBoundWorkspacesFromIdeEnv(
@@ -8756,6 +8929,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8756
8929
  getRuntimeError: /* @__PURE__ */ __name(() => runtimeStartupError, "getRuntimeError"),
8757
8930
  getChannelWorkerSnapshot,
8758
8931
  getChannelWorkerSnapshots,
8932
+ getChannelRestoreFailures: /* @__PURE__ */ __name(() => channelRestoreFailures.list(), "getChannelRestoreFailures"),
8759
8933
  onHealthServed: deferRuntimeUntilFirstHealth ? () => startRuntimeAfterHealth?.() : void 0
8760
8934
  });
8761
8935
  const deferredChannelWebhookAuth = deferRuntimeUntilFirstHealth ? createDeferredChannelWebhookAuth(
@@ -8774,7 +8948,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8774
8948
  // through (and start the runtime) exactly like the warm app would.
8775
8949
  // Dynamic import keeps web-shell-static out of the serve fast-path
8776
8950
  // static closure (see the import-boundary guards in fast-path.test.ts).
8777
- isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-GI6FVIMI.js").then(
8951
+ isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-E3O6NW7Y.js").then(
8778
8952
  (webShellStatic) => webShellStatic.isPreAuthWebShellRequest(req)
8779
8953
  ) : void 0
8780
8954
  });
@@ -8903,7 +9077,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8903
9077
  if (opts.channelSelection) {
8904
9078
  try {
8905
9079
  channelValidationSettingsRuntime = await loadSettingsRuntimeModules();
8906
- channelValidationTrustPolicy = await import("./daemon-trust-policy-U5SPHJLP.js");
9080
+ channelValidationTrustPolicy = await import("./daemon-trust-policy-XNWYLQ32.js");
8907
9081
  channelValidationTrustSnapshot = await channelValidationTrustPolicy.readDaemonTrustPolicySnapshot();
8908
9082
  if (opts.channelSelection.mode === "names" && workspaceInputs.length > MAX_CHANNEL_CONTROL_WORKSPACES) {
8909
9083
  const resolved = resolveChannelWorkspaceGroupsAtListen();
@@ -9539,6 +9713,22 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
9539
9713
  throw error2;
9540
9714
  }
9541
9715
  closeServerAfterChannelWorkerStartupFailure = false;
9716
+ if (opts.channelSelection?.mode === "names") {
9717
+ const reported = channelStartupMessages(error2);
9718
+ const message = error2 instanceof Error ? error2.message : String(error2);
9719
+ channelRestoreFailures.record(
9720
+ opts.channelSelection.names.flatMap((channel) => {
9721
+ const owners = bootChannelClaimants.get(channel) ?? [
9722
+ boundWorkspace
9723
+ ];
9724
+ return owners.map((workspaceCwd) => ({
9725
+ workspaceCwd,
9726
+ channel,
9727
+ message: reported.get(channel) ?? message
9728
+ }));
9729
+ })
9730
+ );
9731
+ }
9542
9732
  opts.channelSelection = void 0;
9543
9733
  reportConfiguredChannelStartupFailure(error2);
9544
9734
  try {
@@ -9973,6 +10163,15 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
9973
10163
  code: skip.code,
9974
10164
  channel: skip.channel
9975
10165
  });
10166
+ channelRestoreFailures.record(
10167
+ (bootChannelClaimants.get(skip.channel) ?? []).map(
10168
+ (workspaceCwd) => ({
10169
+ workspaceCwd,
10170
+ channel: skip.channel,
10171
+ message: skip.message
10172
+ })
10173
+ )
10174
+ );
9976
10175
  }
9977
10176
  if (resolved.skipped.length > 0) {
9978
10177
  const hosted = new Set(