@qwen-code/qwen-code 0.20.1-preview.7215 → 0.20.2-gdpval-vl-agent.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 (327) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  2. package/bundled/qc-helper/docs/features/auto-mode.md +19 -16
  3. package/bundled/qc-helper/docs/features/commands.md +54 -0
  4. package/bundled/qc-helper/docs/features/sub-agents.md +16 -7
  5. package/bundled/qc-helper/docs/integration-github-action.md +1 -1
  6. package/bundled/qc-helper/docs/qwen-serve.md +2 -1
  7. package/bundled/review/DESIGN.md +2 -2
  8. package/bundled/review/SKILL.md +4 -4
  9. package/chunks/{MaxSizedBox-EH6G5AEH.js → MaxSizedBox-KYNG7EN7.js} +38 -35
  10. package/chunks/{StandaloneSessionPicker-264A3TEA.js → StandaloneSessionPicker-7XN4WVVG.js} +55 -52
  11. package/chunks/{acpAgent-6RBIJFDI.js → acpAgent-FTFFYP5G.js} +1536 -512
  12. package/chunks/{agent-QURXGAA3.js → agent-Y76LTTOT.js} +34 -31
  13. package/chunks/{agent-headless-CRGX4ICQ.js → agent-headless-IVAEQPK6.js} +34 -31
  14. package/chunks/{anthropicContentGenerator-BWBAZGTW.js → anthropicContentGenerator-HGWAHO24.js} +11 -13
  15. package/chunks/{artifact-tool-IUJ7QWCX.js → artifact-tool-56T5IMBP.js} +3 -3
  16. package/chunks/{askUserQuestion-IUMUUTDQ.js → askUserQuestion-E25OBIC2.js} +3 -3
  17. package/chunks/{bridge-MNFVKPMI.js → bridge-4M77KUEV.js} +39 -36
  18. package/chunks/{build-SSCNEHZZ.js → build-GHIZ4MSZ.js} +1 -1
  19. package/chunks/{ca-2SL2BXTK.js → ca-N6VVUFVB.js} +611 -201
  20. package/chunks/{channel-worker-group-53CMOPFT.js → channel-worker-group-QZV2SP5U.js} +4 -4
  21. package/chunks/{channel-worker-manager-UTXILKC2.js → channel-worker-manager-3GMAU45H.js} +4 -4
  22. package/chunks/{channel-worker-supervisor-ZGO2W2MD.js → channel-worker-supervisor-QCXSXCRY.js} +3 -3
  23. package/chunks/{chunk-UQES76OO.js → chunk-2HGTVAOW.js} +6 -6
  24. package/chunks/{chunk-2HOVDT7W.js → chunk-2LI23QA6.js} +1 -1
  25. package/chunks/{chunk-ANHT55MR.js → chunk-2P6CNEHB.js} +1 -1
  26. package/chunks/chunk-2RFKHEXL.js +74 -0
  27. package/chunks/{chunk-BF32GYSY.js → chunk-3IABAQR6.js} +1 -1
  28. package/chunks/chunk-3Z43GZUQ.js +32 -0
  29. package/chunks/chunk-43T5WDQ7.js +127 -0
  30. package/chunks/{chunk-DA7OOKVN.js → chunk-4CTP6VR6.js} +29 -2
  31. package/chunks/{chunk-JD3MKVKL.js → chunk-4K56OJFJ.js} +1 -1
  32. package/chunks/{chunk-KTUQMDEP.js → chunk-4K7VDKAD.js} +1 -1
  33. package/chunks/{chunk-QKYTTBYW.js → chunk-4LVZNIDO.js} +1 -1
  34. package/chunks/{chunk-ZEOZL37W.js → chunk-57FIIFJN.js} +1 -1
  35. package/chunks/{chunk-7YBZGNEC.js → chunk-5G3ZVADU.js} +308 -199
  36. package/chunks/{chunk-X4CGDBKA.js → chunk-6GEJX3LE.js} +3 -3
  37. package/chunks/{chunk-6GUTHAN7.js → chunk-6HOCJNO5.js} +1 -1
  38. package/chunks/{chunk-GMGDLUC7.js → chunk-6IL7KRLE.js} +1 -1
  39. package/chunks/chunk-6PVPNMXU.js +29 -0
  40. package/chunks/{chunk-BDBMYST4.js → chunk-6X4GWOPW.js} +1 -1
  41. package/chunks/{chunk-4ODB7WIB.js → chunk-6ZBPS62S.js} +1 -1
  42. package/chunks/{chunk-AYCDXHZB.js → chunk-7Z6JQEL6.js} +1 -1
  43. package/chunks/{chunk-WAX3ITOA.js → chunk-A3TAEAHX.js} +1 -1
  44. package/chunks/{chunk-OLMETXLX.js → chunk-ACW3VNUE.js} +2 -2
  45. package/chunks/{chunk-IB35C3IL.js → chunk-AVQ6EX4J.js} +1 -1
  46. package/chunks/{chunk-TTSKHF43.js → chunk-BK6UOUJ2.js} +2 -2
  47. package/chunks/{chunk-6OH6A5EX.js → chunk-BLAEKN6K.js} +20603 -17709
  48. package/chunks/chunk-BULDBTYC.js +153 -0
  49. package/chunks/{chunk-XNP57UDV.js → chunk-C3EXYVFX.js} +2 -2
  50. package/chunks/{chunk-FVS747N7.js → chunk-C54UTDOC.js} +23 -19
  51. package/chunks/{chunk-MAQQGNQ5.js → chunk-CBOQ3HY7.js} +466 -10
  52. package/chunks/{chunk-VFAE4AGH.js → chunk-CGZ5SV23.js} +72 -67
  53. package/chunks/{chunk-WKRXIHD6.js → chunk-COAARUPK.js} +8 -8
  54. package/chunks/{chunk-GA7VRJVN.js → chunk-E2ZK5M4P.js} +5 -5
  55. package/chunks/{chunk-5SCI6E3E.js → chunk-E4IMU4Y5.js} +1 -1
  56. package/chunks/{chunk-E5GIFWE3.js → chunk-EEFRJ5CT.js} +54 -33
  57. package/chunks/{chunk-WXAXH7IJ.js → chunk-ESQHGKPJ.js} +1 -1
  58. package/chunks/{chunk-NEEB7UEN.js → chunk-FFFM6NJV.js} +1 -2
  59. package/chunks/{chunk-Z5R4JMOL.js → chunk-FJ2IUWNQ.js} +4 -4
  60. package/chunks/{chunk-JVTCARQ6.js → chunk-FQI7LT7T.js} +4 -4
  61. package/chunks/{chunk-BRXIO5WY.js → chunk-FTNI3D7D.js} +7 -7
  62. package/chunks/{chunk-OMH3276Y.js → chunk-GHRSKGHF.js} +7 -7
  63. package/chunks/{chunk-OONJNQ42.js → chunk-GPSKDNEE.js} +3 -3
  64. package/chunks/{chunk-KPZNOZPC.js → chunk-GWM4PDYK.js} +19 -19
  65. package/chunks/{chunk-NBMIC7DR.js → chunk-H24SOJIQ.js} +2 -2
  66. package/chunks/{chunk-FNGK2Z5B.js → chunk-H4AR2JQF.js} +3 -3
  67. package/chunks/{chunk-WOT64EP2.js → chunk-HCJQORKC.js} +2 -2
  68. package/chunks/{chunk-7KDI2IB2.js → chunk-HDATOR4J.js} +4 -4
  69. package/chunks/{chunk-IE4JSQ5L.js → chunk-HIYP7IR4.js} +39 -37
  70. package/chunks/{chunk-N6YTEVLV.js → chunk-HL6AKUGD.js} +10 -4
  71. package/chunks/{chunk-BAIEQKR5.js → chunk-HPQFGWOD.js} +5 -5
  72. package/chunks/chunk-HTR4WV6U.js +327 -0
  73. package/chunks/{chunk-SDXIH6OA.js → chunk-IFUNDCQ6.js} +137 -5
  74. package/chunks/{chunk-Z6UEAQTP.js → chunk-IFVECEIK.js} +178 -61
  75. package/chunks/{chunk-QOK6RMIP.js → chunk-IKP54WUL.js} +4 -4
  76. package/chunks/{chunk-IUSNI6IX.js → chunk-ISMD2AB3.js} +1 -1
  77. package/chunks/{chunk-G45X5TRN.js → chunk-JCW2R7WC.js} +1 -72
  78. package/chunks/{chunk-LZYWWWCZ.js → chunk-KF6CTNTJ.js} +8 -9
  79. package/chunks/{chunk-EIAK6Q2B.js → chunk-KHOVYUHX.js} +2 -2
  80. package/chunks/chunk-KWK7UE6L.js +6194 -0
  81. package/chunks/{chunk-WBTZGWQ6.js → chunk-L5F3T6TQ.js} +1 -1
  82. package/chunks/{chunk-RELYEO3R.js → chunk-L7ASZD66.js} +244 -1607
  83. package/chunks/{chunk-UJEZQ562.js → chunk-LESHKUWF.js} +3 -5
  84. package/chunks/{chunk-OOCI5VVU.js → chunk-LIZRAKPB.js} +1 -1
  85. package/chunks/{chunk-Q3ZBFXK4.js → chunk-LKB5YL5T.js} +143 -36
  86. package/chunks/{chunk-MKLKHZAK.js → chunk-LU3RXCM7.js} +1 -1
  87. package/chunks/{chunk-B453NMZJ.js → chunk-M3EQ3GZC.js} +3 -3
  88. package/chunks/{chunk-TCKTNY66.js → chunk-M4VFMLQK.js} +6 -6
  89. package/chunks/{chunk-26LLB6FM.js → chunk-MDZTPSXO.js} +2 -2
  90. package/chunks/{chunk-4SLLEAQP.js → chunk-MJPBB2GK.js} +591 -316
  91. package/chunks/chunk-NABLFI57.js +82 -0
  92. package/chunks/{chunk-T7DDD7CZ.js → chunk-NAXEEGJU.js} +4 -4
  93. package/chunks/{chunk-467G3SV5.js → chunk-NPQDJGKU.js} +1 -1
  94. package/chunks/{chunk-FLTN6NRU.js → chunk-O4OT3DM3.js} +5 -1
  95. package/chunks/{chunk-3EUZWNWA.js → chunk-OPDZT2VG.js} +1 -1
  96. package/chunks/chunk-OQ5SYCPE.js +10017 -0
  97. package/chunks/{chunk-C27BYUX6.js → chunk-OQB4EXO4.js} +14 -11
  98. package/chunks/{chunk-V25Z5UUB.js → chunk-P6PBZL3N.js} +7 -6
  99. package/chunks/{chunk-5NWV4NFB.js → chunk-PRAUGUNM.js} +3 -3
  100. package/chunks/{chunk-MC2DOZS7.js → chunk-PVT6E3ZI.js} +3 -3
  101. package/chunks/{chunk-KXEGCGUG.js → chunk-Q22WWVR6.js} +31 -6
  102. package/chunks/{chunk-JDI67JFB.js → chunk-Q2YKNMLS.js} +3 -3
  103. package/chunks/{chunk-PBATSWUQ.js → chunk-QBUDF33N.js} +1 -1
  104. package/chunks/{chunk-Y2ENGUD6.js → chunk-QKTHJXCS.js} +1 -1
  105. package/chunks/{chunk-BVLROR2T.js → chunk-QLJUC7TG.js} +1 -1
  106. package/chunks/{chunk-UEY4AYUL.js → chunk-QNLNLENL.js} +2 -2
  107. package/chunks/{chunk-OKWRU4NO.js → chunk-RC7A7SSL.js} +3 -3
  108. package/chunks/chunk-RCUEYZDE.js +2290 -0
  109. package/chunks/{chunk-EVSTCA7S.js → chunk-RMY5SX7S.js} +368 -113
  110. package/chunks/{chunk-4WUAQ2DO.js → chunk-RTQSXHS7.js} +2 -2
  111. package/chunks/{chunk-RFIAR4YL.js → chunk-RV4C2ZFG.js} +1 -1
  112. package/chunks/{chunk-NIJEXGV6.js → chunk-RVLZCXEE.js} +79 -10
  113. package/chunks/{chunk-Q4RBU7WX.js → chunk-S333CBIA.js} +6 -6
  114. package/chunks/{chunk-JNWZQ27S.js → chunk-SP5WRGVG.js} +3 -3
  115. package/chunks/{chunk-FSL5W5TI.js → chunk-T2L47JJK.js} +3 -3
  116. package/chunks/{chunk-PWVTCGBP.js → chunk-TA4S377U.js} +30 -20
  117. package/chunks/{chunk-TB6UDU4T.js → chunk-THJNPLI4.js} +16 -16
  118. package/chunks/chunk-U6TQGUNB.js +20687 -0
  119. package/chunks/chunk-U7ZFW55U.js +2098 -0
  120. package/chunks/{chunk-W7H223ZZ.js → chunk-UGYMA4EI.js} +1 -1
  121. package/chunks/{chunk-X6YQWCIJ.js → chunk-UH3WSE5L.js} +13 -1
  122. package/chunks/{chunk-P2YAOGJD.js → chunk-UKU3NGW6.js} +3 -3
  123. package/chunks/{chunk-NOWTNYC7.js → chunk-UVFCANV5.js} +8 -8
  124. package/chunks/{chunk-CVDW42JT.js → chunk-V4AKJQ26.js} +1 -1
  125. package/chunks/{chunk-Z5Q65RVH.js → chunk-VJPRLNLR.js} +1 -1
  126. package/chunks/{chunk-Y4CRUWFZ.js → chunk-VTXX72XS.js} +60 -35
  127. package/chunks/{chunk-R3VWUU2E.js → chunk-VYPFXUCB.js} +1 -1
  128. package/chunks/chunk-WHGVTP7Q.js +1049 -0
  129. package/chunks/{chunk-IKP5DXZY.js → chunk-WOWQQGGN.js} +5 -5
  130. package/chunks/{chunk-D2VIDMVM.js → chunk-X6N25LXS.js} +2 -2
  131. package/chunks/chunk-XHATNRQA.js +1500 -0
  132. package/chunks/{chunk-2DXOIVUI.js → chunk-YLSB23Y2.js} +11 -11
  133. package/chunks/{chunk-S35ZDXOS.js → chunk-YM3SZTH4.js} +2 -1
  134. package/chunks/{chunk-OF2BBLYQ.js → chunk-YNWJAOPL.js} +2 -2
  135. package/chunks/{chunk-GKY2OJ7R.js → chunk-ZHERRXZJ.js} +1 -1
  136. package/chunks/{chunk-AR27OPIU.js → chunk-ZKFJKN23.js} +2 -2
  137. package/chunks/{computer-use-R7KA6UJ6.js → computer-use-UKQBH7UM.js} +39 -36
  138. package/chunks/{config-utils-6FXFJUYB.js → config-utils-FYTBZLCJ.js} +3 -3
  139. package/chunks/{contextCommand-KAQQPHZ4.js → contextCommand-ESHGAVWX.js} +36 -33
  140. package/chunks/{create-sub-session-TDPDBU4K.js → create-sub-session-574EPZUU.js} +34 -31
  141. package/chunks/{create-sub-session-X5RVIHCK.js → create-sub-session-AZ77LBL3.js} +3 -3
  142. package/chunks/{cron-create-AC5FFLN7.js → cron-create-KTWJM7QT.js} +5 -5
  143. package/chunks/{cron-delete-JEB3FAHA.js → cron-delete-2P3I5ULL.js} +5 -5
  144. package/chunks/{cron-list-NBYPCNIB.js → cron-list-PXDPGEDQ.js} +5 -5
  145. package/chunks/{daemon-RG2MAI6T.js → daemon-GJRFILYS.js} +323 -99
  146. package/chunks/daemon-status-provider-GZXZP3NU.js +80 -0
  147. package/chunks/{de-I7ZIYXZC.js → de-4IBXM7CN.js} +5 -1
  148. package/chunks/{dist-AU7NQQRP.js → dist-OAV7LJGJ.js} +1 -1
  149. package/chunks/{dist-FUTEXY6A.js → dist-OMW6WDEO.js} +1 -1
  150. package/chunks/{dist-2MIU4UUH.js → dist-PJLG2XYX.js} +1 -1
  151. package/chunks/{dist-53PZYC5B.js → dist-UIFWIFRO.js} +2 -2
  152. package/chunks/{dist-2BHAYBKP.js → dist-XBJVSWS2.js} +1 -1
  153. package/chunks/{dist-WGTQO7F2.js → dist-XRYV6TJP.js} +65 -25
  154. package/chunks/{earlyInputCapture-WC7RI5HV.js → earlyInputCapture-GI3HGQIT.js} +35 -32
  155. package/chunks/{edit-6MHKCJCM.js → edit-EBJK74B3.js} +42 -41
  156. package/chunks/{en-XE34GKAA.js → en-USMCCJAJ.js} +5 -1
  157. package/chunks/{enter-worktree-O7VJ2E7A.js → enter-worktree-2ETY5CSV.js} +39 -36
  158. package/chunks/{enterPlanMode-5XYAALIO.js → enterPlanMode-NY4U2727.js} +45 -37
  159. package/chunks/{environment-LSKFNLBU.js → environment-33IR3NOU.js} +36 -33
  160. package/chunks/{errors-ZFVCY6HG.js → errors-2OCY23IC.js} +36 -33
  161. package/chunks/{exit-worktree-MYIK66T7.js → exit-worktree-Y4ULJ45U.js} +39 -36
  162. package/chunks/{exitPlanMode-7MBNU76O.js → exitPlanMode-SECI2EQ6.js} +39 -36
  163. package/chunks/{fast-path-RNLIB64C.js → fast-path-6Z7RW5J5.js} +3 -2
  164. package/chunks/{fr-X7KDVZIY.js → fr-WVHEBDDB.js} +5 -1
  165. package/chunks/{gemini-WK5ISEAQ.js → gemini-XLGLUGSU.js} +93 -89
  166. package/chunks/{geminiContentGenerator-NUJQBZBW.js → geminiContentGenerator-NNZZDH24.js} +5 -5
  167. package/chunks/{getMachineId-bsd-EXV7SWPA.js → getMachineId-bsd-QFVLPUPT.js} +1 -1
  168. package/chunks/{getMachineId-darwin-IUOMFXU3.js → getMachineId-darwin-DGMQQE2E.js} +1 -1
  169. package/chunks/{getMachineId-linux-K7XJYFHL.js → getMachineId-linux-R4Z6CSWC.js} +1 -1
  170. package/chunks/{getMachineId-unsupported-EA5FDRJ6.js → getMachineId-unsupported-Z3SBVBUV.js} +1 -1
  171. package/chunks/{getMachineId-win-KBA6RAI5.js → getMachineId-win-SCK5UFDT.js} +1 -1
  172. package/chunks/{glob-7P6RYY4L.js → glob-KZA64SSV.js} +41 -38
  173. package/chunks/{grep-V3QHNP2J.js → grep-ONHQMY3V.js} +41 -38
  174. package/chunks/handleAutoUpdate-PRTJISXQ.js +73 -0
  175. package/chunks/{i18n-B7IO7WQT.js → i18n-ZTKKG5R5.js} +35 -32
  176. package/chunks/{initializer-E5TIC3CW.js → initializer-FPPZGBYN.js} +40 -37
  177. package/chunks/{installationInfo-XLPNAISK.js → installationInfo-DV2C27HT.js} +37 -32
  178. package/chunks/{ja-2ICT3KXF.js → ja-KY4ROZTE.js} +5 -1
  179. package/chunks/{keychain-token-storage-DWRJMNH3.js → keychain-token-storage-6ACJDYIB.js} +3 -3
  180. package/chunks/{list-3CZR5I42.js → list-KEHCNUAK.js} +42 -39
  181. package/chunks/{loadedSettingsAdapter-X5BSC6CE.js → loadedSettingsAdapter-7RZ6M3WH.js} +39 -36
  182. package/chunks/{loop-wakeup-HMHCT5GU.js → loop-wakeup-RNMRVA66.js} +6 -6
  183. package/chunks/{ls-IW5HYDG4.js → ls-J2ZI5XYK.js} +5 -5
  184. package/chunks/{lsp-4RL52YIZ.js → lsp-UMS3NUB5.js} +3 -3
  185. package/chunks/managed-npm-update-EBKNOG37.js +332 -0
  186. package/chunks/{mcp-4C4HWXAR.js → mcp-NHXKZRRP.js} +39 -36
  187. package/chunks/{monitor-3CJDNZB2.js → monitor-FMUAIFFH.js} +39 -36
  188. package/chunks/nonInteractiveCli-I2GPZNTP.js +132 -0
  189. package/chunks/{notebook-edit-MX366HCT.js → notebook-edit-V7RNXKVL.js} +43 -42
  190. package/chunks/{openaiContentGenerator-KRPNNJGZ.js → openaiContentGenerator-IBVUUZDH.js} +19 -18
  191. package/chunks/{pidfile-K7T2JLUJ.js → pidfile-AMTGL2H2.js} +35 -32
  192. package/chunks/{processUtils-YXL3VIBR.js → processUtils-3ZT2JF6D.js} +2 -2
  193. package/chunks/{pt-JJ4XPIBP.js → pt-OK455PLH.js} +5 -1
  194. package/chunks/{qwenContentGenerator-GJVXFZ3U.js → qwenContentGenerator-E72VVWS3.js} +41 -38
  195. package/chunks/{qwenOAuth2-UZTIBQLY.js → qwenOAuth2-YCC3HP24.js} +17 -16
  196. package/chunks/{read-file-S5XQSYOW.js → read-file-5EWNGUXN.js} +13 -11
  197. package/chunks/{read-mcp-resource-OIBCNIX7.js → read-mcp-resource-F6HYMDUY.js} +3 -3
  198. package/chunks/{record-artifact-HDMK4LHG.js → record-artifact-7GCFLDD7.js} +3 -3
  199. package/chunks/{resumeHistoryUtils-IKR6XD2S.js → resumeHistoryUtils-IH4RNB76.js} +41 -38
  200. package/chunks/{ripGrep-H65GRSQX.js → ripGrep-B6A6N7GI.js} +34 -31
  201. package/chunks/{ru-STR4KTW7.js → ru-7SPDGMGD.js} +5 -1
  202. package/chunks/{run-qwen-serve-7SKAQOAA.js → run-qwen-serve-6PKSMF6Z.js} +115 -74
  203. package/chunks/{runtime-I2STBGPR.js → runtime-ASRANXO6.js} +45 -40
  204. package/chunks/{scheduler-6F7HETNO.js → scheduler-IABM76UZ.js} +34 -31
  205. package/chunks/sdk-exporters-grpc-ETLH47EP.js +23214 -0
  206. package/chunks/sdk-exporters-http-6MCQH335.js +563 -0
  207. package/chunks/sdk-impl-HOLWAXC6.js +9193 -0
  208. package/chunks/{send-message-WXVVK4DB.js → send-message-KBO6X4ZS.js} +7 -5
  209. package/chunks/{serve-4ATEWSEA.js → serve-A4DT5D32.js} +39 -36
  210. package/chunks/{server-YPUPFV2O.js → server-DZ5ZSVRE.js} +2317 -472
  211. package/chunks/{session-AZFIERIY.js → session-G2R3CYU6.js} +87 -172
  212. package/chunks/{settings-EFQHLTM3.js → settings-7TNSXUTO.js} +43 -40
  213. package/chunks/{shell-FWXWBJ4Q.js → shell-5BRFGEMK.js} +34 -31
  214. package/chunks/{skill-A634MNCD.js → skill-3SWYEK7M.js} +24 -20
  215. package/chunks/{spawnChannel-KKBGGR47.js → spawnChannel-GGN2WVWW.js} +36 -33
  216. package/chunks/{src-BVROLD6N.js → src-5BPBNQ5S.js} +314 -236
  217. package/chunks/{standalone-update-ERLA3BDC.js → standalone-update-AHOZ56LS.js} +37 -34
  218. package/chunks/{startInteractiveUI-3VZ23WAY.js → startInteractiveUI-TLGOQVV7.js} +1105 -906
  219. package/chunks/{syntheticOutput-HCUFXSIA.js → syntheticOutput-H7RTI5KL.js} +4 -4
  220. package/chunks/{task-create-RIY5JTFC.js → task-create-7474AJJD.js} +10 -8
  221. package/chunks/{task-list-XBUCV3CO.js → task-list-633HGOIB.js} +6 -6
  222. package/chunks/{task-stop-QDFCCYR5.js → task-stop-MNUGHPIA.js} +3 -3
  223. package/chunks/{task-update-7PXKJQOI.js → task-update-66GQB5LI.js} +10 -8
  224. package/chunks/{team-create-ZZO7QFQ7.js → team-create-XHDF7UKM.js} +42 -39
  225. package/chunks/{team-delete-TNSSE2S5.js → team-delete-BB3CG3QF.js} +6 -6
  226. package/chunks/{team-plan-approval-3BZBJ46K.js → team-plan-approval-XKSBXWMH.js} +39 -36
  227. package/chunks/{theme-manager-FSFWNXFJ.js → theme-manager-6ZKLBFAN.js} +35 -32
  228. package/chunks/{todoWrite-OMAIGB6V.js → todoWrite-KRAUN54W.js} +5 -5
  229. package/chunks/{tool-search-VYXAAIDW.js → tool-search-UDNJCXYS.js} +21 -17
  230. package/chunks/{total-session-admission-PSMLQICS.js → total-session-admission-VWRCCDYM.js} +40 -37
  231. package/chunks/{tree-sitter-4D7QS7F6.js → tree-sitter-L5BFT64K.js} +1 -1
  232. package/chunks/{tree-sitter-bash-VEJGF5XF.js → tree-sitter-bash-ZKDNQGID.js} +1 -1
  233. package/chunks/{trustedFolders-QA3RK2NV.js → trustedFolders-TJI6OLAN.js} +35 -32
  234. package/chunks/{chunk-6EFTQYW7.js → undici-3FJYTMOF.js} +24 -399
  235. package/chunks/{chunk-L573Z2QZ.js → undici-PYHBDDPN.js} +1 -5
  236. package/chunks/{update-relaunch-LNLZFX3J.js → update-relaunch-RS5GB74A.js} +17 -17
  237. package/chunks/updateCheck-T4EEA5YR.js +88 -0
  238. package/chunks/{useAutoAcceptIndicator-DIWN27LT.js → useAutoAcceptIndicator-LLWMXC7F.js} +44 -41
  239. package/chunks/{validateNonInterActiveAuth-LOEOFCAF.js → validateNonInterActiveAuth-OJ3KYXAR.js} +74 -71
  240. package/chunks/{version-HBF2VBLE.js → version-ZCEUV5DO.js} +1 -1
  241. package/chunks/{web-fetch-BWGSD2BD.js → web-fetch-KQF4YFCI.js} +99 -42
  242. package/chunks/{web-search-OOHTCVR3.js → web-search-QDDGFGKI.js} +113 -61
  243. package/chunks/{workflow-LJAJBOR4.js → workflow-GIRKCX4P.js} +47 -43
  244. package/chunks/{workspace-providers-status-FYV7TTHA.js → workspace-providers-status-UTMAVTNE.js} +42 -39
  245. package/chunks/{workspace-registration-store-4EHGQW4Y.js → workspace-registration-store-EYJMJFZU.js} +8 -2
  246. package/chunks/{workspace-registry-BKD7VC4Y.js → workspace-registry-4W4UW6MY.js} +40 -37
  247. package/chunks/{workspace-service-75RHX6KR.js → workspace-service-DJCPY6ZN.js} +46 -43
  248. package/chunks/{workspace-skills-status-WBZBZI6A.js → workspace-skills-status-VQ2LKXXX.js} +40 -37
  249. package/chunks/write-file-PLK6RQ7M.js +65 -0
  250. package/chunks/{zh-TW-4RR3YHNN.js → zh-TW-BM47YBFH.js} +5 -1
  251. package/chunks/{zh-6ANG2HTL.js → zh-WY5DWYZD.js} +5 -1
  252. package/cli-entry.js +164 -12
  253. package/cli.js +18 -11
  254. package/locales/ca.js +772 -203
  255. package/locales/de.js +8 -2
  256. package/locales/en.js +8 -2
  257. package/locales/fr.js +8 -2
  258. package/locales/ja.js +8 -2
  259. package/locales/pt.js +8 -2
  260. package/locales/ru.js +8 -2
  261. package/locales/zh-TW.js +8 -2
  262. package/locales/zh.js +8 -2
  263. package/package.json +3 -3
  264. package/web-shell/assets/{arc-Buk1besA.js → arc-DIQrcXXh.js} +1 -1
  265. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B1aUKYDC.js → architectureDiagram-3BPJPVTR-CbPd-DSw.js} +1 -1
  266. package/web-shell/assets/{blockDiagram-GPEHLZMM-CRTdg3Zx.js → blockDiagram-GPEHLZMM-yzBIVhMX.js} +1 -1
  267. package/web-shell/assets/{c4Diagram-AAUBKEIU-DFdRMp5g.js → c4Diagram-AAUBKEIU-B88Swcsu.js} +1 -1
  268. package/web-shell/assets/channel-BaTMUesZ.js +1 -0
  269. package/web-shell/assets/{chunk-2J33WTMH-4rYQdkEI.js → chunk-2J33WTMH-BbOLo6NX.js} +1 -1
  270. package/web-shell/assets/{chunk-4BX2VUAB-Coi-pQJy.js → chunk-4BX2VUAB-Bg6in0r0.js} +1 -1
  271. package/web-shell/assets/{chunk-55IACEB6-BtBjz02t.js → chunk-55IACEB6-Bv9QRyLI.js} +1 -1
  272. package/web-shell/assets/{chunk-727SXJPM-CGYOWorl.js → chunk-727SXJPM-CFokiv61.js} +1 -1
  273. package/web-shell/assets/{chunk-AQP2D5EJ-CH5AKhqx.js → chunk-AQP2D5EJ-DS2Oxf6L.js} +1 -1
  274. package/web-shell/assets/{chunk-FMBD7UC4-Cd50-w85.js → chunk-FMBD7UC4-D2NkHD3B.js} +1 -1
  275. package/web-shell/assets/{chunk-ND2GUHAM-C2wF3KCK.js → chunk-ND2GUHAM-BsT_UC5B.js} +1 -1
  276. package/web-shell/assets/{chunk-QZHKN3VN-pCeRTaWi.js → chunk-QZHKN3VN-tnJo3zln.js} +1 -1
  277. package/web-shell/assets/classDiagram-4FO5ZUOK-CyBPzWud.js +1 -0
  278. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CyBPzWud.js +1 -0
  279. package/web-shell/assets/{cose-bilkent-S5V4N54A-B-_fAB6D.js → cose-bilkent-S5V4N54A-BTMa6DAZ.js} +1 -1
  280. package/web-shell/assets/{dagre-BM42HDAG-ChSPNHpL.js → dagre-BM42HDAG-ujGX7Owg.js} +1 -1
  281. package/web-shell/assets/{diagram-2AECGRRQ-BX7cFOF3.js → diagram-2AECGRRQ-fU4-dbPa.js} +1 -1
  282. package/web-shell/assets/{diagram-5GNKFQAL-BQUTW92n.js → diagram-5GNKFQAL-Bdm-TYSA.js} +1 -1
  283. package/web-shell/assets/{diagram-KO2AKTUF-BkYPh3e4.js → diagram-KO2AKTUF-Bkhz85Z9.js} +1 -1
  284. package/web-shell/assets/{diagram-LMA3HP47-Cl6jsNyx.js → diagram-LMA3HP47-Bzu3q26p.js} +1 -1
  285. package/web-shell/assets/{diagram-OG6HWLK6-DRWoHz8n.js → diagram-OG6HWLK6-CZrXbG5Q.js} +1 -1
  286. package/web-shell/assets/{erDiagram-TEJ5UH35-CGvFcZco.js → erDiagram-TEJ5UH35-BjozEAYu.js} +1 -1
  287. package/web-shell/assets/{flowDiagram-I6XJVG4X-vms6oVdv.js → flowDiagram-I6XJVG4X-B3a2I8c-.js} +1 -1
  288. package/web-shell/assets/{ganttDiagram-6RSMTGT7-ukT_sfmi.js → ganttDiagram-6RSMTGT7-CIMn9fNm.js} +1 -1
  289. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bn2ZE2Ut.js → gitGraphDiagram-PVQCEYII-DlFy9KRx.js} +1 -1
  290. package/web-shell/assets/{index-wFXp7W68.js → index-BODUAzQA.js} +1 -1
  291. package/web-shell/assets/index-C54DNMF7.js +1209 -0
  292. package/web-shell/assets/index-lWqBfc78.css +5 -0
  293. package/web-shell/assets/{infoDiagram-5YYISTIA-DHJdSi7x.js → infoDiagram-5YYISTIA-BmKjQgCy.js} +1 -1
  294. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DOvd2Wph.js → ishikawaDiagram-YF4QCWOH-BrQEMZz2.js} +1 -1
  295. package/web-shell/assets/{journeyDiagram-JHISSGLW-CH_urMCT.js → journeyDiagram-JHISSGLW-D-2r7Xrt.js} +1 -1
  296. package/web-shell/assets/{kanban-definition-UN3LZRKU-FKiBdgbH.js → kanban-definition-UN3LZRKU-CndsFHCX.js} +1 -1
  297. package/web-shell/assets/{linear-0ZVQFVKf.js → linear-D-IwNnKx.js} +1 -1
  298. package/web-shell/assets/{mermaid.core-DJ05ZZIK.js → mermaid.core-4ll09sri.js} +5 -5
  299. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BPuUhkUm.js → mindmap-definition-RKZ34NQL-maMRIxjo.js} +1 -1
  300. package/web-shell/assets/{pieDiagram-4H26LBE5-yLFKcXyG.js → pieDiagram-4H26LBE5-aunUDhrJ.js} +1 -1
  301. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-irWqc1pE.js → quadrantDiagram-W4KKPZXB-D3K0P1NZ.js} +1 -1
  302. package/web-shell/assets/{requirementDiagram-4Y6WPE33-B_4uMoIV.js → requirementDiagram-4Y6WPE33-CX2X9HRc.js} +1 -1
  303. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-ciA4GPwk.js → sankeyDiagram-5OEKKPKP-CDroWk7l.js} +1 -1
  304. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CRdZvy0U.js → sequenceDiagram-3UESZ5HK-DTk-2b16.js} +1 -1
  305. package/web-shell/assets/{stateDiagram-AJRCARHV-DaYIkCCn.js → stateDiagram-AJRCARHV-Cud64hQr.js} +1 -1
  306. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-g-uUpecT.js +1 -0
  307. package/web-shell/assets/{timeline-definition-PNZ67QCA-oBUKv6iH.js → timeline-definition-PNZ67QCA-DfD5okf_.js} +1 -1
  308. package/web-shell/assets/{vennDiagram-CIIHVFJN-CGW9Sdmb.js → vennDiagram-CIIHVFJN-BYl8ay25.js} +1 -1
  309. package/web-shell/assets/{wardley-L42UT6IY-CvwKJOCm.js → wardley-L42UT6IY-BZFAt10J.js} +1 -1
  310. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Ipc260sN.js → wardleyDiagram-YWT4CUSO-BIWn0GA7.js} +1 -1
  311. package/web-shell/assets/{xychartDiagram-2RQKCTM6-D6-CM7pK.js → xychartDiagram-2RQKCTM6-1_H4xblT.js} +1 -1
  312. package/web-shell/index.html +2 -2
  313. package/chunks/chunk-ETD6K42I.js +0 -358
  314. package/chunks/chunk-I5NLVPZJ.js +0 -45
  315. package/chunks/chunk-ONWW74X6.js +0 -74639
  316. package/chunks/chunk-W7FJ3N32.js +0 -49
  317. package/chunks/daemon-status-provider-LVTVJGAD.js +0 -77
  318. package/chunks/handleAutoUpdate-AAQ6PL3E.js +0 -70
  319. package/chunks/nonInteractiveCli-QTEHDDFH.js +0 -129
  320. package/chunks/updateCheck-JJEUQ54U.js +0 -73
  321. package/chunks/write-file-M2DTFILF.js +0 -599
  322. package/web-shell/assets/channel-04R0vLbG.js +0 -1
  323. package/web-shell/assets/classDiagram-4FO5ZUOK-Bw9SOwAV.js +0 -1
  324. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Bw9SOwAV.js +0 -1
  325. package/web-shell/assets/index-DgkKrjw3.js +0 -1187
  326. package/web-shell/assets/index-Rv6mOAN9.css +0 -5
  327. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DWBoO4UY.js +0 -1
