@qwen-code/qwen-code 0.20.1-jobbench-claude-prompt.0 → 0.20.1

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 +10 -10
  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-BGLP6FQT.js → MaxSizedBox-4WZYPSRU.js} +40 -36
  10. package/chunks/{StandaloneSessionPicker-K6I4ZEHD.js → StandaloneSessionPicker-PE4JAIFA.js} +58 -54
  11. package/chunks/{acpAgent-PKKBOEP4.js → acpAgent-BVIKGJ2C.js} +1503 -520
  12. package/chunks/{agent-Y7XOSZY5.js → agent-DHLFAOUV.js} +36 -32
  13. package/chunks/{agent-headless-NXRPEYGF.js → agent-headless-ZP5WTNXZ.js} +36 -32
  14. package/chunks/{anthropicContentGenerator-BWBAZGTW.js → anthropicContentGenerator-NMSS7IMV.js} +11 -11
  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-DCMYGFJ2.js → bridge-XAK7JKMD.js} +41 -37
  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-LFBT7K64.js} +5 -5
  21. package/chunks/{channel-worker-manager-UTXILKC2.js → channel-worker-manager-3RUPERG2.js} +5 -5
  22. package/chunks/{channel-worker-supervisor-ZGO2W2MD.js → channel-worker-supervisor-A3KVATD3.js} +4 -4
  23. package/chunks/{chunk-C5L66QPF.js → chunk-27CLX4FV.js} +1 -1
  24. package/chunks/{chunk-2HOVDT7W.js → chunk-2LI23QA6.js} +1 -1
  25. package/chunks/chunk-2RFKHEXL.js +74 -0
  26. package/chunks/{chunk-5244PA32.js → chunk-3KQSDUK3.js} +3 -3
  27. package/chunks/{chunk-MEDHWB34.js → chunk-3LH5Q2AR.js} +8 -8
  28. package/chunks/{chunk-E6XTP5ZF.js → chunk-3SXF4GMQ.js} +1 -1
  29. package/chunks/chunk-43T5WDQ7.js +127 -0
  30. package/chunks/{chunk-6UTNZOZG.js → chunk-4BRH6FP5.js} +31 -6
  31. package/chunks/{chunk-NYMHN4ZK.js → chunk-4DSBFQMI.js} +2 -2
  32. package/chunks/{chunk-JD3MKVKL.js → chunk-4K56OJFJ.js} +1 -1
  33. package/chunks/{chunk-KTUQMDEP.js → chunk-4K7VDKAD.js} +1 -1
  34. package/chunks/{chunk-QKYTTBYW.js → chunk-4LVZNIDO.js} +1 -1
  35. package/chunks/{chunk-EKVLDUP4.js → chunk-52T5UHAZ.js} +2 -2
  36. package/chunks/{chunk-ZEOZL37W.js → chunk-57FIIFJN.js} +1 -1
  37. package/chunks/{chunk-SWRMKMVY.js → chunk-5EA5NVXS.js} +1 -1
  38. package/chunks/chunk-5G2SK2OO.js +20600 -0
  39. package/chunks/{chunk-6EFTQYW7.js → chunk-5I5BM454.js} +1 -1
  40. package/chunks/{chunk-GMGDLUC7.js → chunk-6IL7KRLE.js} +1 -1
  41. package/chunks/{chunk-26LLB6FM.js → chunk-6NHK6HS7.js} +2 -2
  42. package/chunks/{chunk-6UTRTWUF.js → chunk-6PRNSLMB.js} +11 -6
  43. package/chunks/chunk-6PVPNMXU.js +29 -0
  44. package/chunks/{chunk-BDBMYST4.js → chunk-6X4GWOPW.js} +1 -1
  45. package/chunks/{chunk-4ODB7WIB.js → chunk-6ZBPS62S.js} +1 -1
  46. package/chunks/{chunk-SMR34EQM.js → chunk-766HLFAG.js} +54 -33
  47. package/chunks/{chunk-J5CK6QYL.js → chunk-76OFFG6L.js} +137 -5
  48. package/chunks/{chunk-AU2GX7QQ.js → chunk-7LH6CHKG.js} +1 -1
  49. package/chunks/{chunk-A2F633L4.js → chunk-7NDXG4MB.js} +60 -35
  50. package/chunks/{chunk-QCCOKIGW.js → chunk-7SWFAKVH.js} +22 -22
  51. package/chunks/{chunk-AYCDXHZB.js → chunk-7Z6JQEL6.js} +1 -1
  52. package/chunks/{chunk-CMFMPPKV.js → chunk-AZD6KAV7.js} +3 -3
  53. package/chunks/{chunk-7YBZGNEC.js → chunk-BKZEHVPV.js} +176 -168
  54. package/chunks/{chunk-M2DASLLB.js → chunk-BWQRDISK.js} +1 -1
  55. package/chunks/{chunk-EELSDL62.js → chunk-BZAEENUV.js} +3 -3
  56. package/chunks/{chunk-DFQGFXMQ.js → chunk-CHXKGIMK.js} +1 -1
  57. package/chunks/{chunk-W2LKWG6I.js → chunk-D53NR4GO.js} +562 -301
  58. package/chunks/{chunk-P5OX37TK.js → chunk-D6ZOVZLF.js} +5 -1
  59. package/chunks/{chunk-NBMIC7DR.js → chunk-D7WXIW7H.js} +4 -4
  60. package/chunks/{chunk-VT3KBCIU.js → chunk-DPRMI6NU.js} +1 -1
  61. package/chunks/{chunk-JXWFXSLN.js → chunk-DRIXALGM.js} +2 -2
  62. package/chunks/{chunk-5SCI6E3E.js → chunk-E4IMU4Y5.js} +1 -1
  63. package/chunks/{chunk-EMMNRTQX.js → chunk-EC2ET5ZZ.js} +1 -1
  64. package/chunks/{chunk-NNDKJNCC.js → chunk-EFIOE2EH.js} +3 -3
  65. package/chunks/{chunk-7H2JMOPS.js → chunk-EWXXMRMP.js} +3 -3
  66. package/chunks/{chunk-NEEB7UEN.js → chunk-FFFM6NJV.js} +1 -2
  67. package/chunks/{chunk-3PG4G7SK.js → chunk-G6LRTI62.js} +4 -4
  68. package/chunks/{chunk-RTEHQUAD.js → chunk-GEB2CGUV.js} +11024 -7988
  69. package/chunks/{chunk-OONJNQ42.js → chunk-GPSKDNEE.js} +3 -3
  70. package/chunks/{chunk-FNGK2Z5B.js → chunk-H4AR2JQF.js} +3 -3
  71. package/chunks/chunk-HTR4WV6U.js +327 -0
  72. package/chunks/chunk-IS2SBY6T.js +2256 -0
  73. package/chunks/{chunk-G45X5TRN.js → chunk-JCW2R7WC.js} +1 -72
  74. package/chunks/{chunk-4E33SVWA.js → chunk-JHFVJQRO.js} +1 -1
  75. package/chunks/{chunk-BL7EEZ4Y.js → chunk-JIBBZH37.js} +27 -23
  76. package/chunks/{chunk-UJEZQ562.js → chunk-JJEFX6U5.js} +3 -3
  77. package/chunks/{chunk-UTBTCPKF.js → chunk-JKFHJK5U.js} +4 -4
  78. package/chunks/{chunk-XSSAJZXG.js → chunk-JO7FGOSY.js} +5 -5
  79. package/chunks/{chunk-CAKC64KX.js → chunk-JTUAAVUT.js} +2 -2
  80. package/chunks/{chunk-MAQQGNQ5.js → chunk-JYS55H6Z.js} +66 -7
  81. package/chunks/{chunk-D742634K.js → chunk-KDPIV6WC.js} +29 -2
  82. package/chunks/{chunk-EIAK6Q2B.js → chunk-KHOVYUHX.js} +2 -2
  83. package/chunks/{chunk-OLMETXLX.js → chunk-KQQ757OQ.js} +2 -2
  84. package/chunks/{chunk-7AB5URLY.js → chunk-KSZZBDVD.js} +165 -48
  85. package/chunks/chunk-KWK7UE6L.js +6194 -0
  86. package/chunks/{chunk-OOCI5VVU.js → chunk-LIZRAKPB.js} +1 -1
  87. package/chunks/{chunk-2T2FG7OX.js → chunk-LPMBFOWH.js} +73 -68
  88. package/chunks/{chunk-UNIQ7KNW.js → chunk-LYEKAAEH.js} +5 -5
  89. package/chunks/chunk-M7WBGLYP.js +151 -0
  90. package/chunks/{chunk-LB7ZIQ6C.js → chunk-MTSYH4MB.js} +3 -3
  91. package/chunks/{chunk-7YK65ZFC.js → chunk-N5ARKAVE.js} +8 -8
  92. package/chunks/chunk-NABLFI57.js +82 -0
  93. package/chunks/{chunk-PXVAFBEI.js → chunk-NNFK277W.js} +1 -1
  94. package/chunks/{chunk-467G3SV5.js → chunk-NPQDJGKU.js} +1 -1
  95. package/chunks/chunk-OQ5SYCPE.js +10017 -0
  96. package/chunks/{chunk-C27BYUX6.js → chunk-OQB4EXO4.js} +14 -11
  97. package/chunks/{chunk-WCPQTUDI.js → chunk-OUDZVU7H.js} +242 -1607
  98. package/chunks/{chunk-C44MIZ2K.js → chunk-PBED7USE.js} +1 -1
  99. package/chunks/{chunk-C5Z652G4.js → chunk-PIHKWN7M.js} +1 -1
  100. package/chunks/{chunk-NL37SKPP.js → chunk-PPIHLGNE.js} +2 -2
  101. package/chunks/{chunk-ORDXX5SE.js → chunk-PSVSP2OS.js} +6 -6
  102. package/chunks/{chunk-SKQD5RCT.js → chunk-Q2V2ADXF.js} +7 -7
  103. package/chunks/{chunk-JDI67JFB.js → chunk-Q2YKNMLS.js} +3 -3
  104. package/chunks/{chunk-L4PEDXOX.js → chunk-Q3GGJDYN.js} +5 -5
  105. package/chunks/{chunk-PBATSWUQ.js → chunk-QBUDF33N.js} +1 -1
  106. package/chunks/{chunk-OMH3276Y.js → chunk-QD6BRERJ.js} +7 -7
  107. package/chunks/{chunk-Y2ENGUD6.js → chunk-QKTHJXCS.js} +1 -1
  108. package/chunks/{chunk-BVLROR2T.js → chunk-QLJUC7TG.js} +1 -1
  109. package/chunks/{chunk-UEY4AYUL.js → chunk-QNLNLENL.js} +2 -2
  110. package/chunks/{chunk-2F7HITKF.js → chunk-QSJ6JIF5.js} +4 -4
  111. package/chunks/{chunk-2R7OXGYM.js → chunk-QUHJRRUA.js} +126 -30
  112. package/chunks/{chunk-WJYCCJ3Q.js → chunk-R3BCL5XW.js} +10 -4
  113. package/chunks/{chunk-YXBZOR3D.js → chunk-R7MPKABX.js} +307 -86
  114. package/chunks/{chunk-RFIAR4YL.js → chunk-RV4C2ZFG.js} +1 -1
  115. package/chunks/{chunk-NIJEXGV6.js → chunk-RVLZCXEE.js} +79 -10
  116. package/chunks/{chunk-NRPP5TOB.js → chunk-RYSMKY43.js} +4 -4
  117. package/chunks/{chunk-XBAYQWDL.js → chunk-S3YQCNJE.js} +3 -3
  118. package/chunks/{chunk-3P4TUBON.js → chunk-SP32MK6J.js} +2 -2
  119. package/chunks/{chunk-JNWZQ27S.js → chunk-SP5WRGVG.js} +3 -3
  120. package/chunks/{chunk-FSL5W5TI.js → chunk-T2L47JJK.js} +3 -3
  121. package/chunks/{chunk-TB6UDU4T.js → chunk-THJNPLI4.js} +16 -16
  122. package/chunks/{chunk-3XZIXCJY.js → chunk-TPR35HHZ.js} +6 -6
  123. package/chunks/{chunk-L4BZXQR3.js → chunk-TXRKCFWS.js} +6 -6
  124. package/chunks/chunk-U7ZFW55U.js +2098 -0
  125. package/chunks/{chunk-W7H223ZZ.js → chunk-UGYMA4EI.js} +1 -1
  126. package/chunks/{chunk-X6YQWCIJ.js → chunk-UH3WSE5L.js} +13 -1
  127. package/chunks/{chunk-R3VWUU2E.js → chunk-VYPFXUCB.js} +1 -1
  128. package/chunks/{chunk-IMVIN5UC.js → chunk-WCFTQD7H.js} +11 -11
  129. package/chunks/chunk-WHGVTP7Q.js +1049 -0
  130. package/chunks/{chunk-PC2QR5QO.js → chunk-WML6JOGQ.js} +31 -19
  131. package/chunks/{chunk-D2VIDMVM.js → chunk-X6N25LXS.js} +2 -2
  132. package/chunks/{chunk-YHRBVZ53.js → chunk-X7XWGRDT.js} +4 -4
  133. package/chunks/chunk-XHATNRQA.js +1500 -0
  134. package/chunks/{chunk-2RDNKVZ2.js → chunk-Y2DAH52F.js} +7 -6
  135. package/chunks/{chunk-S35ZDXOS.js → chunk-YM3SZTH4.js} +2 -1
  136. package/chunks/{chunk-GKY2OJ7R.js → chunk-ZHERRXZJ.js} +1 -1
  137. package/chunks/{computer-use-KQVQD3IW.js → computer-use-MV4K6WJM.js} +41 -37
  138. package/chunks/{config-utils-6FXFJUYB.js → config-utils-WYUQ7II4.js} +3 -3
  139. package/chunks/{contextCommand-IOC5HY6R.js → contextCommand-TQD36VNX.js} +38 -34
  140. package/chunks/{create-sub-session-X5RVIHCK.js → create-sub-session-AZ77LBL3.js} +3 -3
  141. package/chunks/{create-sub-session-IOAGEN3O.js → create-sub-session-JOW4BKMC.js} +36 -32
  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-KLPTQIE4.js} +138 -81
  146. package/chunks/daemon-status-provider-TII4SMCZ.js +81 -0
  147. package/chunks/{de-I7ZIYXZC.js → de-4IBXM7CN.js} +5 -1
  148. package/chunks/{dist-2BHAYBKP.js → dist-HMU6CYS4.js} +2 -2
  149. package/chunks/{dist-AU7NQQRP.js → dist-OAV7LJGJ.js} +1 -1
  150. package/chunks/{dist-FUTEXY6A.js → dist-OMW6WDEO.js} +1 -1
  151. package/chunks/{dist-2MIU4UUH.js → dist-PJLG2XYX.js} +1 -1
  152. package/chunks/{dist-53PZYC5B.js → dist-UIFWIFRO.js} +2 -2
  153. package/chunks/{dist-WGTQO7F2.js → dist-XRYV6TJP.js} +65 -25
  154. package/chunks/{earlyInputCapture-7AA4D4RF.js → earlyInputCapture-2V57RG6H.js} +37 -33
  155. package/chunks/{edit-RQXZUTEU.js → edit-TTUH7PWR.js} +43 -41
  156. package/chunks/{en-XE34GKAA.js → en-USMCCJAJ.js} +5 -1
  157. package/chunks/{enter-worktree-BPYKHGTX.js → enter-worktree-D4IVCXYB.js} +41 -37
  158. package/chunks/{enterPlanMode-VJ3KR5HM.js → enterPlanMode-WRUJTVYN.js} +47 -38
  159. package/chunks/{environment-PZYHWWG5.js → environment-SEPKXB2C.js} +38 -34
  160. package/chunks/{errors-NZ6JOKJB.js → errors-YSVGBLBU.js} +38 -34
  161. package/chunks/{exit-worktree-TZNABJPX.js → exit-worktree-MZ4JSSP6.js} +41 -37
  162. package/chunks/{exitPlanMode-RZMERKLI.js → exitPlanMode-HAZLSSOJ.js} +41 -37
  163. package/chunks/{fast-path-F5UWH7GI.js → fast-path-EVBVIE2U.js} +4 -3
  164. package/chunks/{fast-path-settings-DAOVFADC.js → fast-path-settings-XB3CPUJT.js} +2 -2
  165. package/chunks/{fr-X7KDVZIY.js → fr-WVHEBDDB.js} +5 -1
  166. package/chunks/{gemini-2QJRGIKD.js → gemini-APQ76464.js} +100 -95
  167. package/chunks/{geminiContentGenerator-Q7IAYVM4.js → geminiContentGenerator-LB4MA2LI.js} +5 -5
  168. package/chunks/{getMachineId-bsd-EXV7SWPA.js → getMachineId-bsd-QFVLPUPT.js} +1 -1
  169. package/chunks/{getMachineId-darwin-IUOMFXU3.js → getMachineId-darwin-DGMQQE2E.js} +1 -1
  170. package/chunks/{getMachineId-linux-K7XJYFHL.js → getMachineId-linux-R4Z6CSWC.js} +1 -1
  171. package/chunks/{getMachineId-unsupported-EA5FDRJ6.js → getMachineId-unsupported-Z3SBVBUV.js} +1 -1
  172. package/chunks/{getMachineId-win-KBA6RAI5.js → getMachineId-win-SCK5UFDT.js} +1 -1
  173. package/chunks/{glob-MP7IPPNS.js → glob-LABYMYKG.js} +43 -39
  174. package/chunks/{grep-OHN54Z7A.js → grep-HKIKJCAS.js} +43 -39
  175. package/chunks/{handleAutoUpdate-EGCO46FV.js → handleAutoUpdate-RWAAL2UM.js} +40 -36
  176. package/chunks/{i18n-4LK42EK5.js → i18n-ZUVDAJIJ.js} +37 -33
  177. package/chunks/{initializer-DAL5QAZU.js → initializer-7YUHIC36.js} +43 -39
  178. package/chunks/{installationInfo-HOKGVMMQ.js → installationInfo-DVEOMWDE.js} +39 -33
  179. package/chunks/{ja-2ICT3KXF.js → ja-KY4ROZTE.js} +5 -1
  180. package/chunks/{keychain-token-storage-DWRJMNH3.js → keychain-token-storage-6ACJDYIB.js} +3 -3
  181. package/chunks/list-WHCZSIR2.js +82 -0
  182. package/chunks/{loadedSettingsAdapter-I42UOUE7.js → loadedSettingsAdapter-YCWN6AK3.js} +42 -38
  183. package/chunks/{loop-wakeup-HMHCT5GU.js → loop-wakeup-RNMRVA66.js} +6 -6
  184. package/chunks/{ls-IW5HYDG4.js → ls-J2ZI5XYK.js} +5 -5
  185. package/chunks/{lsp-4RL52YIZ.js → lsp-UMS3NUB5.js} +3 -3
  186. package/chunks/managed-npm-update-PG3463CJ.js +333 -0
  187. package/chunks/{mcp-62XOYOXZ.js → mcp-VLHDCKAN.js} +42 -38
  188. package/chunks/{monitor-YIHFTVM7.js → monitor-GG4F4YM6.js} +41 -37
  189. package/chunks/nonInteractiveCli-UYXYV4YX.js +133 -0
  190. package/chunks/{notebook-edit-XK4J36D3.js → notebook-edit-US4VLN6Q.js} +44 -42
  191. package/chunks/{openaiContentGenerator-OEIKDARY.js → openaiContentGenerator-CVEDTMDB.js} +20 -18
  192. package/chunks/{pidfile-2XVZMMKS.js → pidfile-QQ45OIOY.js} +37 -33
  193. package/chunks/{processUtils-SYFMMDPV.js → processUtils-3WMHLQE5.js} +2 -2
  194. package/chunks/{pt-JJ4XPIBP.js → pt-OK455PLH.js} +5 -1
  195. package/chunks/{qwenContentGenerator-LTTPUWV3.js → qwenContentGenerator-Y2GRNYZQ.js} +42 -38
  196. package/chunks/{qwenOAuth2-U3X6UBDP.js → qwenOAuth2-J2X6E5VO.js} +18 -16
  197. package/chunks/{read-file-P6IEAOBS.js → read-file-C7Z266CU.js} +13 -11
  198. package/chunks/{read-mcp-resource-OIBCNIX7.js → read-mcp-resource-F6HYMDUY.js} +3 -3
  199. package/chunks/{record-artifact-HDMK4LHG.js → record-artifact-7GCFLDD7.js} +3 -3
  200. package/chunks/{resumeHistoryUtils-WMJ5TUPF.js → resumeHistoryUtils-KBQWX77U.js} +43 -39
  201. package/chunks/{ripGrep-US5HKBSM.js → ripGrep-RW26MTQ3.js} +36 -32
  202. package/chunks/{ru-STR4KTW7.js → ru-7SPDGMGD.js} +5 -1
  203. package/chunks/{run-qwen-serve-MIFJODT4.js → run-qwen-serve-MXFMOMEL.js} +104 -82
  204. package/chunks/{runtime-SK5QH53T.js → runtime-APNO3V6D.js} +48 -42
  205. package/chunks/{scheduler-4TIUONHH.js → scheduler-L6FYCGVO.js} +36 -32
  206. package/chunks/sdk-exporters-grpc-ETLH47EP.js +23214 -0
  207. package/chunks/sdk-exporters-http-IDGLRBGP.js +563 -0
  208. package/chunks/sdk-impl-5ESZBGJQ.js +9186 -0
  209. package/chunks/{send-message-WXVVK4DB.js → send-message-PYIJ2PZL.js} +6 -4
  210. package/chunks/{serve-F6VZULAL.js → serve-6QBXDVWT.js} +42 -38
  211. package/chunks/{server-UJEZDWGO.js → server-5TJJEMVQ.js} +1006 -305
  212. package/chunks/{session-PFCYZOZJ.js → session-BWEUHKQB.js} +92 -176
  213. package/chunks/{settings-7UHALRNO.js → settings-O7IUQNRR.js} +45 -41
  214. package/chunks/{shell-DY7EASPT.js → shell-R5L4NQYY.js} +36 -32
  215. package/chunks/{skill-DOZBVXRT.js → skill-ITEOSNW6.js} +24 -20
  216. package/chunks/{spawnChannel-HT7EQ4SL.js → spawnChannel-E7NTWSGW.js} +38 -34
  217. package/chunks/{src-VJO75DQQ.js → src-FFXGUTNL.js} +303 -237
  218. package/chunks/{standalone-update-5ERAJGLE.js → standalone-update-JCJOXW4P.js} +38 -34
  219. package/chunks/{startInteractiveUI-HYMIOBH7.js → startInteractiveUI-IJSBLZFO.js} +1057 -864
  220. package/chunks/{syntheticOutput-HCUFXSIA.js → syntheticOutput-H7RTI5KL.js} +4 -4
  221. package/chunks/{task-create-RIY5JTFC.js → task-create-7474AJJD.js} +10 -8
  222. package/chunks/{task-list-XBUCV3CO.js → task-list-633HGOIB.js} +6 -6
  223. package/chunks/{task-stop-QDFCCYR5.js → task-stop-MNUGHPIA.js} +3 -3
  224. package/chunks/{task-update-7PXKJQOI.js → task-update-66GQB5LI.js} +10 -8
  225. package/chunks/{team-create-NF3FCZE2.js → team-create-OVSZTJZO.js} +44 -40
  226. package/chunks/{team-delete-TNSSE2S5.js → team-delete-BB3CG3QF.js} +6 -6
  227. package/chunks/{team-plan-approval-P5U7U4NW.js → team-plan-approval-SLEVDLT5.js} +41 -37
  228. package/chunks/{theme-manager-WD73RXOX.js → theme-manager-V6ZQISHM.js} +37 -33
  229. package/chunks/{todoWrite-OMAIGB6V.js → todoWrite-KRAUN54W.js} +5 -5
  230. package/chunks/{tool-search-TDMA733L.js → tool-search-KYIF6C6E.js} +21 -17
  231. package/chunks/{total-session-admission-H3XZPCNC.js → total-session-admission-EU77XTL7.js} +42 -38
  232. package/chunks/{tree-sitter-VJEPTDMU.js → tree-sitter-4D7QS7F6.js} +1 -1
  233. package/chunks/{tree-sitter-bash-WFKBO43W.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
  234. package/chunks/{trustedFolders-NEFWXHU2.js → trustedFolders-DDEF3ADH.js} +37 -33
  235. package/chunks/{update-relaunch-T2XQQC4W.js → update-relaunch-XEZTDP6K.js} +17 -17
  236. package/chunks/updateCheck-KZ5LZ545.js +89 -0
  237. package/chunks/{useAutoAcceptIndicator-5FLFR3BY.js → useAutoAcceptIndicator-47EZERGQ.js} +47 -43
  238. package/chunks/{validateNonInterActiveAuth-Z23SJ4D4.js → validateNonInterActiveAuth-J2DM4LWZ.js} +79 -75
  239. package/chunks/{version-PLKW23RX.js → version-PN7WYXHP.js} +1 -1
  240. package/chunks/{web-fetch-QNI3EEXN.js → web-fetch-WRI5QRFR.js} +100 -42
  241. package/chunks/{web-search-DLYTQBNN.js → web-search-2HCXNAVX.js} +111 -60
  242. package/chunks/{workflow-A3WFSQKU.js → workflow-U5XBPGQZ.js} +48 -43
  243. package/chunks/{workspace-providers-status-6K34OJLQ.js → workspace-providers-status-2T54GIJZ.js} +45 -41
  244. package/chunks/{workspace-registration-store-6FPLTQG3.js → workspace-registration-store-F3V4KBIW.js} +8 -2
  245. package/chunks/{workspace-registry-JZRIJXJS.js → workspace-registry-U6QVZ5BU.js} +42 -38
  246. package/chunks/{workspace-service-PQDLBZV3.js → workspace-service-734D36QD.js} +49 -45
  247. package/chunks/{workspace-skills-status-RKCPZVT2.js → workspace-skills-status-5ABUKOAQ.js} +43 -39
  248. package/chunks/write-file-CIH4I4CS.js +66 -0
  249. package/chunks/{zh-TW-4RR3YHNN.js → zh-TW-BM47YBFH.js} +5 -1
  250. package/chunks/{zh-6ANG2HTL.js → zh-WY5DWYZD.js} +5 -1
  251. package/cli-entry.js +164 -12
  252. package/cli.js +18 -11
  253. package/locales/ca.js +772 -203
  254. package/locales/de.js +8 -2
  255. package/locales/en.js +8 -2
  256. package/locales/fr.js +8 -2
  257. package/locales/ja.js +8 -2
  258. package/locales/pt.js +8 -2
  259. package/locales/ru.js +8 -2
  260. package/locales/zh-TW.js +8 -2
  261. package/locales/zh.js +8 -2
  262. package/package.json +3 -3
  263. package/web-shell/assets/{arc-Buk1besA.js → arc-ByltRugA.js} +1 -1
  264. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B1aUKYDC.js → architectureDiagram-3BPJPVTR-CCRTto5d.js} +1 -1
  265. package/web-shell/assets/{blockDiagram-GPEHLZMM-CRTdg3Zx.js → blockDiagram-GPEHLZMM-Jfy36u1L.js} +1 -1
  266. package/web-shell/assets/{c4Diagram-AAUBKEIU-DFdRMp5g.js → c4Diagram-AAUBKEIU-4d5FfEZ0.js} +1 -1
  267. package/web-shell/assets/channel-4N2UIFcG.js +1 -0
  268. package/web-shell/assets/{chunk-2J33WTMH-4rYQdkEI.js → chunk-2J33WTMH-BPwxCEro.js} +1 -1
  269. package/web-shell/assets/{chunk-4BX2VUAB-Coi-pQJy.js → chunk-4BX2VUAB-jY7ZmJWY.js} +1 -1
  270. package/web-shell/assets/{chunk-55IACEB6-BtBjz02t.js → chunk-55IACEB6-C98HgCsS.js} +1 -1
  271. package/web-shell/assets/{chunk-727SXJPM-CGYOWorl.js → chunk-727SXJPM-cDu-ge-q.js} +1 -1
  272. package/web-shell/assets/{chunk-AQP2D5EJ-CH5AKhqx.js → chunk-AQP2D5EJ-BKdJwxXK.js} +1 -1
  273. package/web-shell/assets/{chunk-FMBD7UC4-Cd50-w85.js → chunk-FMBD7UC4-DnuxqwMu.js} +1 -1
  274. package/web-shell/assets/{chunk-ND2GUHAM-C2wF3KCK.js → chunk-ND2GUHAM-C4fZNPv0.js} +1 -1
  275. package/web-shell/assets/{chunk-QZHKN3VN-pCeRTaWi.js → chunk-QZHKN3VN-Cf4XWOmz.js} +1 -1
  276. package/web-shell/assets/classDiagram-4FO5ZUOK-Q4dYOtsh.js +1 -0
  277. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Q4dYOtsh.js +1 -0
  278. package/web-shell/assets/{cose-bilkent-S5V4N54A-B-_fAB6D.js → cose-bilkent-S5V4N54A-C82mFiqj.js} +1 -1
  279. package/web-shell/assets/{dagre-BM42HDAG-ChSPNHpL.js → dagre-BM42HDAG-Df8KACER.js} +1 -1
  280. package/web-shell/assets/{diagram-2AECGRRQ-BX7cFOF3.js → diagram-2AECGRRQ-EzNs7s_2.js} +1 -1
  281. package/web-shell/assets/{diagram-5GNKFQAL-BQUTW92n.js → diagram-5GNKFQAL-BRLNvreg.js} +1 -1
  282. package/web-shell/assets/{diagram-KO2AKTUF-BkYPh3e4.js → diagram-KO2AKTUF-2HLYHRjC.js} +1 -1
  283. package/web-shell/assets/{diagram-LMA3HP47-Cl6jsNyx.js → diagram-LMA3HP47-DeH0NzSp.js} +1 -1
  284. package/web-shell/assets/{diagram-OG6HWLK6-DRWoHz8n.js → diagram-OG6HWLK6-k5Gn47-G.js} +1 -1
  285. package/web-shell/assets/{erDiagram-TEJ5UH35-CGvFcZco.js → erDiagram-TEJ5UH35-gPHFo79f.js} +1 -1
  286. package/web-shell/assets/{flowDiagram-I6XJVG4X-vms6oVdv.js → flowDiagram-I6XJVG4X-DYBOiTRW.js} +1 -1
  287. package/web-shell/assets/{ganttDiagram-6RSMTGT7-ukT_sfmi.js → ganttDiagram-6RSMTGT7-cxjAuic9.js} +1 -1
  288. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bn2ZE2Ut.js → gitGraphDiagram-PVQCEYII-3nPqpmCP.js} +1 -1
  289. package/web-shell/assets/index-B7jzUZ_s.css +5 -0
  290. package/web-shell/assets/{index-wFXp7W68.js → index-Cl8d-1bK.js} +1 -1
  291. package/web-shell/assets/index-gE8OWwj_.js +1197 -0
  292. package/web-shell/assets/{infoDiagram-5YYISTIA-DHJdSi7x.js → infoDiagram-5YYISTIA-Dph21pR5.js} +1 -1
  293. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DOvd2Wph.js → ishikawaDiagram-YF4QCWOH-Cjg1hSaG.js} +1 -1
  294. package/web-shell/assets/{journeyDiagram-JHISSGLW-CH_urMCT.js → journeyDiagram-JHISSGLW-CR-IzvnU.js} +1 -1
  295. package/web-shell/assets/{kanban-definition-UN3LZRKU-FKiBdgbH.js → kanban-definition-UN3LZRKU-BYmuybuC.js} +1 -1
  296. package/web-shell/assets/{linear-0ZVQFVKf.js → linear-CngEEoy8.js} +1 -1
  297. package/web-shell/assets/{mermaid.core-DJ05ZZIK.js → mermaid.core-G6fbZRPf.js} +5 -5
  298. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BPuUhkUm.js → mindmap-definition-RKZ34NQL-BtnqnUwJ.js} +1 -1
  299. package/web-shell/assets/{pieDiagram-4H26LBE5-yLFKcXyG.js → pieDiagram-4H26LBE5-XTq6UHIA.js} +1 -1
  300. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-irWqc1pE.js → quadrantDiagram-W4KKPZXB-D1J5PrsS.js} +1 -1
  301. package/web-shell/assets/{requirementDiagram-4Y6WPE33-B_4uMoIV.js → requirementDiagram-4Y6WPE33-CLcBUy3t.js} +1 -1
  302. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-ciA4GPwk.js → sankeyDiagram-5OEKKPKP-iwKV02_6.js} +1 -1
  303. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CRdZvy0U.js → sequenceDiagram-3UESZ5HK-7NFYQcEX.js} +1 -1
  304. package/web-shell/assets/{stateDiagram-AJRCARHV-DaYIkCCn.js → stateDiagram-AJRCARHV-Bvm4Wih6.js} +1 -1
  305. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-xXU_zO2Z.js +1 -0
  306. package/web-shell/assets/{timeline-definition-PNZ67QCA-oBUKv6iH.js → timeline-definition-PNZ67QCA-B4FZFE9O.js} +1 -1
  307. package/web-shell/assets/{vennDiagram-CIIHVFJN-CGW9Sdmb.js → vennDiagram-CIIHVFJN-CvMBpmtL.js} +1 -1
  308. package/web-shell/assets/{wardley-L42UT6IY-CvwKJOCm.js → wardley-L42UT6IY-E3ag2327.js} +1 -1
  309. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Ipc260sN.js → wardleyDiagram-YWT4CUSO-BEXWlgxC.js} +1 -1
  310. package/web-shell/assets/{xychartDiagram-2RQKCTM6-D6-CM7pK.js → xychartDiagram-2RQKCTM6-CICK05gI.js} +1 -1
  311. package/web-shell/index.html +2 -2
  312. package/chunks/chunk-6YS6TQB3.js +0 -45
  313. package/chunks/chunk-ETD6K42I.js +0 -358
  314. package/chunks/chunk-HAL7YT4M.js +0 -74639
  315. package/chunks/chunk-W7FJ3N32.js +0 -49
  316. package/chunks/daemon-status-provider-DYDVT4S5.js +0 -77
  317. package/chunks/list-M5NNXMQQ.js +0 -78
  318. package/chunks/nonInteractiveCli-Z73R2B3B.js +0 -129
  319. package/chunks/updateCheck-G5JYMVJZ.js +0 -73
  320. package/chunks/write-file-LHZENZ2A.js +0 -599
  321. package/web-shell/assets/channel-04R0vLbG.js +0 -1
  322. package/web-shell/assets/classDiagram-4FO5ZUOK-Bw9SOwAV.js +0 -1
  323. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Bw9SOwAV.js +0 -1
  324. package/web-shell/assets/index-DgkKrjw3.js +0 -1187
  325. package/web-shell/assets/index-Rv6mOAN9.css +0 -5
  326. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DWBoO4UY.js +0 -1
  327. package/chunks/{chunk-PEJWA3QQ.js → chunk-QZJY47IE.js} +5 -5
