From d3fe52c8e8571dfdff76308347bc561b859509f2 Mon Sep 17 00:00:00 2001 From: Hannes Rudolph Date: Fri, 6 Feb 2026 14:20:57 -0700 Subject: [PATCH] feat(azure): add all tool-calling models from models.dev/api.json Expand azure model list from 27 (OpenAI-only) to 64 models with tool_call support, including Claude, Cohere, DeepSeek, Grok, Kimi, Llama, Mistral, Phi, and Model Router families. All model metadata (pricing, context window, capabilities) sourced from https://models.dev/api.json. Existing Roo-specific overrides (includedTools, excludedTools, reasoningEffort, etc.) preserved. --- packages/types/src/providers/azure.ts | 405 ++++++++++++++++++++++++-- 1 file changed, 383 insertions(+), 22 deletions(-) diff --git a/packages/types/src/providers/azure.ts b/packages/types/src/providers/azure.ts index 8ba3480070..e4ec8b496a 100644 --- a/packages/types/src/providers/azure.ts +++ b/packages/types/src/providers/azure.ts @@ -6,10 +6,68 @@ import type { ModelInfo } from "../model.js" * NOTE: * - Azure AI Foundry uses *deployment names* at runtime, but Roo still needs underlying model * capabilities (maxTokens/contextWindow/etc.) for validation and parameter shaping. - * - This list is derived from https://models.dev/api.json (provider: "azure") and intentionally - * restricted to OpenAI/Azure OpenAI-style IDs (gpt-*, o*, codex-*). + * - This list is derived from https://models.dev/api.json (provider: "azure") and includes + * all models with tool calling support available through Azure AI Foundry deployments. */ export const azureModels = { + "claude-haiku-4-5": { + maxTokens: 64_000, + contextWindow: 200_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 1, + outputPrice: 5, + cacheWritesPrice: 1.25, + cacheReadsPrice: 0.1, + supportsTemperature: true, + description: "Claude Haiku 4.5", + }, + "claude-opus-4-1": { + maxTokens: 32_000, + contextWindow: 200_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 15, + outputPrice: 75, + cacheWritesPrice: 18.75, + cacheReadsPrice: 1.5, + supportsTemperature: true, + description: "Claude Opus 4.1", + }, + "claude-opus-4-5": { + maxTokens: 64_000, + contextWindow: 200_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 5, + outputPrice: 25, + cacheWritesPrice: 6.25, + cacheReadsPrice: 0.5, + supportsTemperature: true, + description: "Claude Opus 4.5", + }, + "claude-sonnet-4-5": { + maxTokens: 64_000, + contextWindow: 200_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 3, + outputPrice: 15, + cacheWritesPrice: 3.75, + cacheReadsPrice: 0.3, + supportsTemperature: true, + description: "Claude Sonnet 4.5", + }, + "codestral-2501": { + maxTokens: 256_000, + contextWindow: 256_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.3, + outputPrice: 0.9, + supportsTemperature: true, + description: "Codestral 25.01", + }, "codex-mini": { maxTokens: 100_000, contextWindow: 200_000, @@ -19,8 +77,77 @@ export const azureModels = { outputPrice: 6, cacheReadsPrice: 0.375, supportsTemperature: false, - description: - "Codex Mini: Cloud-based software engineering agent powered by codex-1, a version of o3 optimized for coding tasks", + description: "Codex Mini", + }, + "cohere-command-a": { + maxTokens: 8_000, + contextWindow: 256_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 2.5, + outputPrice: 10, + supportsTemperature: true, + description: "Command A", + }, + "cohere-command-r-08-2024": { + maxTokens: 4_000, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.15, + outputPrice: 0.6, + supportsTemperature: true, + description: "Command R", + }, + "cohere-command-r-plus-08-2024": { + maxTokens: 4_000, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 2.5, + outputPrice: 10, + supportsTemperature: true, + description: "Command R+", + }, + "deepseek-r1-0528": { + maxTokens: 163_840, + contextWindow: 163_840, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 1.35, + outputPrice: 5.4, + supportsTemperature: true, + description: "DeepSeek-R1-0528", + }, + "deepseek-v3-0324": { + maxTokens: 131_072, + contextWindow: 131_072, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 1.14, + outputPrice: 4.56, + supportsTemperature: true, + description: "DeepSeek-V3-0324", + }, + "deepseek-v3.1": { + maxTokens: 131_072, + contextWindow: 131_072, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.56, + outputPrice: 1.68, + supportsTemperature: true, + description: "DeepSeek-V3.1", + }, + "deepseek-v3.2": { + maxTokens: 128_000, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.58, + outputPrice: 1.68, + supportsTemperature: true, + description: "DeepSeek-V3.2", }, "gpt-4": { maxTokens: 8_192, @@ -131,7 +258,7 @@ export const azureModels = { cacheReadsPrice: 0.13, supportsVerbosity: true, supportsTemperature: false, - description: "GPT-5: The best model for coding and agentic tasks across domains", + description: "GPT-5", }, "gpt-5-codex": { maxTokens: 128_000, @@ -146,7 +273,7 @@ export const azureModels = { outputPrice: 10, cacheReadsPrice: 0.13, supportsTemperature: false, - description: "GPT-5-Codex: A version of GPT-5 optimized for agentic coding in Codex", + description: "GPT-5-Codex", }, "gpt-5-mini": { maxTokens: 128_000, @@ -162,7 +289,7 @@ export const azureModels = { cacheReadsPrice: 0.03, supportsVerbosity: true, supportsTemperature: false, - description: "GPT-5 Mini: A faster, more cost-efficient version of GPT-5 for well-defined tasks", + description: "GPT-5 Mini", }, "gpt-5-nano": { maxTokens: 128_000, @@ -178,7 +305,7 @@ export const azureModels = { cacheReadsPrice: 0.01, supportsVerbosity: true, supportsTemperature: false, - description: "GPT-5 Nano: Fastest, most cost-efficient version of GPT-5", + description: "GPT-5 Nano", }, "gpt-5-pro": { maxTokens: 272_000, @@ -210,7 +337,7 @@ export const azureModels = { cacheReadsPrice: 0.125, supportsVerbosity: true, supportsTemperature: false, - description: "GPT-5.1: The best model for coding and agentic tasks across domains", + description: "GPT-5.1", }, "gpt-5.1-chat": { maxTokens: 16_384, @@ -224,7 +351,7 @@ export const azureModels = { outputPrice: 10, cacheReadsPrice: 0.125, supportsTemperature: false, - description: "GPT-5.1 Chat: Optimized for conversational AI and chat use cases", + description: "GPT-5.1 Chat", }, "gpt-5.1-codex": { maxTokens: 128_000, @@ -240,7 +367,7 @@ export const azureModels = { outputPrice: 10, cacheReadsPrice: 0.125, supportsTemperature: false, - description: "GPT-5.1 Codex: A version of GPT-5.1 optimized for agentic coding in Codex", + description: "GPT-5.1 Codex", }, "gpt-5.1-codex-max": { maxTokens: 128_000, @@ -256,8 +383,7 @@ export const azureModels = { outputPrice: 10, cacheReadsPrice: 0.125, supportsTemperature: false, - description: - "GPT-5.1 Codex Max: Our most intelligent coding model optimized for long-horizon, agentic coding tasks", + description: "GPT-5.1 Codex Max", }, "gpt-5.1-codex-mini": { maxTokens: 128_000, @@ -273,7 +399,7 @@ export const azureModels = { outputPrice: 2, cacheReadsPrice: 0.025, supportsTemperature: false, - description: "GPT-5.1 Codex mini: A version of GPT-5.1 optimized for agentic coding in Codex", + description: "GPT-5.1 Codex Mini", }, "gpt-5.2": { maxTokens: 128_000, @@ -290,7 +416,7 @@ export const azureModels = { cacheReadsPrice: 0.125, supportsVerbosity: true, supportsTemperature: false, - description: "GPT-5.2: Our flagship model for coding and agentic tasks across industries", + description: "GPT-5.2", }, "gpt-5.2-chat": { maxTokens: 16_384, @@ -303,7 +429,7 @@ export const azureModels = { outputPrice: 14, cacheReadsPrice: 0.175, supportsTemperature: false, - description: "GPT-5.2 Chat: Optimized for conversational AI and chat use cases", + description: "GPT-5.2 Chat", }, "gpt-5.2-codex": { maxTokens: 128_000, @@ -319,10 +445,225 @@ export const azureModels = { outputPrice: 14, cacheReadsPrice: 0.175, supportsTemperature: false, - description: - "GPT-5.2 Codex: Our most intelligent coding model optimized for long-horizon, agentic coding tasks", + description: "GPT-5.2 Codex", }, - o1: { + "grok-3": { + maxTokens: 8_192, + contextWindow: 131_072, + supportsImages: false, + supportsPromptCache: true, + inputPrice: 3, + outputPrice: 15, + cacheReadsPrice: 0.75, + supportsTemperature: true, + description: "Grok 3", + }, + "grok-3-mini": { + maxTokens: 8_192, + contextWindow: 131_072, + supportsImages: false, + supportsPromptCache: true, + inputPrice: 0.3, + outputPrice: 0.5, + cacheReadsPrice: 0.075, + supportsTemperature: true, + description: "Grok 3 Mini", + }, + "grok-4": { + maxTokens: 64_000, + contextWindow: 256_000, + supportsImages: false, + supportsPromptCache: true, + inputPrice: 3, + outputPrice: 15, + cacheReadsPrice: 0.75, + supportsTemperature: true, + description: "Grok 4", + }, + "grok-4-fast-non-reasoning": { + maxTokens: 30_000, + contextWindow: 2_000_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 0.2, + outputPrice: 0.5, + cacheReadsPrice: 0.05, + supportsTemperature: true, + description: "Grok 4 Fast (Non-Reasoning)", + }, + "grok-4-fast-reasoning": { + maxTokens: 30_000, + contextWindow: 2_000_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 0.2, + outputPrice: 0.5, + cacheReadsPrice: 0.05, + supportsTemperature: true, + description: "Grok 4 Fast (Reasoning)", + }, + "grok-code-fast-1": { + maxTokens: 10_000, + contextWindow: 256_000, + supportsImages: false, + supportsPromptCache: true, + inputPrice: 0.2, + outputPrice: 1.5, + cacheReadsPrice: 0.02, + supportsTemperature: true, + description: "Grok Code Fast 1", + }, + "kimi-k2-thinking": { + maxTokens: 262_144, + contextWindow: 262_144, + supportsImages: false, + supportsPromptCache: true, + inputPrice: 0.6, + outputPrice: 2.5, + cacheReadsPrice: 0.15, + supportsTemperature: true, + description: "Kimi K2 Thinking", + }, + "llama-3.2-11b-vision-instruct": { + maxTokens: 8_192, + contextWindow: 128_000, + supportsImages: true, + supportsPromptCache: false, + inputPrice: 0.37, + outputPrice: 0.37, + supportsTemperature: true, + description: "Llama-3.2-11B-Vision-Instruct", + }, + "llama-3.2-90b-vision-instruct": { + maxTokens: 8_192, + contextWindow: 128_000, + supportsImages: true, + supportsPromptCache: false, + inputPrice: 2.04, + outputPrice: 2.04, + supportsTemperature: true, + description: "Llama-3.2-90B-Vision-Instruct", + }, + "llama-3.3-70b-instruct": { + maxTokens: 32_768, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.71, + outputPrice: 0.71, + supportsTemperature: true, + description: "Llama-3.3-70B-Instruct", + }, + "llama-4-maverick-17b-128e-instruct-fp8": { + maxTokens: 8_192, + contextWindow: 128_000, + supportsImages: true, + supportsPromptCache: false, + inputPrice: 0.25, + outputPrice: 1, + supportsTemperature: true, + description: "Llama 4 Maverick 17B 128E Instruct FP8", + }, + "llama-4-scout-17b-16e-instruct": { + maxTokens: 8_192, + contextWindow: 128_000, + supportsImages: true, + supportsPromptCache: false, + inputPrice: 0.2, + outputPrice: 0.78, + supportsTemperature: true, + description: "Llama 4 Scout 17B 16E Instruct", + }, + "meta-llama-3.1-405b-instruct": { + maxTokens: 32_768, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 5.33, + outputPrice: 16, + supportsTemperature: true, + description: "Meta-Llama-3.1-405B-Instruct", + }, + "meta-llama-3.1-70b-instruct": { + maxTokens: 32_768, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 2.68, + outputPrice: 3.54, + supportsTemperature: true, + description: "Meta-Llama-3.1-70B-Instruct", + }, + "meta-llama-3.1-8b-instruct": { + maxTokens: 32_768, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.3, + outputPrice: 0.61, + supportsTemperature: true, + description: "Meta-Llama-3.1-8B-Instruct", + }, + "ministral-3b": { + maxTokens: 8_192, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.04, + outputPrice: 0.04, + supportsTemperature: true, + description: "Ministral 3B", + }, + "mistral-large-2411": { + maxTokens: 32_768, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 2, + outputPrice: 6, + supportsTemperature: true, + description: "Mistral Large 24.11", + }, + "mistral-medium-2505": { + maxTokens: 128_000, + contextWindow: 128_000, + supportsImages: true, + supportsPromptCache: false, + inputPrice: 0.4, + outputPrice: 2, + supportsTemperature: true, + description: "Mistral Medium 3", + }, + "mistral-nemo": { + maxTokens: 128_000, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.15, + outputPrice: 0.15, + supportsTemperature: true, + description: "Mistral Nemo", + }, + "mistral-small-2503": { + maxTokens: 32_768, + contextWindow: 128_000, + supportsImages: true, + supportsPromptCache: false, + inputPrice: 0.1, + outputPrice: 0.3, + supportsTemperature: true, + description: "Mistral Small 3.1", + }, + "model-router": { + maxTokens: 16_384, + contextWindow: 128_000, + supportsImages: true, + supportsPromptCache: false, + inputPrice: 0.14, + outputPrice: 0, + description: "Model Router", + }, + "o1": { maxTokens: 100_000, contextWindow: 200_000, supportsImages: true, @@ -336,7 +677,7 @@ export const azureModels = { "o1-mini": { maxTokens: 65_536, contextWindow: 128_000, - supportsImages: true, + supportsImages: false, supportsPromptCache: true, inputPrice: 1.1, outputPrice: 4.4, @@ -347,7 +688,7 @@ export const azureModels = { "o1-preview": { maxTokens: 32_768, contextWindow: 128_000, - supportsImages: true, + supportsImages: false, supportsPromptCache: true, inputPrice: 16.5, outputPrice: 66, @@ -355,7 +696,7 @@ export const azureModels = { supportsTemperature: false, description: "o1-preview", }, - o3: { + "o3": { maxTokens: 100_000, contextWindow: 200_000, supportsImages: true, @@ -394,6 +735,26 @@ export const azureModels = { supportsTemperature: false, description: "o4-mini", }, + "phi-4-mini": { + maxTokens: 4_096, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.075, + outputPrice: 0.3, + supportsTemperature: true, + description: "Phi-4-mini", + }, + "phi-4-mini-reasoning": { + maxTokens: 4_096, + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0.075, + outputPrice: 0.3, + supportsTemperature: true, + description: "Phi-4-mini-reasoning", + }, } as const satisfies Record export type AzureModelId = keyof typeof azureModels