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

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 (282) hide show
  1. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  2. package/bundled/qc-helper/docs/configuration/model-providers.md +19 -15
  3. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  4. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  5. package/bundled/qc-helper/docs/features/channels/overview.md +26 -51
  6. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  7. package/bundled/qc-helper/docs/features/commands.md +48 -9
  8. package/bundled/qc-helper/docs/features/goals.md +2 -0
  9. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  10. package/bundled/qc-helper/docs/qwen-serve.md +62 -48
  11. package/chunks/{MaxSizedBox-ZZJT3PJF.js → MaxSizedBox-4C3BKKKY.js} +17 -16
  12. package/chunks/{StandaloneSessionPicker-DIOSZTMX.js → StandaloneSessionPicker-TXVF65YW.js} +32 -31
  13. package/chunks/{acpAgent-62JUP5A7.js → acpAgent-H5XBKGB4.js} +301 -166
  14. package/chunks/{agent-NLPEQQDZ.js → agent-T5LEFJIU.js} +10 -10
  15. package/chunks/{agent-headless-Y2GR5F2Q.js → agent-headless-VZKSRH36.js} +10 -10
  16. package/chunks/{anthropicContentGenerator-I7LQZH26.js → anthropicContentGenerator-PRJWWVYJ.js} +2 -2
  17. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
  18. package/chunks/{bridge-Q66BD62H.js → bridge-AOX5IY44.js} +18 -17
  19. package/chunks/{channel-management-service-TRTLQTSV.js → channel-management-service-MWQGHPAS.js} +4 -4
  20. package/chunks/{channel-settings-store-R5STFWUW.js → channel-settings-store-XZCGDGHW.js} +26 -25
  21. package/chunks/{channel-worker-group-PIYPVCTF.js → channel-worker-group-SQ5FRWOH.js} +5 -5
  22. package/chunks/{channel-worker-manager-FQHEDTD2.js → channel-worker-manager-TU4ZNWOE.js} +5 -5
  23. package/chunks/{channel-worker-supervisor-XJPZZ3VK.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
  24. package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
  25. package/chunks/{chunk-7L35FKPF.js → chunk-2BMXHB6N.js} +2 -2
  26. package/chunks/chunk-2WC3Y7YY.js +1033 -0
  27. package/chunks/{chunk-WZ4YULVF.js → chunk-3OAXF3UK.js} +210 -80
  28. package/chunks/{chunk-W673V2H3.js → chunk-46MMBZHI.js} +3 -3
  29. package/chunks/{chunk-6GRDHIVI.js → chunk-4I3WFI3U.js} +4 -4
  30. package/chunks/{chunk-QXXBW2G4.js → chunk-4JNHNVAZ.js} +3 -3
  31. package/chunks/{chunk-R2266LQ5.js → chunk-4WMGYG3F.js} +2 -2
  32. package/chunks/{chunk-Y6ZWXM44.js → chunk-5BH2AIEY.js} +1 -1
  33. package/chunks/{chunk-EA4NFWVG.js → chunk-5OZUKLL7.js} +3 -3
  34. package/chunks/{chunk-RX3FYFCN.js → chunk-67XTVRVB.js} +1 -1
  35. package/chunks/{chunk-MA5OUNN6.js → chunk-6G4V7SE4.js} +1 -1
  36. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  37. package/chunks/{chunk-7GZCCHJL.js → chunk-7LTCFO6T.js} +3 -3
  38. package/chunks/{chunk-33MLFMCL.js → chunk-7NDZKE2M.js} +2 -2
  39. package/chunks/{chunk-5WC2ECUK.js → chunk-7PD7ZMX5.js} +17 -4
  40. package/chunks/{chunk-ZUNWKOAP.js → chunk-7SVM3RP2.js} +4 -24
  41. package/chunks/{chunk-5GD7LYOH.js → chunk-A7EFXK7P.js} +1 -1
  42. package/chunks/{chunk-RDV4NLI3.js → chunk-AO2VMS72.js} +2 -2
  43. package/chunks/{chunk-XAXTQURR.js → chunk-APXIW2TF.js} +3 -3
  44. package/chunks/{chunk-3BTHHXXE.js → chunk-AUTUFD5X.js} +1 -1
  45. package/chunks/{chunk-VH764G6B.js → chunk-B25JYXZE.js} +2 -2
  46. package/chunks/{chunk-MMMA36MN.js → chunk-BK7D2JR6.js} +3 -3
  47. package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
  48. package/chunks/{chunk-EUXF6URV.js → chunk-CCBTNJB4.js} +16 -18
  49. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  50. package/chunks/{chunk-L6ZME3W7.js → chunk-CMWU6P4D.js} +1 -1
  51. package/chunks/{chunk-QJAFSFYA.js → chunk-CWVZBIZJ.js} +1 -1
  52. package/chunks/{chunk-JDPBJIKI.js → chunk-DAI65CMX.js} +1 -1
  53. package/chunks/{chunk-GM44O6F7.js → chunk-DARWOZY6.js} +1 -1
  54. package/chunks/{chunk-J4ECGDA3.js → chunk-ELD3OBPU.js} +3 -3
  55. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  56. package/chunks/{chunk-OIPUQE3S.js → chunk-F2NYVASI.js} +14 -1
  57. package/chunks/{chunk-ODBNTMZW.js → chunk-FAJPLSYF.js} +36 -29
  58. package/chunks/{chunk-GXIHBIHC.js → chunk-FGHPZGOP.js} +29 -24
  59. package/chunks/{chunk-TK4XHPKW.js → chunk-G37O7YO6.js} +2 -2
  60. package/chunks/{chunk-4JKLPTV6.js → chunk-G3ZUMSFS.js} +12 -5
  61. package/chunks/{chunk-743XE7N7.js → chunk-G5VOXCRX.js} +1 -1
  62. package/chunks/{chunk-BL6B2QS2.js → chunk-GOEVQADN.js} +618 -1122
  63. package/chunks/{chunk-XI7RST4D.js → chunk-GOKAOSCN.js} +1 -1
  64. package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
  65. package/chunks/{chunk-43CI6YWJ.js → chunk-HJ5UJQQL.js} +1384 -1245
  66. package/chunks/{chunk-LUVXLLMS.js → chunk-IR6JKBAP.js} +1 -1
  67. package/chunks/{chunk-CPJRFFPH.js → chunk-IRGDIDGJ.js} +558 -158
  68. package/chunks/{chunk-DCPRCDSR.js → chunk-IWABUX6T.js} +1 -1
  69. package/chunks/{chunk-DTB5BXRG.js → chunk-JO77FGNZ.js} +16 -15
  70. package/chunks/{chunk-45ROPFQY.js → chunk-JYGIJA4W.js} +1 -1
  71. package/chunks/{chunk-M6YLOETP.js → chunk-KCF2436G.js} +1 -1
  72. package/chunks/{chunk-CABDNUJ4.js → chunk-KEPC5BOL.js} +5 -5
  73. package/chunks/{chunk-RN6V5HKE.js → chunk-KFECPHLV.js} +3 -3
  74. package/chunks/{chunk-WIRYFL2L.js → chunk-LEAOJ43M.js} +17 -15
  75. package/chunks/{chunk-IUJLW6ZI.js → chunk-LUNC5KCL.js} +3 -3
  76. package/chunks/{chunk-WZS3X663.js → chunk-LWX4WDFF.js} +2 -5
  77. package/chunks/{chunk-ISPBBKJN.js → chunk-MV5DTLJV.js} +7 -2
  78. package/chunks/chunk-NFXXBWSE.js +463 -0
  79. package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
  80. package/chunks/{chunk-7RXOEUFF.js → chunk-NX7ZTXFF.js} +1 -1
  81. package/chunks/{chunk-G5QLLD53.js → chunk-OXR34GCD.js} +14 -2
  82. package/chunks/{chunk-VHPG7BH6.js → chunk-PDN7FJZV.js} +1 -1
  83. package/chunks/{chunk-UHUT4IDM.js → chunk-PFKGV6PO.js} +9 -9
  84. package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
  85. package/chunks/{chunk-QLM7D7W3.js → chunk-QFJZAY7W.js} +7 -7
  86. package/chunks/{chunk-NVS4Z6GT.js → chunk-QHLHE2OT.js} +1 -1
  87. package/chunks/{chunk-B44JBZBB.js → chunk-QQK4L3UU.js} +1 -1
  88. package/chunks/{chunk-63ACHB2H.js → chunk-QTB4VP4K.js} +50 -18
  89. package/chunks/{chunk-4BLTSTF6.js → chunk-R3JIDRUL.js} +4 -4
  90. package/chunks/{chunk-VEQBVJYH.js → chunk-R457KFV7.js} +3 -3
  91. package/chunks/{chunk-CG2PDIGD.js → chunk-RM244SCQ.js} +1 -1
  92. package/chunks/{chunk-W7PXLIZJ.js → chunk-RNAJVXUG.js} +5 -5
  93. package/chunks/{chunk-VF6D6EGV.js → chunk-S5QR6CB5.js} +52 -6
  94. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  95. package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
  96. package/chunks/{chunk-ORREXWOM.js → chunk-TODNHE76.js} +3 -3
  97. package/chunks/{chunk-W3ONSAYO.js → chunk-TOOOLHVS.js} +2 -2
  98. package/chunks/{chunk-EHTKOO6W.js → chunk-TRQNRP2H.js} +2 -2
  99. package/chunks/{chunk-PQWM4SX2.js → chunk-U6REWGVR.js} +2 -2
  100. package/chunks/{chunk-UXDVUFKU.js → chunk-ULZECEIP.js} +2 -2
  101. package/chunks/{chunk-6YEOCHSE.js → chunk-VBLAI2HA.js} +101 -0
  102. package/chunks/{chunk-M73KHGNR.js → chunk-VJJXG73H.js} +404 -226
  103. package/chunks/{chunk-Q2F43WTJ.js → chunk-WBU2PIZ5.js} +23 -6
  104. package/chunks/{chunk-UULHYZ4W.js → chunk-WDN64MVT.js} +74 -15
  105. package/chunks/{chunk-XVTCSVBK.js → chunk-WDVV3LRM.js} +193 -169
  106. package/chunks/{chunk-LBKYQ33T.js → chunk-WK7P62DV.js} +16 -10
  107. package/chunks/{chunk-ULY4ISY2.js → chunk-WXD7INFV.js} +19 -4
  108. package/chunks/{chunk-ZIPYCXQP.js → chunk-WXPPUPHM.js} +1 -1
  109. package/chunks/{chunk-5Z4FCEPY.js → chunk-X7LFJF5D.js} +600 -46
  110. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  111. package/chunks/{chunk-MWEF5MUK.js → chunk-XSOXPG2L.js} +8 -8
  112. package/chunks/{chunk-5VZFJTL2.js → chunk-YLOHCA6I.js} +2 -2
  113. package/chunks/{chunk-LN3WBOKU.js → chunk-YQGW3M6Z.js} +2 -2
  114. package/chunks/{chunk-2OR32P5M.js → chunk-ZN5TKAVR.js} +125 -10
  115. package/chunks/{chunk-XBLG564H.js → chunk-ZP5XDLSA.js} +10 -10
  116. package/chunks/{config-utils-37FHWPTP.js → config-utils-GPLIABL2.js} +21 -20
  117. package/chunks/{contextCommand-R4JUBV5N.js → contextCommand-NCUQUDBY.js} +18 -17
  118. package/chunks/{core-runtime-6U4OXU5C.js → core-runtime-WKYKWVYU.js} +23 -21
  119. package/chunks/{create-sub-session-LLUYAGZN.js → create-sub-session-PPLXB3JJ.js} +17 -16
  120. package/chunks/{daemon-UI6SQSBV.js → daemon-2CKIAO3I.js} +2 -2
  121. package/chunks/{daemon-git-worktree-guard-O2UTNFJC.js → daemon-git-worktree-guard-73ZWOLKL.js} +17 -16
  122. package/chunks/{daemon-status-provider-7GMAKSTX.js → daemon-status-provider-OK7VONJG.js} +22 -21
  123. package/chunks/{daemon-trust-policy-VNP76VMO.js → daemon-trust-policy-CAUCREG2.js} +22 -21
  124. package/chunks/{daemon-trust-policy-monitor-TD5O3BZA.js → daemon-trust-policy-monitor-3Y36OOEQ.js} +22 -21
  125. package/chunks/{deferred-core-runtime-NJM63YJS.js → deferred-core-runtime-Q7WFWYD3.js} +17 -16
  126. package/chunks/{dist-STAGIFNB.js → dist-6YDUH3BB.js} +388 -102
  127. package/chunks/{dist-XJ25G6OH.js → dist-BNQVF565.js} +2 -8
  128. package/chunks/{dist-NQ2636VT.js → dist-F34J4FZX.js} +1 -1
  129. package/chunks/{dist-OR2ZQTXZ.js → dist-F6JLAJLE.js} +1 -1
  130. package/chunks/{dist-WZTUKIDR.js → dist-NP7QKLVG.js} +2 -2
  131. package/chunks/{dist-M4CBX53H.js → dist-UFTFGI6I.js} +1 -1
  132. package/chunks/{dist-5I4HLUTO.js → dist-XLV33CLY.js} +1 -2
  133. package/chunks/{dist-24TCWK5H.js → dist-Y5KC3IHW.js} +1 -2
  134. package/chunks/{dist-FDISN4AK.js → dist-ZDNJK74R.js} +3 -7
  135. package/chunks/{edit-GL7OA6RV.js → edit-YJD6IETK.js} +10 -10
  136. package/chunks/{enterPlanMode-VC4BCSZE.js → enterPlanMode-EFPVTWIH.js} +10 -10
  137. package/chunks/{environment-BI6IBAZJ.js → environment-HP3AXFTB.js} +19 -18
  138. package/chunks/{errors-D6G2ZM2R.js → errors-22ON46G7.js} +19 -18
  139. package/chunks/{exitPlanMode-DX446CA6.js → exitPlanMode-MOQUNCBH.js} +10 -10
  140. package/chunks/{fast-path-MAYDLJIP.js → fast-path-2X7BPMXX.js} +3 -3
  141. package/chunks/{glob-TVKRFY36.js → glob-Y7ACIB3P.js} +10 -10
  142. package/chunks/{goal-tools-CA6YANRN.js → goal-tools-DABMICUC.js} +10 -10
  143. package/chunks/{handleAutoUpdate-AW4ZAHON.js → handleAutoUpdate-MCAMHYDI.js} +19 -18
  144. package/chunks/{i18n-IH5CRAY7.js → i18n-C3GDCALP.js} +17 -16
  145. package/chunks/{initializer-UBR37ZNM.js → initializer-4URDQL2G.js} +22 -21
  146. package/chunks/{installationInfo-Y52756EC.js → installationInfo-LBOL6SBV.js} +17 -16
  147. package/chunks/{list-7V5JDZPO.js → list-JOGBAC2R.js} +25 -24
  148. package/chunks/{list-agents-I5TRH3J7.js → list-agents-2CXPGJUE.js} +3 -3
  149. package/chunks/{llm-QDB6JVF5.js → llm-2KPNSAVY.js} +65 -59
  150. package/chunks/{llm-content-generator-EO6MZCEO.js → llm-content-generator-GR3FOHLB.js} +2 -2
  151. package/chunks/{loadedSettingsAdapter-I3YQKMC4.js → loadedSettingsAdapter-DVKROEJD.js} +22 -21
  152. package/chunks/{loggingContentGenerator-MNXYUGDG.js → loggingContentGenerator-P4K6K5W4.js} +12 -12
  153. package/chunks/{managed-npm-update-EA3EXPTO.js → managed-npm-update-VWBKHNIN.js} +17 -16
  154. package/chunks/{mcp-QTAJ544Y.js → mcp-6YYNSYLK.js} +22 -21
  155. package/chunks/{monitor-6FQKQOTP.js → monitor-A255TNZR.js} +10 -10
  156. package/chunks/{nonInteractiveCli-MRCTZL5X.js → nonInteractiveCli-LXGIKQAT.js} +55 -54
  157. package/chunks/{notebook-edit-BQQCKI7K.js → notebook-edit-5UYHS2DM.js} +10 -10
  158. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  159. package/chunks/{openaiContentGenerator-TTSKXNVH.js → openaiContentGenerator-A6MAMEO5.js} +7 -7
  160. package/chunks/{pidfile-KPIS6RIT.js → pidfile-B7DZC4TP.js} +20 -17
  161. package/chunks/{processUtils-ZCASPKK4.js → processUtils-BPZ2MCZS.js} +2 -2
  162. package/chunks/{prompt-terminal-ledger-D6HM6TV7.js → prompt-terminal-ledger-FYYTAOXS.js} +18 -17
  163. package/chunks/{qwenContentGenerator-GGZEFLBD.js → qwenContentGenerator-4IOJFD4S.js} +13 -13
  164. package/chunks/{read-file-VE5GDFLP.js → read-file-A4H4O3VQ.js} +2 -2
  165. package/chunks/{resumeHistoryUtils-HSSGMYDC.js → resumeHistoryUtils-YQQ43E4N.js} +19 -18
  166. package/chunks/{ripGrep-SEJE7AA6.js → ripGrep-W32NWFTA.js} +3 -3
  167. package/chunks/{run-qwen-serve-OJYVH7N6.js → run-qwen-serve-WBSWWIRV.js} +216 -64
  168. package/chunks/{runtime-KGMQQFJD.js → runtime-VRVBX2E5.js} +29 -26
  169. package/chunks/{scheduled-tasks-7H5HWHYD.js → scheduled-tasks-D65KJDA3.js} +20 -19
  170. package/chunks/{scheduler-BE42AKDG.js → scheduler-M2YPN7Z7.js} +19 -18
  171. package/chunks/{send-message-AWKUDJBH.js → send-message-76BKWKFZ.js} +3 -3
  172. package/chunks/{serve-KZVKYMSL.js → serve-BE3H2P6P.js} +22 -21
  173. package/chunks/{server-PJRALPJQ.js → server-FLY5JERG.js} +84 -148
  174. package/chunks/{session-IHITXU2S.js → session-JVN62R5K.js} +85 -57
  175. package/chunks/{session-attachments-root-GQ2TUI3Y.js → session-attachments-root-7ACGLHXA.js} +17 -16
  176. package/chunks/{session-pr-refresh-H43LULTE.js → session-pr-refresh-TQS57SDK.js} +19 -18
  177. package/chunks/{settings-RKEQQDFC.js → settings-D44YMZFT.js} +21 -20
  178. package/chunks/{shell-6PJ444U5.js → shell-3VE6I4V5.js} +10 -10
  179. package/chunks/{skill-Q3UP7B5V.js → skill-FHEGRRZU.js} +2 -2
  180. package/chunks/{skill-settings-LZR5YRRW.js → skill-settings-VHEJMBFL.js} +21 -20
  181. package/chunks/{spawnChannel-WM3DT2BF.js → spawnChannel-T6MX2ZDN.js} +17 -16
  182. package/chunks/{standalone-update-E5474IBI.js → standalone-update-QUGHFMCS.js} +18 -17
  183. package/chunks/{start-opentui-ui-WLWZNQ2I.js → start-opentui-ui-IHIIZ2LE.js} +438 -203
  184. package/chunks/{startInteractiveUI-FBQSGWGO.js → startInteractiveUI-LR7K2ARZ.js} +1171 -1234
  185. package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
  186. package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
  187. package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
  188. package/chunks/{team-create-VIGUFUT4.js → team-create-GY3VFY47.js} +10 -10
  189. package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
  190. package/chunks/{team-plan-approval-HQVZA3MD.js → team-plan-approval-BQPGZOT5.js} +10 -10
  191. package/chunks/{terminal-image-renderer-LUKNCOVM.js → terminal-image-renderer-YNYW5CQG.js} +17 -16
  192. package/chunks/{theme-manager-LOENKYLY.js → theme-manager-U6CIK3GM.js} +17 -16
  193. package/chunks/{tool-search-ZIFAQCE2.js → tool-search-XI3QWD5I.js} +2 -2
  194. package/chunks/{total-session-admission-FUUJH3QH.js → total-session-admission-3SNSJJ32.js} +18 -17
  195. package/chunks/{trustedFolders-C76KYROP.js → trustedFolders-OVAQKNV5.js} +18 -17
  196. package/chunks/{update-relaunch-4G2SRXKX.js → update-relaunch-XV5O74E3.js} +5 -5
  197. package/chunks/{updateCheck-EIZIO7HI.js → updateCheck-CHUYWD6L.js} +17 -16
  198. package/chunks/{useAutoAcceptIndicator-EAA6KSY4.js → useAutoAcceptIndicator-VKSVIXZC.js} +23 -22
  199. package/chunks/{validateNonInterActiveAuth-BRX22QCN.js → validateNonInterActiveAuth-ZNUTD3E5.js} +53 -52
  200. package/chunks/{version-E56RU7PR.js → version-EK7VAGSI.js} +3 -1
  201. package/chunks/{web-fetch-AAUCD7RM.js → web-fetch-24KZO763.js} +2 -2
  202. package/chunks/{web-search-HFUQF44Q.js → web-search-CRNXKZ2X.js} +184 -7
  203. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
  204. package/chunks/{workflow-3MABM53N.js → workflow-HD5NYMW5.js} +201 -65
  205. package/chunks/{workspace-providers-status-2FRLBZ5I.js → workspace-providers-status-MAM42IZS.js} +24 -23
  206. package/chunks/{workspace-registration-store-YL7HLYYI.js → workspace-registration-store-HKLJEDQX.js} +1 -2
  207. package/chunks/{workspace-registry-BNRP2ELW.js → workspace-registry-7RDDOBLN.js} +18 -17
  208. package/chunks/{workspace-runtime-coordinator-WKGF7VHS.js → workspace-runtime-coordinator-LEPDPXJO.js} +18 -17
  209. package/chunks/{workspace-service-4MYO72MM.js → workspace-service-5IFDCNN3.js} +23 -22
  210. package/chunks/{workspace-skills-status-SU66TJLZ.js → workspace-skills-status-FJ3HNH4H.js} +22 -21
  211. package/chunks/{workspace-trust-reconciler-D5QT7WQB.js → workspace-trust-reconciler-PQFHIWLR.js} +23 -22
  212. package/chunks/{write-file-NVPQE2AZ.js → write-file-ERG67ZFX.js} +11 -11
  213. package/chunks/{zoom-image-RJHC66WG.js → zoom-image-WQYEC3SR.js} +2 -2
  214. package/cli.js +12 -12
  215. package/export-transcript-document.js +82 -82
  216. package/package.json +4 -4
  217. package/web-shell/assets/{abnfDiagram-VCTEODGH-DHc6plZn.js → abnfDiagram-VCTEODGH-BRLgQbnT.js} +1 -1
  218. package/web-shell/assets/{arc-BQ9m8TDV.js → arc-qAF9_XsR.js} +1 -1
  219. package/web-shell/assets/{architectureDiagram-5GKGNRK7-D5ap3oVB.js → architectureDiagram-5GKGNRK7-BorUttEz.js} +1 -1
  220. package/web-shell/assets/{blockDiagram-NRAW4CY4-BIbnyNph.js → blockDiagram-NRAW4CY4-Bj0qZVxu.js} +1 -1
  221. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BRsdx_iG.js → c4Diagram-UCG6FXSJ-BTqJis32.js} +1 -1
  222. package/web-shell/assets/channel-COIuCrVH.js +1 -0
  223. package/web-shell/assets/{chunk-2Q5K7J3B-3lf1fNlx.js → chunk-2Q5K7J3B-RrQ5X8m-.js} +1 -1
  224. package/web-shell/assets/{chunk-5VM5RSS4-DP8VNRc4.js → chunk-5VM5RSS4-uUjDl8wO.js} +1 -1
  225. package/web-shell/assets/{chunk-F27PBJKO-DrohDmZ6.js → chunk-F27PBJKO-C3JhpyzI.js} +1 -1
  226. package/web-shell/assets/{chunk-G27WJ6UU-UZ2QhSx6.js → chunk-G27WJ6UU-C8ZNFs7F.js} +1 -1
  227. package/web-shell/assets/{chunk-JWPE2WC7-BIMHVcZK.js → chunk-JWPE2WC7-DNpXtEOs.js} +1 -1
  228. package/web-shell/assets/{chunk-LCL6LL3I-izRxdSDd.js → chunk-LCL6LL3I-DagA2ZLw.js} +1 -1
  229. package/web-shell/assets/{chunk-POPQ4Y6H-CXADD4PP.js → chunk-POPQ4Y6H-R23uH7Xm.js} +1 -1
  230. package/web-shell/assets/{chunk-SVP7TREG-B96d8Y_1.js → chunk-SVP7TREG-Qz9RN_BR.js} +1 -1
  231. package/web-shell/assets/{chunk-XXDRQBXY-CF2sVQpv.js → chunk-XXDRQBXY-jYb1_hni.js} +1 -1
  232. package/web-shell/assets/classDiagram-DTDB5LWJ-DoX6OYqu.js +1 -0
  233. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DoX6OYqu.js +1 -0
  234. package/web-shell/assets/{cose-bilkent-JH36ORCC-CT6tXVAS.js → cose-bilkent-JH36ORCC-Cv2OunpE.js} +1 -1
  235. package/web-shell/assets/{cynefin-OW5HDTMX-X1NS4vtV.js → cynefin-OW5HDTMX-LH42KFJx.js} +1 -1
  236. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DNsKNOT4.js → cynefinDiagram-5FMLGOSQ-Dha4_OoR.js} +1 -1
  237. package/web-shell/assets/{dagre-3AP2YEHR-9-AHKqsb.js → dagre-3AP2YEHR-Br5lnUKD.js} +1 -1
  238. package/web-shell/assets/{diagram-S7CK7UJ4-Bjgms7j6.js → diagram-S7CK7UJ4-dpKq2bBX.js} +1 -1
  239. package/web-shell/assets/{diagram-UQ7AKVKN-h6bCprbE.js → diagram-UQ7AKVKN-BAgHWpXr.js} +1 -1
  240. package/web-shell/assets/{diagram-VSXAHHWV-4SbQXVLt.js → diagram-VSXAHHWV-GRRzpyE2.js} +1 -1
  241. package/web-shell/assets/{diagram-VX7I27RA-B5gPCzzB.js → diagram-VX7I27RA-BNFiaYpG.js} +1 -1
  242. package/web-shell/assets/{diagram-Z3DM3KII-DFJXIA3A.js → diagram-Z3DM3KII-BisZzB_h.js} +1 -1
  243. package/web-shell/assets/{ebnfDiagram-PWID7BFC-FwyaU7VY.js → ebnfDiagram-PWID7BFC-B1xbwycf.js} +1 -1
  244. package/web-shell/assets/{erDiagram-SSCWMZ5O-8vJQh2te.js → erDiagram-SSCWMZ5O-CQMzbGE5.js} +1 -1
  245. package/web-shell/assets/{flowDiagram-A5DVABFB-BzA_1gMN.js → flowDiagram-A5DVABFB-CZ_Zondl.js} +1 -1
  246. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-Co-ABbVX.js → ganttDiagram-EL5Y4UJY-BTh2ShxS.js} +1 -1
  247. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DW_FcyrX.js → gitGraphDiagram-WWUBYQGX-oHOB-Uxt.js} +1 -1
  248. package/web-shell/assets/{index-Bu-rZoJ-.js → index-CI1ysIEv.js} +478 -474
  249. package/web-shell/assets/index-CpxXGH-8.css +36 -0
  250. package/web-shell/assets/{index-BbMXfhNG.js → index-DWoFMu5x.js} +1 -1
  251. package/web-shell/assets/{infoDiagram-RXCK75RN-BEgfhUFN.js → infoDiagram-RXCK75RN-C0QpudbG.js} +1 -1
  252. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DCsMxQmc.js → ishikawaDiagram-5VMMS53U-a6B741uT.js} +1 -1
  253. package/web-shell/assets/{journeyDiagram-EYS64GPL-DyIEYoHz.js → journeyDiagram-EYS64GPL-Dbht9ICp.js} +1 -1
  254. package/web-shell/assets/{kanban-definition-3QL26DDD-CkxjqCNr.js → kanban-definition-3QL26DDD-D4OFR8-h.js} +1 -1
  255. package/web-shell/assets/{layout-BEWc0Al9.js → layout-Dvdh5jRH.js} +1 -1
  256. package/web-shell/assets/{linear-CNuNxirL.js → linear-Dvc6KIW2.js} +1 -1
  257. package/web-shell/assets/{mermaid.core-DZBre674.js → mermaid.core-CB36RfIb.js} +6 -6
  258. package/web-shell/assets/{mindmap-definition-FBJOCRG2-CpafFz_F.js → mindmap-definition-FBJOCRG2-Fmqo1CjP.js} +1 -1
  259. package/web-shell/assets/{pegDiagram-XKGWAZYB-DfZqk_dq.js → pegDiagram-XKGWAZYB-CCxYBoA4.js} +1 -1
  260. package/web-shell/assets/{pieDiagram-E7YTZNPT-S0UWXlgC.js → pieDiagram-E7YTZNPT-BVHKQFzt.js} +1 -1
  261. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-dd37_Ohj.js → quadrantDiagram-AXDQQJYC-l95IznwR.js} +1 -1
  262. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CH8NJZ7u.js → railroadDiagram-O6MQD6OU-BlLdRdXp.js} +1 -1
  263. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CFdqWYih.js → requirementDiagram-EFPCY7ZU-BkDLBR5w.js} +1 -1
  264. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CsddcEGD.js → sankeyDiagram-P5KCCOFB-jAIqRp65.js} +1 -1
  265. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BZ270mGw.js → sequenceDiagram-WJ2MYXX4-f-soZYPr.js} +1 -1
  266. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CGaS4DBV.js → sizeCapture-X5ZJPWSS-BzOuAfB2.js} +1 -1
  267. package/web-shell/assets/{stateDiagram-HBIQ2CUA-COpIzMu6.js → stateDiagram-HBIQ2CUA-BPLSs12r.js} +1 -1
  268. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-IRul-LaT.js +1 -0
  269. package/web-shell/assets/{swimlanes-XN3QIQJK-CMF889m3.js → swimlanes-XN3QIQJK-D-9E_RIR.js} +1 -1
  270. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6lgKepA.js +8 -0
  271. package/web-shell/assets/{timeline-definition-24CTP7MA-BelnxYz5.js → timeline-definition-24CTP7MA-CT56K-gV.js} +1 -1
  272. package/web-shell/assets/{vennDiagram-4TSXK5OY-CU-NRqIB.js → vennDiagram-4TSXK5OY-B-vi4IyO.js} +1 -1
  273. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CDNKqWh-.js → wardleyDiagram-VM6X3IG4-C9O7Ju98.js} +1 -1
  274. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CLqguL5D.js → xychartDiagram-S5SC5T6Z-6d8w3jg2.js} +1 -1
  275. package/web-shell/index.html +2 -2
  276. package/chunks/chunk-X35VIWWJ.js +0 -276
  277. package/web-shell/assets/channel-uMMdTrYk.js +0 -1
  278. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +0 -1
  279. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +0 -1
  280. package/web-shell/assets/index-CsPwZ1ut.css +0 -36
  281. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +0 -1
  282. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +0 -8