@@ -1,44 +1,50 @@
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-7H2JMOPS.js";
8
- import "./chunk-NL37SKPP.js";
10
+ } from "./chunk-EWXXMRMP.js";
11
+ import "./chunk-PPIHLGNE.js";
12
+ import "./chunk-5I5BM454.js";
9
13
  import {
10
14
  MAX_SESSION_BYTES,
11
15
  extractPDFText,
12
16
  import_lru_cache,
13
17
  runSideQuery
14
- } from "./chunk-HAL7YT4M.js";
15
- import "./chunk-4WKAA4KS.js";
16
- import "./chunk-CR3C7WXL.js";
18
+ } from "./chunk-5G2SK2OO.js";
17
19
  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";
20
+ import "./chunk-4K56OJFJ.js";
21
+ import "./chunk-JYS55H6Z.js";
30
22
  import "./chunk-A4UCTEB5.js";
31
23
  import "./chunk-XWRJCPHC.js";
24
+ import "./chunk-QNLNLENL.js";
25
+ import "./chunk-6X4GWOPW.js";
32
26
  import "./chunk-TYQMGACW.js";
33
27
  import "./chunk-TYAMGABM.js";
34
28
  import "./chunk-FCMNKVXT.js";
29
+ import "./chunk-IS2SBY6T.js";
30
+ import "./chunk-HTR4WV6U.js";
31
+ import "./chunk-M7WBGLYP.js";
32
+ import "./chunk-U7ZFW55U.js";
33
+ import "./chunk-NPQDJGKU.js";
35
34
  import {
36
- createDebugLogger
37
- } from "./chunk-C27BYUX6.js";
35
+ BaseDeclarativeTool,
36
+ BaseToolInvocation,
37
+ ToolDisplayNames,
38
+ ToolNames
39
+ } from "./chunk-YM3SZTH4.js";
40
+ import {
41
+ createDebugLogger,
42
+ getErrorMessage
43
+ } from "./chunk-OQB4EXO4.js";
38
44
  import "./chunk-75DOP5OR.js";
