@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
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  atomicWriteFileSync
5
- } from "./chunk-6X4GWOPW.js";
5
+ } from "./chunk-A5L3JMUA.js";
6
6
  import {
7
7
  Storage,
8
8
  createDebugLogger
9
- } from "./chunk-OQB4EXO4.js";
9
+ } from "./chunk-NL7LTRLR.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -2,9 +2,12 @@
2
2
  "use strict";
3
3
  import {
4
4
  CHANNEL_DAEMON_WORKER_SENTINEL,
5
+ CHANNEL_DELIVERY_IPC_TIMEOUT_MS,
5
6
  CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
6
7
  CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
8
+ ChannelDeliveryError,
7
9
  ChannelWebhookEnqueueError,
10
+ MAX_CHANNEL_DELIVERIES_IN_FLIGHT,
8
11
  MAX_CHANNEL_STARTUP_FAILURES,
9
12
  MAX_CHANNEL_STARTUP_FAILURE_CHANNEL_LENGTH,
10
13
  MAX_CHANNEL_STARTUP_FAILURE_CODE_LENGTH,
@@ -13,26 +16,28 @@ import {
13
16
  QWEN_DAEMON_URL_ENV,
14
17
  QWEN_DAEMON_WORKSPACE_ENV,
15
18
  QWEN_SERVER_TOKEN_ENV,
19
+ createChannelDeliveryMessage,
16
20
  createChannelWebhookTaskMessage,
17
21
  createWorkerDiagnosticRedactor,
22
+ isChannelDeliveryResultMessage,
18
23
  isChannelStartupReportMessage,
19
24
  isChannelStartupReportType,
20
25
  isChannelWebhookEnqueueErrorCode,
21
26
  isChannelWebhookTaskResultMessage,
22
27
  normalizeWorkerDiagnostic,
23
28
  sanitizeWorkerDiagnostic
24
- } from "./chunk-QKTHJXCS.js";
29
+ } from "./chunk-LK7CHLVP.js";
25
30
  import {
26
31
  channelSelectionNames
27
- } from "./chunk-TJTKSVIV.js";
32
+ } from "./chunk-JLU636DO.js";
33
+ import {
34
+ sanitizeLogText
35
+ } from "./chunk-RWTEFFPU.js";
28
36
  import {
29
37
  CHANNEL_WORKER_KILL_GRACE_MS,
30
38
  CHANNEL_WORKER_STARTUP_TIMEOUT_MS,
31
39
  CHANNEL_WORKER_STOP_GRACE_MS
32
40
  } from "./chunk-5HBA2Z7V.js";
33
- import {
34
- sanitizeLogText
35
- } from "./chunk-RVLZCXEE.js";
36
41
  import {
37
42
  init_esbuild_shims
38
43
  } from "./chunk-5O2XNYP6.js";
@@ -263,6 +268,7 @@ function createChannelWorkerSupervisor(opts) {
263
268
  let staleHeartbeatTimer;
264
269
  let restartAttemptTimes = [];
265
270
  const pendingWebhookTasks = /* @__PURE__ */ new Map();
271
+ const pendingChannelDeliveries = /* @__PURE__ */ new Map();
266
272
  let restarting;
267
273
  let disposed = false;
268
274
  const snapshotCopy = /* @__PURE__ */ __name(() => ({
@@ -273,7 +279,8 @@ function createChannelWorkerSupervisor(opts) {
273
279
  startupFailures: snapshot.startupFailures.map((failure) => ({
274
280
  ...failure
275
281
  }))
276
- } : {}
282
+ } : {},
283
+ ...snapshot.adapters ? { adapters: snapshot.adapters.map((adapter) => ({ ...adapter })) } : {}
277
284
  }), "snapshotCopy");
