@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.
- package/bundled/qc-helper/docs/configuration/settings.md +1 -1
- package/bundled/qc-helper/docs/features/auto-mode.md +19 -16
- package/bundled/qc-helper/docs/features/commands.md +54 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +16 -7
- package/bundled/qc-helper/docs/integration-github-action.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +2 -1
- package/bundled/review/DESIGN.md +2 -2
- package/bundled/review/SKILL.md +4 -4
- package/chunks/{MaxSizedBox-EH6G5AEH.js → MaxSizedBox-KYNG7EN7.js} +38 -35
- package/chunks/{StandaloneSessionPicker-264A3TEA.js → StandaloneSessionPicker-7XN4WVVG.js} +55 -52
- package/chunks/{acpAgent-6RBIJFDI.js → acpAgent-FTFFYP5G.js} +1536 -512
- package/chunks/{agent-QURXGAA3.js → agent-Y76LTTOT.js} +34 -31
- package/chunks/{agent-headless-CRGX4ICQ.js → agent-headless-IVAEQPK6.js} +34 -31
- package/chunks/{anthropicContentGenerator-BWBAZGTW.js → anthropicContentGenerator-HGWAHO24.js} +11 -13
- package/chunks/{artifact-tool-IUJ7QWCX.js → artifact-tool-56T5IMBP.js} +3 -3
- package/chunks/{askUserQuestion-IUMUUTDQ.js → askUserQuestion-E25OBIC2.js} +3 -3
- package/chunks/{bridge-MNFVKPMI.js → bridge-4M77KUEV.js} +39 -36
- package/chunks/{build-SSCNEHZZ.js → build-GHIZ4MSZ.js} +1 -1
- package/chunks/{ca-2SL2BXTK.js → ca-N6VVUFVB.js} +611 -201
- package/chunks/{channel-worker-group-53CMOPFT.js → channel-worker-group-QZV2SP5U.js} +4 -4
- package/chunks/{channel-worker-manager-UTXILKC2.js → channel-worker-manager-3GMAU45H.js} +4 -4
- package/chunks/{channel-worker-supervisor-ZGO2W2MD.js → channel-worker-supervisor-QCXSXCRY.js} +3 -3
- package/chunks/{chunk-UQES76OO.js → chunk-2HGTVAOW.js} +6 -6
- package/chunks/{chunk-2HOVDT7W.js → chunk-2LI23QA6.js} +1 -1
- package/chunks/{chunk-ANHT55MR.js → chunk-2P6CNEHB.js} +1 -1
- package/chunks/chunk-2RFKHEXL.js +74 -0
- package/chunks/{chunk-BF32GYSY.js → chunk-3IABAQR6.js} +1 -1
- package/chunks/chunk-3Z43GZUQ.js +32 -0
- package/chunks/chunk-43T5WDQ7.js +127 -0
- package/chunks/{chunk-DA7OOKVN.js → chunk-4CTP6VR6.js} +29 -2
- package/chunks/{chunk-JD3MKVKL.js → chunk-4K56OJFJ.js} +1 -1
- package/chunks/{chunk-KTUQMDEP.js → chunk-4K7VDKAD.js} +1 -1
- package/chunks/{chunk-QKYTTBYW.js → chunk-4LVZNIDO.js} +1 -1
- package/chunks/{chunk-ZEOZL37W.js → chunk-57FIIFJN.js} +1 -1
- package/chunks/{chunk-7YBZGNEC.js → chunk-5G3ZVADU.js} +308 -199
- package/chunks/{chunk-X4CGDBKA.js → chunk-6GEJX3LE.js} +3 -3
- package/chunks/{chunk-6GUTHAN7.js → chunk-6HOCJNO5.js} +1 -1
- package/chunks/{chunk-GMGDLUC7.js → chunk-6IL7KRLE.js} +1 -1
- package/chunks/chunk-6PVPNMXU.js +29 -0
- package/chunks/{chunk-BDBMYST4.js → chunk-6X4GWOPW.js} +1 -1
- package/chunks/{chunk-4ODB7WIB.js → chunk-6ZBPS62S.js} +1 -1
- package/chunks/{chunk-AYCDXHZB.js → chunk-7Z6JQEL6.js} +1 -1
- package/chunks/{chunk-WAX3ITOA.js → chunk-A3TAEAHX.js} +1 -1
- package/chunks/{chunk-OLMETXLX.js → chunk-ACW3VNUE.js} +2 -2
- package/chunks/{chunk-IB35C3IL.js → chunk-AVQ6EX4J.js} +1 -1
- package/chunks/{chunk-TTSKHF43.js → chunk-BK6UOUJ2.js} +2 -2
- package/chunks/{chunk-6OH6A5EX.js → chunk-BLAEKN6K.js} +20603 -17709
- package/chunks/chunk-BULDBTYC.js +153 -0
- package/chunks/{chunk-XNP57UDV.js → chunk-C3EXYVFX.js} +2 -2
- package/chunks/{chunk-FVS747N7.js → chunk-C54UTDOC.js} +23 -19
- package/chunks/{chunk-MAQQGNQ5.js → chunk-CBOQ3HY7.js} +466 -10
- package/chunks/{chunk-VFAE4AGH.js → chunk-CGZ5SV23.js} +72 -67
- package/chunks/{chunk-WKRXIHD6.js → chunk-COAARUPK.js} +8 -8
- package/chunks/{chunk-GA7VRJVN.js → chunk-E2ZK5M4P.js} +5 -5
- package/chunks/{chunk-5SCI6E3E.js → chunk-E4IMU4Y5.js} +1 -1
- package/chunks/{chunk-E5GIFWE3.js → chunk-EEFRJ5CT.js} +54 -33
- package/chunks/{chunk-WXAXH7IJ.js → chunk-ESQHGKPJ.js} +1 -1
- package/chunks/{chunk-NEEB7UEN.js → chunk-FFFM6NJV.js} +1 -2
- package/chunks/{chunk-Z5R4JMOL.js → chunk-FJ2IUWNQ.js} +4 -4
- package/chunks/{chunk-JVTCARQ6.js → chunk-FQI7LT7T.js} +4 -4
- package/chunks/{chunk-BRXIO5WY.js → chunk-FTNI3D7D.js} +7 -7
- package/chunks/{chunk-OMH3276Y.js → chunk-GHRSKGHF.js} +7 -7
- package/chunks/{chunk-OONJNQ42.js → chunk-GPSKDNEE.js} +3 -3
- package/chunks/{chunk-KPZNOZPC.js → chunk-GWM4PDYK.js} +19 -19
- package/chunks/{chunk-NBMIC7DR.js → chunk-H24SOJIQ.js} +2 -2
- package/chunks/{chunk-FNGK2Z5B.js → chunk-H4AR2JQF.js} +3 -3
- package/chunks/{chunk-WOT64EP2.js → chunk-HCJQORKC.js} +2 -2
- package/chunks/{chunk-7KDI2IB2.js → chunk-HDATOR4J.js} +4 -4
- package/chunks/{chunk-IE4JSQ5L.js → chunk-HIYP7IR4.js} +39 -37
- package/chunks/{chunk-N6YTEVLV.js → chunk-HL6AKUGD.js} +10 -4
- package/chunks/{chunk-BAIEQKR5.js → chunk-HPQFGWOD.js} +5 -5
- package/chunks/chunk-HTR4WV6U.js +327 -0
- package/chunks/{chunk-SDXIH6OA.js → chunk-IFUNDCQ6.js} +137 -5
- package/chunks/{chunk-Z6UEAQTP.js → chunk-IFVECEIK.js} +178 -61
- package/chunks/{chunk-QOK6RMIP.js → chunk-IKP54WUL.js} +4 -4
- package/chunks/{chunk-IUSNI6IX.js → chunk-ISMD2AB3.js} +1 -1
- package/chunks/{chunk-G45X5TRN.js → chunk-JCW2R7WC.js} +1 -72
- package/chunks/{chunk-LZYWWWCZ.js → chunk-KF6CTNTJ.js} +8 -9
- package/chunks/{chunk-EIAK6Q2B.js → chunk-KHOVYUHX.js} +2 -2
- package/chunks/chunk-KWK7UE6L.js +6194 -0
- package/chunks/{chunk-WBTZGWQ6.js → chunk-L5F3T6TQ.js} +1 -1
- package/chunks/{chunk-RELYEO3R.js → chunk-L7ASZD66.js} +244 -1607
- package/chunks/{chunk-UJEZQ562.js → chunk-LESHKUWF.js} +3 -5
- package/chunks/{chunk-OOCI5VVU.js → chunk-LIZRAKPB.js} +1 -1
- package/chunks/{chunk-Q3ZBFXK4.js → chunk-LKB5YL5T.js} +143 -36
- package/chunks/{chunk-MKLKHZAK.js → chunk-LU3RXCM7.js} +1 -1
- package/chunks/{chunk-B453NMZJ.js → chunk-M3EQ3GZC.js} +3 -3
- package/chunks/{chunk-TCKTNY66.js → chunk-M4VFMLQK.js} +6 -6
- package/chunks/{chunk-26LLB6FM.js → chunk-MDZTPSXO.js} +2 -2
- package/chunks/{chunk-4SLLEAQP.js → chunk-MJPBB2GK.js} +591 -316
- package/chunks/chunk-NABLFI57.js +82 -0
- package/chunks/{chunk-T7DDD7CZ.js → chunk-NAXEEGJU.js} +4 -4
- package/chunks/{chunk-467G3SV5.js → chunk-NPQDJGKU.js} +1 -1
- package/chunks/{chunk-FLTN6NRU.js → chunk-O4OT3DM3.js} +5 -1
- package/chunks/{chunk-3EUZWNWA.js → chunk-OPDZT2VG.js} +1 -1
- package/chunks/chunk-OQ5SYCPE.js +10017 -0
- package/chunks/{chunk-C27BYUX6.js → chunk-OQB4EXO4.js} +14 -11
- package/chunks/{chunk-V25Z5UUB.js → chunk-P6PBZL3N.js} +7 -6
- package/chunks/{chunk-5NWV4NFB.js → chunk-PRAUGUNM.js} +3 -3
- package/chunks/{chunk-MC2DOZS7.js → chunk-PVT6E3ZI.js} +3 -3
- package/chunks/{chunk-KXEGCGUG.js → chunk-Q22WWVR6.js} +31 -6
- package/chunks/{chunk-JDI67JFB.js → chunk-Q2YKNMLS.js} +3 -3
- package/chunks/{chunk-PBATSWUQ.js → chunk-QBUDF33N.js} +1 -1
- package/chunks/{chunk-Y2ENGUD6.js → chunk-QKTHJXCS.js} +1 -1
- package/chunks/{chunk-BVLROR2T.js → chunk-QLJUC7TG.js} +1 -1
- package/chunks/{chunk-UEY4AYUL.js → chunk-QNLNLENL.js} +2 -2
- package/chunks/{chunk-OKWRU4NO.js → chunk-RC7A7SSL.js} +3 -3
- package/chunks/chunk-RCUEYZDE.js +2290 -0
- package/chunks/{chunk-EVSTCA7S.js → chunk-RMY5SX7S.js} +368 -113
- package/chunks/{chunk-4WUAQ2DO.js → chunk-RTQSXHS7.js} +2 -2
- package/chunks/{chunk-RFIAR4YL.js → chunk-RV4C2ZFG.js} +1 -1
- package/chunks/{chunk-NIJEXGV6.js → chunk-RVLZCXEE.js} +79 -10
- package/chunks/{chunk-Q4RBU7WX.js → chunk-S333CBIA.js} +6 -6
- package/chunks/{chunk-JNWZQ27S.js → chunk-SP5WRGVG.js} +3 -3
- package/chunks/{chunk-FSL5W5TI.js → chunk-T2L47JJK.js} +3 -3
- package/chunks/{chunk-PWVTCGBP.js → chunk-TA4S377U.js} +30 -20
- package/chunks/{chunk-TB6UDU4T.js → chunk-THJNPLI4.js} +16 -16
- package/chunks/chunk-U6TQGUNB.js +20687 -0
- package/chunks/chunk-U7ZFW55U.js +2098 -0
- package/chunks/{chunk-W7H223ZZ.js → chunk-UGYMA4EI.js} +1 -1
- package/chunks/{chunk-X6YQWCIJ.js → chunk-UH3WSE5L.js} +13 -1
- package/chunks/{chunk-P2YAOGJD.js → chunk-UKU3NGW6.js} +3 -3
- package/chunks/{chunk-NOWTNYC7.js → chunk-UVFCANV5.js} +8 -8
- package/chunks/{chunk-CVDW42JT.js → chunk-V4AKJQ26.js} +1 -1
- package/chunks/{chunk-Z5Q65RVH.js → chunk-VJPRLNLR.js} +1 -1
- package/chunks/{chunk-Y4CRUWFZ.js → chunk-VTXX72XS.js} +60 -35
- package/chunks/{chunk-R3VWUU2E.js → chunk-VYPFXUCB.js} +1 -1
- package/chunks/chunk-WHGVTP7Q.js +1049 -0
- package/chunks/{chunk-IKP5DXZY.js → chunk-WOWQQGGN.js} +5 -5
- package/chunks/{chunk-D2VIDMVM.js → chunk-X6N25LXS.js} +2 -2
- package/chunks/chunk-XHATNRQA.js +1500 -0
- package/chunks/{chunk-2DXOIVUI.js → chunk-YLSB23Y2.js} +11 -11
- package/chunks/{chunk-S35ZDXOS.js → chunk-YM3SZTH4.js} +2 -1
- package/chunks/{chunk-OF2BBLYQ.js → chunk-YNWJAOPL.js} +2 -2
- package/chunks/{chunk-GKY2OJ7R.js → chunk-ZHERRXZJ.js} +1 -1
- package/chunks/{chunk-AR27OPIU.js → chunk-ZKFJKN23.js} +2 -2
- package/chunks/{computer-use-R7KA6UJ6.js → computer-use-UKQBH7UM.js} +39 -36
- package/chunks/{config-utils-6FXFJUYB.js → config-utils-FYTBZLCJ.js} +3 -3
- package/chunks/{contextCommand-KAQQPHZ4.js → contextCommand-ESHGAVWX.js} +36 -33
- package/chunks/{create-sub-session-TDPDBU4K.js → create-sub-session-574EPZUU.js} +34 -31
- package/chunks/{create-sub-session-X5RVIHCK.js → create-sub-session-AZ77LBL3.js} +3 -3
- package/chunks/{cron-create-AC5FFLN7.js → cron-create-KTWJM7QT.js} +5 -5
- package/chunks/{cron-delete-JEB3FAHA.js → cron-delete-2P3I5ULL.js} +5 -5
- package/chunks/{cron-list-NBYPCNIB.js → cron-list-PXDPGEDQ.js} +5 -5
- package/chunks/{daemon-RG2MAI6T.js → daemon-GJRFILYS.js} +323 -99
- package/chunks/daemon-status-provider-GZXZP3NU.js +80 -0
- package/chunks/{de-I7ZIYXZC.js → de-4IBXM7CN.js} +5 -1
- package/chunks/{dist-AU7NQQRP.js → dist-OAV7LJGJ.js} +1 -1
- package/chunks/{dist-FUTEXY6A.js → dist-OMW6WDEO.js} +1 -1
- package/chunks/{dist-2MIU4UUH.js → dist-PJLG2XYX.js} +1 -1
- package/chunks/{dist-53PZYC5B.js → dist-UIFWIFRO.js} +2 -2
- package/chunks/{dist-2BHAYBKP.js → dist-XBJVSWS2.js} +1 -1
- package/chunks/{dist-WGTQO7F2.js → dist-XRYV6TJP.js} +65 -25
- package/chunks/{earlyInputCapture-WC7RI5HV.js → earlyInputCapture-GI3HGQIT.js} +35 -32
- package/chunks/{edit-6MHKCJCM.js → edit-EBJK74B3.js} +42 -41
- package/chunks/{en-XE34GKAA.js → en-USMCCJAJ.js} +5 -1
- package/chunks/{enter-worktree-O7VJ2E7A.js → enter-worktree-2ETY5CSV.js} +39 -36
- package/chunks/{enterPlanMode-5XYAALIO.js → enterPlanMode-NY4U2727.js} +45 -37
- package/chunks/{environment-LSKFNLBU.js → environment-33IR3NOU.js} +36 -33
- package/chunks/{errors-ZFVCY6HG.js → errors-2OCY23IC.js} +36 -33
- package/chunks/{exit-worktree-MYIK66T7.js → exit-worktree-Y4ULJ45U.js} +39 -36
- package/chunks/{exitPlanMode-7MBNU76O.js → exitPlanMode-SECI2EQ6.js} +39 -36
- package/chunks/{fast-path-RNLIB64C.js → fast-path-6Z7RW5J5.js} +3 -2
- package/chunks/{fr-X7KDVZIY.js → fr-WVHEBDDB.js} +5 -1
- package/chunks/{gemini-WK5ISEAQ.js → gemini-XLGLUGSU.js} +93 -89
- package/chunks/{geminiContentGenerator-NUJQBZBW.js → geminiContentGenerator-NNZZDH24.js} +5 -5
- package/chunks/{getMachineId-bsd-EXV7SWPA.js → getMachineId-bsd-QFVLPUPT.js} +1 -1
- package/chunks/{getMachineId-darwin-IUOMFXU3.js → getMachineId-darwin-DGMQQE2E.js} +1 -1
- package/chunks/{getMachineId-linux-K7XJYFHL.js → getMachineId-linux-R4Z6CSWC.js} +1 -1
- package/chunks/{getMachineId-unsupported-EA5FDRJ6.js → getMachineId-unsupported-Z3SBVBUV.js} +1 -1
- package/chunks/{getMachineId-win-KBA6RAI5.js → getMachineId-win-SCK5UFDT.js} +1 -1
- package/chunks/{glob-7P6RYY4L.js → glob-KZA64SSV.js} +41 -38
- package/chunks/{grep-V3QHNP2J.js → grep-ONHQMY3V.js} +41 -38
- package/chunks/handleAutoUpdate-PRTJISXQ.js +73 -0
- package/chunks/{i18n-B7IO7WQT.js → i18n-ZTKKG5R5.js} +35 -32
- package/chunks/{initializer-E5TIC3CW.js → initializer-FPPZGBYN.js} +40 -37
- package/chunks/{installationInfo-XLPNAISK.js → installationInfo-DV2C27HT.js} +37 -32
- package/chunks/{ja-2ICT3KXF.js → ja-KY4ROZTE.js} +5 -1
- package/chunks/{keychain-token-storage-DWRJMNH3.js → keychain-token-storage-6ACJDYIB.js} +3 -3
- package/chunks/{list-3CZR5I42.js → list-KEHCNUAK.js} +42 -39
- package/chunks/{loadedSettingsAdapter-X5BSC6CE.js → loadedSettingsAdapter-7RZ6M3WH.js} +39 -36
- package/chunks/{loop-wakeup-HMHCT5GU.js → loop-wakeup-RNMRVA66.js} +6 -6
- package/chunks/{ls-IW5HYDG4.js → ls-J2ZI5XYK.js} +5 -5
- package/chunks/{lsp-4RL52YIZ.js → lsp-UMS3NUB5.js} +3 -3
- package/chunks/managed-npm-update-EBKNOG37.js +332 -0
- package/chunks/{mcp-4C4HWXAR.js → mcp-NHXKZRRP.js} +39 -36
- package/chunks/{monitor-3CJDNZB2.js → monitor-FMUAIFFH.js} +39 -36
- package/chunks/nonInteractiveCli-I2GPZNTP.js +132 -0
- package/chunks/{notebook-edit-MX366HCT.js → notebook-edit-V7RNXKVL.js} +43 -42
- package/chunks/{openaiContentGenerator-KRPNNJGZ.js → openaiContentGenerator-IBVUUZDH.js} +19 -18
- package/chunks/{pidfile-K7T2JLUJ.js → pidfile-AMTGL2H2.js} +35 -32
- package/chunks/{processUtils-YXL3VIBR.js → processUtils-3ZT2JF6D.js} +2 -2
- package/chunks/{pt-JJ4XPIBP.js → pt-OK455PLH.js} +5 -1
- package/chunks/{qwenContentGenerator-GJVXFZ3U.js → qwenContentGenerator-E72VVWS3.js} +41 -38
- package/chunks/{qwenOAuth2-UZTIBQLY.js → qwenOAuth2-YCC3HP24.js} +17 -16
- package/chunks/{read-file-S5XQSYOW.js → read-file-5EWNGUXN.js} +13 -11
- package/chunks/{read-mcp-resource-OIBCNIX7.js → read-mcp-resource-F6HYMDUY.js} +3 -3
- package/chunks/{record-artifact-HDMK4LHG.js → record-artifact-7GCFLDD7.js} +3 -3
- package/chunks/{resumeHistoryUtils-IKR6XD2S.js → resumeHistoryUtils-IH4RNB76.js} +41 -38
- package/chunks/{ripGrep-H65GRSQX.js → ripGrep-B6A6N7GI.js} +34 -31
- package/chunks/{ru-STR4KTW7.js → ru-7SPDGMGD.js} +5 -1
- package/chunks/{run-qwen-serve-7SKAQOAA.js → run-qwen-serve-6PKSMF6Z.js} +115 -74
- package/chunks/{runtime-I2STBGPR.js → runtime-ASRANXO6.js} +45 -40
- package/chunks/{scheduler-6F7HETNO.js → scheduler-IABM76UZ.js} +34 -31
- package/chunks/sdk-exporters-grpc-ETLH47EP.js +23214 -0
- package/chunks/sdk-exporters-http-6MCQH335.js +563 -0
- package/chunks/sdk-impl-HOLWAXC6.js +9193 -0
- package/chunks/{send-message-WXVVK4DB.js → send-message-KBO6X4ZS.js} +7 -5
- package/chunks/{serve-4ATEWSEA.js → serve-A4DT5D32.js} +39 -36
- package/chunks/{server-YPUPFV2O.js → server-DZ5ZSVRE.js} +2317 -472
- package/chunks/{session-AZFIERIY.js → session-G2R3CYU6.js} +87 -172
- package/chunks/{settings-EFQHLTM3.js → settings-7TNSXUTO.js} +43 -40
- package/chunks/{shell-FWXWBJ4Q.js → shell-5BRFGEMK.js} +34 -31
- package/chunks/{skill-A634MNCD.js → skill-3SWYEK7M.js} +24 -20
- package/chunks/{spawnChannel-KKBGGR47.js → spawnChannel-GGN2WVWW.js} +36 -33
- package/chunks/{src-BVROLD6N.js → src-5BPBNQ5S.js} +314 -236
- package/chunks/{standalone-update-ERLA3BDC.js → standalone-update-AHOZ56LS.js} +37 -34
- package/chunks/{startInteractiveUI-3VZ23WAY.js → startInteractiveUI-TLGOQVV7.js} +1105 -906
- package/chunks/{syntheticOutput-HCUFXSIA.js → syntheticOutput-H7RTI5KL.js} +4 -4
- package/chunks/{task-create-RIY5JTFC.js → task-create-7474AJJD.js} +10 -8
- package/chunks/{task-list-XBUCV3CO.js → task-list-633HGOIB.js} +6 -6
- package/chunks/{task-stop-QDFCCYR5.js → task-stop-MNUGHPIA.js} +3 -3
- package/chunks/{task-update-7PXKJQOI.js → task-update-66GQB5LI.js} +10 -8
- package/chunks/{team-create-ZZO7QFQ7.js → team-create-XHDF7UKM.js} +42 -39
- package/chunks/{team-delete-TNSSE2S5.js → team-delete-BB3CG3QF.js} +6 -6
- package/chunks/{team-plan-approval-3BZBJ46K.js → team-plan-approval-XKSBXWMH.js} +39 -36
- package/chunks/{theme-manager-FSFWNXFJ.js → theme-manager-6ZKLBFAN.js} +35 -32
- package/chunks/{todoWrite-OMAIGB6V.js → todoWrite-KRAUN54W.js} +5 -5
- package/chunks/{tool-search-VYXAAIDW.js → tool-search-UDNJCXYS.js} +21 -17
- package/chunks/{total-session-admission-PSMLQICS.js → total-session-admission-VWRCCDYM.js} +40 -37
- package/chunks/{tree-sitter-4D7QS7F6.js → tree-sitter-L5BFT64K.js} +1 -1
- package/chunks/{tree-sitter-bash-VEJGF5XF.js → tree-sitter-bash-ZKDNQGID.js} +1 -1
- package/chunks/{trustedFolders-QA3RK2NV.js → trustedFolders-TJI6OLAN.js} +35 -32
- package/chunks/{chunk-6EFTQYW7.js → undici-3FJYTMOF.js} +24 -399
- package/chunks/{chunk-L573Z2QZ.js → undici-PYHBDDPN.js} +1 -5
- package/chunks/{update-relaunch-LNLZFX3J.js → update-relaunch-RS5GB74A.js} +17 -17
- package/chunks/updateCheck-T4EEA5YR.js +88 -0
- package/chunks/{useAutoAcceptIndicator-DIWN27LT.js → useAutoAcceptIndicator-LLWMXC7F.js} +44 -41
- package/chunks/{validateNonInterActiveAuth-LOEOFCAF.js → validateNonInterActiveAuth-OJ3KYXAR.js} +74 -71
- package/chunks/{version-HBF2VBLE.js → version-ZCEUV5DO.js} +1 -1
- package/chunks/{web-fetch-BWGSD2BD.js → web-fetch-KQF4YFCI.js} +99 -42
- package/chunks/{web-search-OOHTCVR3.js → web-search-QDDGFGKI.js} +113 -61
- package/chunks/{workflow-LJAJBOR4.js → workflow-GIRKCX4P.js} +47 -43
- package/chunks/{workspace-providers-status-FYV7TTHA.js → workspace-providers-status-UTMAVTNE.js} +42 -39
- package/chunks/{workspace-registration-store-4EHGQW4Y.js → workspace-registration-store-EYJMJFZU.js} +8 -2
- package/chunks/{workspace-registry-BKD7VC4Y.js → workspace-registry-4W4UW6MY.js} +40 -37
- package/chunks/{workspace-service-75RHX6KR.js → workspace-service-DJCPY6ZN.js} +46 -43
- package/chunks/{workspace-skills-status-WBZBZI6A.js → workspace-skills-status-VQ2LKXXX.js} +40 -37
- package/chunks/write-file-PLK6RQ7M.js +65 -0
- package/chunks/{zh-TW-4RR3YHNN.js → zh-TW-BM47YBFH.js} +5 -1
- package/chunks/{zh-6ANG2HTL.js → zh-WY5DWYZD.js} +5 -1
- package/cli-entry.js +164 -12
- package/cli.js +18 -11
- package/locales/ca.js +772 -203
- package/locales/de.js +8 -2
- package/locales/en.js +8 -2
- package/locales/fr.js +8 -2
- package/locales/ja.js +8 -2
- package/locales/pt.js +8 -2
- package/locales/ru.js +8 -2
- package/locales/zh-TW.js +8 -2
- package/locales/zh.js +8 -2
- package/package.json +3 -3
- package/web-shell/assets/{arc-Buk1besA.js → arc-DIQrcXXh.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B1aUKYDC.js → architectureDiagram-3BPJPVTR-CbPd-DSw.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-CRTdg3Zx.js → blockDiagram-GPEHLZMM-yzBIVhMX.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DFdRMp5g.js → c4Diagram-AAUBKEIU-B88Swcsu.js} +1 -1
- package/web-shell/assets/channel-BaTMUesZ.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-4rYQdkEI.js → chunk-2J33WTMH-BbOLo6NX.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-Coi-pQJy.js → chunk-4BX2VUAB-Bg6in0r0.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BtBjz02t.js → chunk-55IACEB6-Bv9QRyLI.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CGYOWorl.js → chunk-727SXJPM-CFokiv61.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-CH5AKhqx.js → chunk-AQP2D5EJ-DS2Oxf6L.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-Cd50-w85.js → chunk-FMBD7UC4-D2NkHD3B.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-C2wF3KCK.js → chunk-ND2GUHAM-BsT_UC5B.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-pCeRTaWi.js → chunk-QZHKN3VN-tnJo3zln.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CyBPzWud.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CyBPzWud.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-B-_fAB6D.js → cose-bilkent-S5V4N54A-BTMa6DAZ.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-ChSPNHpL.js → dagre-BM42HDAG-ujGX7Owg.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BX7cFOF3.js → diagram-2AECGRRQ-fU4-dbPa.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BQUTW92n.js → diagram-5GNKFQAL-Bdm-TYSA.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BkYPh3e4.js → diagram-KO2AKTUF-Bkhz85Z9.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-Cl6jsNyx.js → diagram-LMA3HP47-Bzu3q26p.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DRWoHz8n.js → diagram-OG6HWLK6-CZrXbG5Q.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CGvFcZco.js → erDiagram-TEJ5UH35-BjozEAYu.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-vms6oVdv.js → flowDiagram-I6XJVG4X-B3a2I8c-.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-ukT_sfmi.js → ganttDiagram-6RSMTGT7-CIMn9fNm.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bn2ZE2Ut.js → gitGraphDiagram-PVQCEYII-DlFy9KRx.js} +1 -1
- package/web-shell/assets/{index-wFXp7W68.js → index-BODUAzQA.js} +1 -1
- package/web-shell/assets/index-C54DNMF7.js +1209 -0
- package/web-shell/assets/index-lWqBfc78.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DHJdSi7x.js → infoDiagram-5YYISTIA-BmKjQgCy.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DOvd2Wph.js → ishikawaDiagram-YF4QCWOH-BrQEMZz2.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CH_urMCT.js → journeyDiagram-JHISSGLW-D-2r7Xrt.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-FKiBdgbH.js → kanban-definition-UN3LZRKU-CndsFHCX.js} +1 -1
- package/web-shell/assets/{linear-0ZVQFVKf.js → linear-D-IwNnKx.js} +1 -1
- package/web-shell/assets/{mermaid.core-DJ05ZZIK.js → mermaid.core-4ll09sri.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BPuUhkUm.js → mindmap-definition-RKZ34NQL-maMRIxjo.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-yLFKcXyG.js → pieDiagram-4H26LBE5-aunUDhrJ.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-irWqc1pE.js → quadrantDiagram-W4KKPZXB-D3K0P1NZ.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-B_4uMoIV.js → requirementDiagram-4Y6WPE33-CX2X9HRc.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-ciA4GPwk.js → sankeyDiagram-5OEKKPKP-CDroWk7l.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CRdZvy0U.js → sequenceDiagram-3UESZ5HK-DTk-2b16.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DaYIkCCn.js → stateDiagram-AJRCARHV-Cud64hQr.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-g-uUpecT.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-oBUKv6iH.js → timeline-definition-PNZ67QCA-DfD5okf_.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-CGW9Sdmb.js → vennDiagram-CIIHVFJN-BYl8ay25.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-CvwKJOCm.js → wardley-L42UT6IY-BZFAt10J.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Ipc260sN.js → wardleyDiagram-YWT4CUSO-BIWn0GA7.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-D6-CM7pK.js → xychartDiagram-2RQKCTM6-1_H4xblT.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-ETD6K42I.js +0 -358
- package/chunks/chunk-I5NLVPZJ.js +0 -45
- package/chunks/chunk-ONWW74X6.js +0 -74639
- package/chunks/chunk-W7FJ3N32.js +0 -49
- package/chunks/daemon-status-provider-LVTVJGAD.js +0 -77
- package/chunks/handleAutoUpdate-AAQ6PL3E.js +0 -70
- package/chunks/nonInteractiveCli-QTEHDDFH.js +0 -129
- package/chunks/updateCheck-JJEUQ54U.js +0 -73
- package/chunks/write-file-M2DTFILF.js +0 -599
- package/web-shell/assets/channel-04R0vLbG.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Bw9SOwAV.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Bw9SOwAV.js +0 -1
- package/web-shell/assets/index-DgkKrjw3.js +0 -1187
- package/web-shell/assets/index-Rv6mOAN9.css +0 -5
- 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-
|
|
8
|
-
import "./chunk-
|
|
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-
|
|
15
|
-
import "./chunk-4WKAA4KS.js";
|
|
16
|
-
import "./chunk-CR3C7WXL.js";
|
|
17
|
+
} from "./chunk-U6TQGUNB.js";
|
|
17
18
|
import "./chunk-VGC4I5JJ.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
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
|
-
|
|
37
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
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
|
|
784
|
-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
34
|
-
|
|
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-
|
|
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-
|
|
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
|
|
63
|
-
let
|
|
66
|
+
function classifyDashScopeBaseUrl(baseUrl) {
|
|
67
|
+
let url;
|
|
64
68
|
try {
|
|
65
|
-
|
|
69
|
+
url = new URL(baseUrl);
|
|
66
70
|
} catch {
|
|
67
|
-
return
|
|
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
|
-
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
249
|
-
const
|
|
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
|
-
|
|
474
|
-
|
|
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
|
|
509
|
-
|
|
510
|
-
|
|
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
|
|
515
|
-
|
|
516
|
-
|
|
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
|