@@ -1,44 +1,49 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ parsePositiveIntegerEnv
5
+ } from "./chunk-6PVPNMXU.js";
3
6
  import {
4
7
  fetchWithPolicy,
5
8
  isConnectionLevelError,
6
9
  isPrivateHost
7
- } from "./chunk-OKWRU4NO.js";
8
- import "./chunk-XNP57UDV.js";
10
+ } from "./chunk-RC7A7SSL.js";
11
+ import "./chunk-C3EXYVFX.js";
9
12
  import {
10
13
  MAX_SESSION_BYTES,
11
14
  extractPDFText,
12
15
  import_lru_cache,
13
16
  runSideQuery
14
- } from "./chunk-ONWW74X6.js";
15
- import "./chunk-4WKAA4KS.js";
16
- import "./chunk-CR3C7WXL.js";
17
+ } from "./chunk-U6TQGUNB.js";
17
18
  import "./chunk-VGC4I5JJ.js";
18
- import "./chunk-JD3MKVKL.js";
19
- import "./chunk-UEY4AYUL.js";
20
- import "./chunk-BDBMYST4.js";
21
- import "./chunk-467G3SV5.js";
22
- import {
23
- BaseDeclarativeTool,
24
- BaseToolInvocation,
25
- ToolDisplayNames,
26
- ToolNames
27
- } from "./chunk-S35ZDXOS.js";
28
- import "./chunk-6EFTQYW7.js";
29
- import "./chunk-MAQQGNQ5.js";
19
+ import "./chunk-4K56OJFJ.js";
20
+ import "./chunk-CBOQ3HY7.js";
30
21
  import "./chunk-A4UCTEB5.js";
