@qwen-code/qwen-code 0.20.2-headless-image-routing.1 → 0.21.0

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 (370) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +5 -0
  2. package/bundled/qc-helper/docs/features/sub-agents.md +23 -5
  3. package/bundled/qc-helper/docs/integration-github-action.md +9 -9
  4. package/bundled/review/SKILL.md +7 -3
  5. package/chunks/MaxSizedBox-5DPPWPGT.js +85 -0
  6. package/chunks/{StandaloneSessionPicker-PLQQB22E.js → StandaloneSessionPicker-BIRMPLRD.js} +66 -59
  7. package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
  8. package/chunks/{acpAgent-AIVK2EM5.js → acpAgent-6J2U72PQ.js} +705 -182
  9. package/chunks/agent-6ODUANDO.js +81 -0
  10. package/chunks/agent-headless-7BYQTMHW.js +75 -0
  11. package/chunks/{anthropicContentGenerator-HGWAHO24.js → anthropicContentGenerator-75BKLTSP.js} +117 -43
  12. package/chunks/{artifact-tool-56T5IMBP.js → artifact-tool-Y5T7GG7F.js} +3 -3
  13. package/chunks/{askUserQuestion-E25OBIC2.js → askUserQuestion-2H6747FR.js} +3 -3
  14. package/chunks/bridge-ZUB64FAE.js +90 -0
  15. package/chunks/{build-GHIZ4MSZ.js → build-RV63TIRH.js} +2 -3
  16. package/chunks/{ca-N6VVUFVB.js → ca-25EDXPFZ.js} +2 -0
  17. package/chunks/{channel-worker-group-QZV2SP5U.js → channel-worker-group-2ZD7TVAT.js} +8 -7
  18. package/chunks/{channel-worker-manager-3GMAU45H.js → channel-worker-manager-4OA4BCGB.js} +190 -30
  19. package/chunks/{channel-worker-supervisor-QCXSXCRY.js → channel-worker-supervisor-V7KCFJTS.js} +7 -6
  20. package/chunks/{chunk-TYQMGACW.js → chunk-22C7BQ6D.js} +508 -10967
  21. package/chunks/chunk-2JZBVYTU.js +452 -0
  22. package/chunks/{chunk-H2XVO6NE.js → chunk-2MIN6GRR.js} +1 -1
  23. package/chunks/{chunk-4DWTDZGS.js → chunk-2NH6DYI4.js} +12 -12
  24. package/chunks/chunk-2SCDWPXI.js +246 -0
  25. package/chunks/{chunk-QE4KFTBS.js → chunk-2X55UKQE.js} +3 -3
  26. package/chunks/{chunk-QBUDF33N.js → chunk-3QMGYBFN.js} +1 -1
  27. package/chunks/{chunk-3OAKYHRG.js → chunk-3RN6GBKS.js} +1 -1
  28. package/chunks/{chunk-QR6U5QPP.js → chunk-3SJ43L4W.js} +4 -0
  29. package/chunks/chunk-46UV252V.js +128 -0
  30. package/chunks/{chunk-GHRSKGHF.js → chunk-4WIZGAH3.js} +7 -7
  31. package/chunks/{chunk-CAS7CB3T.js → chunk-55DJUCI2.js} +87 -29
  32. package/chunks/{chunk-QNLNLENL.js → chunk-5I2IWRSH.js} +2 -2
  33. package/chunks/{chunk-H24SOJIQ.js → chunk-5NBDS5S6.js} +147 -7
  34. package/chunks/{chunk-E4IMU4Y5.js → chunk-63P4EL5V.js} +1 -1
  35. package/chunks/chunk-6FGBXPWM.js +293 -0
  36. package/chunks/{chunk-FFFM6NJV.js → chunk-6GMVPFB2.js} +155 -73
  37. package/chunks/{chunk-KWK7UE6L.js → chunk-6OUGMXDC.js} +6 -6
  38. package/chunks/{chunk-QRUIS3DN.js → chunk-6PEXNQTX.js} +22 -1
  39. package/chunks/{chunk-FZPTCQY7.js → chunk-7JURR4JT.js} +1 -1
  40. package/chunks/{chunk-Q6NAKZTA.js → chunk-7MVVZO4N.js} +4 -4
  41. package/chunks/{chunk-6ZBPS62S.js → chunk-7ZCNENPP.js} +1 -1
  42. package/chunks/{chunk-6X4GWOPW.js → chunk-A5L3JMUA.js} +1 -1
  43. package/chunks/{chunk-YO2XRXY6.js → chunk-ACY3A37B.js} +3 -3
  44. package/chunks/chunk-AMDSOFFV.js +10860 -0
  45. package/chunks/{chunk-RV4C2ZFG.js → chunk-BIQWWWJN.js} +1 -1
  46. package/chunks/{chunk-ZHERRXZJ.js → chunk-BJX6ZSUK.js} +4 -4
  47. package/chunks/chunk-BK2UNYWD.js +29 -0
  48. package/chunks/{chunk-FRPDJNK3.js → chunk-BKHWX6I2.js} +3 -3
  49. package/chunks/chunk-BPJSQIJX.js +100 -0
  50. package/chunks/{chunk-M7WBGLYP.js → chunk-BULDBTYC.js} +2 -0
  51. package/chunks/{chunk-ZDP2Y2AL.js → chunk-CIKQ7KKO.js} +4625 -8645
  52. package/chunks/{chunk-PEJWA3QQ.js → chunk-D3UEZIQH.js} +4 -2
  53. package/chunks/chunk-DHHOYAPR.js +1462 -0
  54. package/chunks/{chunk-LESHKUWF.js → chunk-DLWL3Z7A.js} +5 -3
  55. package/chunks/{chunk-XHATNRQA.js → chunk-DP3IHZGG.js} +0 -2
  56. package/chunks/chunk-E5TUC6CA.js +479 -0
  57. package/chunks/{chunk-JC26SJ5Y.js → chunk-EBJQ6AXW.js} +13 -12
  58. package/chunks/{chunk-RCWKCN2Z.js → chunk-EPDRMGT4.js} +164 -17
  59. package/chunks/{chunk-FUFCALSJ.js → chunk-ETSW4KLJ.js} +2 -2
  60. package/chunks/{chunk-KHOVYUHX.js → chunk-FNQ6T3CV.js} +20 -3
  61. package/chunks/{chunk-SP5WRGVG.js → chunk-FQK6JAFG.js} +72 -23
  62. package/chunks/{chunk-NWZY2SPY.js → chunk-FSITMZJH.js} +8 -8
  63. package/chunks/{chunk-6RLROE6G.js → chunk-GLWP3FDB.js} +80 -15
  64. package/chunks/{chunk-KPBVP6SL.js → chunk-GSN55ZRI.js} +5 -5
  65. package/chunks/{chunk-MLYGPZGU.js → chunk-H4SBPHSA.js} +3 -3
  66. package/chunks/chunk-H5FFA6TH.js +902 -0
  67. package/chunks/{chunk-TDKQP3M6.js → chunk-HIJQF5B5.js} +1 -1
  68. package/chunks/{chunk-5G3ZVADU.js → chunk-IJTOWOD7.js} +17 -6
  69. package/chunks/chunk-IKCX4CCL.js +469 -0
  70. package/chunks/{chunk-LPEONXNV.js → chunk-IKYJHJNF.js} +3 -3
  71. package/chunks/{chunk-DTZY2SH2.js → chunk-IO3IX5Q4.js} +1 -1
  72. package/chunks/{chunk-RS7MT2QG.js → chunk-IPUUTYMV.js} +2 -4
  73. package/chunks/{chunk-XU457J4V.js → chunk-IRH27ZC2.js} +2 -2
  74. package/chunks/{chunk-46DK772E.js → chunk-J24WCGIN.js} +4 -4
  75. package/chunks/{chunk-4LVZNIDO.js → chunk-J56UI34H.js} +4 -13
  76. package/chunks/{chunk-TJTKSVIV.js → chunk-JLU636DO.js} +5 -1
  77. package/chunks/{chunk-RKWX4CMO.js → chunk-JVPM2ULZ.js} +6 -6
  78. package/chunks/{chunk-ENPCQK44.js → chunk-JXJFVC6E.js} +37 -18
  79. package/chunks/{chunk-NABLFI57.js → chunk-JZA3JUDJ.js} +1 -1
  80. package/chunks/{chunk-CGLQAVZE.js → chunk-K36B6G2O.js} +5 -5
  81. package/chunks/{chunk-GPSKDNEE.js → chunk-K4XWPEWB.js} +4 -4
  82. package/chunks/{chunk-QOZOIPSF.js → chunk-KIM5GUMA.js} +650 -113
  83. package/chunks/{chunk-JZSM2IZ3.js → chunk-KMQ33DO4.js} +7 -5
  84. package/chunks/{chunk-E2UVIFI2.js → chunk-KRXPRVGL.js} +0 -1
  85. package/chunks/{chunk-WHGVTP7Q.js → chunk-L26JL52R.js} +3 -3
  86. package/chunks/{chunk-7Z6JQEL6.js → chunk-L5UHQJTJ.js} +1 -1
  87. package/chunks/{chunk-O2XSCRCS.js → chunk-LB6DUZ26.js} +259 -67
  88. package/chunks/chunk-LEH5C7FV.js +232 -0
  89. package/chunks/{chunk-RWV32G2M.js → chunk-LH2BYDQ5.js} +6 -4
  90. package/chunks/{chunk-QKTHJXCS.js → chunk-LK7CHLVP.js} +79 -2
  91. package/chunks/{chunk-VRRF3GW5.js → chunk-LKEJ26GS.js} +11 -11
  92. package/chunks/{chunk-SQFXI7VK.js → chunk-LQIW3YFY.js} +227 -41
  93. package/chunks/chunk-LS77BEZP.js +405 -0
  94. package/chunks/{chunk-BSHD62QJ.js → chunk-M4FMGVY4.js} +3 -3
  95. package/chunks/{chunk-57FIIFJN.js → chunk-M5JM7OSF.js} +1 -1
  96. package/chunks/{chunk-7362QS5B.js → chunk-MB4MZHMJ.js} +80 -37
  97. package/chunks/{chunk-4K56OJFJ.js → chunk-MUP3T3AD.js} +1 -1
  98. package/chunks/{chunk-3HFNGB2O.js → chunk-MVSUYZDT.js} +4 -4
  99. package/chunks/{chunk-T5IO6FZ4.js → chunk-MZAXJAUM.js} +1 -1
  100. package/chunks/{chunk-QKNXKTZX.js → chunk-NH6KE4JX.js} +3 -3
  101. package/chunks/chunk-NIBLUX3Y.js +934 -0
  102. package/chunks/{chunk-OQB4EXO4.js → chunk-NL7LTRLR.js} +1 -1
  103. package/chunks/{chunk-CS2FSS7W.js → chunk-OFDOK3VM.js} +5 -5
  104. package/chunks/{chunk-LIZRAKPB.js → chunk-OHNBB4XR.js} +1 -1
  105. package/chunks/{chunk-MDZTPSXO.js → chunk-OKY7HXPG.js} +2 -2
  106. package/chunks/{chunk-NHDKSOEY.js → chunk-P3QQPMQA.js} +5 -5
  107. package/chunks/{chunk-7THPNISK.js → chunk-PC6JANNU.js} +5 -5
  108. package/chunks/{chunk-OTQ6PSZC.js → chunk-PHOF65IG.js} +3498 -1030
  109. package/chunks/{chunk-OQ5SYCPE.js → chunk-PJIZUQVC.js} +2 -2
  110. package/chunks/{chunk-5DTTYNB7.js → chunk-PQNHRFJC.js} +16 -3
  111. package/chunks/{chunk-YM3SZTH4.js → chunk-PR75REBZ.js} +18 -1
  112. package/chunks/{chunk-RECUEJ7B.js → chunk-PSOO6YXD.js} +18 -15
  113. package/chunks/{chunk-X6N25LXS.js → chunk-PWTZEM3C.js} +2 -2
  114. package/chunks/{chunk-5NJTNQUW.js → chunk-PWVFN2LF.js} +1 -1
  115. package/chunks/{chunk-7AUH6A4T.js → chunk-Q4M4MDQ4.js} +2 -2
  116. package/chunks/{chunk-EZPB6S2I.js → chunk-QAF7NMK7.js} +1 -1
  117. package/chunks/{chunk-5GI55PF5.js → chunk-R5AFZNQW.js} +5 -5
  118. package/chunks/{chunk-T5B5NQZX.js → chunk-RF3EXIHJ.js} +47 -60
  119. package/chunks/{chunk-4K7VDKAD.js → chunk-RHLZR4E5.js} +1 -1
  120. package/chunks/{chunk-TJDW42MV.js → chunk-RIBKPMRP.js} +220 -141
  121. package/chunks/{chunk-RVLZCXEE.js → chunk-RWTEFFPU.js} +82 -3
  122. package/chunks/{chunk-L5QZGCRH.js → chunk-RZIX2G32.js} +1 -1
  123. package/chunks/{chunk-LLKWRXSS.js → chunk-SQCQ4KO2.js} +350 -418
  124. package/chunks/{chunk-THJNPLI4.js → chunk-TARRHLLG.js} +1 -0
  125. package/chunks/{chunk-XCXYRDHB.js → chunk-TEHGS6UP.js} +47 -18
  126. package/chunks/{chunk-PQIVAWXN.js → chunk-TGILQ3YH.js} +8 -8
  127. package/chunks/{chunk-Q2YKNMLS.js → chunk-TOFQCPDC.js} +43 -10
  128. package/chunks/{chunk-L3KUB6XM.js → chunk-TPRQ7RZH.js} +586 -242
  129. package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
  130. package/chunks/{chunk-HIP6TVWA.js → chunk-U7M2DMGW.js} +3 -3
  131. package/chunks/{chunk-ACW3VNUE.js → chunk-UDX5OBWR.js} +41 -9
  132. package/chunks/{chunk-LW2FUYBN.js → chunk-USTWD7QV.js} +6 -4
  133. package/chunks/{chunk-NPQDJGKU.js → chunk-UUUTRMI2.js} +1 -1
  134. package/chunks/chunk-UW5EOVUN.js +249 -0
  135. package/chunks/{chunk-6IL7KRLE.js → chunk-VAK25FTU.js} +1 -1
  136. package/chunks/{chunk-O4BHWVUD.js → chunk-VIA5XA4U.js} +5 -2
  137. package/chunks/{chunk-EBXZ2YGV.js → chunk-VRYUBFMC.js} +1 -1
  138. package/chunks/{chunk-TWVE5ZS5.js → chunk-VULLI6WQ.js} +172 -6
  139. package/chunks/{chunk-LNDD3IML.js → chunk-WCXCRJYB.js} +1 -1
  140. package/chunks/{chunk-2LI23QA6.js → chunk-X5XDDSSH.js} +1 -1
  141. package/chunks/{chunk-Q35QUZDQ.js → chunk-Y34KJKDC.js} +1 -1
  142. package/chunks/{chunk-7NR2AIK6.js → chunk-YBL3QUDD.js} +2 -2
  143. package/chunks/{chunk-H4AR2JQF.js → chunk-YH6G52F2.js} +3 -3
  144. package/chunks/{chunk-MBOJHHPI.js → chunk-YPE6A4GC.js} +2 -2
  145. package/chunks/{chunk-3EK5ZOUQ.js → chunk-YX324OPW.js} +1 -1
  146. package/chunks/{chunk-4PTLZ3NX.js → chunk-Z2BC6UJ5.js} +3 -3
  147. package/chunks/{chunk-QLJUC7TG.js → chunk-ZD6UTE4A.js} +1 -1
  148. package/chunks/{chunk-LX3COOXF.js → chunk-ZFDTEDCF.js} +6 -6
  149. package/chunks/chunk-ZJHVAS7M.js +289 -0
  150. package/chunks/{chunk-4OWXOUYF.js → chunk-ZNAUOR2I.js} +15 -12
  151. package/chunks/{chunk-T2L47JJK.js → chunk-ZOIFNCKL.js} +4 -4
  152. package/chunks/{computer-use-2VIV73WK.js → computer-use-SOQ4E3VX.js} +43 -35
  153. package/chunks/{config-utils-FYTBZLCJ.js → config-utils-7V7GGIW6.js} +3 -3
  154. package/chunks/contextCommand-JLHYA34Z.js +80 -0
  155. package/chunks/{create-sub-session-AZ77LBL3.js → create-sub-session-IWW2IZ2T.js} +3 -3
  156. package/chunks/{create-sub-session-XDHHC2P4.js → create-sub-session-QRJLW5BV.js} +43 -35
  157. package/chunks/{cron-create-KTWJM7QT.js → cron-create-YIID5XAW.js} +6 -6
  158. package/chunks/{cron-delete-2P3I5ULL.js → cron-delete-ZVHYCEP2.js} +5 -5
  159. package/chunks/{cron-list-PXDPGEDQ.js → cron-list-XEGS463Q.js} +5 -5
  160. package/chunks/{daemon-RAPSDJH7.js → daemon-YO6433NF.js} +350 -53
  161. package/chunks/daemon-status-provider-2233Q37D.js +89 -0
  162. package/chunks/{de-4IBXM7CN.js → de-HGRCYDEJ.js} +1 -0
  163. package/chunks/{dist-UIFWIFRO.js → dist-46NQKLTW.js} +2 -2
  164. package/chunks/{dist-XRYV6TJP.js → dist-AIKFMUKK.js} +50 -4
  165. package/chunks/{dist-XBJVSWS2.js → dist-BBLXMS3N.js} +14 -2
  166. package/chunks/{dist-OMW6WDEO.js → dist-F6IBUDR4.js} +40 -9
  167. package/chunks/{dist-PJLG2XYX.js → dist-WEAHOXDM.js} +1 -1
  168. package/chunks/{dist-OAV7LJGJ.js → dist-YFNEUWSE.js} +26 -2
  169. package/chunks/earlyInputCapture-A7NDU3PF.js +82 -0
  170. package/chunks/{edit-CS6SFEXC.js → edit-OBDSQURM.js} +43 -35
  171. package/chunks/{en-USMCCJAJ.js → en-MTWBNGDO.js} +15 -0
  172. package/chunks/{enter-worktree-LMAL75DY.js → enter-worktree-U6MRPQ2P.js} +43 -35
  173. package/chunks/{enterPlanMode-WVJB4DSS.js → enterPlanMode-BC5QUZZ2.js} +43 -35
  174. package/chunks/{environment-6YHC4JAJ.js → environment-W5UFC2CH.js} +46 -38
  175. package/chunks/errors-M7CLORXH.js +88 -0
  176. package/chunks/{exit-worktree-KPFD742L.js → exit-worktree-DGNYMECB.js} +43 -35
  177. package/chunks/{exitPlanMode-UEJS6CDY.js → exitPlanMode-GXTBWQAR.js} +43 -35
  178. package/chunks/{fast-path-G2N4NRCA.js → fast-path-JJZFJANL.js} +6 -6
  179. package/chunks/{fast-path-settings-DAOVFADC.js → fast-path-settings-WQJU2LAT.js} +2 -2
  180. package/chunks/{fr-WVHEBDDB.js → fr-45RLL55O.js} +1 -0
  181. package/chunks/{gemini-2MDVIOVT.js → gemini-QS36EBZV.js} +132 -102
  182. package/chunks/{geminiContentGenerator-ZXTDBMFR.js → geminiContentGenerator-AG4KB6CV.js} +14 -8
  183. package/chunks/{getMachineId-bsd-QFVLPUPT.js → getMachineId-bsd-V7W3GODC.js} +1 -1
  184. package/chunks/{getMachineId-darwin-DGMQQE2E.js → getMachineId-darwin-TDO75DQP.js} +1 -1
  185. package/chunks/{getMachineId-linux-R4Z6CSWC.js → getMachineId-linux-TF43WQT2.js} +1 -1
  186. package/chunks/{getMachineId-unsupported-Z3SBVBUV.js → getMachineId-unsupported-ZGUO3TXT.js} +1 -1
  187. package/chunks/{getMachineId-win-SCK5UFDT.js → getMachineId-win-ECFYZZFQ.js} +1 -1
  188. package/chunks/{glob-562XFLIZ.js → glob-V7R3PSK3.js} +43 -35
  189. package/chunks/{grep-MGEFBDQK.js → grep-QYPSK7OP.js} +43 -35
  190. package/chunks/handleAutoUpdate-6DBEZYPV.js +81 -0
  191. package/chunks/{i18n-R6HJENXA.js → i18n-VUJJZIMU.js} +44 -36
  192. package/chunks/image-gen-Z3VPGKRC.js +240 -0
  193. package/chunks/initializer-UWAK5U5O.js +86 -0
  194. package/chunks/installationInfo-6O2YAA52.js +80 -0
  195. package/chunks/{ja-KY4ROZTE.js → ja-B7DF7DFG.js} +1 -0
  196. package/chunks/{keychain-token-storage-6ACJDYIB.js → keychain-token-storage-MDTG3WRM.js} +3 -3
  197. package/chunks/{kittyProtocolDetector-HCNNKJTI.js → kittyProtocolDetector-MBRTDRBK.js} +5 -3
  198. package/chunks/list-GB4ESM3T.js +89 -0
  199. package/chunks/list-agents-5KJJHR6I.js +80 -0
  200. package/chunks/loadedSettingsAdapter-OT6JVQ7U.js +83 -0
  201. package/chunks/loggingContentGenerator-HS3S5H3Q.js +1077 -0
  202. package/chunks/{loop-wakeup-RNMRVA66.js → loop-wakeup-FXKNNYSY.js} +7 -7
  203. package/chunks/{ls-J2ZI5XYK.js → ls-NTK6VOQJ.js} +5 -5
  204. package/chunks/{lsp-UMS3NUB5.js → lsp-2JI24STP.js} +3 -3
  205. package/chunks/{managed-npm-update-4KNYSOYC.js → managed-npm-update-JYEMMXA3.js} +94 -38
  206. package/chunks/mcp-6DBDJPFU.js +83 -0
  207. package/chunks/{monitor-DMHKE4SW.js → monitor-R3ODH5U6.js} +45 -36
  208. package/chunks/node-UUDY34IG.js +305 -0
  209. package/chunks/nonInteractiveCli-MOYCYBBU.js +141 -0
  210. package/chunks/{notebook-edit-35SJGEOR.js → notebook-edit-BNOK452R.js} +43 -35
  211. package/chunks/{openaiContentGenerator-5LPAFXPF.js → openaiContentGenerator-WMCU3O2H.js} +27 -17
  212. package/chunks/pidfile-TFRZZZIO.js +86 -0
  213. package/chunks/{processUtils-GM2I55KF.js → processUtils-RT7UNCC2.js} +2 -2
  214. package/chunks/{pt-OK455PLH.js → pt-22Q3FP73.js} +1 -0
  215. package/chunks/{qwenContentGenerator-HKOYNP7H.js → qwenContentGenerator-HHCRK4SX.js} +56 -42
  216. package/chunks/{qwenOAuth2-NUUYC3V5.js → qwenOAuth2-OWLB5AKH.js} +14 -27
  217. package/chunks/read-file-APMO3PSX.js +31 -0
  218. package/chunks/{read-mcp-resource-F6HYMDUY.js → read-mcp-resource-4DKQWGHD.js} +3 -3
  219. package/chunks/{record-artifact-7GCFLDD7.js → record-artifact-RQKFYO5B.js} +3 -3
  220. package/chunks/resumeHistoryUtils-6KRYEAWZ.js +91 -0
  221. package/chunks/ripGrep-BEJDEDXW.js +73 -0
  222. package/chunks/{ru-7SPDGMGD.js → ru-FZCNZHDC.js} +1 -0
  223. package/chunks/{run-qwen-serve-5VH3F4NW.js → run-qwen-serve-FU6HEM4J.js} +271 -57
  224. package/chunks/{runtime-OH77YH7W.js → runtime-XXRRTNP6.js} +55 -45
  225. package/chunks/{scheduler-WJQSLCSV.js → scheduler-G2ZS2Z7E.js} +43 -35
  226. package/chunks/{sdk-exporters-grpc-ETLH47EP.js → sdk-exporters-grpc-AK3LGHNO.js} +3 -3
  227. package/chunks/{sdk-exporters-http-T3POX73F.js → sdk-exporters-http-FYBSUCPD.js} +6 -6
  228. package/chunks/{sdk-impl-NSLPDH6I.js → sdk-impl-GMVPB7NB.js} +6 -6
  229. package/chunks/{send-message-PYIJ2PZL.js → send-message-Q6OOR6BR.js} +46 -9
  230. package/chunks/serve-7BSTXJ4T.js +89 -0
  231. package/chunks/{server-E4N4AI6Z.js → server-4UMH7OIZ.js} +2362 -411
  232. package/chunks/{session-5YUWIOQE.js → session-K3O3Q2SV.js} +105 -87
  233. package/chunks/{settings-YY7ZSFO7.js → settings-CR2EWTBA.js} +53 -45
  234. package/chunks/shell-HH3PF3A2.js +83 -0
  235. package/chunks/{skill-PAIDX3EU.js → skill-I3SDA4MB.js} +17 -16
  236. package/chunks/spawnChannel-RWNDBXGA.js +82 -0
  237. package/chunks/{src-IZXLJI5M.js → src-GE4TTTML.js} +302 -184
  238. package/chunks/{standalone-update-X675JVBL.js → standalone-update-Q6WFRZZQ.js} +45 -37
  239. package/chunks/{startInteractiveUI-ND2IVBU3.js → startInteractiveUI-SLZGHRPH.js} +747 -310
  240. package/chunks/{syntheticOutput-H7RTI5KL.js → syntheticOutput-I3757IWH.js} +4 -4
  241. package/chunks/{task-create-7474AJJD.js → task-create-N7WQSGYA.js} +10 -10
  242. package/chunks/{task-list-633HGOIB.js → task-list-FOPULZEP.js} +7 -7
  243. package/chunks/{task-stop-MNUGHPIA.js → task-stop-H6RHXFVQ.js} +4 -4
  244. package/chunks/{task-update-66GQB5LI.js → task-update-M57TFZJT.js} +10 -10
  245. package/chunks/{team-create-2DEYNMMN.js → team-create-YJALH5D2.js} +46 -38
  246. package/chunks/{team-delete-BB3CG3QF.js → team-delete-QE2UXJL7.js} +7 -7
  247. package/chunks/{team-plan-approval-65AVAOCT.js → team-plan-approval-34QFYKGN.js} +43 -35
  248. package/chunks/theme-manager-SWRILQHI.js +77 -0
  249. package/chunks/{todoWrite-KRAUN54W.js → todoWrite-VQ7FKOHL.js} +5 -5
  250. package/chunks/{tool-search-ZQP3SMTV.js → tool-search-NF7GB6LE.js} +16 -16
  251. package/chunks/total-session-admission-DLHHHLD3.js +84 -0
  252. package/chunks/{tree-sitter-FS4VPMZA.js → tree-sitter-4D7QS7F6.js} +1 -1
  253. package/chunks/{tree-sitter-bash-6B46JJCV.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
  254. package/chunks/{trustedFolders-LURI52LP.js → trustedFolders-KHXHY6PY.js} +44 -36
  255. package/chunks/{update-relaunch-BPWFIDLM.js → update-relaunch-WBUZJC5O.js} +5 -5
  256. package/chunks/updateCheck-RKL6M5XN.js +92 -0
  257. package/chunks/useAutoAcceptIndicator-CFQ5BUJL.js +93 -0
  258. package/chunks/{validateNonInterActiveAuth-HWD6Y22I.js → validateNonInterActiveAuth-3R223G3R.js} +89 -80
  259. package/chunks/{version-OD4JAFG7.js → version-HS7YSFHV.js} +1 -1
  260. package/chunks/{web-fetch-RFBKNU24.js → web-fetch-NKCSG7ZE.js} +18 -16
  261. package/chunks/{web-search-AKTVS5YZ.js → web-search-S62WAP4S.js} +13 -27
  262. package/chunks/{workflow-VZVCOSZN.js → workflow-QAGU5RU4.js} +44 -36
  263. package/chunks/workspace-providers-status-QSVZUETE.js +86 -0
  264. package/chunks/{workspace-registration-store-Q5SFJSX4.js → workspace-registration-store-24JMHDGF.js} +2 -2
  265. package/chunks/workspace-registry-UT4RBNBM.js +88 -0
  266. package/chunks/workspace-service-JFWRUS4V.js +98 -0
  267. package/chunks/workspace-skills-status-ZBBKJOI2.js +85 -0
  268. package/chunks/write-file-VHIXW5M7.js +73 -0
  269. package/chunks/{zh-WY5DWYZD.js → zh-LUIGBD55.js} +15 -0
  270. package/chunks/{zh-TW-BM47YBFH.js → zh-TW-F5KG2IYD.js} +15 -0
  271. package/cli-entry.js +10 -1
  272. package/cli.js +13 -13
  273. package/locales/ca.js +2 -0
  274. package/locales/de.js +1 -0
  275. package/locales/en.js +25 -0
  276. package/locales/fr.js +1 -0
  277. package/locales/ja.js +1 -0
  278. package/locales/pt.js +1 -0
  279. package/locales/ru.js +1 -0
  280. package/locales/zh-TW.js +23 -0
  281. package/locales/zh.js +23 -0
  282. package/package.json +3 -3
  283. package/web-shell/assets/{arc-BWFm0SI0.js → arc-DcbWnB9T.js} +1 -1
  284. package/web-shell/assets/{architectureDiagram-3BPJPVTR-CZ_yL-DQ.js → architectureDiagram-3BPJPVTR-kMMF5sud.js} +1 -1
  285. package/web-shell/assets/{blockDiagram-GPEHLZMM-B9F9mJvG.js → blockDiagram-GPEHLZMM-Htl9vTJS.js} +1 -1
  286. package/web-shell/assets/{c4Diagram-AAUBKEIU-BUdwJW5f.js → c4Diagram-AAUBKEIU-BnZnm0mQ.js} +1 -1
  287. package/web-shell/assets/channel-Cq7YKtfC.js +1 -0
  288. package/web-shell/assets/{chunk-2J33WTMH-w4cF-qlF.js → chunk-2J33WTMH-DziB7kDG.js} +1 -1
  289. package/web-shell/assets/{chunk-4BX2VUAB-BXwURxHJ.js → chunk-4BX2VUAB-CmkD8daw.js} +1 -1
  290. package/web-shell/assets/{chunk-55IACEB6-Gem3LalC.js → chunk-55IACEB6-CHAd9A_U.js} +1 -1
  291. package/web-shell/assets/{chunk-727SXJPM-A3ddVojI.js → chunk-727SXJPM-Dqaam3fE.js} +1 -1
  292. package/web-shell/assets/{chunk-AQP2D5EJ-CjHZ5L_R.js → chunk-AQP2D5EJ-D_-saBYM.js} +1 -1
  293. package/web-shell/assets/{chunk-FMBD7UC4-CKgdgcpv.js → chunk-FMBD7UC4-B9r_veWD.js} +1 -1
  294. package/web-shell/assets/{chunk-ND2GUHAM-Cn2Dykjb.js → chunk-ND2GUHAM-B3EaCSpL.js} +1 -1
  295. package/web-shell/assets/{chunk-QZHKN3VN--0SyraC5.js → chunk-QZHKN3VN-CYq8x9mn.js} +1 -1
  296. package/web-shell/assets/classDiagram-4FO5ZUOK-CQ9aC1Tg.js +1 -0
  297. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ9aC1Tg.js +1 -0
  298. package/web-shell/assets/{cose-bilkent-S5V4N54A-CphhAity.js → cose-bilkent-S5V4N54A-D0ng4uiB.js} +1 -1
  299. package/web-shell/assets/{dagre-BM42HDAG-DU--jiKp.js → dagre-BM42HDAG-DCZollQv.js} +1 -1
  300. package/web-shell/assets/{diagram-2AECGRRQ-BzvuZw1Y.js → diagram-2AECGRRQ-Dfk2pWS0.js} +1 -1
  301. package/web-shell/assets/{diagram-5GNKFQAL-D84-49Y0.js → diagram-5GNKFQAL-kX38ltWR.js} +1 -1
  302. package/web-shell/assets/{diagram-KO2AKTUF-DQTq-3_3.js → diagram-KO2AKTUF-CJz2vsXh.js} +1 -1
  303. package/web-shell/assets/{diagram-LMA3HP47-8FTrshzN.js → diagram-LMA3HP47-BvMLZm_7.js} +1 -1
  304. package/web-shell/assets/{diagram-OG6HWLK6-BCjpDBCm.js → diagram-OG6HWLK6-l7kfStkO.js} +1 -1
  305. package/web-shell/assets/{erDiagram-TEJ5UH35-BtRObkmg.js → erDiagram-TEJ5UH35-BSVa8GGT.js} +1 -1
  306. package/web-shell/assets/{flowDiagram-I6XJVG4X-DTrW6oxy.js → flowDiagram-I6XJVG4X-CoawKIXH.js} +1 -1
  307. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BgPNSW6j.js → ganttDiagram-6RSMTGT7-DFUDH0zF.js} +1 -1
  308. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BTclNgGV.js → gitGraphDiagram-PVQCEYII-Y2pvpT4e.js} +1 -1
  309. package/web-shell/assets/{index-CxA7AqY6.js → index-D0GX0zZf.js} +1 -1
  310. package/web-shell/assets/index-D9haPt0X.css +5 -0
  311. package/web-shell/assets/index-ckX9Pq5k.js +1230 -0
  312. package/web-shell/assets/{infoDiagram-5YYISTIA-DCE4AJt2.js → infoDiagram-5YYISTIA-CU8_zLiX.js} +1 -1
  313. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-C8iE6q4Y.js → ishikawaDiagram-YF4QCWOH-AVQiV0DU.js} +1 -1
  314. package/web-shell/assets/{journeyDiagram-JHISSGLW-C_dxdyEc.js → journeyDiagram-JHISSGLW-DQ0VSKa3.js} +1 -1
  315. package/web-shell/assets/{kanban-definition-UN3LZRKU-Dw3n1u3w.js → kanban-definition-UN3LZRKU-BqnWqsE_.js} +1 -1
  316. package/web-shell/assets/{linear-C2BF2zJ9.js → linear-BkoihsaA.js} +1 -1
  317. package/web-shell/assets/{mermaid.core-CGTQU3MA.js → mermaid.core-5RJs-31j.js} +5 -5
  318. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BVFZm9ZC.js → mindmap-definition-RKZ34NQL-D33Bxnpd.js} +1 -1
  319. package/web-shell/assets/{pieDiagram-4H26LBE5-Cc-TNN3n.js → pieDiagram-4H26LBE5-BuEAw3BH.js} +1 -1
  320. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CgW3Rzsi.js → quadrantDiagram-W4KKPZXB-Kox_usEq.js} +1 -1
  321. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BAaj0Y3B.js → requirementDiagram-4Y6WPE33-CNjeUif0.js} +1 -1
  322. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-XJWmekxS.js → sankeyDiagram-5OEKKPKP-BCd2OL_U.js} +1 -1
  323. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CtRc_0wf.js → sequenceDiagram-3UESZ5HK-CF2ZTsz0.js} +1 -1
  324. package/web-shell/assets/{stateDiagram-AJRCARHV-WCnvMGy5.js → stateDiagram-AJRCARHV-qenSzHtm.js} +1 -1
  325. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B7W4zlCr.js +1 -0
  326. package/web-shell/assets/{timeline-definition-PNZ67QCA-C9cRx49L.js → timeline-definition-PNZ67QCA-B5DyWdgs.js} +1 -1
  327. package/web-shell/assets/{vennDiagram-CIIHVFJN-BvXOCEt-.js → vennDiagram-CIIHVFJN-DqP4I_o_.js} +1 -1
  328. package/web-shell/assets/{wardley-L42UT6IY-ByafGtzu.js → wardley-L42UT6IY-CJe2e4mg.js} +1 -1
  329. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-CozAnw8x.js → wardleyDiagram-YWT4CUSO-BMDSw-Rr.js} +1 -1
  330. package/web-shell/assets/{xychartDiagram-2RQKCTM6-Camu9Qvq.js → xychartDiagram-2RQKCTM6-BTVZYkxD.js} +1 -1
  331. package/web-shell/index.html +17 -13
  332. package/chunks/MaxSizedBox-3XQIBACV.js +0 -78
  333. package/chunks/agent-QXD5NSKA.js +0 -73
  334. package/chunks/agent-headless-4VXR2TBK.js +0 -67
  335. package/chunks/bridge-GIBRSPE6.js +0 -81
  336. package/chunks/chunk-CBOQ3HY7.js +0 -2019
  337. package/chunks/chunk-MA6GYKK7.js +0 -6928
  338. package/chunks/contextCommand-XQU7KLIH.js +0 -72
  339. package/chunks/daemon-status-provider-KQVNB4VA.js +0 -80
  340. package/chunks/earlyInputCapture-WP5SA3KH.js +0 -74
  341. package/chunks/errors-JEYPXX4S.js +0 -80
  342. package/chunks/handleAutoUpdate-2VJPAW43.js +0 -73
  343. package/chunks/initializer-UOX67ZFQ.js +0 -78
  344. package/chunks/installationInfo-NQNY34X3.js +0 -72
  345. package/chunks/list-2Z7KS7ZF.js +0 -81
  346. package/chunks/loadedSettingsAdapter-LIYY3LE4.js +0 -75
  347. package/chunks/mcp-AJ4QW3JA.js +0 -75
  348. package/chunks/nonInteractiveCli-PUSO5QF6.js +0 -134
  349. package/chunks/pidfile-EH2JW2PB.js +0 -78
  350. package/chunks/read-file-JZ5VXILQ.js +0 -31
  351. package/chunks/resumeHistoryUtils-Z3HG4WKM.js +0 -84
  352. package/chunks/ripGrep-JNLJCT2B.js +0 -65
  353. package/chunks/serve-NN5FXWR6.js +0 -81
  354. package/chunks/shell-FXT3NVC6.js +0 -75
  355. package/chunks/spawnChannel-XAWLXNOD.js +0 -74
  356. package/chunks/theme-manager-2WZHPK2M.js +0 -69
  357. package/chunks/total-session-admission-HULB2TEQ.js +0 -75
  358. package/chunks/updateCheck-D4ESCHBJ.js +0 -88
  359. package/chunks/useAutoAcceptIndicator-CBNLOF2P.js +0 -86
  360. package/chunks/workspace-providers-status-TJTVHORI.js +0 -78
  361. package/chunks/workspace-registry-H6VM5WXK.js +0 -79
  362. package/chunks/workspace-service-ZNKD3I2J.js +0 -90
  363. package/chunks/workspace-skills-status-OOBIXADG.js +0 -77
  364. package/chunks/write-file-CAKK5IAO.js +0 -65
  365. package/web-shell/assets/channel-DiLlxxIf.js +0 -1
  366. package/web-shell/assets/classDiagram-4FO5ZUOK-CkylTdM4.js +0 -1
  367. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CkylTdM4.js +0 -1
  368. package/web-shell/assets/index-CGtQqOIa.css +0 -5
  369. package/web-shell/assets/index-TtM0hVjU.js +0 -1207
  370. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D1gzH2Ue.js +0 -1