278
285
  const clearRestartTimer = /* @__PURE__ */ __name(() => {
279
286
  if (restartTimer) {
@@ -325,6 +332,39 @@ function createChannelWorkerSupervisor(opts) {
325
332
  }
326
333
  return true;
327
334
  }, "settleWebhookTask");
335
+ const rejectPendingChannelDeliveries = /* @__PURE__ */ __name((code, message) => {
336
+ for (const pending of pendingChannelDeliveries.values()) {
337
+ clearTimeout(pending.timer);
338
+ pending.reject(new ChannelDeliveryError(code, message));
339
+ }
340
+ pendingChannelDeliveries.clear();
341
+ }, "rejectPendingChannelDeliveries");
342
+ const rejectPendingChannelDelivery = /* @__PURE__ */ __name((id, error) => {
343
+ const pending = pendingChannelDeliveries.get(id);
344
+ if (!pending) return;
345
+ pendingChannelDeliveries.delete(id);
346
+ clearTimeout(pending.timer);
347
+ pending.reject(error);
348
+ }, "rejectPendingChannelDelivery");
349
+ const settleChannelDelivery = /* @__PURE__ */ __name((message) => {
350
+ if (!isChannelDeliveryResultMessage(message)) return false;
351
+ const pending = pendingChannelDeliveries.get(message.id);
352
+ if (!pending) return true;
353
+ if (message.ok) {
354
+ pendingChannelDeliveries.delete(message.id);
355
+ clearTimeout(pending.timer);
356
+ pending.resolve({ delivered: true });
357
+ } else {
358
+ rejectPendingChannelDelivery(
359
+ message.id,
360
+ new ChannelDeliveryError(
361
+ message.code,
362
+ message.error || "Channel delivery failed."
363
+ )
364
+ );
365
+ }
366
+ return true;
367
+ }, "settleChannelDelivery");
328
368
  const pruneRestartAttempts = /* @__PURE__ */ __name((nowMs) => {
329
369
  restartAttemptTimes = restartAttemptTimes.filter(
330
370
  (attemptMs) => nowMs - attemptMs < restartPolicy.windowMs
@@ -432,6 +472,12 @@ function createChannelWorkerSupervisor(opts) {
432
472
  state: "starting",
433
473
  channels: channelSelectionNames(opts.selection),
434
474
  ...requestedChannels ? { requestedChannels } : {},
475
+ ...requestedChannels ? {
476
+ adapters: requestedChannels.map((name) => ({
477
+ name,
478
+ state: "starting"
479
+ }))
480
+ } : {},
435
481
  startedAt,
436
482
  restartCount: snapshot.restartCount ?? 0,
437
483
  ...snapshot.lastExitAt ? { lastExitAt: snapshot.lastExitAt } : {},
@@ -615,7 +661,14 @@ function createChannelWorkerSupervisor(opts) {
615
661
  };
616
662
  snapshot = {
617
663
  ...snapshot,
618
- startupFailures: [...snapshot.startupFailures ?? [], failure]
664
+ startupFailures: [...snapshot.startupFailures ?? [], failure],
665
+ adapters: snapshot.adapters?.map(
666
+ (adapter) => adapter.name === failure.channel ? {
667
+ name: adapter.name,
668
+ state: "error",
669
+ error: failure.message
670
+ } : adapter
671
+ )
619
672
  };
620
673
  acknowledgeStartupReport();
621
674
  }, "handleStartupReport");
@@ -637,6 +690,22 @@ function createChannelWorkerSupervisor(opts) {
637
690
  if (message.requestedChannels?.length) {
638
691
  next.requestedChannels = [...message.requestedChannels];
639
692
  }
693
+ const adapterNames = message.requestedChannels?.length ? message.requestedChannels : next.requestedChannels ?? next.channels;
694
+ const connected = new Set(next.channels);
695
+ const failures = new Map(
696
+ next.startupFailures?.map((failure) => [failure.channel, failure])
697
+ );
698
+ next.adapters = adapterNames.map((name) => {
699
+ if (connected.has(name)) {
700
+ return { name, state: "connected" };
701
+ }
702
+ const failure = failures.get(name);
703
+ return {
704
+ name,
705
+ state: "error",
706
+ ...failure ? { error: failure.message } : {}
707
+ };
708
+ });
640
709
  snapshot = next;
641
710
  armStaleHeartbeatTimer(startedChild);
642
711
  notifyReady(opts.onReady, snapshotCopy());
@@ -656,6 +725,9 @@ function createChannelWorkerSupervisor(opts) {
656
725
  }, "handleHeartbeat");
657
726
  function handleMessage(message) {
658
727
  if (child !== startedChild) return;
728
+ if (settleChannelDelivery(message)) {
729
+ return;
730
+ }
659
731
  if (settleWebhookTask(message)) {
660
732
  return;
661
733
  }
@@ -684,6 +756,10 @@ function createChannelWorkerSupervisor(opts) {
684
756
  "channel_worker_unavailable",
685
757
  "Channel worker exited."
686
758
  );
759
+ rejectPendingChannelDeliveries(
760
+ "channel_worker_unavailable",
761
+ "Channel worker exited."
762
+ );
687
763
  child = void 0;
688
764
  if ((ready || kind === "restart") && !stopping) {
689
765
  scheduleRestart();
@@ -759,6 +835,10 @@ function createChannelWorkerSupervisor(opts) {
759
835
  "channel_worker_unavailable",
760
836
  "Channel worker stopped."
761
837
  );
838
+ rejectPendingChannelDeliveries(
839
+ "channel_worker_unavailable",
840
+ "Channel worker stopped."
841
+ );
762
842
  if (!child || snapshot.state === "exited" || snapshot.state === "failed" && hasObservedExit(snapshot) || snapshot.state === "stopped") {
763
843
  child = void 0;
764
844
  snapshot = { ...snapshot, state: "stopped" };
@@ -803,6 +883,10 @@ function createChannelWorkerSupervisor(opts) {
803
883
  "channel_worker_unavailable",
804
884
  "Channel worker stopped."
805
885
  );
886
+ rejectPendingChannelDeliveries(
887
+ "channel_worker_unavailable",
888
+ "Channel worker stopped."
889
+ );
806
890
  if (!child || snapshot.state === "exited" || snapshot.state === "failed" && hasObservedExit(snapshot) || snapshot.state === "stopped") {
807
891
  clearRestartTimer();
808
892
  clearStaleHeartbeatTimer();
@@ -825,6 +909,62 @@ function createChannelWorkerSupervisor(opts) {
825
909
  snapshot() {
826
910
  return snapshotCopy();
827
911
  },
912
+ async deliverChannelMessage(request) {
913
+ const startedChild = child;
914
+ if (!startedChild || snapshot.state !== "running") {
915
+ throw new ChannelDeliveryError(
916
+ "channel_worker_unavailable",
917
+ "Channel worker is not running."
918
+ );
919
+ }
920
+ const send = startedChild.send;
921
+ if (!send) {
922
+ throw new ChannelDeliveryError(
923
+ "channel_worker_unavailable",
924
+ "Channel worker IPC send failed."
925
+ );
926
+ }
927
+ if (pendingChannelDeliveries.size >= MAX_CHANNEL_DELIVERIES_IN_FLIGHT) {
928
+ throw new ChannelDeliveryError(
929
+ "channel_delivery_queue_full",
930
+ "Channel delivery queue is full."
931
+ );
932
+ }
933
+ const message = createChannelDeliveryMessage(request);
934
+ return await new Promise((resolve, reject) => {
935
+ const timer = setTimeout(() => {
936
+ pendingChannelDeliveries.delete(message.id);
937
+ reject(
938
+ new ChannelDeliveryError(
939
+ "channel_delivery_timeout",
940
+ "Channel delivery IPC timed out."
941
+ )
942
+ );
943
+ }, CHANNEL_DELIVERY_IPC_TIMEOUT_MS);
944
+ timer.unref();
945
+ pendingChannelDeliveries.set(message.id, { resolve, reject, timer });
946
+ try {
947
+ send.call(startedChild, message, (error) => {
948
+ if (!error) return;
949
+ rejectPendingChannelDelivery(
950
+ message.id,
951
+ new ChannelDeliveryError(
952
+ "channel_worker_unavailable",
953
+ `Channel worker IPC send failed: ${error.message}`
954
+ )
955
+ );
956
+ });
957
+ } catch (error) {
958
+ rejectPendingChannelDelivery(
959
+ message.id,
960
+ new ChannelDeliveryError(
961
+ "channel_worker_unavailable",
962
+ `Channel worker IPC send failed: ${error instanceof Error ? error.message : String(error)}`
963
+ )
964
+ );
965
+ }
966
+ });
967
+ },
828
968
  async enqueueWebhookTask(task) {
829
969
  const startedChild = child;
830
970
  if (!startedChild || snapshot.state !== "running") {
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-OQB4EXO4.js";
5
+ } from "./chunk-NL7LTRLR.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -0,0 +1,293 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ getErrorStatus
5
+ } from "./chunk-NL7LTRLR.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-5O2XNYP6.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/core/src/utils/quotaErrorDetection.ts
14
+ init_esbuild_shims();
15
+ function isApiError(error) {
16
+ return typeof error === "object" && error !== null && "error" in error && typeof error.error === "object" && error.error !== null && "message" in error.error;
17
+ }
18
+ __name(isApiError, "isApiError");
19
+ function isStructuredError(error) {
20
+ return typeof error === "object" && error !== null && "message" in error && typeof error.message === "string";
21
+ }
22
+ __name(isStructuredError, "isStructuredError");
23
+ function isProQuotaExceededError(error) {
24
+ const checkMessage = /* @__PURE__ */ __name((message) => message.includes("Quota exceeded for quota metric 'Gemini") && message.includes("Pro Requests'"), "checkMessage");
25
+ if (typeof error === "string") {
26
+ return checkMessage(error);
27
+ }
28
+ if (isStructuredError(error)) {
29
+ return checkMessage(error.message);
30
+ }
31
+ if (isApiError(error)) {
32
+ return checkMessage(error.error.message);
33
+ }
34
+ if (error && typeof error === "object" && "response" in error) {
35
+ const gaxiosError = error;
36
+ if (gaxiosError.response && gaxiosError.response.data) {
37
+ if (typeof gaxiosError.response.data === "string") {
38
+ return checkMessage(gaxiosError.response.data);
39
+ }
40
+ if (typeof gaxiosError.response.data === "object" && gaxiosError.response.data !== null && "error" in gaxiosError.response.data) {
41
+ const errorData = gaxiosError.response.data;
42
+ return checkMessage(errorData.error?.message || "");
43
+ }
44
+ }
45
+ }
46
+ return false;
47
+ }
48
+ __name(isProQuotaExceededError, "isProQuotaExceededError");
49
+ function isGenericQuotaExceededError(error) {
50
+ if (typeof error === "string") {
51
+ return error.includes("Quota exceeded for quota metric");
52
+ }
53
+ if (isStructuredError(error)) {
54
+ return error.message.includes("Quota exceeded for quota metric");
55
+ }
56
+ if (isApiError(error)) {
57
+ return error.error.message.includes("Quota exceeded for quota metric");
58
+ }
59
+ return false;
60
+ }
61
+ __name(isGenericQuotaExceededError, "isGenericQuotaExceededError");
62
+ function isQwenQuotaExceededError(error) {
63
+ if (typeof error !== "object" || error === null) {
64
+ return false;
65
+ }
66
+ const { status, code, message } = error;
67
+ return status === 429 && code === "insufficient_quota" && typeof message === "string" && message.toLowerCase().includes("free allocated quota exceeded");
68
+ }
69
+ __name(isQwenQuotaExceededError, "isQwenQuotaExceededError");
70
+
71
+ // packages/core/src/utils/rateLimit.ts
72
+ init_esbuild_shims();
73
+
74
+ // packages/core/src/utils/retryPolicy.ts
75
+ init_esbuild_shims();
76
+ var MAX_TIMEOUT_MS = 2147483647;
77
+ function getRetryDelayMs(options) {
78
+ const normalizedAttempt = Math.max(1, options.attempt);
79
+ const delayCeilingMs = Math.min(options.maxDelayMs, MAX_TIMEOUT_MS);
80
+ const exponent = Math.min(normalizedAttempt - 1, 31);
81
+ const cappedExponentialDelayMs = Math.min(
82
+ options.initialDelayMs * Math.pow(2, exponent),
83
+ delayCeilingMs
84
+ );
85
+ const retryAfterMode = options.retryAfterMode ?? "ignore";
86
+ const retryAfterMs = retryAfterMode === "ignore" ? null : getRetryAfterDelayMs(options.error);
87
+ if (retryAfterMs !== null && retryAfterMs > 0) {
88
+ const retryAfterCapMs = Math.min(
89
+ options.retryAfterMaxDelayMs ?? options.maxDelayMs,
90
+ MAX_TIMEOUT_MS
91
+ );
92
+ const cappedRetryAfterMs = Math.min(retryAfterMs, retryAfterCapMs);
93
+ return Math.max(cappedExponentialDelayMs, cappedRetryAfterMs);
94
+ }
95
+ const jitterRatio = options.jitterRatio ?? 0;
96
+ if (jitterRatio <= 0) return cappedExponentialDelayMs;
97
+ const random = options.random ?? Math.random;
98
+ const jitter = cappedExponentialDelayMs * jitterRatio * (random() * 2 - 1);
99
+ return Math.min(
100
+ Math.max(0, cappedExponentialDelayMs + jitter),
101
+ delayCeilingMs
102
+ );
103
+ }
104
+ __name(getRetryDelayMs, "getRetryDelayMs");
105
+ function getRetryAfterDelayMs(error) {
106
+ const value = getHeaderValue(error, "retry-after") ?? getResponseHeaderValue(error, "retry-after");
107
+ if (value === null) return null;
108
+ const trimmed = value.trim();
109
+ if (/^\d+(\.\d+)?$/.test(trimmed)) {
110
+ const seconds = Number(trimmed);
111
+ if (Number.isFinite(seconds) && seconds >= 0) {
112
+ return Math.min(seconds * 1e3, MAX_TIMEOUT_MS);
113
+ }
114
+ }
115
+ const retryAtMs = Date.parse(trimmed);
116
+ if (!Number.isFinite(retryAtMs)) return null;
117
+ const delayMs = retryAtMs - Date.now();
118
+ return delayMs > 0 ? Math.min(delayMs, MAX_TIMEOUT_MS) : 0;
119
+ }
120
+ __name(getRetryAfterDelayMs, "getRetryAfterDelayMs");
121
+ function getHeaderValue(error, headerName) {
122
+ if (!hasHeaders(error)) return null;
123
+ const { headers } = error;
124
+ if (typeof headers.get === "function") {
125
+ const value = headers.get(headerName);
126
+ return typeof value === "string" ? value : null;
127
+ }
128
+ if (typeof headers !== "object" || headers === null) return null;
129
+ const lowerHeaderName = headerName.toLowerCase();
130
+ for (const [key, value] of Object.entries(headers)) {
131
+ if (key.toLowerCase() !== lowerHeaderName) continue;
132
+ return typeof value === "string" ? value : null;
133
+ }
134
+ return null;
135
+ }
136
+ __name(getHeaderValue, "getHeaderValue");
137
+ function getResponseHeaderValue(error, headerName) {
138
+ if (!hasResponseHeaders(error)) return null;
139
+ return getHeaderValue(error.response, headerName);
140
+ }
141
+ __name(getResponseHeaderValue, "getResponseHeaderValue");
142
+ function hasHeaders(error) {
143
+ return typeof error === "object" && error !== null && "headers" in error && error.headers != null;
144
+ }
145
+ __name(hasHeaders, "hasHeaders");
146
+ function hasResponseHeaders(error) {
147
+ return typeof error === "object" && error !== null && "response" in error && typeof error.response === "object" && error.response !== null && "headers" in error.response && error.response.headers != null;
148
+ }
149
+ __name(hasResponseHeaders, "hasResponseHeaders");
150
+
151
+ // packages/core/src/utils/rateLimit.ts
152
+ var RATE_LIMIT_ERROR_CODES = /* @__PURE__ */ new Set([429, 503, 1302, 1305]);
153
+ function isRateLimitError(error, extraCodes) {
154
+ const code = getErrorCode(error);
155
+ if (code === null) return false;
156
+ if (RATE_LIMIT_ERROR_CODES.has(code)) return true;
157
+ if (extraCodes && extraCodes.includes(code)) return true;
158
+ return false;
159
+ }
160
+ __name(isRateLimitError, "isRateLimitError");
161
+ function getRateLimitErrorDetails(error) {
162
+ const statusCode = getErrorStatus(error);
163
+ const payload = getProviderErrorPayload(error);
164
+ const message = getRawErrorMessage(error);
165
+ const transport = message?.includes("event:error") || message?.includes("HTTP_STATUS/") ? "sse" : statusCode !== void 0 ? "http" : "unknown";
166
+ return {
167
+ ...statusCode !== void 0 ? { statusCode } : {},
168
+ ...payload?.code !== void 0 ? { providerCode: String(payload.code) } : {},
169
+ ...payload?.message !== void 0 ? { providerMessage: payload.message } : {},
170
+ ...payload?.requestId !== void 0 ? { requestId: payload.requestId } : {},
171
+ transport
172
+ };
173
+ }
174
+ __name(getRateLimitErrorDetails, "getRateLimitErrorDetails");
175
+ function getRateLimitRetryDelayMs(attempt, options) {
176
+ return getRetryDelayMs({
177
+ attempt,
178
+ initialDelayMs: options.initialDelayMs,
179
+ maxDelayMs: options.maxDelayMs,
180
+ retryAfterMode: "minimum",
181
+ retryAfterMaxDelayMs: options.maxDelayMs,
182
+ error: options.error
183
+ });
184
+ }
185
+ __name(getRateLimitRetryDelayMs, "getRateLimitRetryDelayMs");
186
+ function getErrorCode(error) {
187
+ if (isApiError(error)) {
188
+ const n = Number(error.error.code);
189
+ if (Number.isFinite(n) && n > 0) return n;
190
+ }
191
+ const msg = error instanceof Error ? error.message : typeof error === "string" ? error : null;
192
+ if (msg) {
193
+ const i = msg.indexOf("{");
194
+ if (i !== -1) {
195
+ try {
196
+ const p = JSON.parse(msg.substring(i));
197
+ if (isApiError(p)) {
198
+ const n = Number(p.error.code);
199
+ if (Number.isFinite(n) && n > 0) return n;
200
+ }
201
+ } catch {
202
+ }
203
+ }
204
+ }
205
+ if (isStructuredError(error) && typeof error.status === "number") {
206
+ return error.status;
207
+ }
208
+ if (error instanceof Error && "status" in error) {
209
+ const s = error.status;
210
+ if (typeof s === "number") return s;
211
+ }
212
+ return getErrorStatus(error) ?? null;
213
+ }
214
+ __name(getErrorCode, "getErrorCode");
215
+ function getProviderErrorPayload(error) {
216
+ for (const payload of getJsonPayloads(error)) {
217
+ if (typeof payload !== "object" || payload === null) continue;
218
+ const direct = payload;
219
+ const nestedError = payload.error;
220
+ const nested = typeof nestedError === "object" && nestedError !== null ? nestedError : void 0;
221
+ const source = nested ?? direct;
222
+ const code = typeof source.code === "string" || typeof source.code === "number" ? source.code : void 0;
223
+ const message = typeof source.message === "string" ? source.message : void 0;
224
+ const requestId = typeof source.request_id === "string" ? source.request_id : typeof source.requestId === "string" ? source.requestId : typeof direct.request_id === "string" ? direct.request_id : typeof direct.requestId === "string" ? direct.requestId : void 0;
225
+ if (code !== void 0 || message !== void 0 || requestId !== void 0) {
226
+ return { code, message, requestId };
227
+ }
228
+ }
229
+ if (isApiError(error)) {
230
+ return {
231
+ code: error.error.code,
232
+ message: error.error.message
233
+ };
234
+ }
235
+ return null;
236
+ }
237
+ __name(getProviderErrorPayload, "getProviderErrorPayload");
238
+ function getJsonPayloads(error) {
239
+ const message = getRawErrorMessage(error);
240
+ if (!message) return [];
241
+ const payloads = [];
242
+ for (const line of message.split(/\r?\n/)) {
243
+ if (!line.startsWith("data:")) continue;
244
+ const data = line.slice("data:".length).trim();
245
+ if (!data || data === "[DONE]") continue;
246
+ try {
247
+ payloads.push(JSON.parse(data));
248
+ } catch {
249
+ }
250
+ }
251
+ if (payloads.length > 0) return payloads;
252
+ const jsonStart = message.indexOf("{");
253
+ const jsonEnd = message.lastIndexOf("}");
254
+ if (jsonStart !== -1 && jsonEnd > jsonStart) {
255
+ try {
256
+ payloads.push(
257
+ JSON.parse(message.slice(jsonStart, jsonEnd + 1))
258
+ );
259
+ } catch {
260
+ }
261
+ }
262
+ return payloads;
263
+ }
264
+ __name(getJsonPayloads, "getJsonPayloads");
265
+ function getRawErrorMessage(error) {
266
+ if (error instanceof Error) return error.message;
267
+ if (typeof error === "string") return error;
268
+ return null;
269
+ }
270
+ __name(getRawErrorMessage, "getRawErrorMessage");
271
+
272
+ export {
273
+ isApiError,
274
+ isStructuredError,
275
+ isProQuotaExceededError,
276
+ isGenericQuotaExceededError,
277
+ isQwenQuotaExceededError,
278
+ getRetryDelayMs,
279
+ getRetryAfterDelayMs,
280
+ isRateLimitError,
281
+ getRateLimitErrorDetails,
282
+ getRateLimitRetryDelayMs
283
+ };
284
+ /**
285
+ * @license
286
+ * Copyright 2025 Google LLC
287
+ * SPDX-License-Identifier: Apache-2.0
288
+ */
289
+ /**
290
+ * @license
291
+ * Copyright 2026 Google LLC
292
+ * SPDX-License-Identifier: Apache-2.0
293
+ */