@@ -8,8 +8,8 @@ import {
8
8
  isOwnInterfaceAddress
9
9
  } from "./chunk-24FVUD5P.js";
10
10
  import {
11
- resolveServeToken
12
- } from "./chunk-ZELCTN6Y.js";
11
+ resolveRemoteServeToken
12
+ } from "./chunk-F23YN37B.js";
13
13
  import {
14
14
  RUNTIME_STARTUP_CANCELLED_MESSAGE
15
15
  } from "./chunk-QUPXZXLV.js";
@@ -33,6 +33,7 @@ import {
33
33
  getRateLimiter,
34
34
  getServeProtocolVersions,
35
35
  hostAllowlist,
36
+ installRemoteSelfOriginMiddleware,
36
37
  installSelfOriginStripMiddleware,
37
38
  isBrowserAutomationMcpAvailable,
38
39
  isDeepHealthQuery,
@@ -40,7 +41,9 @@ import {
40
41
  isLocalTerminalAvailable,
41
42
  isManagedScratchChild,
42
43
  isNativeDirectoryPickerAvailable,
44
+ isSoftwareNetwork,
43
45
  isTrustedLoopbackMode,
46
+ listLanCandidates,
44
47
  listenerMaxConnections,
45
48
  parseAllowOriginPatterns,
46
49
  parseDaemonStatusDetail,
@@ -48,7 +51,7 @@ import {
48
51
  prepareManagedScratchRoot,
49
52
  resolveAcpHttpEnabled,
50
53
  toDaemonStatusMemoryLimits
51
- } from "./chunk-M73KHGNR.js";
54
+ } from "./chunk-VJJXG73H.js";
52
55
  import {
53
56
  ConversationDirectoryIdentityError,
54
57
  assertExactConversationRootIdentity,
@@ -71,11 +74,12 @@ import {
71
74
  } from "./chunk-LAUEEBDL.js";
72
75
  import {
73
76
  require_express
74
- } from "./chunk-IRKQ4YYX.js";
77
+ } from "./chunk-SVWWF5TZ.js";
75
78
  import {
76
79
  resolveWebShellDir
77
80
  } from "./chunk-FBX2SDQ4.js";
78
81
  import {
82
+ formatHostForAuthority,
79
83
  isLoopbackAddress,
80
84
  isLoopbackBind
81
85
  } from "./chunk-DMEUXLSS.js";
@@ -100,7 +104,7 @@ import {
100
104
  } from "./chunk-WCCLLK7X.js";
101
105
  import {
102
106
  resolveChannelCwd
103
- } from "./chunk-3BTHHXXE.js";
107
+ } from "./chunk-AUTUFD5X.js";
104
108
  import {
105
109
  ConversationRuntimeOwnershipError,
106
110
  LIVE_HOST_PROTOCOL_VERSION
@@ -117,8 +121,8 @@ import {
117
121
  MAX_REGISTERED_WORKSPACES,
118
122
  resolveWorkspaceInputs,
119
123
  workspaceRegistrationId
120
- } from "./chunk-WZS3X663.js";
121
- import "./chunk-EHTKOO6W.js";
124
+ } from "./chunk-LWX4WDFF.js";
125
+ import "./chunk-TRQNRP2H.js";
122
126
  import {
123
127
  LOAD_REPLAY_META_KEY
124
128
  } from "./chunk-PSPAM24S.js";