@@ -4,6 +4,9 @@ import {
4
4
  DaemonMetricsRing,
5
5
  computeCpuPercent
6
6
  } from "./chunk-HGT6JR3U.js";
7
+ import {
8
+ RUNTIME_STARTUP_CANCELLED_MESSAGE
9
+ } from "./chunk-QUPXZXLV.js";
7
10
  import {
8
11
  ACCESS_LOG_CONTROLLER_LOCAL,
9
12
  CAPABILITIES_SCHEMA_VERSION,
@@ -32,62 +35,64 @@ import {
32
35
  require_express,
33
36
  resolveWebShellDir,
34
37
  setDeferredRuntimeRequestTiming
35
- } from "./chunk-5G3ZVADU.js";
38
+ } from "./chunk-IJTOWOD7.js";
36
39
  import {
37
40
  isLoopbackBind
38
41
  } from "./chunk-RXFQM6FQ.js";
39
- import {
40
- RUNTIME_STARTUP_CANCELLED_MESSAGE
41
- } from "./chunk-QUPXZXLV.js";
42
42
  import {
43
43
  DEFAULT_COMPACTED_REPLAY_MAX_BYTES,
44
44
  normalizeCompactedReplayMaxBytes
45
45
  } from "./chunk-COH43MRJ.js";