31
22
  import "./chunk-XWRJCPHC.js";
23
+ import "./chunk-QNLNLENL.js";
24
+ import "./chunk-6X4GWOPW.js";
32
25
  import "./chunk-TYQMGACW.js";
33
26
  import "./chunk-TYAMGABM.js";
34
27
  import "./chunk-FCMNKVXT.js";
28
+ import "./chunk-RCUEYZDE.js";
29
+ import "./chunk-HTR4WV6U.js";
30
+ import "./chunk-BULDBTYC.js";
31
+ import "./chunk-U7ZFW55U.js";
32
+ import "./chunk-NPQDJGKU.js";
35
33
  import {
36
- createDebugLogger
37
- } from "./chunk-C27BYUX6.js";
34
+ BaseDeclarativeTool,
35
+ BaseToolInvocation,
36
+ ToolDisplayNames,
37
+ ToolNames
38
+ } from "./chunk-YM3SZTH4.js";
39
+ import {
40
+ createDebugLogger,
41
+ getErrorMessage
42
+ } from "./chunk-OQB4EXO4.js";
38
43
  import "./chunk-75DOP5OR.js";
39
44
  import "./chunk-DMTGGOSA.js";
40
45
  import "./chunk-YQ3U5MUC.js";
41
- import "./chunk-TB6UDU4T.js";
46
+ import "./chunk-THJNPLI4.js";
42
47
  import {
43
48
  init_esbuild_shims
44
49
  } from "./chunk-5O2XNYP6.js";