39
45
  import "./chunk-DMTGGOSA.js";
40
46
  import "./chunk-YQ3U5MUC.js";
41
- import "./chunk-TB6UDU4T.js";
47
+ import "./chunk-THJNPLI4.js";
42
48
  import {
43
49
  init_esbuild_shims
44
50
  } from "./chunk-5O2XNYP6.js";
@@ -428,6 +434,15 @@ __name(isPreapprovedUrl, "isPreapprovedUrl");
428
434
 
429
435
  // packages/core/src/tools/web-fetch.ts
430
436
  var FETCH_TIMEOUT_MS = 6e4;
437
+ var SIDE_QUERY_TIMEOUT_MS = 3e5;
438
+ function sideQueryTimeoutMs() {
439
+ const value = parsePositiveIntegerEnv(
440
+ process.env["QWEN_WEB_FETCH_PROCESSING_TIMEOUT_MS"],
441
+ SIDE_QUERY_TIMEOUT_MS
442
+ );
443
+ return value > 2147483647 ? SIDE_QUERY_TIMEOUT_MS : value;
444
+ }
445
+ __name(sideQueryTimeoutMs, "sideQueryTimeoutMs");
431
446
  var MAX_CONTENT_CHARS = 1e5;
432
447
  var MAX_RESPONSE_BYTES = 10 * 1024 * 1024;