46
46
  import {
47
47
  LOAD_REPLAY_META_KEY
48
- } from "./chunk-QR6U5QPP.js";
48
+ } from "./chunk-3SJ43L4W.js";
49
49
  import "./chunk-WBL3FJEU.js";
50
+ import "./chunk-T2NCM2ET.js";
50
51
  import {
51
52
  resolveChannelCwd
52
- } from "./chunk-6ZBPS62S.js";
53
+ } from "./chunk-7ZCNENPP.js";
54
+ import {
55
+ loadServeFastPathSettings,
56
+ preResolveServeFastPathHomeEnvOverrides
57
+ } from "./chunk-D3UEZIQH.js";
53
58
  import {
54
59
  MAX_REGISTERED_WORKSPACES,
55
60
  resolveWorkspaceInputs,
56
61
  workspaceRegistrationId
57
- } from "./chunk-7AUH6A4T.js";
62
+ } from "./chunk-Q4M4MDQ4.js";
58
63
  import {
59
64
  canonicalizeWorkspace,
60
65
  translateAndCheckAbsoluteWorkspacePath
61
66
  } from "./chunk-2RFKHEXL.js";
62
- import "./chunk-ACW3VNUE.js";
63
- import "./chunk-H24SOJIQ.js";
67
+ import "./chunk-UDX5OBWR.js";
68
+ import "./chunk-5NBDS5S6.js";
64
69
  import {
70
+ ChannelDeliveryError,
65
71
  ChannelWebhookEnqueueError,
66
- QWEN_SERVER_TOKEN_ENV
67
- } from "./chunk-QKTHJXCS.js";
72
+ QWEN_SERVER_TOKEN_ENV,
73
+ isChannelDeliveryError,
74
+ normalizeWorkerDiagnostic,
75
+ sanitizeWorkerDiagnostic
76
+ } from "./chunk-LK7CHLVP.js";
68
77
  import {
69
78
  channelSelectionNames
70
- } from "./chunk-TJTKSVIV.js";
79
+ } from "./chunk-JLU636DO.js";
80
+ import "./chunk-BK2UNYWD.js";
71
81
  import "./chunk-M5GB774H.js";