@@ -428,6 +433,15 @@ __name(isPreapprovedUrl, "isPreapprovedUrl");
428
433
 
429
434
  // packages/core/src/tools/web-fetch.ts
430
435
  var FETCH_TIMEOUT_MS = 6e4;
436
+ var SIDE_QUERY_TIMEOUT_MS = 3e5;
437
+ function sideQueryTimeoutMs() {
438
+ const value = parsePositiveIntegerEnv(
439
+ process.env["QWEN_WEB_FETCH_PROCESSING_TIMEOUT_MS"],
440
+ SIDE_QUERY_TIMEOUT_MS
441
+ );
442
+ return value > 2147483647 ? SIDE_QUERY_TIMEOUT_MS : value;
443
+ }
444
+ __name(sideQueryTimeoutMs, "sideQueryTimeoutMs");
431
445
  var MAX_CONTENT_CHARS = 1e5;
432
446
  var MAX_RESPONSE_BYTES = 10 * 1024 * 1024;
433
447
  var MAX_REDIRECTS = 10;
@@ -605,6 +619,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
605
619
  "User-Agent": this.getUserAgent()
606
620
  }
607
621
  };
622
+ const networkStart = Date.now();
608
623
  let result;
609
624
  let usedHttpFallback = false;
610
625
  try {
@@ -621,6 +636,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
621
636
  throw error;
622
637
  }
