From 803f60105b1803e548338f9e4bf8bef50ee5a21e Mon Sep 17 00:00:00 2001 From: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> Date: Fri, 27 Mar 2026 19:18:05 -0500 Subject: [PATCH] fix(regression): align provider flow docs with bundled compat --- src/flows/provider-flow.test.ts | 82 +++++++++++++++++++++++++++++++++ src/flows/provider-flow.ts | 2 + 2 files changed, 84 insertions(+) create mode 100644 src/flows/provider-flow.test.ts diff --git a/src/flows/provider-flow.test.ts b/src/flows/provider-flow.test.ts new file mode 100644 index 00000000000..bed5690a5ce --- /dev/null +++ b/src/flows/provider-flow.test.ts @@ -0,0 +1,82 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { + resolveManifestProviderSetupFlowContributions, + resolveProviderModelPickerFlowContributions, +} from "./provider-flow.js"; + +const resolveManifestProviderAuthChoices = vi.hoisted(() => vi.fn(() => [])); +const resolveProviderWizardOptions = vi.hoisted(() => vi.fn(() => [])); +const resolveProviderModelPickerEntries = vi.hoisted(() => vi.fn(() => [])); +const resolvePluginProviders = vi.hoisted(() => vi.fn(() => [])); + +vi.mock("../plugins/provider-auth-choices.js", () => ({ + resolveManifestProviderAuthChoices, +})); + +vi.mock("../plugins/provider-wizard.js", () => ({ + resolveProviderWizardOptions, + resolveProviderModelPickerEntries, +})); + +vi.mock("../plugins/providers.runtime.js", () => ({ + resolvePluginProviders, +})); + +describe("provider flow", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("uses bundled compat when resolving docs for manifest-backed setup contributions", () => { + resolveManifestProviderAuthChoices.mockReturnValue([ + { + pluginId: "sglang", + providerId: "sglang", + methodId: "custom", + choiceId: "provider-plugin:sglang:custom", + choiceLabel: "SGLang", + }, + ]); + resolvePluginProviders.mockReturnValue([{ id: "sglang", docsPath: "/providers/sglang" }]); + + const contributions = resolveManifestProviderSetupFlowContributions({ + config: {}, + workspaceDir: "/tmp/workspace", + env: process.env, + }); + + expect(resolvePluginProviders).toHaveBeenCalledWith({ + config: {}, + workspaceDir: "/tmp/workspace", + env: process.env, + bundledProviderAllowlistCompat: true, + bundledProviderVitestCompat: true, + }); + expect(contributions[0]?.option.docs).toEqual({ path: "/providers/sglang" }); + }); + + it("uses bundled compat when resolving docs for runtime model-picker contributions", () => { + resolveProviderModelPickerEntries.mockReturnValue([ + { + value: "provider-plugin:vllm:custom", + label: "vLLM", + }, + ]); + resolvePluginProviders.mockReturnValue([{ id: "vllm", docsPath: "/providers/vllm" }]); + + const contributions = resolveProviderModelPickerFlowContributions({ + config: {}, + workspaceDir: "/tmp/workspace", + env: process.env, + }); + + expect(resolvePluginProviders).toHaveBeenCalledWith({ + config: {}, + workspaceDir: "/tmp/workspace", + env: process.env, + bundledProviderAllowlistCompat: true, + bundledProviderVitestCompat: true, + }); + expect(contributions[0]?.option.docs).toEqual({ path: "/providers/vllm" }); + }); +}); diff --git a/src/flows/provider-flow.ts b/src/flows/provider-flow.ts index 7c980eeed6d..676d61f52e1 100644 --- a/src/flows/provider-flow.ts +++ b/src/flows/provider-flow.ts @@ -54,6 +54,8 @@ function resolveProviderDocsById(params?: { config: params?.config, workspaceDir: params?.workspaceDir, env: params?.env, + bundledProviderAllowlistCompat: true, + bundledProviderVitestCompat: true, }) .filter((provider): provider is ProviderPlugin & { docsPath: string } => Boolean(provider.docsPath?.trim()),