433
448
  var MAX_REDIRECTS = 10;
@@ -605,6 +620,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
605
620
  "User-Agent": this.getUserAgent()
606
621
  }
607
622
  };
623
+ const networkStart = Date.now();
608
624
  let result;
609
625
  let usedHttpFallback = false;
610
626
  try {
@@ -621,6 +637,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
621
637
  throw error;
622
638
  }
623
639
  }
640
+ const networkMs = Date.now() - networkStart;
624
641
  if (result.kind === "cross-host-redirect") {
625
642
  return result;
626
643
  }
@@ -630,6 +647,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
630
647
  `Request failed with status code ${response.status} ${response.statusText}`
631
648
  );
632
649
  }
650
+ const extractStart = Date.now();
633
651
  const contentType = response.contentType;
634
652
  const sniff = sniffFileKind(
635
653
  response.body,
@@ -699,6 +717,9 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
699
717
  } else {
700
718
  content = truncateText(response.body.toString("utf-8"));
701
719
  }
720
+ this.debugLogger.debug(
721
+ `[WebFetchTool] network_ms=${networkMs} extract_ms=${Date.now() - extractStart}`
722
+ );
702
723
  const entry = {
703
724
  fetchedAt: Date.now(),
704
725
  status: response.status,
@@ -717,10 +738,16 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
717
738
  return entry;
718
739
  }
