@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
@@ -0,0 +1,246 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ require_semver
5
+ } from "./chunk-DP3IHZGG.js";
6
+ import {
7
+ getNpmCliPath
8
+ } from "./chunk-ZNAUOR2I.js";
9
+ import {
10
+ t
11
+ } from "./chunk-LKEJ26GS.js";
12
+ import {
13
+ getPackageJson
14
+ } from "./chunk-VJNBRRZG.js";
15
+ import {
16
+ createDebugLogger
17
+ } from "./chunk-NL7LTRLR.js";
18
+ import {
19
+ init_esbuild_shims
20
+ } from "./chunk-5O2XNYP6.js";
21
+ import {
22
+ __name,
23
+ __toESM
24
+ } from "./chunk-J2S4EL5Y.js";
25
+
26
+ // packages/cli/src/ui/utils/updateCheck.ts
27
+ init_esbuild_shims();
28
+ var import_semver = __toESM(require_semver(), 1);
29
+ import { execFile } from "node:child_process";
30
+ import { promisify } from "node:util";
31
+ var debugLogger = createDebugLogger("UPDATE_CHECK");
32
+ var FETCH_TIMEOUT_MS = 5e3;
33
+ var UpdateCheckTimeoutError = class extends Error {
34
+ static {
35
+ __name(this, "UpdateCheckTimeoutError");
36
+ }
37
+ distTag;
38
+ constructor(timeoutMs, distTag) {
39
+ const suffix = distTag ? ` for ${distTag}` : "";
40
+ super(`update check timed out after ${timeoutMs}ms${suffix}`);
41
+ this.name = "UpdateCheckTimeoutError";
42
+ this.distTag = distTag;
43
+ }
44
+ };
45
+ var NETWORK_ERROR_CODES = [
46
+ "ENOTFOUND",
47
+ "ECONNREFUSED",
48
+ "EAI_AGAIN",
49
+ "ETIMEDOUT",
50
+ "ENETUNREACH"
51
+ ];
52
+ function classifyUpdateCheckError(error) {
53
+ if (error instanceof UpdateCheckTimeoutError) return "timeout";
54
+ if (error instanceof Error) {
55
+ if ("killed" in error && error.killed === true && "signal" in error && error.signal === "SIGTERM") {
56
+ return "timeout";
57
+ }
58
+ const errors = [error];
59
+ if (error.cause instanceof Error) errors.push(error.cause);
60
+ const matchesCode = /* @__PURE__ */ __name((code) => errors.some(
61
+ (error2) => error2.code === code || error2.message.includes(code)
62
+ ), "matchesCode");
63
+ if (NETWORK_ERROR_CODES.some(matchesCode)) return "offline";
64
+ }
65
+ return "registry";
66
+ }
67
+ __name(classifyUpdateCheckError, "classifyUpdateCheckError");
68
+ function describeUpdateCheckFailure(error, timeoutMs = FETCH_TIMEOUT_MS) {
69
+ switch (classifyUpdateCheckError(error)) {
70
+ case "timeout":
71
+ return t("registry did not respond within {{seconds}}s", {
72
+ seconds: String(Math.round(timeoutMs / 1e3))
73
+ });
74
+ case "offline":
75
+ return t("registry unreachable");
76
+ default:
77
+ return t("registry error");
78
+ }
79
+ }
80
+ __name(describeUpdateCheckFailure, "describeUpdateCheckFailure");
81
+ async function fetchInfoWithTimeout(notifier, timeoutMs, distTag) {
82
+ let timer;
83
+ try {
84
+ return await Promise.race([
85
+ Promise.resolve(notifier.fetchInfo()),
86
+ new Promise((_, reject) => {
87
+ timer = setTimeout(
88
+ () => reject(new UpdateCheckTimeoutError(timeoutMs, distTag)),
89
+ timeoutMs
90
+ );
91
+ })
92
+ ]);
93
+ } finally {
94
+ if (timer !== void 0) clearTimeout(timer);
95
+ }
96
+ }
97
+ __name(fetchInfoWithTimeout, "fetchInfoWithTimeout");
98
+ var execFileAsync = promisify(execFile);
99
+ async function runGlobalNpm(args, run = execFileAsync, platform = process.platform, nodePath = process.execPath, resolveNpmCliPath = getNpmCliPath) {
100
+ const { stdout } = await run(
101
+ nodePath,
102
+ [resolveNpmCliPath(nodePath, platform), ...args],
103
+ {
104
+ encoding: "utf8",
105
+ timeout: FETCH_TIMEOUT_MS
106
+ }
107
+ );
108
+ return String(stdout).trim();
109
+ }
110
+ __name(runGlobalNpm, "runGlobalNpm");
111
+ async function fetchGlobalNpmUpdateInfo(packageName, currentVersion, distTag, run = execFileAsync) {
112
+ const output = await runGlobalNpm(
113
+ ["view", packageName, `dist-tags.${distTag}`, "--json", "--global"],
114
+ run
115
+ );
116
+ if (output === "") {
117
+ return {
118
+ latest: currentVersion,
119
+ current: currentVersion,
120
+ type: "latest",
121
+ name: packageName
122
+ };
123
+ }
124
+ const parsed = JSON.parse(output);
125
+ const latest = typeof parsed === "string" ? parsed : Array.isArray(parsed) && parsed.length === 1 && typeof parsed[0] === "string" ? parsed[0] : void 0;
126
+ if (latest === void 0) {
127
+ throw new Error(`Invalid npm ${distTag} version response`);
128
+ }
129
+ return {
130
+ latest,
131
+ current: currentVersion,
132
+ type: "latest",
133
+ name: packageName
134
+ };
135
+ }
136
+ __name(fetchGlobalNpmUpdateInfo, "fetchGlobalNpmUpdateInfo");
137
+ function getBestAvailableUpdate(nightly, stable) {
138
+ if (!nightly) return stable || null;
139
+ if (!stable) return nightly || null;
140
+ const nightlyVer = nightly.latest;
141
+ const stableVer = stable.latest;
142
+ if (import_semver.default.coerce(stableVer)?.version === import_semver.default.coerce(nightlyVer)?.version) {
143
+ return nightly;
144
+ }
145
+ return import_semver.default.gt(stableVer, nightlyVer) ? stable : nightly;
146
+ }
147
+ __name(getBestAvailableUpdate, "getBestAvailableUpdate");
148
+ async function checkForUpdatesDetailed(fetchGlobalNpm = fetchGlobalNpmUpdateInfo) {
149
+ let currentVersion;
150
+ try {
151
+ if (process.env["DEV"] === "true") {
152
+ return { status: "skipped", reason: "development mode" };
153
+ }
154
+ const packageJson = await getPackageJson();
155
+ if (!packageJson || !packageJson.name || !packageJson.version) {
156
+ return { status: "skipped", reason: "package metadata unavailable" };
157
+ }
158
+ const { name, version } = packageJson;
159
+ currentVersion = version;
160
+ const isNightly = version.includes("nightly");
161
+ const createNotifier = /* @__PURE__ */ __name((distTag) => ({
162
+ fetchInfo: /* @__PURE__ */ __name(() => fetchGlobalNpm(name, version, distTag), "fetchInfo")
163
+ }), "createNotifier");
164
+ if (isNightly) {
165
+ const [nightlyUpdateInfo, latestUpdateInfo] = await Promise.all([
166
+ fetchInfoWithTimeout(
167
+ createNotifier("nightly"),
168
+ FETCH_TIMEOUT_MS,
169
+ "nightly"
170
+ ),
171
+ fetchInfoWithTimeout(
172
+ createNotifier("latest"),
173
+ FETCH_TIMEOUT_MS,
174
+ "latest"
175
+ )
176
+ ]);
177
+ debugLogger.debug(
178
+ `fetchInfo returned nightly=${JSON.stringify(nightlyUpdateInfo)} latest=${JSON.stringify(latestUpdateInfo)} for current=${version}`
179
+ );
180
+ const bestUpdate = getBestAvailableUpdate(
181
+ nightlyUpdateInfo,
182
+ latestUpdateInfo
183
+ );
184
+ if (bestUpdate && import_semver.default.gt(bestUpdate.latest, version)) {
185
+ return {
186
+ status: "update",
187
+ info: {
188
+ message: t(
189
+ "A new version of Qwen Code is available! {{current}} \u2192 {{latest}}",
190
+ { current: version, latest: bestUpdate.latest }
191
+ ),
192
+ update: { ...bestUpdate, current: version }
193
+ }
194
+ };
195
+ }
196
+ } else {
197
+ const updateInfo = await fetchInfoWithTimeout(
198
+ createNotifier("latest"),
199
+ FETCH_TIMEOUT_MS,
200
+ "latest"
201
+ );
202
+ debugLogger.debug(
203
+ `fetchInfo returned ${JSON.stringify(updateInfo)} for current=${version}`
204
+ );
205
+ if (updateInfo && import_semver.default.gt(updateInfo.latest, version)) {
206
+ return {
207
+ status: "update",
208
+ info: {
209
+ message: t("Qwen Code update available! {{current}} \u2192 {{latest}}", {
210
+ current: version,
211
+ latest: updateInfo.latest
212
+ }),
213
+ update: { ...updateInfo, current: version }
214
+ }
215
+ };
216
+ }
217
+ }
218
+ return { status: "up-to-date", currentVersion: version };
219
+ } catch (e) {
220
+ const error = e instanceof Error ? e : new Error(String(e));
221
+ debugLogger.warn("Failed to check for updates: " + error);
222
+ return { status: "error", error, currentVersion };
223
+ }
224
+ }
225
+ __name(checkForUpdatesDetailed, "checkForUpdatesDetailed");
226
+ async function checkForUpdates(fetchGlobalNpm = fetchGlobalNpmUpdateInfo) {
227
+ const result = await checkForUpdatesDetailed(fetchGlobalNpm);
228
+ return result.status === "update" ? result.info : null;
229
+ }
230
+ __name(checkForUpdates, "checkForUpdates");
231
+
232
+ export {
233
+ FETCH_TIMEOUT_MS,
234
+ UpdateCheckTimeoutError,
235
+ classifyUpdateCheckError,
236
+ describeUpdateCheckFailure,
237
+ runGlobalNpm,
238
+ fetchGlobalNpmUpdateInfo,
239
+ checkForUpdatesDetailed,
240
+ checkForUpdates
241
+ };
242
+ /**
243
+ * @license
244
+ * Copyright 2025 Google LLC
245
+ * SPDX-License-Identifier: Apache-2.0
246
+ */
@@ -2,16 +2,16 @@
2
2
  "use strict";