72
- import "./chunk-5HBA2Z7V.js";
73
- import "./chunk-T2NCM2ET.js";
74
82
  import {
75
83
  sanitizeLogText
76
- } from "./chunk-RVLZCXEE.js";
84
+ } from "./chunk-RWTEFFPU.js";
77
85
  import "./chunk-UDXSXLER.js";
78
- import {
79
- loadServeFastPathSettings,
80
- preResolveServeFastPathHomeEnvOverrides
81
- } from "./chunk-PEJWA3QQ.js";
86
+ import "./chunk-5HBA2Z7V.js";
82
87
  import "./chunk-GOXKNSDZ.js";
83
88
  import {
84
89
  getGlobalQwenDirLite,
85
90
  resolveConfigPathLite
86
91
  } from "./chunk-IDS7MSUP.js";
87
- import "./chunk-QRUIS3DN.js";
92
+ import "./chunk-6PEXNQTX.js";
88
93
  import {
89
94
  getCliVersion
90
- } from "./chunk-3EK5ZOUQ.js";
95
+ } from "./chunk-YX324OPW.js";
91
96
  import "./chunk-VJNBRRZG.js";
92
97
  import "./chunk-ALGGS7UH.js";
93
98
  import {
@@ -97,12 +102,12 @@ import {
97
102
  writeStderrLine,
98
103
  writeStdoutLine
99
104
  } from "./chunk-OWAK7LMW.js";
100
- import "./chunk-T4TZQJ7W.js";
101
- import "./chunk-H6XPXXMH.js";
102
105
  import "./chunk-5M6IDOMF.js";
106
+ import "./chunk-TWPJO254.js";
107
+ import "./chunk-H6XPXXMH.js";
103
108
  import {
104
109
  require_proper_lockfile
105
- } from "./chunk-E2UVIFI2.js";
110
+ } from "./chunk-KRXPRVGL.js";
106
111
  import "./chunk-CR3C7WXL.js";