719
740
  async executeDirectFetch(signal) {
741
+ const startMs = Date.now();
742
+ const elapsedSuffix = /* @__PURE__ */ __name(() => ` in ${((Date.now() - startMs) / 1e3).toFixed(1)}s`, "elapsedSuffix");
720
743
  try {
721
744
  const entry = await this.fetchAndProcess(signal);
722
745
  if ("kind" in entry) {
723
- return this.buildRedirectResult(entry);
746
+ const redirect = this.buildRedirectResult(entry);
747
+ return {
748
+ ...redirect,
749
+ returnDisplay: `${redirect.returnDisplay}${elapsedSuffix()}`
750
+ };
724
751
  }
725
752
  const header = this.buildMetadataHeader(entry);
726
753
  const binaryNote = entry.persistedPath ? `
@@ -732,7 +759,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
732
759
  llmContent: `${header}
733
760
 
734
761
  [No text could be extracted from this binary content.]${binaryNote}`,
735
- returnDisplay: displaySummary,
762
+ returnDisplay: `${displaySummary}${elapsedSuffix()}`,
736
763
  resultFilePaths: [entry.persistedPath]
737
764
  };
738
765
  }
@@ -742,7 +769,7 @@ Status: ${entry.status} ${entry.statusText || "OK"} | Content-Type: ${entry.cont
742
769
  llmContent: `${header}
743
770
 
744
771
  ${entry.content}${binaryNote}`,
745
- returnDisplay: displaySummary,
772
+ returnDisplay: `${displaySummary}${elapsedSuffix()}`,
746
773
  ...entry.persistedPath ? { resultFilePaths: [entry.persistedPath] } : {}
747
774
  };
748
775
  }
@@ -756,19 +783,50 @@ Please use the following content to answer the user's request.
756
783
  ---
757
784
  ${entry.content}
758
785
  ---`;
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();
786
+ const sideQueryStart = Date.now();
787
+ let resultText;
788
+ try {
789
+ const result = await runSideQuery(this.config, {
790
+ purpose: "web-fetch",
791
+ // Best-effort: a failure falls back to raw content below; retrying
792
+ // 7× just delays that fallback.
793
+ maxAttempts: 1,
794
+ contents: [{ role: "user", parts: [{ text: fallbackPrompt }] }],
795
+ systemInstruction: "Extract and summarize the requested information from the provided web content. Be concise and accurate. Respond only with the requested information.",
796
+ // Stream so the provider SDK's whole-request timeout only bounds
797
+ // connect + first chunk: an exhaustive extraction can legitimately
798
+ // generate for >120s, and a non-streaming call dies at that SDK
799
+ // deadline and is then re-fired by SDK-internal retries (which
800
+ // maxAttempts does not govern).
801
+ stream: true,
802
+ abortSignal: AbortSignal.any([
803
+ signal,
804
+ AbortSignal.timeout(sideQueryTimeoutMs())
805
+ ])
806
+ });
807
+ signal.throwIfAborted();
808
+ resultText = (result.text || "").trim();
809
+ this.debugLogger.debug(
810
+ `[WebFetchTool] side_query_ms=${Date.now() - sideQueryStart}`
811
+ );
812
+ } catch (error) {
813
+ if (signal.aborted) {
814
+ throw error;
815
+ }
816
+ this.debugLogger.error(
817
+ `[WebFetchTool] side_query_ms=${Date.now() - sideQueryStart} (failed); returning raw content`,
818
+ error
819
+ );
820
+ return {
821
+ llmContent: `${header}
822
+
823
+ [Content processing failed (${getErrorMessage(error)}). The raw fetched content follows.]
824
+
825
+ ${entry.content}${binaryNote}`,
826
+ returnDisplay: `${displaySummary}${elapsedSuffix()} \u2014 processing failed, raw content returned`,
827
+ ...entry.persistedPath ? { resultFilePaths: [entry.persistedPath] } : {}
828
+ };
829
+ }
772
830
  if (!resultText) {
773
831
  resultText = "[The processing model returned no content. The fetch itself succeeded \u2014 see the metadata above.]";
774
832
  }
@@ -776,16 +834,15 @@ ${entry.content}
776
834
  llmContent: `${header}
777
835
 
778
836
  ${resultText}${binaryNote}`,
779
- returnDisplay: displaySummary,
837
+ returnDisplay: `${displaySummary}${elapsedSuffix()}`,
780
838
  ...entry.persistedPath ? { resultFilePaths: [entry.persistedPath] } : {}
781
839
  };
782
840
  } 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);