3
3
  import {
4
4
  useKeypress
5
- } from "./chunk-SQFXI7VK.js";
5
+ } from "./chunk-LQIW3YFY.js";
6
6
  import {
7
7
  require_react
8
8
  } from "./chunk-5QWWOFGG.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-VRRF3GW5.js";
11
+ } from "./chunk-LKEJ26GS.js";
12
12
  import {
13
13
  APPROVAL_MODES
14
- } from "./chunk-WHGVTP7Q.js";
14
+ } from "./chunk-L26JL52R.js";
15
15
  import {
16
16
  init_esbuild_shims
17
17
  } from "./chunk-5O2XNYP6.js";
@@ -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";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  BaseJsonOutputAdapter
5
- } from "./chunk-FRPDJNK3.js";
5
+ } from "./chunk-BKHWX6I2.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -13,8 +13,10 @@ var LOAD_REPLAY_BULK_MODE = "bulk";
13
13
  var LOAD_REPLAY_VERSION = 1;
14
14
  var CHANNEL_STARTUP_PROFILE_META_KEY = "qwen.daemon.channelStartupProfile";
15
15
  var CHANNEL_STARTUP_PROFILE_VERSION = 1;
16
+ var DAEMON_CHANNEL_DELIVERY_META_KEY = "qwen.daemon.channelDelivery";
16
17
  var MID_TURN_QUEUE_DRAIN_METHOD = "craft/drainMidTurnQueue";