@@ -130,7 +134,7 @@ import {
130
134
  import {
131
135
  ExtraCaInspectionError,
132
136
  loadableCertificates
133
- } from "./chunk-CABDNUJ4.js";
137
+ } from "./chunk-KEPC5BOL.js";
134
138
  import "./chunk-FYJ7W2PI.js";
135
139
  import "./chunk-Z7B6SRPM.js";
136
140
  import {
@@ -139,7 +143,7 @@ import {
139
143
  import {
140
144
  normalizeWorkerDiagnostic,
141
145
  sanitizeWorkerDiagnostic
142
- } from "./chunk-GM44O6F7.js";
146
+ } from "./chunk-DARWOZY6.js";
143
147
  import {
144
148
  QWEN_SERVER_TOKEN_ENV
145
149
  } from "./chunk-GYTKQYDB.js";
@@ -159,13 +163,11 @@ import {
159
163
  PRIVATE_EXTERNAL_TOOL_GUARD_ENV,
160
164
  PRIVATE_EXTERNAL_TOOL_GUARD_PROVIDER_ENV
161
165
  } from "./chunk-3VUENPWF.js";
166
+ import "./chunk-TGNNLRC3.js";
162
167
  import {
163
168
  sanitizeLogText
164
- } from "./chunk-XVTCSVBK.js";
169
+ } from "./chunk-WDVV3LRM.js";
165
170
  import "./chunk-IW6RQPQB.js";