841
+ const errorMessage = `Error during fetch for ${this.params.url}: ${getErrorMessage(e)}`;
842
+ this.debugLogger.error(`[WebFetchTool] ${errorMessage}`, e);
786
843
  return {
787
844
  llmContent: `Error: ${errorMessage}`,
788
- returnDisplay: `Error: ${errorMessage}`,
845
+ returnDisplay: `Error: ${errorMessage}${elapsedSuffix()}`,
789
846
  error: {
790
847
  message: errorMessage,
791
848
  type: "web_fetch_fallback_failed" /* WEB_FETCH_FALLBACK_FAILED */
@@ -930,7 +987,8 @@ Usage notes:
930
987
  export {
931
988
  WebFetchTool,
932
989
  clearWebFetchCache,
933
- rewriteGitHubBlobUrl
990
+ rewriteGitHubBlobUrl,
991
+ sideQueryTimeoutMs
934
992
  };
935
993
  /**
936
994
  * @license
@@ -3,47 +3,49 @@
3
3
  import {
4
4
  buildModelIdContext,
5
5
  resolveModelId
6
- } from "./chunk-C5Z652G4.js";
6
+ } from "./chunk-PIHKWN7M.js";
7
7
  import {
8
8
  DASHSCOPE_REGIONAL_HOSTS,
9
9
  OpenAI
10
- } from "./chunk-UJEZQ562.js";
11
- import {
12
- delay
13
- } from "./chunk-NL37SKPP.js";
14
- import "./chunk-HAL7YT4M.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";
22
- import {
23
- BaseDeclarativeTool,
24
- BaseToolInvocation,
25
- ToolDisplayNames,
26
- ToolNames
27
- } from "./chunk-S35ZDXOS.js";
10
+ } from "./chunk-JJEFX6U5.js";
28
11
  import {
29
12
  resolveRequestTimeout
30
13
  } from "./chunk-GLNBDYUX.js";
14
+ import {
15
+ delay
16
+ } from "./chunk-PPIHLGNE.js";
31
17
  import {
32
18
  buildRuntimeFetchOptions
33
- } from "./chunk-6EFTQYW7.js";
34
- import "./chunk-MAQQGNQ5.js";
19
+ } from "./chunk-5I5BM454.js";
20
+ import "./chunk-5G2SK2OO.js";
21
+ import "./chunk-VGC4I5JJ.js";
22
+ import "./chunk-4K56OJFJ.js";
23
+ import "./chunk-JYS55H6Z.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-IS2SBY6T.js";
32
+ import "./chunk-HTR4WV6U.js";
33
+ import "./chunk-M7WBGLYP.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) {
@@ -421,7 +462,7 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
421
462
  if (event.item) {
422
463
  partialItems.push(event.item);
423
464
  streamedChars += JSON.stringify(event.item).length;
424
- if (event.item.type === "web_search_call") {
465
+ if (event.item.type === "web_search_call" && event.item.status !== "failed") {
425
466
  const sources = event.item.action?.sources?.length ?? 0;
426
467
  if (sources > 0) {
427
468
  updateOutput?.(`Found ${sources} sources`);
@@ -437,7 +478,8 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
437
478
  }
438
479
  case "response.completed":
439
480
  case "response.failed":
440
- case "response.incomplete": {
481
+ case "response.incomplete":
482
+ case "response.cancelled": {
441
483
  finalResponse = event.response;
442
484
  break;
443
485
  }
@@ -470,10 +512,8 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
470
512
  if (inStreamError) {
471
513
  const message = `Web search backend error ${inStreamError.code}: ${inStreamError.message}`;
472
514
  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
- );
515
+ const errorType = inStreamError.code.startsWith("Throttling") ? "web_search_rate_limited" /* WEB_SEARCH_RATE_LIMITED */ : "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */;
516
+ return terminalFailure(() => this.errorResult(message, errorType));
477
517
  }
478
518
  if (streamError !== void 0) {
479
519
  const error = streamError;
@@ -505,15 +545,19 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
505
545
  }
506
546
  const status = finalResponse.status;
507
547
  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 */
548
+ return terminalFailure(
549
+ () => this.errorResult(
550
+ "Web search backend reported the request as failed.",
551
+ "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */
552
+ )
511
553
  );
512
554
  }