17
18
  var TODO_STOP_GUARD_QUEUE_RELEASE_METHOD = "craft/todoStopGuardQueueReleased";
19
+ var PROMPT_CANCEL_METHOD = "craft/cancelPendingPrompt";
18
20
  var CLIENT_MCP_OVER_WS_CONFIG_FLAG = "__clientMcpOverWs";
19
21
 
20
22
  export {
@@ -25,8 +27,10 @@ export {
25
27
  LOAD_REPLAY_VERSION,
26
28
  CHANNEL_STARTUP_PROFILE_META_KEY,
27
29
  CHANNEL_STARTUP_PROFILE_VERSION,
30
+ DAEMON_CHANNEL_DELIVERY_META_KEY,
28
31
  MID_TURN_QUEUE_DRAIN_METHOD,
29
32
  TODO_STOP_GUARD_QUEUE_RELEASE_METHOD,
33
+ PROMPT_CANCEL_METHOD,
30
34
  CLIENT_MCP_OVER_WS_CONFIG_FLAG
31
35
  };
32
36
  /**
@@ -0,0 +1,128 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+ import {
7
+ __name
8
+ } from "./chunk-J2S4EL5Y.js";
9
+
10
+ // packages/core/src/utils/request-tokenizer/textTokenizer.ts
11
+ init_esbuild_shims();
12
+ var NON_ASCII_RE = /[\u0080-\uffff]/;
13
+ var TOKEN_ESTIMATE_UNITS_PER_TOKEN = 20;
14
+ function estimateTextTokens(text) {
15
+ if (!text || text.length === 0) {
16
+ return 0;
17
+ }
18
+ if (!NON_ASCII_RE.test(text)) {
19
+ return Math.ceil(text.length / 4);
20
+ }
21
+ const nonAsciiChars = countNonAsciiChars(text);
22
+ const asciiChars = text.length - nonAsciiChars;
23
+ return Math.ceil(asciiChars / 4 + nonAsciiChars * 1.1);
24
+ }
25
+ __name(estimateTextTokens, "estimateTextTokens");
26
+ function estimateTextTokenUnits(text) {
27
+ if (!text || text.length === 0) {
28
+ return 0;
29
+ }
30
+ if (!NON_ASCII_RE.test(text)) {
31
+ return text.length * 5;
32
+ }
33
+ const nonAsciiChars = countNonAsciiChars(text);
34
+ const asciiChars = text.length - nonAsciiChars;
35
+ return asciiChars * 5 + nonAsciiChars * 22;
36
+ }
37
+ __name(estimateTextTokenUnits, "estimateTextTokenUnits");
38
+ function countNonAsciiChars(text) {
39
+ let count = 0;
40
+ for (let i = 0; i < text.length; i++) {
41
+ if (text.charCodeAt(i) >= 128) {
42
+ count++;
43
+ }
44
+ }
45
+ return count;
46
+ }
47
+ __name(countNonAsciiChars, "countNonAsciiChars");
48
+ var TextTokenizer = class {
49
+ static {
50
+ __name(this, "TextTokenizer");
51
+ }
52
+ /**
53
+ * Calculate tokens for text content
54
+ *
55
+ * @param text - The text to estimate tokens for
56
+ * @returns The estimated token count
57
+ */
58
+ async calculateTokens(text) {
59
+ return this.calculateTokensSync(text);
60
+ }
61
+ /**
62
+ * Calculate tokens for multiple text strings
63
+ *
64
+ * @param texts - Array of text strings to estimate tokens for
65
+ * @returns Array of token counts corresponding to each input text
66
+ */
67
+ async calculateTokensBatch(texts) {
68
+ return texts.map((text) => this.calculateTokensSync(text));
69
+ }
70
+ calculateTokensSync(text) {
71
+ return estimateTextTokens(text);
72
+ }
73
+ };
74
+
75
+ // packages/core/src/utils/tool-name-utils.ts
76
+ init_esbuild_shims();
77
+ var MAX_TOOL_NAME_LENGTH = 63;
78
+ var PROVIDER_SAFE_TOOL_NAME = /^[A-Za-z][A-Za-z0-9_-]*$/;
79
+ function normalizeToolNameForProvider(name) {
80
+ if (name.length <= MAX_TOOL_NAME_LENGTH && PROVIDER_SAFE_TOOL_NAME.test(name)) {
81
+ return name;
82
+ }
83
+ const normalized = sanitizeToolNameForProvider(name);
84
+ const suffix = `_${stableToolNameHash(name)}`;
85
+ return `${normalized.slice(0, MAX_TOOL_NAME_LENGTH - suffix.length)}${suffix}`;
86
+ }
87
+ __name(normalizeToolNameForProvider, "normalizeToolNameForProvider");
88
+ function sanitizeToolNameForProvider(name) {
89
+ const sanitized = name.replace(/[^A-Za-z0-9_-]/g, "_");
90
+ return /^[A-Za-z]/.test(sanitized) ? sanitized : `tool_${sanitized}`;
91
+ }
92
+ __name(sanitizeToolNameForProvider, "sanitizeToolNameForProvider");
93
+ function normalizeMcpToolName(name) {
94
+ return name.startsWith("mcp__") ? normalizeToolNameForProvider(name) : name;
95
+ }
96
+ __name(normalizeMcpToolName, "normalizeMcpToolName");
97
+ function generateLegacyMcpToolName(name) {
98
+ let legacyName = name.replace(/[^A-Za-z0-9_.-]/g, "_");
99
+ if (legacyName.length > MAX_TOOL_NAME_LENGTH) {
100
+ legacyName = legacyName.slice(0, 28) + "___" + legacyName.slice(-32);
101
+ }
102
+ return legacyName;
103
+ }
104
+ __name(generateLegacyMcpToolName, "generateLegacyMcpToolName");
105
+ function stableToolNameHash(name) {
106
+ let hash = 2166136261;
107
+ for (let index = 0; index < name.length; index += 1) {
108
+ hash = Math.imul(hash ^ name.charCodeAt(index), 16777619);
109
+ }
110
+ return (hash >>> 0).toString(36).padStart(7, "0");
111
+ }
112
+ __name(stableToolNameHash, "stableToolNameHash");
113
+
114
+ export {
115
+ TOKEN_ESTIMATE_UNITS_PER_TOKEN,
116
+ estimateTextTokens,
117
+ estimateTextTokenUnits,
118
+ TextTokenizer,
119
+ normalizeToolNameForProvider,
120
+ sanitizeToolNameForProvider,
121
+ normalizeMcpToolName,
122
+ generateLegacyMcpToolName
123
+ };
124
+ /**
125
+ * @license
126
+ * Copyright 2025 Qwen
127
+ * SPDX-License-Identifier: Apache-2.0
128
+ */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  resolveChannelCwd
5
- } from "./chunk-6ZBPS62S.js";
5
+ } from "./chunk-7ZCNENPP.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -21,12 +21,12 @@ function ensureBuiltins() {
21
21
  if (!builtinsPromise) {
22
22
  builtinsPromise = (async () => {
23
23
  const labelled = [
24
- { name: "telegram", promise: import("./dist-XBJVSWS2.js") },
25
- { name: "weixin", promise: import("./dist-UIFWIFRO.js") },
26
- { name: "dingtalk", promise: import("./dist-XRYV6TJP.js") },
27
- { name: "wecom", promise: import("./dist-OAV7LJGJ.js") },
28
- { name: "feishu", promise: import("./dist-OMW6WDEO.js") },
29
- { name: "qqbot", promise: import("./dist-PJLG2XYX.js") }
24
+ { name: "telegram", promise: import("./dist-BBLXMS3N.js") },
25
+ { name: "weixin", promise: import("./dist-46NQKLTW.js") },
26
+ { name: "dingtalk", promise: import("./dist-AIKFMUKK.js") },
27
+ { name: "wecom", promise: import("./dist-YFNEUWSE.js") },
28
+ { name: "feishu", promise: import("./dist-F6IBUDR4.js") },
29
+ { name: "qqbot", promise: import("./dist-WEAHOXDM.js") }
30
30
  ];
31
31
  const results = await Promise.allSettled(labelled.map((l) => l.promise));
32
32
  for (let i = 0; i < results.length; i++) {
@@ -3,10 +3,10 @@
3
3
  import {
4
4
  DashScopeOpenAICompatibleProvider,
5
5
  DefaultOpenAICompatibleProvider
6
- } from "./chunk-LESHKUWF.js";
6
+ } from "./chunk-DLWL3Z7A.js";
7
7
  import {
8
8
  RequestTokenizer
9
- } from "./chunk-MDZTPSXO.js";
9
+ } from "./chunk-OKY7HXPG.js";
10
10
  import {
11
11
  DEFAULT_STREAM_IDLE_TIMEOUT_MS,
12
12
  MAX_STREAM_IDLE_TIMEOUT_MS,
@@ -16,31 +16,46 @@ import {
16
16
  createChildAbortController
17
17
  } from "./chunk-DJ2GSRLV.js";
18
18
  import {
19
- InvalidStreamError,
20
19
  OpenAIContentConverter,
21
- ProtocolTagSanitizedEvent,
22
20
  TaggedThinkingParser,
23
- getRateLimitErrorDetails,
24
- logProtocolTagSanitized,
25
21
  openaiRequestCaptureContext
26
- } from "./chunk-ZDP2Y2AL.js";
22
+ } from "./chunk-DHHOYAPR.js";
23
+ import {
24
+ InvalidStreamError
25
+ } from "./chunk-BPJSQIJX.js";
26
+ import {
27
+ getRateLimitErrorDetails
28
+ } from "./chunk-6FGBXPWM.js";
27
29
  import {
28
- getToolCallPreparations,
29
- reconcileMaxTokens,
30
- redactProxyError,
31
- runtimeDiagnostics,
32
30
  safeJsonParse
33
- } from "./chunk-CBOQ3HY7.js";
31
+ } from "./chunk-H5FFA6TH.js";
34
32
  import {
35
- GenerateContentResponse
36
- } from "./chunk-TYQMGACW.js";
33
+ getToolCallPreparations,
34
+ runtimeDiagnostics
35
+ } from "./chunk-LS77BEZP.js";
36
+ import {
37
+ reportOpenAiRequest
38
+ } from "./chunk-LEH5C7FV.js";
39
+ import {
40
+ ProtocolTagSanitizedEvent,
41
+ logProtocolTagSanitized
42
+ } from "./chunk-CIKQ7KKO.js";
43
+ import {
44
+ reconcileMaxTokens
45
+ } from "./chunk-UW5EOVUN.js";
46
+ import {
47
+ redactProxyError
48
+ } from "./chunk-2JZBVYTU.js";
37
49
  import {
38
50
  createDebugLogger,
39
51
  getErrorMessage,
40
52
  getErrorStatus,
41
53
  getErrorType,
42
54
  isAbortError
43
- } from "./chunk-OQB4EXO4.js";
55
+ } from "./chunk-NL7LTRLR.js";
56
+ import {
57
+ GenerateContentResponse
58
+ } from "./chunk-22C7BQ6D.js";
44
59
  import {
45
60
  init_esbuild_shims
46
61
  } from "./chunk-5O2XNYP6.js";