107
112
  import "./chunk-XWRJCPHC.js";
108
113
  import {
@@ -2018,6 +2023,89 @@ function asRecord(value) {
2018
2023
  }
2019
2024
  __name(asRecord, "asRecord");
2020
2025
 
2026
+ // packages/cli/src/serve/channel-delivery-authorization.ts
2027
+ init_esbuild_shims();
2028
+ function authorizationKey(workspaceCwd, sessionId, id) {
2029
+ return JSON.stringify([workspaceCwd, sessionId, id]);
2030
+ }
2031
+ __name(authorizationKey, "authorizationKey");
2032
+ function targetsEqual(left, right) {
2033
+ return left.channelName === right.channelName && left.type === right.type && left.id === right.id;
2034
+ }
2035
+ __name(targetsEqual, "targetsEqual");
2036
+ var ChannelDeliveryAuthorizationStore = class {
2037
+ static {
2038
+ __name(this, "ChannelDeliveryAuthorizationStore");
2039
+ }
2040
+ #prompts = /* @__PURE__ */ new Map();
2041
+ #scheduledTasks = /* @__PURE__ */ new Map();
2042
+ authorizePrompt(workspaceCwd, authorization) {
2043
+ this.#prompts.set(
2044
+ authorizationKey(
2045
+ workspaceCwd,
2046
+ authorization.sessionId,
2047
+ authorization.deliveryId
2048
+ ),
2049
+ authorization.target
2050
+ );
2051
+ }
2052
+ revokePrompt(workspaceCwd, sessionId, deliveryId) {
2053
+ this.#prompts.delete(authorizationKey(workspaceCwd, sessionId, deliveryId));
2054
+ }
2055
+ registerScheduledTask(workspaceCwd, authorization) {
2056
+ const key = authorizationKey(
2057
+ workspaceCwd,
2058
+ authorization.sessionId,
2059
+ authorization.taskId
2060
+ );
2061
+ const current = this.#scheduledTasks.get(key);
2062
+ this.#scheduledTasks.set(key, {
2063
+ sessionId: authorization.sessionId,
2064
+ taskId: authorization.taskId,
2065
+ target: authorization.target,
2066
+ recurring: authorization.recurring,
2067
+ lastConsumedAt: current?.lastConsumedAt ?? authorization.lastFiredAt ?? 0
2068
+ });
2069
+ }
2070
+ revokeScheduledTask(workspaceCwd, sessionId, taskId) {
2071
+ this.#scheduledTasks.delete(
2072
+ authorizationKey(workspaceCwd, sessionId, taskId)
2073
+ );
2074
+ }
2075
+ consume(workspaceCwd, request) {
2076
+ if (request.source === "prompt") {
2077
+ if (request.promptId !== request.deliveryId) return false;
2078
+ const key2 = authorizationKey(
2079
+ workspaceCwd,
2080
+ request.sessionId,
2081
+ request.deliveryId
2082
+ );
2083
+ const target = this.#prompts.get(key2);
2084
+ if (!target || !targetsEqual(target, request.target)) return false;
2085
+ this.#prompts.delete(key2);
2086
+ return true;
2087
+ }
2088
+ if (typeof request.taskId !== "string" || typeof request.firedAt !== "number" || request.deliveryId !== `${request.taskId}:${request.firedAt}`) {
2089
+ return false;
2090
+ }
2091
+ const key = authorizationKey(
2092
+ workspaceCwd,
2093
+ request.sessionId,
2094
+ request.taskId
2095
+ );
2096
+ const authorization = this.#scheduledTasks.get(key);
2097
+ if (!authorization || request.firedAt <= authorization.lastConsumedAt || !targetsEqual(authorization.target, request.target)) {
2098
+ return false;
2099
+ }
2100
+ if (authorization.recurring) {
2101
+ authorization.lastConsumedAt = request.firedAt;
2102
+ } else {
2103
+ this.#scheduledTasks.delete(key);
2104
+ }
2105
+ return true;
2106
+ }
2107
+ };
2108
+
2021
2109
  // packages/cli/src/serve/channel-workspace-grouping.ts