513
555
  if (status === "cancelled") {
514
- return this.errorResult(
515
- "Web search was cancelled by the backend.",
516
- "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */
556
+ return terminalFailure(
557
+ () => this.errorResult(
558
+ "Web search was cancelled by the backend.",
559
+ "web_search_backend_failed" /* WEB_SEARCH_BACKEND_FAILED */
560
+ )
517
561
  );
518
562
  }
519
563
  const items = finalResponse.output?.length ? finalResponse.output : partialItems;
@@ -536,7 +580,7 @@ var WebSearchToolInvocation = class extends BaseToolInvocation {
536
580
  "web_search_no_search_performed" /* WEB_SEARCH_NO_SEARCH_PERFORMED */
537
581
  );
538
582
  }
539
- if (status === "incomplete") {
583
+ if (status === "incomplete" && (data.candidateUrls.length > 0 || data.openedUrls.length > 0 || data.answerText.trim())) {
540
584
  return this.finishResult(
541
585
  data,
542
586
  startedAt,
@@ -643,6 +687,13 @@ var WebSearchTool = class _WebSearchTool extends BaseDeclarativeTool {
643
687
  __name(this, "WebSearchTool");
644
688
  }
645
689
  static Name = ToolNames.WEB_SEARCH;
690
+ // Results are self-truncated section-aware in formatLlmContent (the
691
+ // narrated answer shrinks first so the URL evidence sections survive);
692
+ // without this override the scheduler's global 25k threshold would slice
693
+ // the output generically before that design ever applies.
694
+ get maxOutputChars() {
695
+ return MAX_RESULT_SIZE_CHARS + RESULT_ENVELOPE_HEADROOM_CHARS;
696
+ }
646
697
  /**
647
698
  * The description embeds the current month; recompute it on schema access
648
699
  * so a long-lived process (qwen serve, the ACP bridge) crossing a month