diff --git a/packages/ai/scripts/generate-models.ts b/packages/ai/scripts/generate-models.ts index 9cf5cdcc..dde305c2 100644 --- a/packages/ai/scripts/generate-models.ts +++ b/packages/ai/scripts/generate-models.ts @@ -38,6 +38,184 @@ const COPILOT_STATIC_HEADERS = { "X-Initiator": "agent", } as const; +function getCopilotTokenFromEnv(): string | null { + return process.env.COPILOT_GITHUB_TOKEN || process.env.GH_TOKEN || process.env.GITHUB_TOKEN || null; +} + +function isCopilotModelDeprecated(model: Record): boolean { + const deprecated = model.deprecated; + if (deprecated === true) return true; + if (model.is_deprecated === true) return true; + if (model.status === "deprecated") return true; + if (model.lifecycle === "deprecated") return true; + return false; +} + +function getCopilotApi(modelId: string, supportedEndpoints: string[] | null): Api { + if (supportedEndpoints?.includes("/responses")) return "openai-responses"; + if (supportedEndpoints?.includes("/chat/completions")) return "openai-completions"; + + const id = modelId.toLowerCase(); + if (id.includes("codex") || id.startsWith("o1") || id.startsWith("o3")) { + return "openai-responses"; + } + return "openai-completions"; +} + +async function fetchCopilotModels(githubToken: string): Promise[]> { + try { + console.log("Fetching models from GitHub Copilot API..."); + const response = await fetch("https://api.githubcopilot.com/models", { + headers: { + Accept: "application/json", + Authorization: `Bearer ${githubToken}`, + ...COPILOT_STATIC_HEADERS, + }, + }); + + if (!response.ok) { + const text = await response.text(); + console.warn(`Failed to fetch GitHub Copilot models: ${response.status} ${text}`); + return []; + } + + const data = (await response.json()) as unknown; + const list = + Array.isArray(data) + ? data + : Array.isArray((data as any)?.data) + ? (data as any).data + : Array.isArray((data as any)?.models) + ? (data as any).models + : null; + + if (!Array.isArray(list)) { + console.warn("Failed to parse GitHub Copilot models response"); + return []; + } + + const models: Model[] = []; + + for (const item of list) { + if (!item || typeof item !== "object") continue; + const model = item as Record; + + const id = typeof model.id === "string" ? model.id : null; + if (!id) continue; + if (isCopilotModelDeprecated(model)) continue; + + const caps = model.capabilities; + if (!caps || typeof caps !== "object") continue; + const supports = (caps as Record).supports; + if (!supports || typeof supports !== "object") continue; + + const supportsToolCalls = (supports as Record).tool_calls === true; + if (!supportsToolCalls) continue; + + const supportsVision = (supports as Record).vision === true; + const input: ("text" | "image")[] = supportsVision ? ["text", "image"] : ["text"]; + + const limits = (caps as Record).limits; + const contextWindow = + limits && typeof limits === "object" && typeof (limits as any).max_context_window_tokens === "number" + ? (limits as any).max_context_window_tokens + : 128000; + const maxTokens = + limits && typeof limits === "object" && typeof (limits as any).max_output_tokens === "number" + ? (limits as any).max_output_tokens + : 8192; + + const supportedEndpoints = Array.isArray(model.supported_endpoints) + ? (model.supported_endpoints as unknown[]).filter((e): e is string => typeof e === "string") + : null; + + const api = getCopilotApi(id, supportedEndpoints); + + const base: Model = { + id, + name: id, + api, + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + reasoning: false, + input, + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow, + maxTokens, + headers: { ...COPILOT_STATIC_HEADERS }, + }; + + if (api === "openai-completions") { + base.compat = { + supportsStore: false, + supportsDeveloperRole: false, + supportsReasoningEffort: false, + }; + } + + if (supportedEndpoints && !supportedEndpoints.includes("/chat/completions") && !supportedEndpoints.includes("/responses")) { + continue; + } + + models.push(base); + } + + console.log(`Fetched ${models.length} tool-capable models from GitHub Copilot`); + return models; + } catch (error) { + console.warn("Failed to fetch GitHub Copilot models:", error); + return []; + } +} + +function getFallbackCopilotModels(): Model[] { + const fallback: Array<{ id: string; api: Api; input: ("text" | "image")[] }> = [ + { id: "claude-opus-4.5", api: "openai-completions", input: ["text", "image"] }, + { id: "claude-sonnet-4.5", api: "openai-completions", input: ["text", "image"] }, + { id: "claude-haiku-4.5", api: "openai-completions", input: ["text", "image"] }, + { id: "gemini-3-pro-preview", api: "openai-completions", input: ["text", "image"] }, + { id: "grok-code-fast-1", api: "openai-completions", input: ["text"] }, + { id: "gpt-5.2", api: "openai-responses", input: ["text", "image"] }, + { id: "gpt-5.1-codex-max", api: "openai-responses", input: ["text", "image"] }, + ]; + + return fallback.map(({ id, api, input }) => { + const model: Model = { + id, + name: id, + api, + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + reasoning: false, + input, + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 8192, + headers: { ...COPILOT_STATIC_HEADERS }, + }; + + if (api === "openai-completions") { + model.compat = { + supportsStore: false, + supportsDeveloperRole: false, + supportsReasoningEffort: false, + }; + } + + return model; + }); +} + async function fetchOpenRouterModels(): Promise[]> { try { console.log("Fetching models from OpenRouter API..."); @@ -312,40 +490,6 @@ async function loadModelsDevData(): Promise[]> { } } - const copilotSection = (data as Record)["github-copilot"]; - if (copilotSection && typeof copilotSection === "object") { - const copilotModels = (copilotSection as Record).models; - if (copilotModels && typeof copilotModels === "object") { - for (const [modelId, model] of Object.entries(copilotModels)) { - const m = model as ModelsDevModel; - if (m.tool_call !== true) continue; - - models.push({ - id: modelId, - name: m.name || modelId, - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - reasoning: m.reasoning === true, - input: m.modalities?.input?.includes("image") ? ["text", "image"] : ["text"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: m.limit?.context || 128000, - maxTokens: m.limit?.output || 8192, - headers: { ...COPILOT_STATIC_HEADERS }, - compat: { - supportsStore: false, - supportsDeveloperRole: false, - supportsReasoningEffort: false, - }, - }); - } - } - } console.log(`Loaded ${models.length} tool-capable models from models.dev`); return models; @@ -365,6 +509,19 @@ async function generateModels() { // Combine models (models.dev has priority) const allModels = [...modelsDevModels, ...openRouterModels]; + const copilotToken = getCopilotTokenFromEnv(); + let copilotModels: Model[] = []; + if (copilotToken) { + copilotModels = await fetchCopilotModels(copilotToken); + if (copilotModels.length === 0) { + console.warn("GitHub Copilot model fetch returned no models. Using fallback list."); + copilotModels = getFallbackCopilotModels(); + } + } else { + console.warn("No Copilot token found (set COPILOT_GITHUB_TOKEN, GH_TOKEN, or GITHUB_TOKEN). Using fallback list."); + copilotModels = getFallbackCopilotModels(); + } + allModels.push(...copilotModels); // Fix incorrect cache pricing for Claude Opus 4.5 from models.dev // models.dev has 3x the correct pricing (1.5/18.75 instead of 0.5/6.25) diff --git a/packages/ai/src/models.generated.ts b/packages/ai/src/models.generated.ts index 356d9244..b95b3475 100644 --- a/packages/ai/src/models.generated.ts +++ b/packages/ai/src/models.generated.ts @@ -2468,606 +2468,6 @@ export const MODELS = { maxTokens: 16384, } satisfies Model<"openai-completions">, }, - "github-copilot": { - "gemini-2.0-flash-001": { - id: "gemini-2.0-flash-001", - name: "Gemini 2.0 Flash", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: false, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 1000000, - maxTokens: 8192, - } satisfies Model<"openai-completions">, - "grok-code-fast-1": { - id: "grok-code-fast-1", - name: "Grok Code Fast 1", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 64000, - } satisfies Model<"openai-completions">, - "gpt-5.1-codex": { - id: "gpt-5.1-codex", - name: "GPT-5.1-Codex", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 128000, - } satisfies Model<"openai-completions">, - "claude-haiku-4.5": { - id: "claude-haiku-4.5", - name: "Claude Haiku 4.5", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 16000, - } satisfies Model<"openai-completions">, - "gemini-3-pro-preview": { - id: "gemini-3-pro-preview", - name: "Gemini 3 Pro Preview", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 64000, - } satisfies Model<"openai-completions">, - "oswe-vscode-prime": { - id: "oswe-vscode-prime", - name: "Raptor Mini (Preview)", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 200000, - maxTokens: 64000, - } satisfies Model<"openai-completions">, - "claude-3.5-sonnet": { - id: "claude-3.5-sonnet", - name: "Claude Sonnet 3.5", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: false, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 90000, - maxTokens: 8192, - } satisfies Model<"openai-completions">, - "gpt-5.1-codex-mini": { - id: "gpt-5.1-codex-mini", - name: "GPT-5.1-Codex-mini", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 100000, - } satisfies Model<"openai-completions">, - "gpt-5.1": { - id: "gpt-5.1", - name: "GPT-5.1", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 128000, - } satisfies Model<"openai-completions">, - "gpt-5-codex": { - id: "gpt-5-codex", - name: "GPT-5-Codex", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 128000, - } satisfies Model<"openai-completions">, - "gpt-4o": { - id: "gpt-4o", - name: "GPT-4o", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: false, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 64000, - maxTokens: 16384, - } satisfies Model<"openai-completions">, - "gpt-4.1": { - id: "gpt-4.1", - name: "GPT-4.1", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: false, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 16384, - } satisfies Model<"openai-completions">, - "gpt-5-mini": { - id: "gpt-5-mini", - name: "GPT-5-mini", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 64000, - } satisfies Model<"openai-completions">, - "claude-3.7-sonnet": { - id: "claude-3.7-sonnet", - name: "Claude Sonnet 3.7", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: false, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 200000, - maxTokens: 16384, - } satisfies Model<"openai-completions">, - "gemini-2.5-pro": { - id: "gemini-2.5-pro", - name: "Gemini 2.5 Pro", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: false, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 64000, - } satisfies Model<"openai-completions">, - "gpt-5.1-codex-max": { - id: "gpt-5.1-codex-max", - name: "GPT-5.1-Codex-max", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 128000, - } satisfies Model<"openai-completions">, - o3: { - id: "o3", - name: "o3 (Preview)", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 16384, - } satisfies Model<"openai-completions">, - "claude-sonnet-4": { - id: "claude-sonnet-4", - name: "Claude Sonnet 4", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 16000, - } satisfies Model<"openai-completions">, - "gpt-5": { - id: "gpt-5", - name: "GPT-5", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 128000, - } satisfies Model<"openai-completions">, - "claude-3.7-sonnet-thought": { - id: "claude-3.7-sonnet-thought", - name: "Claude Sonnet 3.7 Thinking", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 200000, - maxTokens: 16384, - } satisfies Model<"openai-completions">, - "claude-opus-4.5": { - id: "claude-opus-4.5", - name: "Claude Opus 4.5", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 16000, - } satisfies Model<"openai-completions">, - "gpt-5.2": { - id: "gpt-5.2", - name: "GPT-5.2", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 64000, - } satisfies Model<"openai-completions">, - "claude-sonnet-4.5": { - id: "claude-sonnet-4.5", - name: "Claude Sonnet 4.5", - api: "openai-completions", - provider: "github-copilot", - baseUrl: "https://api.githubcopilot.com", - headers: { - "User-Agent": "GitHubCopilotChat/0.35.0", - "Editor-Version": "vscode/1.105.1", - "Editor-Plugin-Version": "copilot-chat/0.35.0", - "Copilot-Integration-Id": "copilot-developer-cli", - "Openai-Intent": "conversation-edits", - "X-Initiator": "agent", - }, - compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 16000, - } satisfies Model<"openai-completions">, - }, openrouter: { "openai/gpt-5.2-chat": { id: "openai/gpt-5.2-chat", @@ -6333,23 +5733,6 @@ export const MODELS = { contextWindow: 32768, maxTokens: 4096, } satisfies Model<"openai-completions">, - "cohere/command-r-08-2024": { - id: "cohere/command-r-08-2024", - name: "Cohere: Command R (08-2024)", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: false, - input: ["text"], - cost: { - input: 0.15, - output: 0.6, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 4000, - } satisfies Model<"openai-completions">, "cohere/command-r-plus-08-2024": { id: "cohere/command-r-plus-08-2024", name: "Cohere: Command R+ (08-2024)", @@ -6367,6 +5750,23 @@ export const MODELS = { contextWindow: 128000, maxTokens: 4000, } satisfies Model<"openai-completions">, + "cohere/command-r-08-2024": { + id: "cohere/command-r-08-2024", + name: "Cohere: Command R (08-2024)", + api: "openai-completions", + provider: "openrouter", + baseUrl: "https://openrouter.ai/api/v1", + reasoning: false, + input: ["text"], + cost: { + input: 0.15, + output: 0.6, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 4000, + } satisfies Model<"openai-completions">, "sao10k/l3.1-euryale-70b": { id: "sao10k/l3.1-euryale-70b", name: "Sao10K: Llama 3.1 Euryale 70B v2.2", @@ -6435,23 +5835,6 @@ export const MODELS = { contextWindow: 131072, maxTokens: 16384, } satisfies Model<"openai-completions">, - "meta-llama/llama-3.1-405b-instruct": { - id: "meta-llama/llama-3.1-405b-instruct", - name: "Meta: Llama 3.1 405B Instruct", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: false, - input: ["text"], - cost: { - input: 3.5, - output: 3.5, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 130815, - maxTokens: 4096, - } satisfies Model<"openai-completions">, "meta-llama/llama-3.1-70b-instruct": { id: "meta-llama/llama-3.1-70b-instruct", name: "Meta: Llama 3.1 70B Instruct", @@ -6469,6 +5852,23 @@ export const MODELS = { contextWindow: 131072, maxTokens: 4096, } satisfies Model<"openai-completions">, + "meta-llama/llama-3.1-405b-instruct": { + id: "meta-llama/llama-3.1-405b-instruct", + name: "Meta: Llama 3.1 405B Instruct", + api: "openai-completions", + provider: "openrouter", + baseUrl: "https://openrouter.ai/api/v1", + reasoning: false, + input: ["text"], + cost: { + input: 3.5, + output: 3.5, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 130815, + maxTokens: 4096, + } satisfies Model<"openai-completions">, "mistralai/mistral-nemo": { id: "mistralai/mistral-nemo", name: "Mistral: Mistral Nemo", @@ -6486,9 +5886,9 @@ export const MODELS = { contextWindow: 131072, maxTokens: 16384, } satisfies Model<"openai-completions">, - "openai/gpt-4o-mini-2024-07-18": { - id: "openai/gpt-4o-mini-2024-07-18", - name: "OpenAI: GPT-4o-mini (2024-07-18)", + "openai/gpt-4o-mini": { + id: "openai/gpt-4o-mini", + name: "OpenAI: GPT-4o-mini", api: "openai-completions", provider: "openrouter", baseUrl: "https://openrouter.ai/api/v1", @@ -6503,9 +5903,9 @@ export const MODELS = { contextWindow: 128000, maxTokens: 16384, } satisfies Model<"openai-completions">, - "openai/gpt-4o-mini": { - id: "openai/gpt-4o-mini", - name: "OpenAI: GPT-4o-mini", + "openai/gpt-4o-mini-2024-07-18": { + id: "openai/gpt-4o-mini-2024-07-18", + name: "OpenAI: GPT-4o-mini (2024-07-18)", api: "openai-completions", provider: "openrouter", baseUrl: "https://openrouter.ai/api/v1", @@ -6656,23 +6056,6 @@ export const MODELS = { contextWindow: 128000, maxTokens: 64000, } satisfies Model<"openai-completions">, - "meta-llama/llama-3-70b-instruct": { - id: "meta-llama/llama-3-70b-instruct", - name: "Meta: Llama 3 70B Instruct", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: false, - input: ["text"], - cost: { - input: 0.3, - output: 0.39999999999999997, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 8192, - maxTokens: 16384, - } satisfies Model<"openai-completions">, "meta-llama/llama-3-8b-instruct": { id: "meta-llama/llama-3-8b-instruct", name: "Meta: Llama 3 8B Instruct", @@ -6690,6 +6073,23 @@ export const MODELS = { contextWindow: 8192, maxTokens: 16384, } satisfies Model<"openai-completions">, + "meta-llama/llama-3-70b-instruct": { + id: "meta-llama/llama-3-70b-instruct", + name: "Meta: Llama 3 70B Instruct", + api: "openai-completions", + provider: "openrouter", + baseUrl: "https://openrouter.ai/api/v1", + reasoning: false, + input: ["text"], + cost: { + input: 0.3, + output: 0.39999999999999997, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 8192, + maxTokens: 16384, + } satisfies Model<"openai-completions">, "mistralai/mixtral-8x22b-instruct": { id: "mistralai/mixtral-8x22b-instruct", name: "Mistral: Mixtral 8x22B Instruct", @@ -6775,23 +6175,6 @@ export const MODELS = { contextWindow: 128000, maxTokens: 4096, } satisfies Model<"openai-completions">, - "openai/gpt-3.5-turbo-0613": { - id: "openai/gpt-3.5-turbo-0613", - name: "OpenAI: GPT-3.5 Turbo (older v0613)", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: false, - input: ["text"], - cost: { - input: 1, - output: 2, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 4095, - maxTokens: 4096, - } satisfies Model<"openai-completions">, "openai/gpt-4-turbo-preview": { id: "openai/gpt-4-turbo-preview", name: "OpenAI: GPT-4 Turbo Preview", @@ -6809,6 +6192,23 @@ export const MODELS = { contextWindow: 128000, maxTokens: 4096, } satisfies Model<"openai-completions">, + "openai/gpt-3.5-turbo-0613": { + id: "openai/gpt-3.5-turbo-0613", + name: "OpenAI: GPT-3.5 Turbo (older v0613)", + api: "openai-completions", + provider: "openrouter", + baseUrl: "https://openrouter.ai/api/v1", + reasoning: false, + input: ["text"], + cost: { + input: 1, + output: 2, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 4095, + maxTokens: 4096, + } satisfies Model<"openai-completions">, "mistralai/mistral-tiny": { id: "mistralai/mistral-tiny", name: "Mistral Tiny", @@ -6877,9 +6277,9 @@ export const MODELS = { contextWindow: 16385, maxTokens: 4096, } satisfies Model<"openai-completions">, - "openai/gpt-4-0314": { - id: "openai/gpt-4-0314", - name: "OpenAI: GPT-4 (older v0314)", + "openai/gpt-4": { + id: "openai/gpt-4", + name: "OpenAI: GPT-4", api: "openai-completions", provider: "openrouter", baseUrl: "https://openrouter.ai/api/v1", @@ -6894,9 +6294,9 @@ export const MODELS = { contextWindow: 8191, maxTokens: 4096, } satisfies Model<"openai-completions">, - "openai/gpt-4": { - id: "openai/gpt-4", - name: "OpenAI: GPT-4", + "openai/gpt-4-0314": { + id: "openai/gpt-4-0314", + name: "OpenAI: GPT-4 (older v0314)", api: "openai-completions", provider: "openrouter", baseUrl: "https://openrouter.ai/api/v1", @@ -6946,4 +6346,574 @@ export const MODELS = { maxTokens: 30000, } satisfies Model<"openai-completions">, }, + "github-copilot": { + "gpt-4o-mini-2024-07-18": { + id: "gpt-4o-mini-2024-07-18", + name: "gpt-4o-mini-2024-07-18", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "gpt-4o-2024-11-20": { + id: "gpt-4o-2024-11-20", + name: "gpt-4o-2024-11-20", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "gpt-4o-2024-08-06": { + id: "gpt-4o-2024-08-06", + name: "gpt-4o-2024-08-06", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "grok-code-fast-1": { + id: "grok-code-fast-1", + name: "grok-code-fast-1", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 64000, + } satisfies Model<"openai-completions">, + "gpt-5.1-codex": { + id: "gpt-5.1-codex", + name: "gpt-5.1-codex", + api: "openai-responses", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 400000, + maxTokens: 128000, + } satisfies Model<"openai-responses">, + "gpt-5.1-codex-mini": { + id: "gpt-5.1-codex-mini", + name: "gpt-5.1-codex-mini", + api: "openai-responses", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 400000, + maxTokens: 128000, + } satisfies Model<"openai-responses">, + "gpt-5.1-codex-max": { + id: "gpt-5.1-codex-max", + name: "gpt-5.1-codex-max", + api: "openai-responses", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 400000, + maxTokens: 128000, + } satisfies Model<"openai-responses">, + "claude-sonnet-4.5": { + id: "claude-sonnet-4.5", + name: "claude-sonnet-4.5", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 144000, + maxTokens: 16000, + } satisfies Model<"openai-completions">, + "claude-opus-4.5": { + id: "claude-opus-4.5", + name: "claude-opus-4.5", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 144000, + maxTokens: 16000, + } satisfies Model<"openai-completions">, + "claude-haiku-4.5": { + id: "claude-haiku-4.5", + name: "claude-haiku-4.5", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 144000, + maxTokens: 16000, + } satisfies Model<"openai-completions">, + "gemini-3-pro-preview": { + id: "gemini-3-pro-preview", + name: "gemini-3-pro-preview", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 64000, + } satisfies Model<"openai-completions">, + "gpt-4.1-2025-04-14": { + id: "gpt-4.1-2025-04-14", + name: "gpt-4.1-2025-04-14", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "gpt-5.2": { + id: "gpt-5.2", + name: "gpt-5.2", + api: "openai-responses", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 264000, + maxTokens: 64000, + } satisfies Model<"openai-responses">, + "gpt-3.5-turbo-0613": { + id: "gpt-3.5-turbo-0613", + name: "gpt-3.5-turbo-0613", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 16384, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "gpt-4": { + id: "gpt-4", + name: "gpt-4", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 32768, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "gpt-4-0613": { + id: "gpt-4-0613", + name: "gpt-4-0613", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 32768, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "gpt-4o-2024-05-13": { + id: "gpt-4o-2024-05-13", + name: "gpt-4o-2024-05-13", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "gpt-4-o-preview": { + id: "gpt-4-o-preview", + name: "gpt-4-o-preview", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "gpt-4.1": { + id: "gpt-4.1", + name: "gpt-4.1", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "gpt-3.5-turbo": { + id: "gpt-3.5-turbo", + name: "gpt-3.5-turbo", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 16384, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "gpt-4o-mini": { + id: "gpt-4o-mini", + name: "gpt-4o-mini", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "gpt-4o": { + id: "gpt-4o", + name: "gpt-4o", + api: "openai-completions", + provider: "github-copilot", + baseUrl: "https://api.githubcopilot.com", + headers: { + "User-Agent": "GitHubCopilotChat/0.35.0", + "Editor-Version": "vscode/1.105.1", + "Editor-Plugin-Version": "copilot-chat/0.35.0", + "Copilot-Integration-Id": "copilot-developer-cli", + "Openai-Intent": "conversation-edits", + "X-Initiator": "agent", + }, + compat: { supportsStore: false, supportsDeveloperRole: false, supportsReasoningEffort: false }, + reasoning: false, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + }, } as const;