@@ -884,6 +899,13 @@ var StreamingToolCallParser = class {
884
899
 
885
900
  // packages/core/src/core/openaiContentGenerator/pipeline.ts
886
901
  var debugLogger3 = createDebugLogger("OPENAI_PIPELINE");
902
+ function isRequiredThinkingError(error) {
903
+ if (getErrorStatus(error) !== 400) return false;
904
+ const providerMessage = getRateLimitErrorDetails(error).providerMessage;
905
+ const message = `${getErrorMessage(error)} ${providerMessage ?? ""}`;
906
+ return message.includes("enable_thinking") && /(?:restricted to|must be) true\b/i.test(message);
907
+ }
908
+ __name(isRequiredThinkingError, "isRequiredThinkingError");
887
909
  var StreamContentError = class extends Error {
888
910
  static {
889
911
  __name(this, "StreamContentError");
@@ -1043,6 +1065,7 @@ var ContentGenerationPipeline = class {
1043
1065
  }
1044
1066
  client;
1045
1067
  contentGeneratorConfig;
1068
+ requiredThinkingModels = /* @__PURE__ */ new Set();
1046
1069
  // Resolved once (config field > env > default) so the env read + any
1047
1070
  // invalid-value warning happen per pipeline, not per streaming request.
1048
1071
  streamIdleTimeoutMs;
@@ -1190,7 +1213,7 @@ var ContentGenerationPipeline = class {
1190
1213
  if (sanitization) {
1191
1214
  context.protocolTagSanitized = void 0;
1192
1215
  }
1193
- if (response.candidates?.[0]?.content?.parts?.length === 0 && !response.candidates?.[0]?.finishReason && !response.usageMetadata && // Preparation-only responses must reach ACP before arguments complete.
1216
+ if ((response.candidates?.[0]?.content?.parts?.length ?? 0) === 0 && !response.candidates?.[0]?.finishReason && !response.usageMetadata && // Preparation-only responses must reach ACP before arguments complete.
1194
1217
  getToolCallPreparations(response).length === 0) {
1195
1218
  continue;
1196
1219
  }
@@ -1307,6 +1330,9 @@ var ContentGenerationPipeline = class {
1307
1330
  if (response.usageMetadata) {
1308
1331
  pendingFinishResponse.usageMetadata = response.usageMetadata;
1309
1332
  }
1333
+ if (response.modelVersion) {
1334
+ pendingFinishResponse.modelVersion = response.modelVersion;
1335
+ }
1310
1336
  setPendingFinish(pendingFinishResponse);
1311
1337
  } else {
1312
1338
  setPendingFinish(response);
@@ -1320,10 +1346,10 @@ var ContentGenerationPipeline = class {
1320
1346
  } else {
1321
1347
  mergedResponse.usageMetadata = pendingFinishResponse.usageMetadata;
1322
1348
  }
1323
- mergedResponse.responseId = response.responseId;
1324
- mergedResponse.createTime = response.createTime;
1325
- mergedResponse.modelVersion = response.modelVersion;
1326
- mergedResponse.promptFeedback = response.promptFeedback;
1349
+ mergedResponse.responseId = response.responseId || pendingFinishResponse.responseId;
1350
+ mergedResponse.createTime = response.createTime || pendingFinishResponse.createTime;
1351
+ mergedResponse.modelVersion = response.modelVersion || pendingFinishResponse.modelVersion;
1352
+ mergedResponse.promptFeedback = response.promptFeedback || pendingFinishResponse.promptFeedback;
1327
1353
  setPendingFinish(mergedResponse);
1328
1354
  return true;
1329
1355
  }
@@ -1365,8 +1391,7 @@ var ContentGenerationPipeline = class {
1365
1391
  const isDashScope = DashScopeOpenAICompatibleProvider.isDashScopeProvider(
1366
1392
  this.contentGeneratorConfig
1367
1393
  );
1368
- const configModel = (this.contentGeneratorConfig.model ?? "").toLowerCase();
1369
- const thinkingMandatory = this.contentGeneratorConfig.thinkingMandatory === true && model === configModel;
1394
+ const thinkingMandatory = this.requiresThinking(model);
1370
1395
  const reasoningDisabled = request.config?.thinkingConfig?.includeThoughts === false || this.contentGeneratorConfig.reasoning === false;
1371
1396
  if (reasoningDisabled) {
1372
1397
  const typed = providerRequest;
@@ -1385,24 +1410,38 @@ var ContentGenerationPipeline = class {
1385
1410
  if ("reasoning" in typed) {
1386
1411
  delete typed["reasoning"];
1387
1412
  }
1388
- if ("reasoning_effort" in typed) {
1413
+ if ("reasoning_effort" in typed && typed["reasoning_effort"] !== "none") {
1389
1414
  delete typed["reasoning_effort"];
1390
1415
  }
1391
1416
  if (isDeepSeekHostname(this.contentGeneratorConfig)) {
1392
1417
  typed["thinking"] = { type: "disabled" };
1393
1418
  }
1394
1419
  }
1395
- if (thinkingMandatory && isDashScope) {
1420
+ if (thinkingMandatory) {
1396
1421
  const typed = providerRequest;
1397
1422
  if (typed["enable_thinking"] === false) {
1398
1423
  delete typed["enable_thinking"];
1399
1424
  }
1400
- if (typed["tool_choice"] === "required") {
1425
+ const chatTemplateKwargs = typed["chat_template_kwargs"];
1426
+ if (chatTemplateKwargs?.["enable_thinking"] === false) {
1427
+ const remaining = { ...chatTemplateKwargs };
1428
+ delete remaining["enable_thinking"];
1429
+ if (Object.keys(remaining).length > 0) {
1430
+ typed["chat_template_kwargs"] = remaining;
1431
+ } else {
1432
+ delete typed["chat_template_kwargs"];
1433
+ }
1434
+ }
1435
+ if (isDashScope && typed["tool_choice"] === "required") {
1401
1436
  delete typed["tool_choice"];
1402
1437
  }
1403
1438
  }
1404
1439
  return providerRequest;
1405
1440
  }
1441
+ requiresThinking(model) {
1442
+ const normalizedModel = model.toLowerCase();
1443
+ return this.requiredThinkingModels.has(normalizedModel) || this.contentGeneratorConfig.thinkingMandatory === true && normalizedModel === (this.contentGeneratorConfig.model ?? "").toLowerCase();
1444
+ }
1406
1445
  buildGenerateContentConfig(request) {
1407
1446
  const defaultSamplingParams = this.config.provider.getDefaultGenerationConfig();
1408
1447
  const configSamplingParams = this.contentGeneratorConfig.samplingParams;
@@ -1464,8 +1503,9 @@ var ContentGenerationPipeline = class {
1464
1503
  */
1465
1504
  async executeWithErrorHandling(request, userPromptId, isStreaming, executor) {
1466
1505
  const context = this.createRequestContext(request, isStreaming);
1467
- try {
1468
- const openaiRequest = await this.buildRequest(
1506
+ let openaiRequest;
1507
+ const executeAttempt = /* @__PURE__ */ __name(async () => {
1508
+ openaiRequest = await this.buildRequest(
1469
1509
  request,
1470
1510
  userPromptId,
1471
1511
  context,
@@ -1473,9 +1513,27 @@ var ContentGenerationPipeline = class {
1473
1513
  );
1474
1514
  openaiRequestCaptureContext.getStore()?.(openaiRequest);
1475
1515
  runtimeDiagnostics.recordOpenAIWireRequest(openaiRequest);
1476
- const result = await executor(openaiRequest, context);
1477
- return result;
1516
+ reportOpenAiRequest(openaiRequest);
1517
+ return executor(openaiRequest, context);
1518
+ }, "executeAttempt");
1519
+ try {
1520
+ return await executeAttempt();
1478
1521
  } catch (error) {
1522
+ const model = context.model.toLowerCase();
1523
+ const wireRequest = openaiRequest;
1524
+ const chatTemplateKwargs = wireRequest?.["chat_template_kwargs"];
1525
+ if ((wireRequest?.["enable_thinking"] === false || chatTemplateKwargs?.["enable_thinking"] === false) && request.config?.abortSignal?.aborted !== true && isRequiredThinkingError(error)) {
1526
+ this.requiredThinkingModels.add(model);
1527
+ debugLogger3.warn("Retrying with required thinking enabled", {
1528
+ model,
1529
+ originalError: getErrorMessage(error)
1530
+ });
1531
+ try {
1532
+ return await executeAttempt();
1533
+ } catch (retryError) {
1534
+ return await this.handleError(retryError, context, request);
1535
+ }
1536
+ }
1479
1537
  return await this.handleError(error, context, request);
1480
1538
  }
1481
1539
  }