





















@@ -22,6 +22,14 @@ vi.mock("../../secrets/runtime.js", () => ({
2222getActiveSecretsRuntimeSnapshot: mocks.getActiveSecretsRuntimeSnapshot,
2323}));
242425+function latestOwnerLookupParams(): Record<string, unknown> {
26+const params = mocks.resolveManifestContractOwnerPluginId.mock.calls.at(-1)?.[0];
27+if (!params || typeof params !== "object") {
28+throw new Error("expected owner lookup params");
29+}
30+return params as Record<string, unknown>;
31+}
32+2533describe("web tool runtime context", () => {
2634beforeEach(() => {
2735mocks.getActiveRuntimeWebToolsMetadata.mockReset();
@@ -65,13 +73,12 @@ describe("web tool runtime context", () => {
6573});
66746775expect(resolved.config).toBe(runtimeConfig);
68-expect(resolved.runtimeWebSearch).toMatchObject({ selectedProvider: "perplexity" });
69-expect(mocks.resolveManifestContractOwnerPluginId).toHaveBeenCalledWith(
70-expect.objectContaining({
71-contract: "webSearchProviders",
72-value: "perplexity",
73-}),
74-);
76+expect(resolved.runtimeWebSearch?.selectedProvider).toBe("perplexity");
77+const ownerLookup = latestOwnerLookupParams();
78+expect(ownerLookup.contract).toBe("webSearchProviders");
79+expect(ownerLookup.value).toBe("perplexity");
80+expect(ownerLookup.origin).toBe("bundled");
81+expect(ownerLookup.config).toBe(runtimeConfig);
7582});
76837784it("falls back to captured search config and runtime metadata when active globals are missing", async () => {
@@ -92,26 +99,26 @@ describe("web tool runtime context", () => {
9299});
9310094101expect(resolved.config).toBe(capturedConfig);
95-expect(resolved.runtimeWebSearch).toMatchObject({ selectedProvider: "brave" });
96-expect(mocks.resolveManifestContractOwnerPluginId).toHaveBeenCalledWith(
97-expect.objectContaining({
98-contract: "webSearchProviders",
99-value: "brave",
100-}),
101-);
102+expect(resolved.runtimeWebSearch?.selectedProvider).toBe("brave");
103+const ownerLookup = latestOwnerLookupParams();
104+expect(ownerLookup.contract).toBe("webSearchProviders");
105+expect(ownerLookup.value).toBe("brave");
106+expect(ownerLookup.origin).toBe("bundled");
107+expect(ownerLookup.config).toBe(capturedConfig);
102108});
103109104110it("uses configured provider ids when runtime metadata is absent", () => {
105111resolveWebSearchToolRuntimeContext({
106112config: { tools: { web: { search: { provider: "Brave" } } } },
107113});
108114109-expect(mocks.resolveManifestContractOwnerPluginId).toHaveBeenCalledWith(
110-expect.objectContaining({
111-contract: "webSearchProviders",
112-value: "brave",
113-}),
114-);
115+const ownerLookup = latestOwnerLookupParams();
116+expect(ownerLookup.contract).toBe("webSearchProviders");
117+expect(ownerLookup.value).toBe("brave");
118+expect(ownerLookup.origin).toBe("bundled");
119+expect(ownerLookup.config).toEqual({
120+tools: { web: { search: { provider: "Brave" } } },
121+});
115122});
116123117124it("keeps runtime providers disabled for bundled fetch owners", async () => {
@@ -122,12 +129,13 @@ describe("web tool runtime context", () => {
122129});
123130124131expect(resolved.preferRuntimeProviders).toBe(false);
125-expect(mocks.resolveManifestContractOwnerPluginId).toHaveBeenCalledWith(
126-expect.objectContaining({
127-contract: "webFetchProviders",
128-value: "firecrawl",
129-}),
130-);
132+const ownerLookup = latestOwnerLookupParams();
133+expect(ownerLookup.contract).toBe("webFetchProviders");
134+expect(ownerLookup.value).toBe("firecrawl");
135+expect(ownerLookup.origin).toBe("bundled");
136+expect(ownerLookup.config).toEqual({
137+tools: { web: { fetch: { provider: "firecrawl" } } },
138+});
131139});
132140133141it("keeps runtime provider discovery enabled when no provider is selected", () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。