2022
2110
  init_esbuild_shims();
2023
2111
  function resolveChannelOwnerCwd(rawCwd, workspaceCwd) {
@@ -2139,6 +2227,90 @@ var QWEN_SERVE_PROMPT_DEADLINE_MS_ENV = "QWEN_SERVE_PROMPT_DEADLINE_MS";
2139
2227
  var QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS_ENV = "QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS";
2140
2228
  var SHUTDOWN_FORCE_CLOSE_MS = 5e3;
2141
2229
  var DAEMON_LOG_FORCED_FLUSH_BUDGET_MS = 250;
2230
+ function channelDeliveryPublicError(code) {
2231
+ switch (code) {
2232
+ case "channel_worker_unavailable":
2233
+ return "Channel worker is unavailable.";
2234
+ case "channel_delivery_timeout":
2235
+ return "Channel delivery timed out.";
2236
+ case "channel_delivery_invalid":
2237
+ return "Channel delivery is invalid.";
2238
+ case "channel_delivery_rejected":
2239
+ return "Channel delivery was rejected.";
2240
+ case "channel_delivery_queue_full":
2241
+ return "Channel delivery queue is full.";
2242
+ case "channel_delivery_failed":
2243
+ return "Channel delivery failed.";
2244
+ default:
2245
+ return "Channel delivery failed.";
2246
+ }
2247
+ }
2248
+ __name(channelDeliveryPublicError, "channelDeliveryPublicError");
2249
+ function createBoundChannelDeliveryHandler(boundWorkspace, getManager, authorizations, daemonLog, diagnosticRedaction = {
2250
+ workerEnv: {}
2251
+ }) {
2252
+ return async (info) => {
2253
+ const failed = /* @__PURE__ */ __name((code, error, diagnostic) => {
2254
+ writeDaemonLifecycleBestEffort(() => {
2255
+ if (!daemonLog) return;
2256
+ let diagnosticText;
2257
+ if (diagnostic !== void 0) {
2258
+ const message = diagnostic instanceof Error ? diagnostic.message : String(diagnostic);
2259
+ const sanitized = sanitizeWorkerDiagnostic(
2260
+ message,
2261
+ 512,
2262
+ diagnosticRedaction
2263
+ );
2264
+ const targetId = normalizeWorkerDiagnostic(info.target.id);
2265
+ diagnosticText = sanitizeLogText(
2266
+ targetId.length > 0 ? sanitized.replaceAll(targetId, "<redacted>") : sanitized,
2267
+ 512
2268
+ );
2269
+ }
2270
+ daemonLog.warn("channel delivery failed", {
2271
+ sessionId: info.sessionId,
2272
+ deliveryId: info.deliveryId,
2273
+ source: info.source,
2274
+ channelName: info.target.channelName,
2275
+ code,
2276
+ ...diagnosticText ? { diagnostic: diagnosticText } : {}
2277
+ });
2278
+ });
2279
+ return { status: "failed", code, error };
2280
+ }, "failed");
2281
+ if (!authorizations.consume(boundWorkspace, info)) {
2282
+ return failed(
2283
+ "channel_delivery_invalid",
2284
+ "Channel delivery is not authorized."
2285
+ );
2286
+ }
2287
+ if (info.text.trim().length === 0) {
2288
+ return { status: "skipped" };
2289
+ }
2290
+ const manager = getManager();
2291
+ if (!manager) {
2292
+ return failed(
2293
+ "channel_worker_unavailable",
2294
+ "Channel worker is not running."
2295
+ );
2296
+ }
2297
+ try {
2298
+ await manager.deliverChannelMessage(boundWorkspace, {
2299
+ deliveryId: info.deliveryId,
2300
+ channelName: info.target.channelName,
2301
+ target: { type: info.target.type, id: info.target.id },
2302
+ text: info.text
2303
+ });
2304
+ return { status: "delivered" };
2305
+ } catch (err) {
2306
+ if (isChannelDeliveryError(err)) {
2307
+ return failed(err.code, channelDeliveryPublicError(err.code), err);
2308
+ }
2309
+ return failed("channel_delivery_failed", "Channel delivery failed.", err);
2310
+ }
2311
+ };
2312
+ }
2313
+ __name(createBoundChannelDeliveryHandler, "createBoundChannelDeliveryHandler");
2142
2314
  async function flushDaemonLogBounded(daemonLog, budgetMs) {
2143
2315
  let timer;
2144
2316
  try {
@@ -2360,12 +2532,12 @@ __name(withSettingsLock, "withSettingsLock");
2360
2532
  var channelWorkerRuntimePromise;
2361
2533
  async function loadChannelWorkerRuntime() {
2362
2534
  channelWorkerRuntimePromise ??= Promise.all([
2363
- import("./channel-worker-supervisor-QCXSXCRY.js"),
2364
- import("./pidfile-EH2JW2PB.js"),
2365
- import("./runtime-OH77YH7W.js"),
2535
+ import("./channel-worker-supervisor-V7KCFJTS.js"),
2536
+ import("./pidfile-TFRZZZIO.js"),
2537
+ import("./runtime-XXRRTNP6.js"),
2366
2538
  import("./cli-entry-path-4VJ3Y6T2.js"),
2367
- import("./channel-worker-group-QZV2SP5U.js"),
2368
- import("./channel-worker-manager-3GMAU45H.js")
2539
+ import("./channel-worker-group-2ZD7TVAT.js"),
2540
+ import("./channel-worker-manager-4OA4BCGB.js")
2369
2541
  ]).then(
2370
2542
  ([
2371
2543
  supervisor,
@@ -2470,7 +2642,7 @@ function shouldPreheatBridge(deps) {
2470
2642
  __name(shouldPreheatBridge, "shouldPreheatBridge");
2471
2643
  var coreRuntimePromise;
2472
2644
  function loadCoreRuntime() {
2473
- coreRuntimePromise ??= import("./src-IZXLJI5M.js");
2645
+ coreRuntimePromise ??= import("./src-GE4TTTML.js");
2474
2646
  return coreRuntimePromise;
2475
2647
  }
2476
2648
  __name(loadCoreRuntime, "loadCoreRuntime");
@@ -2500,10 +2672,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
2500
2672
  var settingsRuntimePromise;
2501
2673
  function loadSettingsRuntimeModules() {
2502
2674
  settingsRuntimePromise ??= Promise.all([
2503
- import("./settings-YY7ZSFO7.js"),
2504
- import("./environment-6YHC4JAJ.js"),
2505
- import("./loadedSettingsAdapter-LIYY3LE4.js"),
2506
- import("./trustedFolders-LURI52LP.js")
2675
+ import("./settings-CR2EWTBA.js"),
2676
+ import("./environment-W5UFC2CH.js"),
2677
+ import("./loadedSettingsAdapter-OT6JVQ7U.js"),
2678
+ import("./trustedFolders-KHXHY6PY.js")
2507
2679
  ]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
2508
2680
  settings,
2509
2681
  environment,
@@ -2516,8 +2688,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
2516
2688
  var channelWebhookConfigRuntimePromise;
2517
2689
  function loadChannelWebhookConfigRuntime() {
2518
2690
  channelWebhookConfigRuntimePromise ??= Promise.all([
2519
- import("./runtime-OH77YH7W.js"),
2520
- import("./config-utils-FYTBZLCJ.js")
2691
+ import("./runtime-XXRRTNP6.js"),
2692
+ import("./config-utils-7V7GGIW6.js")
2521
2693
  ]).then(([channelRuntime, configUtils]) => ({
2522
2694
  loadChannelsConfig: channelRuntime.loadChannelsConfig,
2523
2695
  parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
@@ -2541,16 +2713,16 @@ async function loadServeRuntimeModules() {
2541
2713
  totalSessionAdmissionModule,
2542
2714
  workspaceRegistryModule
2543
2715
  ] = await Promise.all([
2544
- import("./server-E4N4AI6Z.js"),
2545
- import("./bridge-GIBRSPE6.js"),
2546
- import("./spawnChannel-XAWLXNOD.js"),
2547
- import("./workspace-service-ZNKD3I2J.js"),
2716
+ import("./server-4UMH7OIZ.js"),
2717
+ import("./bridge-ZUB64FAE.js"),
2718
+ import("./spawnChannel-RWNDBXGA.js"),
2719
+ import("./workspace-service-JFWRUS4V.js"),
2548
2720
  import("./types-ML3TRJQ5.js"),
2549
- import("./daemon-status-provider-KQVNB4VA.js"),
2550
- import("./workspace-providers-status-TJTVHORI.js"),
2551
- import("./workspace-skills-status-OOBIXADG.js"),
2552
- import("./total-session-admission-HULB2TEQ.js"),
2553
- import("./workspace-registry-H6VM5WXK.js")
2721
+ import("./daemon-status-provider-2233Q37D.js"),
2722
+ import("./workspace-providers-status-QSVZUETE.js"),
2723
+ import("./workspace-skills-status-ZBBKJOI2.js"),
2724
+ import("./total-session-admission-DLHHHLD3.js"),
2725
+ import("./workspace-registry-UT4RBNBM.js")
2554
2726
  ]);
2555
2727
  return {
2556
2728
  createServeApp: serverModule.createServeApp,
@@ -2602,6 +2774,7 @@ function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, s
2602
2774
  sessionShellCommandEnabled,
2603
2775
  sessionArtifactsPersistenceAvailable,
2604
2776
  sessionGenerationAvailable: true,
2777
+ workspaceGenerationAvailable: true,
2605
2778
  rateLimit: opts.rateLimit === true,
2606
2779
  reloadAvailable: true,
2607
2780
  channelReloadAvailable: opts.channelSelection !== void 0,
@@ -3196,6 +3369,7 @@ async function runQwenServe(optsIn, deps = {}) {
3196
3369
  __name(runQwenServe, "runQwenServe");
3197
3370
  async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
3198
3371
  const runStartedAt = performance2.now();
3372
+ const channelDeliveryAuthorizations = new ChannelDeliveryAuthorizationStore();
3199
3373
  const shouldPreheat = !deps.bridge && shouldPreheatBridge(deps);
3200
3374
  const startup = {
3201
3375
  processStartedAt: new Date(
@@ -3211,6 +3385,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
3211
3385
  });
3212
3386
  const rawToken = optsIn.token ?? process.env[QWEN_SERVER_TOKEN_ENV];
3213
3387
  const token = typeof rawToken === "string" && rawToken.trim().length > 0 ? rawToken.trim() : void 0;
3388
+ const channelDeliveryDiagnosticRedaction = {
3389
+ workerEnv: daemonRuntimeBaseEnv,
3390
+ ...token ? { daemonToken: token } : {}
3391
+ };
3214
3392
  const sessionShellCommandEnabled = optsIn.enableSessionShell === true && token !== void 0;
3215
3393
  if (optsIn.enableSessionShell === true && token === void 0) {
3216
3394
  writeStderrLine(
@@ -3432,7 +3610,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
3432
3610
  }
3433
3611
  let workspaceRegistrationStore = deps.workspaceRegistrationStore;
3434
3612
  if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
3435
- const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-Q5SFJSX4.js");
3613
+ const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-24JMHDGF.js");
3436
3614
  workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
3437
3615
  }
3438
3616
  if (workspaceRegistrationStore) {
@@ -4305,7 +4483,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4305
4483
  );
4306
4484
  }
4307
4485
  }), "persistSettingsFn");
4308
- const { createSubSessionLauncher } = await import("./create-sub-session-XDHHC2P4.js");
4486
+ const { createSubSessionLauncher } = await import("./create-sub-session-QRJLW5BV.js");
4309
4487
  const subSessionLauncher = createSubSessionLauncher({
4310
4488
  getBridge: /* @__PURE__ */ __name(() => bridgeRef, "getBridge"),
4311
4489
  boundWorkspace
@@ -4315,6 +4493,13 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4315
4493
  // connection that hosts a named client MCP server (#5626).
4316
4494
  clientMcpSender: clientMcpSenderRegistry.lookup,
4317
4495
  onCreateSubSession: subSessionLauncher.launch,
4496
+ onChannelDelivery: createBoundChannelDeliveryHandler(
4497
+ boundWorkspace,
4498
+ () => channelWorkerManager,
4499
+ channelDeliveryAuthorizations,
4500
+ daemonLog,
4501
+ channelDeliveryDiagnosticRedaction
4502
+ ),
4318
4503
  maxSessions: opts.maxSessions,
4319
4504
  freshSessionAdmission: totalSessionAdmission.admit,
4320
4505
  sessionLifecycle: sessionOwnerIndex.handleBridgeSessionLifecycle,
@@ -4549,6 +4734,13 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4549
4734
  const secondaryBridge = runtime.createAcpSessionBridge({
4550
4735
  clientMcpSender: secondaryClientMcpSenderRegistry.lookup,
4551
4736
  onCreateSubSession: secondarySubSessionLauncher.launch,
4737
+ onChannelDelivery: createBoundChannelDeliveryHandler(
4738
+ workspaceInput.cwd,
4739
+ () => channelWorkerManager,
4740
+ channelDeliveryAuthorizations,
4741
+ daemonLog,
4742
+ channelDeliveryDiagnosticRedaction
4743
+ ),
4552
4744
  maxSessions: opts.maxSessions,
4553
4745
  freshSessionAdmission: totalSessionAdmission.admit,
4554
4746
  sessionLifecycle: sessionOwnerIndex.handleBridgeSessionLifecycle,
@@ -4815,6 +5007,13 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4815
5007
  wsBridge = runtime.createAcpSessionBridge({
4816
5008
  clientMcpSender: wsClientMcpRegistry.lookup,
4817
5009
  onCreateSubSession: wsSubSessionLauncher.launch,
5010
+ onChannelDelivery: createBoundChannelDeliveryHandler(
5011
+ cwd,
5012
+ () => channelWorkerManager,
5013
+ channelDeliveryAuthorizations,
5014
+ daemonLog,
5015
+ channelDeliveryDiagnosticRedaction
5016
+ ),
4818
5017
  maxSessions: opts.maxSessions,
4819
5018
  freshSessionAdmission: totalSessionAdmission.admit,
4820
5019
  sessionLifecycle: sessionOwnerIndex.handleBridgeSessionLifecycle,
@@ -5117,6 +5316,19 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5117
5316
  }
5118
5317
  return channelWorkerManager.enqueueWebhookTask(task);
5119
5318
  }, "enqueueChannelWebhookTask"),
5319
+ deliverChannelMessage: /* @__PURE__ */ __name(async (workspaceCwd, request) => {
5320
+ if (!channelWorkerManager) {
5321
+ throw new ChannelDeliveryError(
5322
+ "channel_worker_unavailable",
5323
+ "Channel worker is not running."
5324
+ );
5325
+ }
5326
+ return channelWorkerManager.deliverChannelMessage(
5327
+ workspaceCwd,
5328
+ request
5329
+ );
5330
+ }, "deliverChannelMessage"),
5331
+ channelDeliveryAuthorizations,
5120
5332
  reloadChannelWorker,
5121
5333
  getPerfSnapshot: /* @__PURE__ */ __name(() => ({
5122
5334
  eventLoop: currentDaemonEventLoopMonitor.snapshot(),
@@ -5308,7 +5520,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5308
5520
  reserveChannelServicePidfile(opts.channelSelection);
5309
5521
  }
5310
5522
  return await new Promise((resolve, reject) => {
5311
- const onListening = /* @__PURE__ */ __name(() => {
5523
+ const onListening = /* @__PURE__ */ __name((error) => {
5524
+ if (error) return;
5312
5525
  startup.listenerReadyAt = (/* @__PURE__ */ new Date()).toISOString();
5313
5526
  startup.processToListenMs = Math.round(process.uptime() * 1e3);
5314
5527
  startup.runQwenServeToListenMs = Math.round(
@@ -5328,7 +5541,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5328
5541
  channelWorkspaceGroups = resolveChannelWorkspaceGroupsAtListen();
5329
5542
  } catch (err) {
5330
5543
  removeCurrentServePidfile();
5331
- const error = err instanceof Error ? err : new Error(String(err));
5544
+ const error2 = err instanceof Error ? err : new Error(String(err));
5332
5545
  server.close((closeErr) => {
5333
5546
  if (closeErr) {
5334
5547
  daemonLog.error(
@@ -5336,7 +5549,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5336
5549
  closeErr
5337
5550
  );
5338
5551
  }
5339
- reject(error);
5552
+ reject(error2);
5340
5553
  });
5341
5554
  return;
5342
5555
  }
@@ -5406,9 +5619,9 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5406
5619
  "deferred runtime: cancelled, server closed before startup"
5407
5620
  );
5408
5621
  runtimeStartupSettled = true;
5409
- const error = new Error(RUNTIME_STARTUP_CANCELLED_MESSAGE);
5410
- runtimeStartupError = error.message;
5411
- markRuntimeFailed(error);
5622
+ const error2 = new Error(RUNTIME_STARTUP_CANCELLED_MESSAGE);
5623
+ runtimeStartupError = error2.message;
5624
+ markRuntimeFailed(error2);
5412
5625
  }, "cancelDeferredRuntimeStartup");
5413
5626
  const shutdownBridgeAfterFailedStartup = /* @__PURE__ */ __name(async (bridge) => {
5414
5627
  if (!bridge || deps.bridge) return;
@@ -5441,7 +5654,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5441
5654
  }
5442
5655
  }, "stopChannelWorkerAfterFailedStartup");
5443
5656
  const failRuntimeStartup = /* @__PURE__ */ __name(async (err, bridgeForCleanup) => {
5444
- const error = err instanceof Error ? err : new Error(String(err));
5657
+ const error2 = err instanceof Error ? err : new Error(String(err));
5445
5658
  if (runtimeStartupSettled) {
5446
5659
  disposeRuntimeAppResources(runtimeApp ?? runtimeAppForCleanup);
5447
5660
  await shutdownBridgeAfterFailedStartup(bridgeForCleanup);
@@ -5451,15 +5664,15 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5451
5664
  disposeRuntimeAppResources(runtimeApp ?? runtimeAppForCleanup);
5452
5665
  runtimeApp = void 0;
5453
5666
  clearRuntimeStartupTimer();
5454
- const message = error.message;
5667
+ const message = error2.message;
5455
5668
  runtimeStartupError = message;
5456
5669
  if (startup.preheat.status === "scheduled" || startup.preheat.status === "running") {
5457
5670
  startup.preheat.status = "failed";
5458
5671
  startup.preheat.error = message;
5459
5672
  }
5460
5673
  writeStderrLine(`qwen serve: runtime startup failed: ${message}`);
5461
- daemonLog.error("runtime startup failed", error);
5462
- markRuntimeFailed(error);
5674
+ daemonLog.error("runtime startup failed", error2);
5675
+ markRuntimeFailed(error2);
5463
5676
  if (closeServerAfterChannelWorkerStartupFailure && server.listening) {
5464
5677
  runtimeFailureListenerClose = new Promise((resolve2) => {
5465
5678
  server.close((closeErr) => {
@@ -6051,6 +6264,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6051
6264
  __name(runQwenServeImpl, "runQwenServeImpl");
6052
6265
  export {
6053
6266
  InvalidPolicyConfigError,
6267
+ createBoundChannelDeliveryHandler,
6054
6268
  createDisabledChannelWorkerSupervisor,
6055
6269
  createLazyBridgeProxy,
6056
6270
  extractContextFilename,