623
638
  }
639
+ const networkMs = Date.now() - networkStart;
624
640
  if (result.kind === "cross-host-redirect") {
625
641
  return result;
626
642
  }
@@ -630,6 +646,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
630
646
  `Request failed with status code ${response.status} ${response.statusText}`
631
647
  );
632
648
  }
649
+ const extractStart = Date.now();
633
650
  const contentType = response.contentType;
634
651
  const sniff = sniffFileKind(
635
652
  response.body,
@@ -699,6 +716,9 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
699
716
  } else {
700
717
  content = truncateText(response.body.toString("utf-8"));
701
718
  }
719
+ this.debugLogger.debug(
720
+ `[WebFetchTool] network_ms=${networkMs} extract_ms=${Date.now() - extractStart}`
721
+ );
702
722
  const entry = {
703
723
  fetchedAt: Date.now(),
704
724
  status: response.status,
@@ -717,10 +737,16 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
717
737
  return entry;
718
738
  }
719
739
  async executeDirectFetch(signal) {
740
+ const startMs = Date.now();
741
+ const elapsedSuffix = /* @__PURE__ */ __name(() => ` in ${((Date.now() - startMs) / 1e3).toFixed(1)}s`, "elapsedSuffix");
720
742
  try {
721
743
  const entry = await this.fetchAndProcess(signal);
722
744
  if ("kind" in entry) {
723
- return this.buildRedirectResult(entry);
745
+ const redirect = this.buildRedirectResult(entry);
746
+ return {
747
+ ...redirect,
748
+ returnDisplay: `${redirect.returnDisplay}${elapsedSuffix()}`
749
+ };
724
750
  }
725
751
  const header = this.buildMetadataHeader(entry);
726
752
  const binaryNote = entry.persistedPath ? `
@@ -732,7 +758,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
732
758
  llmContent: `${header}
733
759
 
734
760
  [No text could be extracted from this binary content.]${binaryNote}`,
735
- returnDisplay: displaySummary,
761
+ returnDisplay: `${displaySummary}${elapsedSuffix()}`,
736
762
  resultFilePaths: [entry.persistedPath]
737
763
  };
738
764
  }
@@ -742,7 +768,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
742
768
  llmContent: `${header}
743
769
 
744
770
  ${entry.content}${binaryNote}`,
745
- returnDisplay: displaySummary,
771
+ returnDisplay: `${displaySummary}${elapsedSuffix()}`,
746
772
  ...entry.persistedPath ? { resultFilePaths: [entry.persistedPath] } : {}
747
773
  };
748
774
  }
@@ -756,19 +782,50 @@ Please use the following content to answer the user's request.
756
782
  ---
757
783
  ${entry.content}
758
784
  ---`;
759
- const result = await runSideQuery(this.config, {
760
- purpose: "web-fetch",
761
- // Pin to the main model — fast model loses too much fidelity on
762
- // long, rich source material.
763
- model: this.config.getModel(),
764
- // Best-effort: the outer catch already converts processing failures
765
- // into a tool error; retrying 7× just delays that fallback.
766
- maxAttempts: 1,
767
- contents: [{ role: "user", parts: [{ text: fallbackPrompt }] }],
768
- systemInstruction: "Extract and summarize the requested information from the provided web content. Be concise and accurate. Respond only with the requested information.",
769
- abortSignal: signal
770
- });
771
- let resultText = (result.text || "").trim();
785
+ const sideQueryStart = Date.now();
786
+ let resultText;
787
+ try {
788
+ const result = await runSideQuery(this.config, {
789
+ purpose: "web-fetch",
790
+ // Best-effort: a failure falls back to raw content below; retrying
791
+ // 7× just delays that fallback.
792
+ maxAttempts: 1,
793
+ contents: [{ role: "user", parts: [{ text: fallbackPrompt }] }],
794
+ systemInstruction: "Extract and summarize the requested information from the provided web content. Be concise and accurate. Respond only with the requested information.",
795
+ // Stream so the provider SDK's whole-request timeout only bounds
796
+ // connect + first chunk: an exhaustive extraction can legitimately
797
+ // generate for >120s, and a non-streaming call dies at that SDK
798
+ // deadline and is then re-fired by SDK-internal retries (which
799
+ // maxAttempts does not govern).
800
+ stream: true,
801
+ abortSignal: AbortSignal.any([
802
+ signal,
803
+ AbortSignal.timeout(sideQueryTimeoutMs())
804
+ ])
805
+ });
806
+ signal.throwIfAborted();
807
+ resultText = (result.text || "").trim();
808
+ this.debugLogger.debug(
809
+ `[WebFetchTool] side_query_ms=${Date.now() - sideQueryStart}`
810
+ );
811
+ } catch (error) {
812
+ if (signal.aborted) {
813
+ throw error;
814
+ }
815
+ this.debugLogger.error(
816
+ `[WebFetchTool] side_query_ms=${Date.now() - sideQueryStart} (failed); returning raw content`,
817
+ error
818
+ );
819
+ return {
820
+ llmContent: `${header}
821
+
822
+ [Content processing failed (${getErrorMessage(error)}). The raw fetched content follows.]
823
+
824
+ ${entry.content}${binaryNote}`,
825
+ returnDisplay: `${displaySummary}${elapsedSuffix()} \u2014 processing failed, raw content returned`,
826
+ ...entry.persistedPath ? { resultFilePaths: [entry.persistedPath] } : {}
827
+ };
828
+ }
772
829
  if (!resultText) {
773
830
  resultText = "[The processing model returned no content. The fetch itself succeeded \u2014 see the metadata above.]";
774
831
  }
@@ -776,16 +833,15 @@ ${entry.content}
776
833
  llmContent: `${header}
777
834
 
778
835
  ${resultText}${binaryNote}`,
779
- returnDisplay: displaySummary,
836
+ returnDisplay: `${displaySummary}${elapsedSuffix()}`,
780
837
  ...entry.persistedPath ? { resultFilePaths: [entry.persistedPath] } : {}
781
838
  };
782
839
  } catch (e) {
783
- const error = e;
784
- const errorMessage = `Error during fetch for ${this.params.url}: ${error.message}`;
785
- this.debugLogger.error(`[WebFetchTool] ${errorMessage}`, error);
840
+ const errorMessage = `Error during fetch for ${this.params.url}: ${getErrorMessage(e)}`;
841
+ this.debugLogger.error(`[WebFetchTool] ${errorMessage}`, e);
786
842
  return {
787
843
  llmContent: `Error: ${errorMessage}`,
788
- returnDisplay: `Error: ${errorMessage}`,
844
+ returnDisplay: `Error: ${errorMessage}${elapsedSuffix()}`,
789
845
  error: {
790
846
  message: errorMessage,
791
847
  type: "web_fetch_fallback_failed" /* WEB_FETCH_FALLBACK_FAILED */
@@ -930,7 +986,8 @@ Usage notes:
930
986
  export {
931
987
  WebFetchTool,
932
988
  clearWebFetchCache,
933
- rewriteGitHubBlobUrl
989
+ rewriteGitHubBlobUrl,
990
+ sideQueryTimeoutMs
934
991
  };
935
992
  /**
936
993
  * @license
@@ -3,47 +3,49 @@
3
3
  import {
4
4
  buildModelIdContext,
5
5
  resolveModelId
6
- } from "./chunk-WBTZGWQ6.js";
7
- import {
8
- DASHSCOPE_REGIONAL_HOSTS,
9
- OpenAI
10
- } from "./chunk-UJEZQ562.js";
6
+ } from "./chunk-L5F3T6TQ.js";
11
7
  import {
12
8
  delay
13
- } from "./chunk-XNP57UDV.js";
14
- import "./chunk-ONWW74X6.js";
15
- import "./chunk-4WKAA4KS.js";
16
- import "./chunk-CR3C7WXL.js";
17
- import "./chunk-VGC4I5JJ.js";
18
- import "./chunk-JD3MKVKL.js";
19
- import "./chunk-UEY4AYUL.js";
20
- import "./chunk-BDBMYST4.js";
21
- import "./chunk-467G3SV5.js";
9
+ } from "./chunk-C3EXYVFX.js";
22
10
  import {
23
- BaseDeclarativeTool,
24
- BaseToolInvocation,
25
- ToolDisplayNames,
26
- ToolNames
27
- } from "./chunk-S35ZDXOS.js";
11
+ DASHSCOPE_REGIONAL_HOSTS,
12
+ OpenAI
13
+ } from "./chunk-LESHKUWF.js";
28
14
  import {
29
15
  resolveRequestTimeout
30
16
  } from "./chunk-GLNBDYUX.js";
17
+ import "./chunk-U6TQGUNB.js";
18
+ import "./chunk-VGC4I5JJ.js";
19
+ import "./chunk-4K56OJFJ.js";
31
20
  import {
32
- buildRuntimeFetchOptions
33
- } from "./chunk-6EFTQYW7.js";
34
- import "./chunk-MAQQGNQ5.js";
21
+ buildRuntimeFetchOptions,
22
+ preloadRuntimeFetchModule
23
+ } from "./chunk-CBOQ3HY7.js";
35
24
  import "./chunk-A4UCTEB5.js";
36
25
  import "./chunk-XWRJCPHC.js";
26
+ import "./chunk-QNLNLENL.js";
27
+ import "./chunk-6X4GWOPW.js";
37
28
  import "./chunk-TYQMGACW.js";
38
29
  import "./chunk-TYAMGABM.js";
39
30
  import "./chunk-FCMNKVXT.js";
31
+ import "./chunk-RCUEYZDE.js";
32
+ import "./chunk-HTR4WV6U.js";
33
+ import "./chunk-BULDBTYC.js";
34
+ import "./chunk-U7ZFW55U.js";
35
+ import "./chunk-NPQDJGKU.js";
36
+ import {
37
+ BaseDeclarativeTool,
38
+ BaseToolInvocation,
39
+ ToolDisplayNames,
40
+ ToolNames
41
+ } from "./chunk-YM3SZTH4.js";
40
42
  import {
41
43
  createDebugLogger
42
- } from "./chunk-C27BYUX6.js";
44
+ } from "./chunk-OQB4EXO4.js";
43
45
  import "./chunk-75DOP5OR.js";
44
46
  import "./chunk-DMTGGOSA.js";
45
47
  import "./chunk-YQ3U5MUC.js";
46
- import "./chunk-TB6UDU4T.js";
48
+ import "./chunk-THJNPLI4.js";
47
49
  import {
48
50
  init_esbuild_shims
49
51
  } from "./chunk-5O2XNYP6.js";
@@ -55,17 +57,23 @@ import {
55
57
  init_esbuild_shims();
56
58
  var SEARCH_TIMEOUT_MS = 6e4;
57
59
  var MAX_RESULT_SIZE_CHARS = 1e5;
60
+ var RESULT_ENVELOPE_HEADROOM_CHARS = 2e3;
58
61
  var MAX_STREAM_CHARS = 2e6;
59
62
  var MAX_CANDIDATE_URLS = 25;
63
+ var MAX_OPENED_URLS = 25;
60
64
  var NO_SEARCH_RETRY_BASE_DELAY_MS = 750;
61
65
  var NO_SEARCH_RETRY_JITTER_MS = 500;
62
- function isDashScopeCompatibleBaseUrl(baseUrl) {
63
- let hostname;
66
+ function classifyDashScopeBaseUrl(baseUrl) {
67
+ let url;
64
68
  try {
65
- hostname = new URL(baseUrl).hostname.toLowerCase();
69
+ url = new URL(baseUrl);
66
70
  } catch {
67
- return false;
71
+ return "invalid";
68
72
  }
73
+ if (url.protocol !== "https:") {
74
+ return "insecure";
75
+ }
76
+ const hostname = url.hostname.toLowerCase();
69
77
  const suffixes = [
70
78
  ...DASHSCOPE_REGIONAL_HOSTS,
71
79
  "maas.aliyuncs.com",
@@ -74,7 +82,11 @@ function isDashScopeCompatibleBaseUrl(baseUrl) {
74
82
  ];
75
83
  return suffixes.some(
76
84
  (suffix) => hostname === suffix || hostname.endsWith("." + suffix)
77
- );
85
+ ) ? null : "unknown-host";
86
+ }
87
+ __name(classifyDashScopeBaseUrl, "classifyDashScopeBaseUrl");
88
+ function isDashScopeCompatibleBaseUrl(baseUrl) {
89
+ return classifyDashScopeBaseUrl(baseUrl) === null;
78
90
  }
79
91
  __name(isDashScopeCompatibleBaseUrl, "isDashScopeCompatibleBaseUrl");
80
92
  function evaluateWebSearchGate(config) {
@@ -86,39 +98,52 @@ function evaluateWebSearchGate(config) {
86
98
  notice: "WebSearch is enabled but no search model is configured. Set tools.webSearch.model (or WEB_SEARCH_MODEL) to a model declared under modelProviders."
87
99
  };
88
100
  }
101
+ let resolved;
102
+ try {
103
+ resolved = resolveModelId(selector, buildModelIdContext(config));
104
+ } catch (e) {
105
+ return {
106
+ ok: false,
107
+ notice: `WebSearch is enabled but the search model selector "${selector}" is invalid: ${e instanceof Error ? e.message : String(e)}`
108
+ };
109
+ }
89
110
  if (settings?.baseUrl) {
90
- if (!isDashScopeCompatibleBaseUrl(settings.baseUrl)) {
111
+ const baseUrlIssue = classifyDashScopeBaseUrl(settings.baseUrl);
112
+ if (baseUrlIssue === "insecure") {
113
+ return {
114
+ ok: false,
115
+ notice: `WebSearch is enabled but WEB_SEARCH_BASE_URL (${settings.baseUrl}) uses plaintext HTTP. The search request carries a bearer API key; use an https:// endpoint.`
116
+ };
117
+ }
118
+ if (baseUrlIssue !== null) {
91
119
  return {
92
120
  ok: false,
93
121
  notice: `WebSearch is enabled but WEB_SEARCH_BASE_URL (${settings.baseUrl}) is not a DashScope-compatible endpoint.`
94
122
  };
95
123
  }
96
124
  const keyEnv = settings.apiKeyEnv ?? "DASHSCOPE_API_KEY";
97
- if (!process.env[keyEnv]) {
125
+ if (!process.env[keyEnv]?.trim()) {
98
126
  return {
99
127
  ok: false,
100
128
  notice: `WebSearch is enabled with WEB_SEARCH_BASE_URL but the API key variable ${keyEnv} is not set. Set WEB_SEARCH_API_KEY (or DASHSCOPE_API_KEY).`
101
129
  };
102
130
  }
131
+ if (!resolved) {
132
+ return {
133
+ ok: false,
134
+ notice: `WebSearch is enabled but the search model selector "${selector}" could not be resolved.`
135
+ };
136
+ }
103
137
  return {
104
138
  ok: true,
105
139
  backend: {
106
- modelId: selector,
140
+ modelId: resolved.modelId,
107
141
  apiKeyEnvKey: keyEnv,
108
142
  baseUrl: settings.baseUrl,
109
143
  webExtractor: settings.webExtractor !== false
110
144
  }
111
145
  };
112
146
  }
113
- let resolved;
114
- try {
115
- resolved = resolveModelId(selector, buildModelIdContext(config));
116
- } catch (e) {
117
- return {
118
- ok: false,
119
- notice: `WebSearch is enabled but the search model selector "${selector}" is invalid: ${e instanceof Error ? e.message : String(e)}`
120
- };
121
- }
122
147
  if (!resolved) {
123
148
  return {
124
149
  ok: false,
@@ -135,7 +160,7 @@ function evaluateWebSearchGate(config) {
135
160
  notice: `WebSearch is enabled but the search model "${selector}" does not match any model declared under modelProviders.`
136
161
  };
137
162
  }
138
- const isUsableEntry = /* @__PURE__ */ __name((m) => m.authType !== "qwen-oauth" /* QWEN_OAUTH */ && !!m.baseUrl && isDashScopeCompatibleBaseUrl(m.baseUrl) && !!m.envKey && !!process.env[m.envKey], "isUsableEntry");
163
+ const isUsableEntry = /* @__PURE__ */ __name((m) => m.authType !== "qwen-oauth" /* QWEN_OAUTH */ && !!m.baseUrl && isDashScopeCompatibleBaseUrl(m.baseUrl) && !!m.envKey && !!process.env[m.envKey]?.trim(), "isUsableEntry");
139
164
  const entry = matches.find(isUsableEntry) ?? matches[0];
140
165
  if (entry.authType === "qwen-oauth" /* QWEN_OAUTH */) {
141
166
  return {
@@ -143,10 +168,23 @@ function evaluateWebSearchGate(config) {
143
168
  notice: `WebSearch search model "${selector}" resolves to a Qwen OAuth entry. The search side channel needs a modelProviders entry with a direct API key (envKey); OAuth tokens cannot back it. Use an authType-qualified selector (e.g. "openai:<model-id>") to target a specific entry.`
144
169
  };
145
170
  }
146
- if (!entry.baseUrl || !isDashScopeCompatibleBaseUrl(entry.baseUrl)) {
171
+ if (!entry.baseUrl) {
172
+ return {
173
+ ok: false,
174
+ notice: `WebSearch search model "${selector}" resolves to a non-DashScope endpoint (no baseUrl). The web_search backend requires a DashScope-compatible baseUrl.`
175
+ };
176
+ }
177
+ const entryBaseUrlIssue = classifyDashScopeBaseUrl(entry.baseUrl);
178
+ if (entryBaseUrlIssue === "insecure") {
147
179
  return {
148
180
  ok: false,
149
- notice: `WebSearch search model "${selector}" resolves to a non-DashScope endpoint (${entry.baseUrl ?? "no baseUrl"}). The web_search backend requires a DashScope-compatible baseUrl.`
181
+ notice: `WebSearch search model "${selector}" resolves to a plaintext-HTTP endpoint (${entry.baseUrl}). The search request carries a bearer API key; use an https:// baseUrl.`
182
+ };
183
+ }
184
+ if (entryBaseUrlIssue !== null) {
185
+ return {
186
+ ok: false,
187
+ notice: `WebSearch search model "${selector}" resolves to a non-DashScope endpoint (${entry.baseUrl}). The web_search backend requires a DashScope-compatible baseUrl.`
150
188
  };
151
189
  }
152
190
  if (!entry.envKey) {
@@ -155,7 +193,7 @@ function evaluateWebSearchGate(config) {
155
193
  notice: `WebSearch search model "${selector}" has no envKey on its modelProviders entry. Declare the API key environment variable name there.`
156
194
  };
157
195
  }
158
- if (!process.env[entry.envKey]) {
196
+ if (!process.env[entry.envKey]?.trim()) {
159
197
  return {
160
198
  ok: false,
161
199
  notice: `WebSearch search model "${selector}" reads its API key from ${entry.envKey}, which is not set in the environment.`
@@ -245,8 +283,10 @@ function collectFromItems(items, usage, fallbackText) {
245
283
  }
246
284
  __name(collectFromItems, "collectFromItems");
247
285
  function formatLlmContent(query, data, partialNote) {
248
- const opened = data.openedUrls;
249
- const unopened = data.candidateUrls.filter((url) => !opened.includes(url));
286
+ const allOpened = data.openedUrls;
287
+ const opened = allOpened.slice(0, MAX_OPENED_URLS);
288
+ const omittedOpened = allOpened.length - opened.length;
289
+ const unopened = data.candidateUrls.filter((url) => !allOpened.includes(url));
250
290
  const candidates = unopened.slice(0, MAX_CANDIDATE_URLS);
251
291
  const omittedCandidates = unopened.length - candidates.length;
252
292
  const buildBody = /* @__PURE__ */ __name((answerText) => {
@@ -259,7 +299,8 @@ function formatLlmContent(query, data, partialNote) {
259
299
  }
260
300
  if (opened.length > 0) {
261
301
  sections.push(
262
- "Opened evidence pages (read in full by the search agent):\n" + opened.map((url) => `- ${url}`).join("\n")
302
+ "Opened evidence pages (read in full by the search agent):\n" + opened.map((url) => `- ${url}`).join("\n") + (omittedOpened > 0 ? `
303
+ [Note: ${omittedOpened} more opened page(s) omitted.]` : "")
263
304
  );
264
305
  }
265
306
  if (candidates.length > 0) {
@@ -335,6 +376,7 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
335
376
  );
336
377
  }
337
378
  const backend = gate.backend;
379
+ await preloadRuntimeFetchModule();
338
380
  const startedAt = Date.now();
339
381
  const apiKey = process.env[backend.apiKeyEnvKey];
340
382
  const client = new OpenAI({
@@ -421,7 +463,7 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
421
463
  if (event.item) {
422
464
  partialItems.push(event.item);
423
465
  streamedChars += JSON.stringify(event.item).length;
424
- if (event.item.type === "web_search_call") {
466
+ if (event.item.type === "web_search_call" && event.item.status !== "failed") {
425
467
  const sources = event.item.action?.sources?.length ?? 0;
426
468
  if (sources > 0) {
427
469
  updateOutput?.(`Found ${sources} sources`);
@@ -437,7 +479,8 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
437
479
  }
438
480
  case "response.completed":
439
481
  case "response.failed":
440
- case "response.incomplete": {
482
+ case "response.incomplete":
483
+ case "response.cancelled": {
441
484
  finalResponse = event.response;
442
485
  break;
443
486
  }
@@ -470,10 +513,8 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
470
513
  if (inStreamError) {
471
514
  const message = `Web search backend error ${inStreamError.code}: ${inStreamError.message}`;
472
515
  this.debugLogger.error(`[WebSearch] ${message}`);
473
- return this.errorResult(
474
- message,
475
- inStreamError.code.startsWith("Throttling") ? "web_search_rate_limited" /* WEB_SEARCH_RATE_LIMITED */ : "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */
476
- );
516
+ const errorType = inStreamError.code.startsWith("Throttling") ? "web_search_rate_limited" /* WEB_SEARCH_RATE_LIMITED */ : "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */;
517
+ return terminalFailure(() => this.errorResult(message, errorType));
477
518
  }
478
519
  if (streamError !== void 0) {
479
520
  const error = streamError;
@@ -505,15 +546,19 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
505
546
  }
506
547
  const status = finalResponse.status;
507
548
  if (status === "failed") {
508
- return this.errorResult(
509
- "Web search backend reported the request as failed.",
510
- "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */
549
+ return terminalFailure(
550
+ () => this.errorResult(
551
+ "Web search backend reported the request as failed.",
552
+ "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */
553
+ )
511
554
  );
512
555
  }
513
556
  if (status === "cancelled") {
514
- return this.errorResult(
515
- "Web search was cancelled by the backend.",
516
- "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */
557
+ return terminalFailure(
558
+ () => this.errorResult(
559
+ "Web search was cancelled by the backend.",
560
+ "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */
561
+ )
517
562
  );
518
563
  }
519
564
  const items = finalResponse.output?.length ? finalResponse.output : partialItems;
@@ -536,7 +581,7 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
536
581
  "web_search_no_search_performed" /* WEB_SEARCH_NO_SEARCH_PERFORMED */
537
582
  );
538
583
  }
539
- if (status === "incomplete") {
584
+ if (status === "incomplete" && (data.candidateUrls.length > 0 || data.openedUrls.length > 0 || data.answerText.trim())) {
540
585
  return this.finishResult(
541
586
  data,
542
587
  startedAt,
@@ -643,6 +688,13 @@ var WebSearchTool = class _WebSearchTool extends BaseDeclarativeTool {
643
688
  __name(this, "WebSearchTool");
644
689
  }
645
690
  static Name = ToolNames.WEB_SEARCH;
691
+ // Results are self-truncated section-aware in formatLlmContent (the
692
+ // narrated answer shrinks first so the URL evidence sections survive);
693
+ // without this override the scheduler's global 25k threshold would slice
694
+ // the output generically before that design ever applies.
695
+ get maxOutputChars() {
696
+ return MAX_RESULT_SIZE_CHARS + RESULT_ENVELOPE_HEADROOM_CHARS;
697
+ }
646
698
  /**
647
699
  * The description embeds the current month; recompute it on schema access
648
700
  * so a long-lived process (qwen serve, the ACP bridge) crossing a month