import { describe, expect, it } from "vitest"; import { codexProviderPresets } from "@/config/codexProviderPresets"; import { providerPresets } from "@/config/claudeProviderPresets"; import type { Provider } from "@/types"; import { providerNeedsRouting } from "@/utils/providerCapabilities"; const CODEX_BASE_URL = "https://api.commandcode.ai/provider/v1"; const CLAUDE_BASE_URL = "https://api.commandcode.ai/provider"; function asProvider( id: string, settingsConfig: Record, apiFormat?: string, ): Provider { return { id, name: "Command Code", category: "third_party", settingsConfig, meta: apiFormat ? { apiFormat } : undefined, } as Provider; } describe("Command Code provider presets", () => { it("adds the Codex preset with a native Responses non-Claude catalog", () => { const preset = codexProviderPresets.find( (item) => item.name === "Command Code", ); expect(preset).toBeDefined(); expect(preset?.apiFormat).toBe("openai_responses"); expect(preset?.endpointCandidates).toEqual([CODEX_BASE_URL]); expect(preset?.config).toContain(`base_url = "${CODEX_BASE_URL}"`); expect(preset?.config).toContain('model = "deepseek/deepseek-v4.1-flash"'); expect(preset?.config).toContain('wire_api = "responses"'); expect(preset?.modelCatalog?.map((model) => model.model)).toEqual([ "deepseek/deepseek-v4.1-flash", "z-ai/glm-5.3-flash", "Qwen/Qwen3.8-Flash", "moonshotai/Kimi-K3.1-Pro", "zai-org/GLM-5.3", ]); expect( preset?.modelCatalog?.some((model) => model.model.includes("claude")), ).toBe(false); }); it("connects the Codex preset directly through Responses", () => { const preset = codexProviderPresets.find( (item) => item.name === "Command Code", ); const provider = asProvider( "command-code", { auth: { OPENAI_API_KEY: "" }, config: preset?.config ?? "", }, preset?.apiFormat, ); expect(preset?.apiFormat).toBe("openai_responses"); expect(providerNeedsRouting("codex", provider)).toBe(false); }); it("adds the Claude Code Anthropic preset with role model mapping", () => { const preset = providerPresets.find((item) => item.name === "Command Code"); const env = (preset?.settingsConfig as { env?: Record }) ?.env; expect(preset).toBeDefined(); expect(env).toMatchObject({ ANTHROPIC_BASE_URL: CLAUDE_BASE_URL, ANTHROPIC_AUTH_TOKEN: "", ANTHROPIC_MODEL: "deepseek/deepseek-v4.1-flash[1M]", ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek/deepseek-v4.1-flash[1M]", ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek/deepseek-v4.1-flash[1M]", ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek/deepseek-v4.1-flash[1M]", }); expect(preset?.apiFormat).toBe("openai_chat"); expect(preset?.modelsUrl).toBe( "https://api.commandcode.ai/provider/v1/models", ); expect(preset?.apiKeyField).toBeUndefined(); }); it("routes Claude Code through Chat Completions for open models", () => { const preset = providerPresets.find((item) => item.name === "Command Code"); const provider = asProvider( "command-code", preset?.settingsConfig as Record, preset?.apiFormat, ); expect(providerNeedsRouting("claude", provider)).toBe(true); }); });