166
- import {
167
- MAX_DAEMON_WORKSPACES
168
- } from "./chunk-5HBA2Z7V.js";
169
171
  import "./chunk-BW4333PP.js";
170
172
  import {
171
173
  getGlobalQwenDirLite,
@@ -179,7 +181,7 @@ import {
179
181
  } from "./chunk-QTNCGZHQ.js";
180
182
  import {
181
183
  getCliVersion
182
- } from "./chunk-ISPBBKJN.js";
184
+ } from "./chunk-MV5DTLJV.js";
183
185
  import "./chunk-W3N5XAZ6.js";
184
186
  import "./chunk-NPQ5ZKRP.js";
185
187
  import {
@@ -211,7 +213,8 @@ import {
211
213
  import "./chunk-JVEGA3MM.js";
212
214
  import {
213
215
  writeStderrLine,
214
- writeStdoutLine
216
+ writeStdoutLine,
217
+ writeStdoutLineSafe
215
218
  } from "./chunk-7FA2II6K.js";
216
219
  import "./chunk-DMTGGOSA.js";
217
220
  import "./chunk-YQ3U5MUC.js";
@@ -251,10 +254,11 @@ init_esbuild_shims();
251
254
  var MIN_CHILD_HEAP_MB = 512;
252
255
 
253
256
  // packages/acp-bridge/dist/child-heap-policy.js
257
+ var MAX_MODELED_ACP_CHILDREN = 25;
254
258
  function createChildHeapPolicy(options) {
255
259
  const { budget, mode } = options;
256
260
  let refusals = 0;
257
- const admissible = Math.min(Math.floor(budget.childPoolMb / MIN_CHILD_HEAP_MB), MAX_DAEMON_WORKSPACES);
261
+ const admissible = Math.min(Math.floor(budget.childPoolMb / MIN_CHILD_HEAP_MB), MAX_MODELED_ACP_CHILDREN);
258
262
  const rawCeilingMb = admissible > 0 ? Math.min(Math.floor(budget.childPoolMb / admissible), budget.legacyChildCeilingMb) : null;
259
263
  const modelable = rawCeilingMb !== null && rawCeilingMb >= MIN_CHILD_HEAP_MB;
260
264
  const maxConcurrentChildren = modelable ? admissible : 0;
@@ -283,6 +287,125 @@ function createChildHeapPolicy(options) {
283
287
  }
284
288
  __name(createChildHeapPolicy, "createChildHeapPolicy");
285
289
 
290
+ // packages/cli/src/serve/remote-quickstart.ts
291
+ init_esbuild_shims();
292
+ import { networkInterfaces } from "node:os";
293
+ function isUlaIpv6(address) {
294
+ return /^(?:fc|fd)/iu.test(address);
295
+ }
296
+ __name(isUlaIpv6, "isUlaIpv6");
297
+ function isLinkLocalIpv4(address) {
298
+ return address.startsWith("169.254.");
299
+ }
300
+ __name(isLinkLocalIpv4, "isLinkLocalIpv4");
301
+ function quickstartPrintMode(boundAddress, generated) {
302
+ if (!isLoopbackAddress(boundAddress)) return "full";
303
+ return generated ? "token-only" : "silent";
304
+ }
305
+ __name(quickstartPrintMode, "quickstartPrintMode");
306
+ function remoteQuickstartEntries(bind, boundAddress, port, tls, interfaces) {
307
+ const scheme = tls ? "https" : "http";
308
+ const url = /* @__PURE__ */ __name((host) => `${scheme}://${formatHostForAuthority(host)}:${port}`, "url");
309
+ const bound = boundAddress.trim().toLowerCase();
310
+ const ipv4Wildcard = bound === "0.0.0.0" || bound === "::ffff:0.0.0.0";
311
+ if (!ipv4Wildcard && bound !== "::") {
312
+ if (bind.trim().includes("%")) return [];
313
+ return [{ label: "Address", url: url(bind), address: bind }];
314
+ }
315
+ const localAddress = !ipv4Wildcard && hostAssignsIpv6Loopback(interfaces) ? "::1" : "127.0.0.1";
316
+ const addresses = [
317
+ { label: "Local", url: url(localAddress), address: localAddress }
318
+ ];
319
+ for (const candidate of listLanCandidates(interfaces)) {
320
+ addresses.push({
321
+ label: `Network (${candidate.interfaceName})`,
322
+ url: url(candidate.address),
323
+ address: candidate.address
324
+ });
325
+ }
326
+ if (!ipv4Wildcard) {
327
+ for (const [name, entries] of Object.entries(interfaces).sort()) {
328
+ if (isSoftwareNetwork(name)) continue;
329
+ for (const entry of entries ?? []) {
330
+ if (entry.internal || entry.family !== "IPv6") continue;
331
+ if (entry.address.includes("%") || !isUlaIpv6(entry.address)) continue;
332
+ addresses.push({
333
+ label: `Network (${name})`,
334
+ url: url(entry.address),
335
+ address: entry.address
336
+ });
337
+ }
338
+ }
339
+ }
340
+ return addresses;
341
+ }
342
+ __name(remoteQuickstartEntries, "remoteQuickstartEntries");
343
+ async function printRemoteQuickstart(input) {
344
+ try {
345
+ const mode = quickstartPrintMode(input.boundAddress, input.generated);
346
+ if (mode === "silent") return;
347
+ if (mode === "token-only") {
348
+ writeStdoutLineSafe(
349
+ `Generated bearer token (secret; changes on restart): ${input.token}`
350
+ );
351
+ writeStdoutLineSafe(
352
+ "The listener bound loopback, so no network address or QR is printed; local clients must present this bearer."
353
+ );
354
+ return;
355
+ }
356
+ const addresses = remoteQuickstartEntries(
357
+ input.bind,
358
+ input.boundAddress,
359
+ input.port,
360
+ input.tls,
361
+ input.interfaces ?? networkInterfaces()
362
+ );
363
+ for (const address of addresses)
364
+ writeStdoutLineSafe(`${address.label}: ${address.url}`);
365
+ if (input.generated) {
366
+ writeStdoutLineSafe(
367
+ `Generated bearer token (secret; changes on restart): ${input.token}`
368
+ );
369
+ }
370
+ if (!input.tls)
371
+ writeStdoutLineSafe(
372
+ "HTTP is unencrypted. Use the existing TLS options for encrypted remote access."
373
+ );
374
+ if (!input.web) return;
375
+ const candidate = addresses.find(
376
+ (address) => address.label !== "Local" && !isLinkLocalIpv4(address.address)
377
+ ) ?? addresses.find((address) => address.label !== "Local");
378
+ if (!candidate) {
379
+ writeStdoutLineSafe(
380
+ "QR unavailable; enter the bearer token at the daemon address."
381
+ );
382
+ return;
383
+ }
384
+ if (!input.generated && !process.stdout.isTTY) return;
385
+ try {
386
+ const { default: qrcode } = await import("./main-PXAUXNF2.js");
387
+ qrcode.setErrorLevel("Q");
388
+ qrcode.generate(
389
+ `${candidate.url}/#token=${encodeURIComponent(input.token)}`,
390
+ { small: true },
391
+ (code) => {
392
+ writeStdoutLineSafe(
393
+ `Scan to open Web Shell: ${candidate.url} (${candidate.label})`
394
+ );
395
+ writeStdoutLineSafe("SECRET QR: grants daemon access. Do not share.");
396
+ writeStdoutLineSafe(code.trimEnd());
397
+ }
398
+ );
399
+ } catch {
400
+ writeStdoutLineSafe(
401
+ "QR unavailable; enter the bearer token at the daemon address."
402
+ );
403
+ }
404
+ } catch {
405
+ }
406
+ }
407
+ __name(printRemoteQuickstart, "printRemoteQuickstart");
408
+
286
409
  // packages/cli/src/serve/permission-audit.ts
287
410
  init_esbuild_shims();
288
411
  var DEFAULT_PERMISSION_AUDIT_RING_SIZE = 512;
@@ -3260,14 +3383,11 @@ function canonicalIpLiteral(host) {
3260
3383
  }
3261
3384
  }
3262
3385
  __name(canonicalIpLiteral, "canonicalIpLiteral");
3263
- function formatChannelWorkerDaemonUrl(host, port, tls = false, boundFamily, ipv6LoopbackAssigned = hostAssignsIpv6Loopback()) {
3386
+ function formatChannelWorkerDaemonUrl(host, port, tls = false, ipv6LoopbackAssigned = hostAssignsIpv6Loopback()) {
3264
3387
  const scheme = tls ? "https" : "http";
3265
3388
  const normalized = host.trim().toLowerCase();
3266
3389
  const canonicalIp = canonicalIpLiteral(normalized);
3267
3390
  const v6Loopback = ipv6LoopbackAssigned ? `${scheme}://[::1]:${port}` : `${scheme}://127.0.0.1:${port}`;
3268
- if (normalized === "") {
3269
- return boundFamily === "IPv4" ? `${scheme}://127.0.0.1:${port}` : v6Loopback;
3270
- }
3271
3391
  if (canonicalIp === "::") {
3272
3392
  return v6Loopback;
3273
3393
  }
@@ -3804,12 +3924,12 @@ __name(hasRetryableChannelWorkerShutdownError, "hasRetryableChannelWorkerShutdow
3804
3924
  var channelWorkerRuntimePromise;
3805
3925
  async function loadChannelWorkerRuntime() {
3806
3926
  channelWorkerRuntimePromise ??= Promise.all([
3807
- import("./channel-worker-supervisor-XJPZZ3VK.js"),
3808
- import("./pidfile-KPIS6RIT.js"),
3809
- import("./runtime-KGMQQFJD.js"),
3927
+ import("./channel-worker-supervisor-EMITFMCP.js"),
3928
+ import("./pidfile-B7DZC4TP.js"),
3929
+ import("./runtime-VRVBX2E5.js"),
3810
3930
  import("./cli-entry-path-4VJ3Y6T2.js"),
3811
- import("./channel-worker-group-PIYPVCTF.js"),
3812
- import("./channel-worker-manager-FQHEDTD2.js")
3931
+ import("./channel-worker-group-SQ5FRWOH.js"),
3932
+ import("./channel-worker-manager-TU4ZNWOE.js")
3813
3933
  ]).then(
3814
3934
  ([
3815
3935
  supervisor,
@@ -3915,7 +4035,7 @@ function shouldPreheatBridge(deps) {
3915
4035
  __name(shouldPreheatBridge, "shouldPreheatBridge");
3916
4036
  var coreRuntimePromise;
3917
4037
  function loadCoreRuntime() {
3918
- coreRuntimePromise ??= import("./core-runtime-6U4OXU5C.js");
4038
+ coreRuntimePromise ??= import("./core-runtime-WKYKWVYU.js");
3919
4039
  return coreRuntimePromise;
3920
4040
  }
3921
4041
  __name(loadCoreRuntime, "loadCoreRuntime");
@@ -3951,10 +4071,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
3951
4071
  var settingsRuntimePromise;
3952
4072
  function loadSettingsRuntimeModules() {
3953
4073
  settingsRuntimePromise ??= Promise.all([
3954
- import("./settings-RKEQQDFC.js"),
3955
- import("./environment-BI6IBAZJ.js"),
3956
- import("./loadedSettingsAdapter-I3YQKMC4.js"),
3957
- import("./trustedFolders-C76KYROP.js")
4074
+ import("./settings-D44YMZFT.js"),
4075
+ import("./environment-HP3AXFTB.js"),
4076
+ import("./loadedSettingsAdapter-DVKROEJD.js"),
4077
+ import("./trustedFolders-OVAQKNV5.js")
3958
4078
  ]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
3959
4079
  settings,
3960
4080
  environment,
@@ -3967,8 +4087,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
3967
4087
  var channelWebhookConfigRuntimePromise;
3968
4088
  function loadChannelWebhookConfigRuntime() {
3969
4089
  channelWebhookConfigRuntimePromise ??= Promise.all([
3970
- import("./runtime-KGMQQFJD.js"),
3971
- import("./config-utils-37FHWPTP.js")
4090
+ import("./runtime-VRVBX2E5.js"),
4091
+ import("./config-utils-GPLIABL2.js")
3972
4092
  ]).then(([channelRuntime, configUtils]) => ({
3973
4093
  loadChannelsConfig: channelRuntime.loadChannelsConfig,
3974
4094
  parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
@@ -3995,19 +4115,19 @@ async function loadServeRuntimeModules() {
3995
4115
  workspaceRuntimeCoordinatorModule,
3996
4116
  promptLedgerModule
3997
4117
  ] = await Promise.all([
3998
- import("./server-PJRALPJQ.js"),
3999
- import("./bridge-Q66BD62H.js"),
4000
- import("./spawnChannel-WM3DT2BF.js"),
4118
+ import("./server-FLY5JERG.js"),
4119
+ import("./bridge-AOX5IY44.js"),
4120
+ import("./spawnChannel-T6MX2ZDN.js"),
4001
4121
  import("./process-registry-OAEG6WGC.js"),
4002
- import("./workspace-service-4MYO72MM.js"),
4122
+ import("./workspace-service-5IFDCNN3.js"),
4003
4123
  import("./types-HKLPXZB3.js"),
4004
- import("./daemon-status-provider-7GMAKSTX.js"),
4005
- import("./workspace-providers-status-2FRLBZ5I.js"),
4006
- import("./workspace-skills-status-SU66TJLZ.js"),
4007
- import("./total-session-admission-FUUJH3QH.js"),
4008
- import("./workspace-registry-BNRP2ELW.js"),
4009
- import("./workspace-runtime-coordinator-WKGF7VHS.js"),
4010
- import("./prompt-terminal-ledger-D6HM6TV7.js")
4124
+ import("./daemon-status-provider-OK7VONJG.js"),
4125
+ import("./workspace-providers-status-MAM42IZS.js"),
4126
+ import("./workspace-skills-status-FJ3HNH4H.js"),
4127
+ import("./total-session-admission-3SNSJJ32.js"),
4128
+ import("./workspace-registry-7RDDOBLN.js"),
4129
+ import("./workspace-runtime-coordinator-LEPDPXJO.js"),
4130
+ import("./prompt-terminal-ledger-FYYTAOXS.js")
4011
4131
  ]);
4012
4132
  return {
4013
4133
  createServeApp: serverModule.createServeApp,
@@ -4247,12 +4367,13 @@ function createBootstrapServeApp(input) {
4247
4367
  const localPathOpenAvailable = isLocalPathOpenAvailable();
4248
4368
  const localTerminalOpenAvailable = isLocalTerminalAvailable();
4249
4369
  installSelfOriginStripMiddleware(app, getPort, opts.hostname);
4370
+ app.use(hostAllowlist(opts.hostname, getPort));
4371
+ installRemoteSelfOriginMiddleware(app, opts.hostname, opts.token);
4250
4372
  if (opts.allowOrigins && opts.allowOrigins.length > 0) {
4251
4373
  app.use(allowOriginCors(parseAllowOriginPatterns(opts.allowOrigins)));
4252
4374
  } else {
4253
4375
  app.use(denyBrowserOriginCors);
4254
4376
  }
4255
- app.use(hostAllowlist(opts.hostname, getPort));
4256
4377
  const healthHandler = /* @__PURE__ */ __name((req, res) => {
4257
4378
  const runtimeError = getRuntimeError();
4258
4379
  if (runtimeError !== void 0) {
@@ -4723,7 +4844,19 @@ async function runQwenServe(optsIn, deps = {}) {
4723
4844
  }
4724
4845
  }
4725
4846
  __name(runQwenServe, "runQwenServe");
4847
+ var brokenPipeGuardInstalled = false;
4848
+ function installServeBrokenPipeGuard() {
4849
+ if (brokenPipeGuardInstalled) return;
4850
+ brokenPipeGuardInstalled = true;
4851
+ const ignoreEpipe = /* @__PURE__ */ __name((err) => {
4852
+ if (err.code !== "EPIPE") throw err;
4853
+ }, "ignoreEpipe");
4854
+ process.stdout.on("error", ignoreEpipe);
4855
+ process.stderr.on("error", ignoreEpipe);
4856
+ }
4857
+ __name(installServeBrokenPipeGuard, "installServeBrokenPipeGuard");
4726
4858
  async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4859
+ installServeBrokenPipeGuard();
4727
4860
  const runStartedAt = performance2.now();
4728
4861
  delete process.env[EXTERNAL_TOOL_GUARD_TOKEN_ENV];
4729
4862
  const channelDeliveryAuthorizations = new ChannelDeliveryAuthorizationStore();
@@ -4765,8 +4898,16 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4765
4898
  loaderEnvScrub.release();
4766
4899
  }, "restoreScrubbedLoaderEnv");
4767
4900
  loggerLifecycle.scrubApplied(restoreScrubbedLoaderEnv);
4768
- const token = resolveServeToken(optsIn.token);
4901
+ if (!optsIn.hostname.trim()) {
4902
+ throw new Error(
4903
+ "Invalid --hostname: empty value binds every interface. Pass an explicit address (e.g. --hostname 0.0.0.0) or omit the flag."
4904
+ );
4905
+ }
4769
4906
  const bindHostname = optsIn.hostname.toLowerCase() === "localhost" ? (await (deps.bindHostnameLookup ?? lookup)(optsIn.hostname)).address : optsIn.hostname;
4907
+ const { token, generated: generatedToken } = resolveRemoteServeToken(
4908
+ optsIn.token,
4909
+ isLoopbackBind(optsIn.hostname)
4910
+ );
4770
4911
  const trustedLoopbackMode = isTrustedLoopbackMode({
4771
4912
  loopbackBind: isLoopbackAddress(bindHostname),
4772
4913
  tokenConfigured: token !== void 0,
@@ -4931,7 +5072,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4931
5072
  }
4932
5073
  if (!isLoopbackBind(opts.hostname) && !token) {
4933
5074
  throw new Error(
4934
- `Refusing to bind ${opts.hostname}:${opts.port} without a bearer token. Set ${QWEN_SERVER_TOKEN_ENV} or pass --token, or rebind to loopback (127.0.0.0/8, localhost, ::1, or [::1]).`
5075
+ `Refusing to bind ${opts.hostname}:${opts.port} without a bearer token (an explicitly empty --token or ${QWEN_SERVER_TOKEN_ENV} counts as none, since a blank source never generates one). Set ${QWEN_SERVER_TOKEN_ENV} or pass --token, or rebind to loopback (127.0.0.0/8, localhost, ::1, or [::1]).`
4935
5076
  );
4936
5077
  }
4937
5078
  if (opts.requireAuth && !token) {
@@ -5065,7 +5206,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5065
5206
  }
5066
5207
  let workspaceRegistrationStore = deps.workspaceRegistrationStore;
5067
5208
  if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
5068
- const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-YL7HLYYI.js");
5209
+ const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-HKLJEDQX.js");
5069
5210
  workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
5070
5211
  }
5071
5212
  if (workspaceRegistrationStore) {
@@ -5356,7 +5497,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5356
5497
  "qwen serve: required external tool guard handshake succeeded."
5357
5498
  );
5358
5499
  }
5359
- const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-O2UTNFJC.js");
5500
+ const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-73ZWOLKL.js");
5360
5501
  const daemonToolGuardHandler = createDaemonToolGuard(
5361
5502
  externalToolGuardHandler
5362
5503
  );
@@ -5392,7 +5533,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5392
5533
  );
5393
5534
  if (!opts.allowOrigins || opts.allowOrigins.length === 0) {
5394
5535
  writeStderrLine(
5395
- "qwen serve: without --allow-origin the Web Shell is read-only on a non-loopback bind \u2014 same-origin POSTs are blocked by CORS (403). Pass --allow-origin <origin> or front it with a same-origin proxy."
5536
+ "qwen serve: same-origin Web Shell HTTP requests work without --allow-origin, but WebSocket-backed features (terminal, voice) and browsers reaching the daemon through a TLS-terminating proxy still need --allow-origin <origin>. A plain-HTTP intermediary that rewrites the Host header (nginx default proxy_set_header, k8s Ingress) needs --allow-origin <origin> for the origin the browser sees, unless it forwards Host verbatim; port translation alone (ssh -L, docker -p) is fine."
5396
5537
  );
5397
5538
  }
5398
5539
  }
@@ -5707,7 +5848,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5707
5848
  loadCoreRuntime(),
5708
5849
  loadSettingsRuntimeModules(),
5709
5850
  cliVersionPromise,
5710
- import("./daemon-trust-policy-VNP76VMO.js")
5851
+ import("./daemon-trust-policy-CAUCREG2.js")
5711
5852
  ]);
5712
5853
  getWorkspaceRuntimeCoordinatorIfSupported = runtime.getWorkspaceRuntimeCoordinatorIfSupported;
5713
5854
  cliVersion = resolvedCliVersion;
@@ -6115,7 +6256,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6115
6256
  }), "persistDisabledToolsFn");
6116
6257
  const persistDisabledSkillsFn = /* @__PURE__ */ __name((workspace, skillName, enabled, assertGenerationOpen) => withSettingsLock(workspace, async () => {
6117
6258
  assertGenerationOpen?.();
6118
- const { skillSettingStrings, updateWorkspaceSkillSettingLists } = await import("./skill-settings-LZR5YRRW.js");
6259
+ const { skillSettingStrings, updateWorkspaceSkillSettingLists } = await import("./skill-settings-VHEJMBFL.js");
6119
6260
  const fresh = loadSettingsForPersistence(workspace);
6120
6261
  const workspaceDisabled = skillSettingStrings(
6121
6262
  fresh,
@@ -6165,7 +6306,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6165
6306
  }), "persistDisabledSkillsFn");
6166
6307
  const persistDisabledSkillsBatchFn = /* @__PURE__ */ __name((workspace, skillNames, enabled, assertGenerationOpen) => withSettingsLock(workspace, async () => {
6167
6308
  assertGenerationOpen?.();
6168
- const { skillSettingStrings, updateWorkspaceSkillSettingLists } = await import("./skill-settings-LZR5YRRW.js");
6309
+ const { skillSettingStrings, updateWorkspaceSkillSettingLists } = await import("./skill-settings-VHEJMBFL.js");
6169
6310
  const fresh = loadSettingsForPersistence(workspace);
6170
6311
  const initialDisabled = skillSettingStrings(
6171
6312
  fresh,
@@ -6256,10 +6397,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6256
6397
  }
6257
6398
  }), "persistSettingsFn");
6258
6399
  const [{ createSubSessionLauncher }, scheduledTaskRoutes] = await Promise.all([
6259
- import("./create-sub-session-LLUYAGZN.js"),
6260
- import("./scheduled-tasks-7H5HWHYD.js")
6400
+ import("./create-sub-session-PPLXB3JJ.js"),
6401
+ import("./scheduled-tasks-D65KJDA3.js")
6261
6402
  ]);
6262
- const { sessionAttachmentsRoots } = await import("./session-attachments-root-GQ2TUI3Y.js");
6403
+ const { sessionAttachmentsRoots } = await import("./session-attachments-root-7ACGLHXA.js");
6263
6404
  const createCurrentSessionScheduledTaskHandler = /* @__PURE__ */ __name((workspaceCwd, runtimeBaseDir, getBridge, assertGenerationOpen) => async ({
6264
6405
  callerSessionId,
6265
6406
  cron,
@@ -7100,7 +7241,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7100
7241
  };
7101
7242
  sessionPrRefreshTimer?.dispose();
7102
7243
  const refreshGeneration = ++sessionPrRefreshGeneration;
7103
- void import("./session-pr-refresh-H43LULTE.js").then((mod) => {
7244
+ void import("./session-pr-refresh-TQS57SDK.js").then((mod) => {
7104
7245
  if (refreshGeneration !== sessionPrRefreshGeneration) return;
7105
7246
  sessionPrRefreshTimer = mod.startSessionPrRefreshTimer({
7106
7247
  workspaceRegistry,
@@ -7770,8 +7911,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7770
7911
  { createChannelManagementService },
7771
7912
  { WorkspaceChannelSettingsStore }
7772
7913
  ] = await Promise.all([
7773
- import("./channel-management-service-TRTLQTSV.js"),
7774
- import("./channel-settings-store-R5STFWUW.js")
7914
+ import("./channel-management-service-MWQGHPAS.js"),
7915
+ import("./channel-settings-store-XZCGDGHW.js")
7775
7916
  ]);
7776
7917
  return createChannelManagementService({
7777
7918
  workspaceCwd: targetRuntime.workspaceCwd,
@@ -7976,8 +8117,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7976
8117
  { createWorkspaceTrustReconciler },
7977
8118
  { createDaemonTrustPolicyMonitor }
7978
8119
  ] = await Promise.all([
7979
- import("./workspace-trust-reconciler-D5QT7WQB.js"),
7980
- import("./daemon-trust-policy-monitor-TD5O3BZA.js")
8120
+ import("./workspace-trust-reconciler-PQFHIWLR.js"),
8121
+ import("./daemon-trust-policy-monitor-3Y36OOEQ.js")
7981
8122
  ]);
7982
8123
  const materializationFor = /* @__PURE__ */ __name((entry, snapshot, decision) => {
7983
8124
  const boundWorkspaces2 = entry.primary && decision.targetTrusted ? runtime.resolveBoundWorkspacesFromIdeEnv(
@@ -8174,7 +8315,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8174
8315
  // through (and start the runtime) exactly like the warm app would.
8175
8316
  // Dynamic import keeps web-shell-static out of the serve fast-path
8176
8317
  // static closure (see the import-boundary guards in fast-path.test.ts).
8177
- isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-POZHGGXE.js").then(
8318
+ isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-BFDESDD4.js").then(
8178
8319
  (webShellStatic) => webShellStatic.isPreAuthWebShellRequest(req)
8179
8320
  ) : void 0
8180
8321
  });
@@ -8194,7 +8335,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8194
8335
  );
8195
8336
  }
8196
8337
  const channelValidationSettingsRuntime = opts.channelSelection ? await loadSettingsRuntimeModules() : void 0;
8197
- const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-VNP76VMO.js") : void 0;
8338
+ const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-CAUCREG2.js") : void 0;
8198
8339
  const channelValidationTrustSnapshot = channelValidationTrustPolicy ? await channelValidationTrustPolicy.readDaemonTrustPolicySnapshot() : void 0;
8199
8340
  const resolveChannelWorkspaceGroupsAtListen = /* @__PURE__ */ __name(() => {
8200
8341
  if (!opts.channelSelection || !channelValidationSettingsRuntime || !channelRuntime) {
@@ -8749,8 +8890,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
8749
8890
  const workerDaemonUrl = formatChannelWorkerDaemonUrl(
8750
8891
  workerHostname,
8751
8892
  actualPort,
8752
- tlsOptions !== void 0,
8753
- typeof addr === "object" && addr && (addr.family === "IPv4" || addr.family === "IPv6") ? addr.family : void 0
8893
+ tlsOptions !== void 0
8754
8894
  );
8755
8895
  (deps.channelWorkerUrlCertifier ?? assertChannelWorkerDaemonUrlIsLocal)(workerDaemonUrl, workerHostname);
8756
8896
  if (tlsOptions && tlsCertPath && process.env["NODE_TLS_REJECT_UNAUTHORIZED"] === "0") {
@@ -9291,6 +9431,18 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
9291
9431
  writeStdoutLine(
9292
9432
  `qwen serve listening on ${url} (mode=${opts.mode}, workspace=${boundWorkspace})`
9293
9433
  );
9434
+ const boundAddress = typeof addr === "object" && addr ? addr.address : opts.hostname;
9435
+ if (token) {
9436
+ void printRemoteQuickstart({
9437
+ bind: opts.hostname,
9438
+ boundAddress,
9439
+ port: actualPort,
9440
+ tls: Boolean(tlsOptions),
9441
+ token,
9442
+ generated: generatedToken,
9443
+ web: webShellMounted
9444
+ });
9445
+ }
9294
9446
  writeStderrLine(
9295
9447
  `qwen serve: bound to workspace ${JSON.stringify(boundWorkspace)}`
9296
9448
  );