import assert from "node:assert/strict"; import test from "node:test"; import { env } from "../src/env.js"; import { describeProviderChatBackend, fetchProviderCatalogModels } from "../src/llm/provider-adapters.js"; for (const { name, listedModels, expectedModels } of [ { name: "OpenAI catalog includes chat-latest while excluding non-chat models", listedModels: [ "gpt-4.1-mini", "chat-latest", "o3", "chatgpt-4o-latest", "chat-latest", "text-embedding-3-small", "omni-moderation-latest", "gpt-4o-audio-preview", "gpt-realtime", "gpt-4o-transcribe", "gpt-4o-mini-tts", "gpt-image-1", "chatgpt-image-latest", "gpt-4o-search-preview", "computer-use-preview", "sora-2", ], expectedModels: ["chat-latest", "chatgpt-4o-latest", "gpt-4.1-mini", "o3"], }, { name: "OpenAI catalog does not invent models absent from the provider response", listedModels: ["gpt-4.1-mini"], expectedModels: ["gpt-4.1-mini"], }, ]) { test(name, async (t) => { const originalKey = env.OPENAI_API_KEY; env.OPENAI_API_KEY = "test-openai-key"; t.after(() => { env.OPENAI_API_KEY = originalKey; }); t.mock.method(globalThis, "fetch", async (input: RequestInfo | URL) => { const url = input instanceof Request ? input.url : String(input); assert.equal(url, "https://api.openai.com/v1/models"); return Response.json({ data: listedModels.map((id) => ({ id })) }); }); assert.deepEqual(await fetchProviderCatalogModels("openai"), expectedModels); }); } test("provider backend registry selects chat protocol and managed-tool mode", () => { assert.deepEqual(describeProviderChatBackend("openai", []), { provider: "openai", protocol: "chat-completions", managedTools: false, enabledTools: [], }); assert.deepEqual(describeProviderChatBackend("openai", ["web_search"]), { provider: "openai", protocol: "responses", managedTools: true, enabledTools: ["web_search"], }); assert.deepEqual(describeProviderChatBackend("anthropic", ["web_search"]), { provider: "anthropic", protocol: "messages", managedTools: true, enabledTools: ["web_search"], }); assert.deepEqual(describeProviderChatBackend("xai", ["web_search"]), { provider: "xai", protocol: "chat-completions", managedTools: true, enabledTools: ["web_search"], }); assert.deepEqual(describeProviderChatBackend("gemini", ["web_search"]), { provider: "gemini", protocol: "gemini", managedTools: true, enabledTools: ["web_search"], }); assert.deepEqual(describeProviderChatBackend("hermes-agent", ["web_search"]), { provider: "hermes-agent", protocol: "chat-completions", managedTools: false, enabledTools: [], }); });