





















@@ -4,7 +4,10 @@ import type {
44PluginWebFetchProviderEntry,
55WebFetchProviderToolDefinition,
66} from "../plugins/types.js";
7-import { resolvePluginWebFetchProviders } from "../plugins/web-fetch-providers.runtime.js";
7+import {
8+resolvePluginWebFetchProviders,
9+resolveRuntimeWebFetchProviders,
10+} from "../plugins/web-fetch-providers.runtime.js";
811import { sortWebFetchProvidersForAutoDetect } from "../plugins/web-fetch-providers.shared.js";
912import { getActiveRuntimeWebToolsMetadata } from "../secrets/runtime-web-tools-state.js";
1013import type { RuntimeWebFetchMetadata } from "../secrets/runtime-web-tools.types.js";
@@ -81,7 +84,6 @@ export function listWebFetchProviders(params?: {
8184return resolvePluginWebFetchProviders({
8285config: params?.config,
8386bundledAllowlistCompat: true,
84-origin: "bundled",
8587});
8688}
8789@@ -104,7 +106,6 @@ export function resolveWebFetchProviderId(params: {
104106resolvePluginWebFetchProviders({
105107config: params.config,
106108bundledAllowlistCompat: true,
107-origin: "bundled",
108109}),
109110);
110111const raw =
@@ -138,6 +139,20 @@ export function resolveWebFetchProviderId(params: {
138139return "";
139140}
140141142+function resolveConfiguredWebFetchProviderId(params: {
143+fetch?: WebFetchConfig;
144+providers: PluginWebFetchProviderEntry[];
145+}): string | undefined {
146+const raw =
147+params.fetch && "provider" in params.fetch
148+ ? normalizeLowercaseStringOrEmpty(params.fetch.provider)
149+ : "";
150+if (!raw) {
151+return undefined;
152+}
153+return params.providers.find((provider) => provider.id === raw)?.id;
154+}
155+141156export function resolveWebFetchDefinition(
142157options?: ResolveWebFetchDefinitionParams,
143158): { provider: PluginWebFetchProviderEntry; definition: WebFetchProviderToolDefinition } | null {
@@ -146,18 +161,33 @@ export function resolveWebFetchDefinition(
146161| undefined;
147162const runtimeWebFetch = options?.runtimeWebFetch ?? getActiveRuntimeWebToolsMetadata()?.fetch;
148163const providers = sortWebFetchProvidersForAutoDetect(
149-resolvePluginWebFetchProviders({
150-config: options?.config,
151-bundledAllowlistCompat: true,
152-origin: "bundled",
153-}),
164+options?.sandboxed
165+ ? resolvePluginWebFetchProviders({
166+config: options?.config,
167+bundledAllowlistCompat: true,
168+origin: "bundled",
169+})
170+ : options?.preferRuntimeProviders
171+ ? resolveRuntimeWebFetchProviders({
172+config: options?.config,
173+bundledAllowlistCompat: true,
174+})
175+ : resolvePluginWebFetchProviders({
176+config: options?.config,
177+bundledAllowlistCompat: true,
178+}),
154179);
155180return resolveWebProviderDefinition({
156181config: options?.config,
157182toolConfig: fetch as Record<string, unknown> | undefined,
158183runtimeMetadata: runtimeWebFetch,
159184sandboxed: options?.sandboxed,
160-providerId: options?.providerId,
185+providerId:
186+options?.providerId ??
187+resolveConfiguredWebFetchProviderId({
188+ fetch,
189+ providers,
190+}),
161191 providers,
162192resolveEnabled: ({ toolConfig, sandboxed }) =>
163193resolveWebFetchEnabled({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。