{"version":3,"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/openai-error.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/openai-language-model-capabilities.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/tool/local-shell.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/tool/file-search.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/tool/web-search.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/tool/image-generation.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/5ed40189bf9aeffd1a9a67e2fc832b12d1cd2e01a0c08d3e87e4b19d60f80bc9/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/azure/2.0.108/c493747aa5f96c573afbb8f45d4ec0f862e477f6a12688ccb06ff1609690edaa/node_modules/@ai-sdk/azure/src/azure-openai-tools.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/azure/2.0.108/c493747aa5f96c573afbb8f45d4ec0f862e477f6a12688ccb06ff1609690edaa/node_modules/@ai-sdk/azure/src/version.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/azure/2.0.108/c493747aa5f96c573afbb8f45d4ec0f862e477f6a12688ccb06ff1609690edaa/node_modules/@ai-sdk/azure/src/azure-openai-provider.ts","../src/llm/model/openai-websocket-fetch.ts","../src/llm/model/gateways/azure.ts","../src/llm/model/gateways/mastra.ts","../src/llm/model/gateways/index.ts","../src/llm/model/provider-registry.json","../src/llm/model/provider-registry.ts"],"names":["z","createJsonErrorResponseHandler","convertToBase64","UnsupportedFunctionalityError","lazyValidator","zodSchema","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","generateId","createEventSourceResponseHandler","InvalidResponseDataError","toolCall","isParsableJson","InvalidPromptError","getResponseMetadata","mapOpenAIFinishReason","TooManyEmbeddingValuesForCallError","convertBase64ToUint8Array","mediaTypeToExtension","postFormDataToApi","createBinaryResponseHandler","lazySchema","createProviderDefinedToolFactoryWithOutputSchema","_a","_b","_c","validateTypes","APICallError","loadApiKey","withUserAgentSuffix","loadSetting","path","WebSocket","providerOptions","MastraModelGateway","InMemoryServerCache","MastraError","MASTRA_USER_AGENT","MASTRA_GATEWAY_STREAM_TRANSPORT","createAnthropic","GATEWAY_AUTH_HEADER","createOpenRouter","os","fs","require","createRequire","ModelsDevGateway","NetlifyGateway","isDev","MastraGateway"],"mappings":"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","file":"chunk-M37OYAPC.cjs","sourcesContent":["import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n  error: z.object({\n    message: z.string(),\n\n    // The additional information below is handled loosely to support\n    // OpenAI-compatible providers that have slightly different error\n    // responses:\n    type: z.string().nullish(),\n    param: z.any().nullish(),\n    code: z.union([z.string(), z.number()]).nullish(),\n  }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n  errorSchema: openaiErrorDataSchema,\n  errorToMessage: data => data.error.message,\n});\n","export type OpenAILanguageModelCapabilities = {\n  isReasoningModel: boolean;\n  systemMessageMode: 'remove' | 'system' | 'developer';\n  supportsFlexProcessing: boolean;\n  supportsPriorityProcessing: boolean;\n\n  /**\n   * Allow temperature, topP, logProbs when reasoningEffort is none.\n   */\n  supportsNonReasoningParameters: boolean;\n};\n\nexport function getOpenAILanguageModelCapabilities(\n  modelId: string,\n): OpenAILanguageModelCapabilities {\n  const supportsFlexProcessing =\n    modelId.startsWith('o3') ||\n    modelId.startsWith('o4-mini') ||\n    (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n\n  const supportsPriorityProcessing =\n    modelId.startsWith('gpt-4') ||\n    (modelId.startsWith('gpt-5') &&\n      !modelId.startsWith('gpt-5-nano') &&\n      !modelId.startsWith('gpt-5-chat') &&\n      !modelId.startsWith('gpt-5.4-nano')) ||\n    modelId.startsWith('o3') ||\n    modelId.startsWith('o4-mini');\n\n  const isReasoningModel = !(\n    modelId.startsWith('gpt-3') ||\n    modelId.startsWith('gpt-4') ||\n    modelId.startsWith('chatgpt-4o') ||\n    modelId.startsWith('gpt-5-chat')\n  );\n\n  // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n  // GPT-5.1, GPT-5.2, and GPT-5.4 support temperature, topP, logProbs when reasoningEffort is none\n  const supportsNonReasoningParameters =\n    modelId.startsWith('gpt-5.1') ||\n    modelId.startsWith('gpt-5.2') ||\n    modelId.startsWith('gpt-5.3') ||\n    modelId.startsWith('gpt-5.4');\n\n  const systemMessageMode = isReasoningModel ? 'developer' : 'system';\n\n  return {\n    supportsFlexProcessing,\n    supportsPriorityProcessing,\n    isReasoningModel,\n    systemMessageMode,\n    supportsNonReasoningParameters,\n  };\n}\n","import {\n  type LanguageModelV2CallWarning,\n  type LanguageModelV2Prompt,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport type { OpenAIChatPrompt } from './openai-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToOpenAIChatMessages({\n  prompt,\n  systemMessageMode = 'system',\n}: {\n  prompt: LanguageModelV2Prompt;\n  systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n  messages: OpenAIChatPrompt;\n  warnings: Array<LanguageModelV2CallWarning>;\n} {\n  const messages: OpenAIChatPrompt = [];\n  const warnings: Array<LanguageModelV2CallWarning> = [];\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        switch (systemMessageMode) {\n          case 'system': {\n            messages.push({ role: 'system', content });\n            break;\n          }\n          case 'developer': {\n            messages.push({ role: 'developer', content });\n            break;\n          }\n          case 'remove': {\n            warnings.push({\n              type: 'other',\n              message: 'system messages are removed for this model',\n            });\n            break;\n          }\n          default: {\n            const _exhaustiveCheck: never = systemMessageMode;\n            throw new Error(\n              `Unsupported system message mode: ${_exhaustiveCheck}`,\n            );\n          }\n        }\n        break;\n      }\n\n      case 'user': {\n        if (content.length === 1 && content[0].type === 'text') {\n          messages.push({ role: 'user', content: content[0].text });\n          break;\n        }\n\n        messages.push({\n          role: 'user',\n          content: content.map((part, index) => {\n            switch (part.type) {\n              case 'text': {\n                return { type: 'text', text: part.text };\n              }\n              case 'file': {\n                if (part.mediaType.startsWith('image/')) {\n                  const mediaType =\n                    part.mediaType === 'image/*'\n                      ? 'image/jpeg'\n                      : part.mediaType;\n\n                  return {\n                    type: 'image_url',\n                    image_url: {\n                      url:\n                        part.data instanceof URL\n                          ? part.data.toString()\n                          : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n\n                      // OpenAI specific extension: image detail\n                      detail: part.providerOptions?.openai?.imageDetail,\n                    },\n                  };\n                } else if (part.mediaType.startsWith('audio/')) {\n                  if (part.data instanceof URL) {\n                    throw new UnsupportedFunctionalityError({\n                      functionality: 'audio file parts with URLs',\n                    });\n                  }\n\n                  switch (part.mediaType) {\n                    case 'audio/wav': {\n                      return {\n                        type: 'input_audio',\n                        input_audio: {\n                          data: convertToBase64(part.data),\n                          format: 'wav',\n                        },\n                      };\n                    }\n                    case 'audio/mp3':\n                    case 'audio/mpeg': {\n                      return {\n                        type: 'input_audio',\n                        input_audio: {\n                          data: convertToBase64(part.data),\n                          format: 'mp3',\n                        },\n                      };\n                    }\n\n                    default: {\n                      throw new UnsupportedFunctionalityError({\n                        functionality: `audio content parts with media type ${part.mediaType}`,\n                      });\n                    }\n                  }\n                } else if (part.mediaType === 'application/pdf') {\n                  if (part.data instanceof URL) {\n                    throw new UnsupportedFunctionalityError({\n                      functionality: 'PDF file parts with URLs',\n                    });\n                  }\n\n                  return {\n                    type: 'file',\n                    file:\n                      typeof part.data === 'string' &&\n                      part.data.startsWith('file-')\n                        ? { file_id: part.data }\n                        : {\n                            filename: part.filename ?? `part-${index}.pdf`,\n                            file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n                          },\n                  };\n                } else {\n                  throw new UnsupportedFunctionalityError({\n                    functionality: `file part media type ${part.mediaType}`,\n                  });\n                }\n              }\n            }\n          }),\n        });\n\n        break;\n      }\n\n      case 'assistant': {\n        let text = '';\n        const toolCalls: Array<{\n          id: string;\n          type: 'function';\n          function: { name: string; arguments: string };\n        }> = [];\n\n        for (const part of content) {\n          switch (part.type) {\n            case 'text': {\n              text += part.text;\n              break;\n            }\n            case 'tool-call': {\n              toolCalls.push({\n                id: part.toolCallId,\n                type: 'function',\n                function: {\n                  name: part.toolName,\n                  arguments: JSON.stringify(part.input),\n                },\n              });\n              break;\n            }\n          }\n        }\n\n        messages.push({\n          role: 'assistant',\n          content: text,\n          tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n        });\n\n        break;\n      }\n\n      case 'tool': {\n        for (const toolResponse of content) {\n          const output = toolResponse.output;\n\n          let contentValue: string;\n          switch (output.type) {\n            case 'text':\n            case 'error-text':\n              contentValue = output.value;\n              break;\n            case 'content':\n            case 'json':\n            case 'error-json':\n              contentValue = JSON.stringify(output.value);\n              break;\n          }\n\n          messages.push({\n            role: 'tool',\n            tool_call_id: toolResponse.toolCallId,\n            content: contentValue,\n          });\n        }\n        break;\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  return { messages, warnings };\n}\n","export function getResponseMetadata({\n  id,\n  model,\n  created,\n}: {\n  id?: string | undefined | null;\n  created?: number | undefined | null;\n  model?: string | undefined | null;\n}) {\n  return {\n    id: id ?? undefined,\n    modelId: model ?? undefined,\n    timestamp: created ? new Date(created * 1000) : undefined,\n  };\n}\n","import type { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n  finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n  switch (finishReason) {\n    case 'stop':\n      return 'stop';\n    case 'length':\n      return 'length';\n    case 'content_filter':\n      return 'content-filter';\n    case 'function_call':\n    case 'tool_calls':\n      return 'tool-calls';\n    default:\n      return 'unknown';\n  }\n}\n","import type { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\n\nexport interface OpenAIChatFunctionTool {\n  type: 'function';\n  function: {\n    name: string;\n    description: string | undefined;\n    parameters: JSONSchema7;\n    strict?: boolean;\n  };\n}\n\nexport type OpenAIChatToolChoice =\n  | 'auto'\n  | 'none'\n  | 'required'\n  | { type: 'function'; function: { name: string } };\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatResponseSchema = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      id: z.string().nullish(),\n      created: z.number().nullish(),\n      model: z.string().nullish(),\n      choices: z.array(\n        z.object({\n          message: z.object({\n            role: z.literal('assistant').nullish(),\n            content: z.string().nullish(),\n            tool_calls: z\n              .array(\n                z.object({\n                  id: z.string().nullish(),\n                  type: z.literal('function'),\n                  function: z.object({\n                    name: z.string(),\n                    arguments: z.string(),\n                  }),\n                }),\n              )\n              .nullish(),\n            annotations: z\n              .array(\n                z.object({\n                  type: z.literal('url_citation'),\n                  url_citation: z.object({\n                    start_index: z.number(),\n                    end_index: z.number(),\n                    url: z.string(),\n                    title: z.string(),\n                  }),\n                }),\n              )\n              .nullish(),\n          }),\n          index: z.number(),\n          logprobs: z\n            .object({\n              content: z\n                .array(\n                  z.object({\n                    token: z.string(),\n                    logprob: z.number(),\n                    top_logprobs: z.array(\n                      z.object({\n                        token: z.string(),\n                        logprob: z.number(),\n                      }),\n                    ),\n                  }),\n                )\n                .nullish(),\n            })\n            .nullish(),\n          finish_reason: z.string().nullish(),\n        }),\n      ),\n      usage: z\n        .object({\n          prompt_tokens: z.number().nullish(),\n          completion_tokens: z.number().nullish(),\n          total_tokens: z.number().nullish(),\n          prompt_tokens_details: z\n            .object({\n              cached_tokens: z.number().nullish(),\n            })\n            .nullish(),\n          completion_tokens_details: z\n            .object({\n              reasoning_tokens: z.number().nullish(),\n              accepted_prediction_tokens: z.number().nullish(),\n              rejected_prediction_tokens: z.number().nullish(),\n            })\n            .nullish(),\n        })\n        .nullish(),\n    }),\n  ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatChunkSchema = lazyValidator(() =>\n  zodSchema(\n    z.union([\n      z.object({\n        id: z.string().nullish(),\n        created: z.number().nullish(),\n        model: z.string().nullish(),\n        choices: z.array(\n          z.object({\n            delta: z\n              .object({\n                role: z.enum(['assistant']).nullish(),\n                content: z.string().nullish(),\n                tool_calls: z\n                  .array(\n                    z.object({\n                      index: z.number(),\n                      id: z.string().nullish(),\n                      type: z.literal('function').nullish(),\n                      function: z.object({\n                        name: z.string().nullish(),\n                        arguments: z.string().nullish(),\n                      }),\n                    }),\n                  )\n                  .nullish(),\n                annotations: z\n                  .array(\n                    z.object({\n                      type: z.literal('url_citation'),\n                      url_citation: z.object({\n                        start_index: z.number(),\n                        end_index: z.number(),\n                        url: z.string(),\n                        title: z.string(),\n                      }),\n                    }),\n                  )\n                  .nullish(),\n              })\n              .nullish(),\n            logprobs: z\n              .object({\n                content: z\n                  .array(\n                    z.object({\n                      token: z.string(),\n                      logprob: z.number(),\n                      top_logprobs: z.array(\n                        z.object({\n                          token: z.string(),\n                          logprob: z.number(),\n                        }),\n                      ),\n                    }),\n                  )\n                  .nullish(),\n              })\n              .nullish(),\n            finish_reason: z.string().nullish(),\n            index: z.number(),\n          }),\n        ),\n        usage: z\n          .object({\n            prompt_tokens: z.number().nullish(),\n            completion_tokens: z.number().nullish(),\n            total_tokens: z.number().nullish(),\n            prompt_tokens_details: z\n              .object({\n                cached_tokens: z.number().nullish(),\n              })\n              .nullish(),\n            completion_tokens_details: z\n              .object({\n                reasoning_tokens: z.number().nullish(),\n                accepted_prediction_tokens: z.number().nullish(),\n                rejected_prediction_tokens: z.number().nullish(),\n              })\n              .nullish(),\n          })\n          .nullish(),\n      }),\n      openaiErrorDataSchema,\n    ]),\n  ),\n);\n\nexport type OpenAIChatResponse = InferValidator<\n  typeof openaiChatResponseSchema\n>;\n\nexport type OpenAIChatChunk = InferValidator<typeof openaiChatChunkSchema>;\n","import {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAIChatModelId =\n  | 'o1'\n  | 'o1-2024-12-17'\n  | 'o3-mini'\n  | 'o3-mini-2025-01-31'\n  | 'o3'\n  | 'o3-2025-04-16'\n  | 'gpt-4.1'\n  | 'gpt-4.1-2025-04-14'\n  | 'gpt-4.1-mini'\n  | 'gpt-4.1-mini-2025-04-14'\n  | 'gpt-4.1-nano'\n  | 'gpt-4.1-nano-2025-04-14'\n  | 'gpt-4o'\n  | 'gpt-4o-2024-05-13'\n  | 'gpt-4o-2024-08-06'\n  | 'gpt-4o-2024-11-20'\n  | 'gpt-4o-mini'\n  | 'gpt-4o-mini-2024-07-18'\n  | 'gpt-4-turbo'\n  | 'gpt-4-turbo-2024-04-09'\n  | 'gpt-4'\n  | 'gpt-4-0613'\n  | 'gpt-4.5-preview'\n  | 'gpt-4.5-preview-2025-02-27'\n  | 'gpt-3.5-turbo-0125'\n  | 'gpt-3.5-turbo'\n  | 'gpt-3.5-turbo-1106'\n  | 'chatgpt-4o-latest'\n  | 'gpt-5'\n  | 'gpt-5-2025-08-07'\n  | 'gpt-5-mini'\n  | 'gpt-5-mini-2025-08-07'\n  | 'gpt-5-nano'\n  | 'gpt-5-nano-2025-08-07'\n  | 'gpt-5-chat-latest'\n  | 'gpt-5.1'\n  | 'gpt-5.1-chat-latest'\n  | 'gpt-5.2'\n  | 'gpt-5.2-chat-latest'\n  | 'gpt-5.2-pro'\n  | 'gpt-5.2-pro-2025-12-11'\n  | 'gpt-5.3-chat-latest'\n  | 'gpt-5.4'\n  | 'gpt-5.4-2026-03-05'\n  | 'gpt-5.4-mini'\n  | 'gpt-5.4-mini-2026-03-17'\n  | 'gpt-5.4-nano'\n  | 'gpt-5.4-nano-2026-03-17'\n  | 'gpt-5.4-pro'\n  | 'gpt-5.4-pro-2026-03-05'\n  | (string & {});\n\nexport const openaiChatLanguageModelOptions = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      /**\n       * Modify the likelihood of specified tokens appearing in the completion.\n       *\n       * Accepts a JSON object that maps tokens (specified by their token ID in\n       * the GPT tokenizer) to an associated bias value from -100 to 100.\n       */\n      logitBias: z.record(z.coerce.number<string>(), z.number()).optional(),\n\n      /**\n       * Return the log probabilities of the tokens.\n       *\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\n       *\n       * Setting to a number will return the log probabilities of the top n\n       * tokens that were generated.\n       */\n      logprobs: z.union([z.boolean(), z.number()]).optional(),\n\n      /**\n       * Whether to enable parallel function calling during tool use. Default to true.\n       */\n      parallelToolCalls: z.boolean().optional(),\n\n      /**\n       * A unique identifier representing your end-user, which can help OpenAI to\n       * monitor and detect abuse.\n       */\n      user: z.string().optional(),\n\n      /**\n       * Reasoning effort for reasoning models. Defaults to `medium`.\n       */\n      reasoningEffort: z\n        .enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh'])\n        .optional(),\n\n      /**\n       * Maximum number of completion tokens to generate. Useful for reasoning models.\n       */\n      maxCompletionTokens: z.number().optional(),\n\n      /**\n       * Whether to enable persistence in responses API.\n       */\n      store: z.boolean().optional(),\n\n      /**\n       * Metadata to associate with the request.\n       */\n      metadata: z.record(z.string().max(64), z.string().max(512)).optional(),\n\n      /**\n       * Parameters for prediction mode.\n       */\n      prediction: z.record(z.string(), z.any()).optional(),\n\n      /**\n       * Whether to use structured outputs.\n       *\n       * @default true\n       */\n      structuredOutputs: z.boolean().optional(),\n\n      /**\n       * Service tier for the request.\n       * - 'auto': Default service tier. The request will be processed with the service tier configured in the\n       *           Project settings. Unless otherwise configured, the Project will use 'default'.\n       * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models.\n       * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers.\n       * - 'default': The request will be processed with the standard pricing and performance for the selected model.\n       *\n       * @default 'auto'\n       */\n      serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).optional(),\n\n      /**\n       * Whether to use strict JSON schema validation.\n       *\n       * @default false\n       */\n      strictJsonSchema: z.boolean().optional(),\n\n      /**\n       * Controls the verbosity of the model's responses.\n       * Lower values will result in more concise responses, while higher values will result in more verbose responses.\n       */\n      textVerbosity: z.enum(['low', 'medium', 'high']).optional(),\n\n      /**\n       * A cache key for prompt caching. Allows manual control over prompt caching behavior.\n       * Useful for improving cache hit rates and working around automatic caching issues.\n       */\n      promptCacheKey: z.string().optional(),\n\n      /**\n       * The retention policy for the prompt cache.\n       * - 'in_memory': Default. Standard prompt caching behavior.\n       * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n       *          Currently only available for 5.1 series models.\n       *\n       * @default 'in_memory'\n       */\n      promptCacheRetention: z.enum(['in_memory', '24h']).optional(),\n\n      /**\n       * A stable identifier used to help detect users of your application\n       * that may be violating OpenAI's usage policies. The IDs should be a\n       * string that uniquely identifies each user. We recommend hashing their\n       * username or email address, in order to avoid sending us any identifying\n       * information.\n       */\n      safetyIdentifier: z.string().optional(),\n    }),\n  ),\n);\n\nexport type OpenAIChatLanguageModelOptions = InferValidator<\n  typeof openaiChatLanguageModelOptions\n>;\n","import {\n  type LanguageModelV2CallOptions,\n  type LanguageModelV2CallWarning,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport type {\n  OpenAIChatToolChoice,\n  OpenAIChatFunctionTool,\n} from './openai-chat-api';\n\nexport function prepareChatTools({\n  tools,\n  toolChoice,\n  structuredOutputs,\n  strictJsonSchema,\n}: {\n  tools: LanguageModelV2CallOptions['tools'];\n  toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n  structuredOutputs: boolean;\n  strictJsonSchema: boolean;\n}): {\n  tools?: OpenAIChatFunctionTool[];\n  toolChoice?: OpenAIChatToolChoice;\n  toolWarnings: Array<LanguageModelV2CallWarning>;\n} {\n  // when the tools array is empty, change it to undefined to prevent errors:\n  tools = tools?.length ? tools : undefined;\n\n  const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n  if (tools == null) {\n    return { tools: undefined, toolChoice: undefined, toolWarnings };\n  }\n\n  const openaiTools: OpenAIChatFunctionTool[] = [];\n\n  for (const tool of tools) {\n    switch (tool.type) {\n      case 'function':\n        openaiTools.push({\n          type: 'function',\n          function: {\n            name: tool.name,\n            description: tool.description,\n            parameters: tool.inputSchema,\n            strict: structuredOutputs ? strictJsonSchema : undefined,\n          },\n        });\n        break;\n      default:\n        toolWarnings.push({ type: 'unsupported-tool', tool });\n        break;\n    }\n  }\n\n  if (toolChoice == null) {\n    return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n  }\n\n  const type = toolChoice.type;\n\n  switch (type) {\n    case 'auto':\n    case 'none':\n    case 'required':\n      return { tools: openaiTools, toolChoice: type, toolWarnings };\n    case 'tool':\n      return {\n        tools: openaiTools,\n        toolChoice: {\n          type: 'function',\n          function: {\n            name: toolChoice.toolName,\n          },\n        },\n        toolWarnings,\n      };\n    default: {\n      const _exhaustiveCheck: never = type;\n      throw new UnsupportedFunctionalityError({\n        functionality: `tool choice type: ${_exhaustiveCheck}`,\n      });\n    }\n  }\n}\n","import {\n  type LanguageModelV2,\n  type LanguageModelV2CallOptions,\n  type LanguageModelV2CallWarning,\n  type LanguageModelV2Content,\n  type LanguageModelV2FinishReason,\n  type LanguageModelV2StreamPart,\n  type LanguageModelV2Usage,\n  type SharedV2ProviderMetadata,\n  InvalidResponseDataError,\n} from '@ai-sdk/provider';\nimport {\n  type FetchFunction,\n  type ParseResult,\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  generateId,\n  isParsableJson,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n  type OpenAIChatChunk,\n  openaiChatChunkSchema,\n  openaiChatResponseSchema,\n} from './openai-chat-api';\nimport {\n  type OpenAIChatModelId,\n  openaiChatLanguageModelOptions,\n} from './openai-chat-options';\nimport { prepareChatTools } from './openai-chat-prepare-tools';\n\ntype OpenAIChatConfig = {\n  provider: string;\n  headers: () => Record<string, string | undefined>;\n  url: (options: { modelId: string; path: string }) => string;\n  fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV2 {\n  readonly specificationVersion = 'v2';\n\n  readonly modelId: OpenAIChatModelId;\n\n  readonly supportedUrls = {\n    'image/*': [/^https?:\\/\\/.*$/],\n  };\n\n  private readonly config: OpenAIChatConfig;\n\n  constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  private async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    stopSequences,\n    responseFormat,\n    seed,\n    tools,\n    toolChoice,\n    providerOptions,\n  }: LanguageModelV2CallOptions) {\n    const warnings: LanguageModelV2CallWarning[] = [];\n\n    // Parse provider options\n    const openaiOptions =\n      (await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiChatLanguageModelOptions,\n      })) ?? {};\n\n    const structuredOutputs = openaiOptions.structuredOutputs ?? true;\n    const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n\n    if (topK != null) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'topK',\n      });\n    }\n\n    if (\n      responseFormat?.type === 'json' &&\n      responseFormat.schema != null &&\n      !structuredOutputs\n    ) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'responseFormat',\n        details:\n          'JSON response format schema is only supported with structuredOutputs',\n      });\n    }\n\n    const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n      {\n        prompt,\n        systemMessageMode: modelCapabilities.systemMessageMode,\n      },\n    );\n\n    warnings.push(...messageWarnings);\n\n    const strictJsonSchema = openaiOptions.strictJsonSchema ?? false;\n\n    const baseArgs = {\n      // model id:\n      model: this.modelId,\n\n      // model specific settings:\n      logit_bias: openaiOptions.logitBias,\n      logprobs:\n        openaiOptions.logprobs === true ||\n        typeof openaiOptions.logprobs === 'number'\n          ? true\n          : undefined,\n      top_logprobs:\n        typeof openaiOptions.logprobs === 'number'\n          ? openaiOptions.logprobs\n          : typeof openaiOptions.logprobs === 'boolean'\n            ? openaiOptions.logprobs\n              ? 0\n              : undefined\n            : undefined,\n      user: openaiOptions.user,\n      parallel_tool_calls: openaiOptions.parallelToolCalls,\n\n      // standardized settings:\n      max_tokens: maxOutputTokens,\n      temperature,\n      top_p: topP,\n      frequency_penalty: frequencyPenalty,\n      presence_penalty: presencePenalty,\n      response_format:\n        responseFormat?.type === 'json'\n          ? structuredOutputs && responseFormat.schema != null\n            ? {\n                type: 'json_schema',\n                json_schema: {\n                  schema: responseFormat.schema,\n                  strict: strictJsonSchema,\n                  name: responseFormat.name ?? 'response',\n                  description: responseFormat.description,\n                },\n              }\n            : { type: 'json_object' }\n          : undefined,\n      stop: stopSequences,\n      seed,\n      verbosity: openaiOptions.textVerbosity,\n\n      // openai specific settings:\n      // TODO AI SDK 6: remove, we auto-map maxOutputTokens now\n      max_completion_tokens: openaiOptions.maxCompletionTokens,\n      store: openaiOptions.store,\n      metadata: openaiOptions.metadata,\n      prediction: openaiOptions.prediction,\n      reasoning_effort: openaiOptions.reasoningEffort,\n      service_tier: openaiOptions.serviceTier,\n      prompt_cache_key: openaiOptions.promptCacheKey,\n      prompt_cache_retention: openaiOptions.promptCacheRetention,\n      safety_identifier: openaiOptions.safetyIdentifier,\n\n      // messages:\n      messages,\n    };\n\n    // remove unsupported settings for reasoning models\n    // see https://platform.openai.com/docs/guides/reasoning#limitations\n    if (modelCapabilities.isReasoningModel) {\n      // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs\n      //  https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n      if (\n        openaiOptions.reasoningEffort !== 'none' ||\n        !modelCapabilities.supportsNonReasoningParameters\n      ) {\n        if (baseArgs.temperature != null) {\n          baseArgs.temperature = undefined;\n          warnings.push({\n            type: 'unsupported-setting',\n            setting: 'temperature',\n            details: 'temperature is not supported for reasoning models',\n          });\n        }\n        if (baseArgs.top_p != null) {\n          baseArgs.top_p = undefined;\n          warnings.push({\n            type: 'unsupported-setting',\n            setting: 'topP',\n            details: 'topP is not supported for reasoning models',\n          });\n        }\n        if (baseArgs.logprobs != null) {\n          baseArgs.logprobs = undefined;\n          warnings.push({\n            type: 'other',\n            message: 'logprobs is not supported for reasoning models',\n          });\n        }\n      }\n\n      if (baseArgs.frequency_penalty != null) {\n        baseArgs.frequency_penalty = undefined;\n        warnings.push({\n          type: 'unsupported-setting',\n          setting: 'frequencyPenalty',\n          details: 'frequencyPenalty is not supported for reasoning models',\n        });\n      }\n      if (baseArgs.presence_penalty != null) {\n        baseArgs.presence_penalty = undefined;\n        warnings.push({\n          type: 'unsupported-setting',\n          setting: 'presencePenalty',\n          details: 'presencePenalty is not supported for reasoning models',\n        });\n      }\n      if (baseArgs.logit_bias != null) {\n        baseArgs.logit_bias = undefined;\n        warnings.push({\n          type: 'other',\n          message: 'logitBias is not supported for reasoning models',\n        });\n      }\n\n      if (baseArgs.top_logprobs != null) {\n        baseArgs.top_logprobs = undefined;\n        warnings.push({\n          type: 'other',\n          message: 'topLogprobs is not supported for reasoning models',\n        });\n      }\n\n      // reasoning models use max_completion_tokens instead of max_tokens:\n      if (baseArgs.max_tokens != null) {\n        if (baseArgs.max_completion_tokens == null) {\n          baseArgs.max_completion_tokens = baseArgs.max_tokens;\n        }\n        baseArgs.max_tokens = undefined;\n      }\n    } else if (\n      this.modelId.startsWith('gpt-4o-search-preview') ||\n      this.modelId.startsWith('gpt-4o-mini-search-preview')\n    ) {\n      if (baseArgs.temperature != null) {\n        baseArgs.temperature = undefined;\n        warnings.push({\n          type: 'unsupported-setting',\n          setting: 'temperature',\n          details:\n            'temperature is not supported for the search preview models and has been removed.',\n        });\n      }\n    }\n\n    // Validate flex processing support\n    if (\n      openaiOptions.serviceTier === 'flex' &&\n      !modelCapabilities.supportsFlexProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'serviceTier',\n        details:\n          'flex processing is only available for o3, o4-mini, and gpt-5 models',\n      });\n      baseArgs.service_tier = undefined;\n    }\n\n    // Validate priority processing support\n    if (\n      openaiOptions.serviceTier === 'priority' &&\n      !modelCapabilities.supportsPriorityProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'serviceTier',\n        details:\n          'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n      });\n      baseArgs.service_tier = undefined;\n    }\n\n    const {\n      tools: openaiTools,\n      toolChoice: openaiToolChoice,\n      toolWarnings,\n    } = prepareChatTools({\n      tools,\n      toolChoice,\n      structuredOutputs,\n      strictJsonSchema,\n    });\n\n    return {\n      args: {\n        ...baseArgs,\n        tools: openaiTools,\n        tool_choice: openaiToolChoice,\n      },\n      warnings: [...warnings, ...toolWarnings],\n    };\n  }\n\n  async doGenerate(\n    options: Parameters<LanguageModelV2['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n    const { args: body, warnings } = await this.getArgs(options);\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/chat/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiChatResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const choice = response.choices[0];\n    const content: Array<LanguageModelV2Content> = [];\n\n    // text content:\n    const text = choice.message.content;\n    if (text != null && text.length > 0) {\n      content.push({ type: 'text', text });\n    }\n\n    // tool calls:\n    for (const toolCall of choice.message.tool_calls ?? []) {\n      content.push({\n        type: 'tool-call' as const,\n        toolCallId: toolCall.id ?? generateId(),\n        toolName: toolCall.function.name,\n        input: toolCall.function.arguments!,\n      });\n    }\n\n    // annotations/citations:\n    for (const annotation of choice.message.annotations ?? []) {\n      content.push({\n        type: 'source',\n        sourceType: 'url',\n        id: generateId(),\n        url: annotation.url_citation.url,\n        title: annotation.url_citation.title,\n      });\n    }\n\n    // provider metadata:\n    const completionTokenDetails = response.usage?.completion_tokens_details;\n    const promptTokenDetails = response.usage?.prompt_tokens_details;\n    const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n    if (completionTokenDetails?.accepted_prediction_tokens != null) {\n      providerMetadata.openai.acceptedPredictionTokens =\n        completionTokenDetails?.accepted_prediction_tokens;\n    }\n    if (completionTokenDetails?.rejected_prediction_tokens != null) {\n      providerMetadata.openai.rejectedPredictionTokens =\n        completionTokenDetails?.rejected_prediction_tokens;\n    }\n    if (choice.logprobs?.content != null) {\n      providerMetadata.openai.logprobs = choice.logprobs.content;\n    }\n\n    return {\n      content,\n      finishReason: mapOpenAIFinishReason(choice.finish_reason),\n      usage: {\n        inputTokens: response.usage?.prompt_tokens ?? undefined,\n        outputTokens: response.usage?.completion_tokens ?? undefined,\n        totalTokens: response.usage?.total_tokens ?? undefined,\n        reasoningTokens: completionTokenDetails?.reasoning_tokens ?? undefined,\n        cachedInputTokens: promptTokenDetails?.cached_tokens ?? undefined,\n      },\n      request: { body },\n      response: {\n        ...getResponseMetadata(response),\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n      warnings,\n      providerMetadata,\n    };\n  }\n\n  async doStream(\n    options: Parameters<LanguageModelV2['doStream']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n    const { args, warnings } = await this.getArgs(options);\n\n    const body = {\n      ...args,\n      stream: true,\n      stream_options: {\n        include_usage: true,\n      },\n    };\n\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: '/chat/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiChatChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const toolCalls: Array<{\n      id: string;\n      type: 'function';\n      function: {\n        name: string;\n        arguments: string;\n      };\n      hasFinished: boolean;\n    }> = [];\n\n    let finishReason: LanguageModelV2FinishReason = 'unknown';\n    const usage: LanguageModelV2Usage = {\n      inputTokens: undefined,\n      outputTokens: undefined,\n      totalTokens: undefined,\n    };\n    let metadataExtracted = false;\n    let isActiveText = false;\n\n    const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAIChatChunk>,\n          LanguageModelV2StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              finishReason = 'error';\n              controller.enqueue({ type: 'error', error: chunk.error });\n              return;\n            }\n\n            const value = chunk.value;\n\n            // handle error chunks:\n            if ('error' in value) {\n              finishReason = 'error';\n              controller.enqueue({ type: 'error', error: value.error });\n              return;\n            }\n\n            // extract and emit response metadata once. Usually it comes in the first chunk.\n            // Azure may prepend a chunk with a `\"prompt_filter_results\"` key which does not contain other metadata,\n            // https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-filter-annotations?tabs=powershell\n            if (!metadataExtracted) {\n              const metadata = getResponseMetadata(value);\n              if (Object.values(metadata).some(Boolean)) {\n                metadataExtracted = true;\n                controller.enqueue({\n                  type: 'response-metadata',\n                  ...getResponseMetadata(value),\n                });\n              }\n            }\n\n            if (value.usage != null) {\n              usage.inputTokens = value.usage.prompt_tokens ?? undefined;\n              usage.outputTokens = value.usage.completion_tokens ?? undefined;\n              usage.totalTokens = value.usage.total_tokens ?? undefined;\n              usage.reasoningTokens =\n                value.usage.completion_tokens_details?.reasoning_tokens ??\n                undefined;\n              usage.cachedInputTokens =\n                value.usage.prompt_tokens_details?.cached_tokens ?? undefined;\n\n              if (\n                value.usage.completion_tokens_details\n                  ?.accepted_prediction_tokens != null\n              ) {\n                providerMetadata.openai.acceptedPredictionTokens =\n                  value.usage.completion_tokens_details?.accepted_prediction_tokens;\n              }\n              if (\n                value.usage.completion_tokens_details\n                  ?.rejected_prediction_tokens != null\n              ) {\n                providerMetadata.openai.rejectedPredictionTokens =\n                  value.usage.completion_tokens_details?.rejected_prediction_tokens;\n              }\n            }\n\n            const choice = value.choices[0];\n\n            if (choice?.finish_reason != null) {\n              finishReason = mapOpenAIFinishReason(choice.finish_reason);\n            }\n\n            if (choice?.logprobs?.content != null) {\n              providerMetadata.openai.logprobs = choice.logprobs.content;\n            }\n\n            if (choice?.delta == null) {\n              return;\n            }\n\n            const delta = choice.delta;\n\n            if (delta.content != null) {\n              if (!isActiveText) {\n                controller.enqueue({ type: 'text-start', id: '0' });\n                isActiveText = true;\n              }\n\n              controller.enqueue({\n                type: 'text-delta',\n                id: '0',\n                delta: delta.content,\n              });\n            }\n\n            if (delta.tool_calls != null) {\n              for (const toolCallDelta of delta.tool_calls) {\n                const index = toolCallDelta.index;\n\n                // Tool call start. OpenAI returns all information except the arguments in the first chunk.\n                if (toolCalls[index] == null) {\n                  if (\n                    toolCallDelta.type != null &&\n                    toolCallDelta.type !== 'function'\n                  ) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'function' type.`,\n                    });\n                  }\n\n                  if (toolCallDelta.id == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'id' to be a string.`,\n                    });\n                  }\n\n                  if (toolCallDelta.function?.name == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'function.name' to be a string.`,\n                    });\n                  }\n\n                  controller.enqueue({\n                    type: 'tool-input-start',\n                    id: toolCallDelta.id,\n                    toolName: toolCallDelta.function.name,\n                  });\n\n                  toolCalls[index] = {\n                    id: toolCallDelta.id,\n                    type: 'function',\n                    function: {\n                      name: toolCallDelta.function.name,\n                      arguments: toolCallDelta.function.arguments ?? '',\n                    },\n                    hasFinished: false,\n                  };\n\n                  const toolCall = toolCalls[index];\n\n                  if (\n                    toolCall.function?.name != null &&\n                    toolCall.function?.arguments != null\n                  ) {\n                    // send delta if the argument text has already started:\n                    if (toolCall.function.arguments.length > 0) {\n                      controller.enqueue({\n                        type: 'tool-input-delta',\n                        id: toolCall.id,\n                        delta: toolCall.function.arguments,\n                      });\n                    }\n\n                    // check if tool call is complete\n                    // (some providers send the full tool call in one chunk):\n                    if (isParsableJson(toolCall.function.arguments)) {\n                      controller.enqueue({\n                        type: 'tool-input-end',\n                        id: toolCall.id,\n                      });\n\n                      controller.enqueue({\n                        type: 'tool-call',\n                        toolCallId: toolCall.id ?? generateId(),\n                        toolName: toolCall.function.name,\n                        input: toolCall.function.arguments,\n                      });\n                      toolCall.hasFinished = true;\n                    }\n                  }\n\n                  continue;\n                }\n\n                // existing tool call, merge if not finished\n                const toolCall = toolCalls[index];\n\n                if (toolCall.hasFinished) {\n                  continue;\n                }\n\n                if (toolCallDelta.function?.arguments != null) {\n                  toolCall.function!.arguments +=\n                    toolCallDelta.function?.arguments ?? '';\n                }\n\n                // send delta\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.id,\n                  delta: toolCallDelta.function.arguments ?? '',\n                });\n\n                // check if tool call is complete\n                if (\n                  toolCall.function?.name != null &&\n                  toolCall.function?.arguments != null &&\n                  isParsableJson(toolCall.function.arguments)\n                ) {\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: toolCall.id,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-call',\n                    toolCallId: toolCall.id ?? generateId(),\n                    toolName: toolCall.function.name,\n                    input: toolCall.function.arguments,\n                  });\n                  toolCall.hasFinished = true;\n                }\n              }\n            }\n\n            // annotations/citations:\n            if (delta.annotations != null) {\n              for (const annotation of delta.annotations) {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'url',\n                  id: generateId(),\n                  url: annotation.url_citation.url,\n                  title: annotation.url_citation.title,\n                });\n              }\n            }\n          },\n\n          flush(controller) {\n            if (isActiveText) {\n              controller.enqueue({ type: 'text-end', id: '0' });\n            }\n\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              usage,\n              ...(providerMetadata != null ? { providerMetadata } : {}),\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n","import {\n  type LanguageModelV2Prompt,\n  InvalidPromptError,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n  prompt,\n  user = 'user',\n  assistant = 'assistant',\n}: {\n  prompt: LanguageModelV2Prompt;\n  user?: string;\n  assistant?: string;\n}): {\n  prompt: string;\n  stopSequences?: string[];\n} {\n  // transform to a chat message format:\n  let text = '';\n\n  // if first message is a system message, add it to the text:\n  if (prompt[0].role === 'system') {\n    text += `${prompt[0].content}\\n\\n`;\n    prompt = prompt.slice(1);\n  }\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        throw new InvalidPromptError({\n          message: 'Unexpected system message in prompt: ${content}',\n          prompt,\n        });\n      }\n\n      case 'user': {\n        const userMessage = content\n          .map(part => {\n            switch (part.type) {\n              case 'text': {\n                return part.text;\n              }\n            }\n          })\n          .filter(Boolean)\n          .join('');\n\n        text += `${user}:\\n${userMessage}\\n\\n`;\n        break;\n      }\n\n      case 'assistant': {\n        const assistantMessage = content\n          .map(part => {\n            switch (part.type) {\n              case 'text': {\n                return part.text;\n              }\n              case 'tool-call': {\n                throw new UnsupportedFunctionalityError({\n                  functionality: 'tool-call messages',\n                });\n              }\n            }\n          })\n          .join('');\n\n        text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n        break;\n      }\n\n      case 'tool': {\n        throw new UnsupportedFunctionalityError({\n          functionality: 'tool messages',\n        });\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  // Assistant message prefix:\n  text += `${assistant}:\\n`;\n\n  return {\n    prompt: text,\n    stopSequences: [`\\n${user}:`],\n  };\n}\n","export function getResponseMetadata({\n  id,\n  model,\n  created,\n}: {\n  id?: string | undefined | null;\n  created?: number | undefined | null;\n  model?: string | undefined | null;\n}) {\n  return {\n    id: id ?? undefined,\n    modelId: model ?? undefined,\n    timestamp: created != null ? new Date(created * 1000) : undefined,\n  };\n}\n","import type { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n  finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n  switch (finishReason) {\n    case 'stop':\n      return 'stop';\n    case 'length':\n      return 'length';\n    case 'content_filter':\n      return 'content-filter';\n    case 'function_call':\n    case 'tool_calls':\n      return 'tool-calls';\n    default:\n      return 'unknown';\n  }\n}\n","import { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\nimport {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionResponseSchema = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      id: z.string().nullish(),\n      created: z.number().nullish(),\n      model: z.string().nullish(),\n      choices: z.array(\n        z.object({\n          text: z.string(),\n          finish_reason: z.string(),\n          logprobs: z\n            .object({\n              tokens: z.array(z.string()),\n              token_logprobs: z.array(z.number()),\n              top_logprobs: z.array(z.record(z.string(), z.number())).nullish(),\n            })\n            .nullish(),\n        }),\n      ),\n      usage: z\n        .object({\n          prompt_tokens: z.number(),\n          completion_tokens: z.number(),\n          total_tokens: z.number(),\n        })\n        .nullish(),\n    }),\n  ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionChunkSchema = lazyValidator(() =>\n  zodSchema(\n    z.union([\n      z.object({\n        id: z.string().nullish(),\n        created: z.number().nullish(),\n        model: z.string().nullish(),\n        choices: z.array(\n          z.object({\n            text: z.string(),\n            finish_reason: z.string().nullish(),\n            index: z.number(),\n            logprobs: z\n              .object({\n                tokens: z.array(z.string()),\n                token_logprobs: z.array(z.number()),\n                top_logprobs: z\n                  .array(z.record(z.string(), z.number()))\n                  .nullish(),\n              })\n              .nullish(),\n          }),\n        ),\n        usage: z\n          .object({\n            prompt_tokens: z.number(),\n            completion_tokens: z.number(),\n            total_tokens: z.number(),\n          })\n          .nullish(),\n      }),\n      openaiErrorDataSchema,\n    ]),\n  ),\n);\n\nexport type OpenAICompletionChunk = InferValidator<\n  typeof openaiCompletionChunkSchema\n>;\n\nexport type OpenAICompletionResponse = InferValidator<\n  typeof openaiCompletionResponseSchema\n>;\n","import {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});\n\nexport const openaiCompletionProviderOptions = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      /**\nEcho back the prompt in addition to the completion.\n   */\n      echo: z.boolean().optional(),\n\n      /**\nModify the likelihood of specified tokens appearing in the completion.\n\nAccepts a JSON object that maps tokens (specified by their token ID in\nthe GPT tokenizer) to an associated bias value from -100 to 100. You\ncan use this tokenizer tool to convert text to token IDs. Mathematically,\nthe bias is added to the logits generated by the model prior to sampling.\nThe exact effect will vary per model, but values between -1 and 1 should\ndecrease or increase likelihood of selection; values like -100 or 100\nshould result in a ban or exclusive selection of the relevant token.\n\nAs an example, you can pass {\"50256\": -100} to prevent the <|endoftext|>\ntoken from being generated.\n */\n      logitBias: z.record(z.string(), z.number()).optional(),\n\n      /**\nThe suffix that comes after a completion of inserted text.\n */\n      suffix: z.string().optional(),\n\n      /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n */\n      user: z.string().optional(),\n\n      /**\nReturn the log probabilities of the tokens. Including logprobs will increase\nthe response size and can slow down response times. However, it can\nbe useful to better understand how the model is behaving.\nSetting to true will return the log probabilities of the tokens that\nwere generated.\nSetting to a number will return the log probabilities of the top n\ntokens that were generated.\n   */\n      logprobs: z.union([z.boolean(), z.number()]).optional(),\n    }),\n  ),\n);\n\nexport type OpenAICompletionProviderOptions = InferValidator<\n  typeof openaiCompletionProviderOptions\n>;\n","import type {\n  LanguageModelV2,\n  LanguageModelV2CallWarning,\n  LanguageModelV2FinishReason,\n  LanguageModelV2StreamPart,\n  LanguageModelV2Usage,\n  SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n  type FetchFunction,\n  type ParseResult,\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n  type OpenAICompletionChunk,\n  openaiCompletionChunkSchema,\n  openaiCompletionResponseSchema,\n} from './openai-completion-api';\nimport {\n  type OpenAICompletionModelId,\n  openaiCompletionProviderOptions,\n} from './openai-completion-options';\n\ntype OpenAICompletionConfig = {\n  provider: string;\n  headers: () => Record<string, string | undefined>;\n  url: (options: { modelId: string; path: string }) => string;\n  fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV2 {\n  readonly specificationVersion = 'v2';\n\n  readonly modelId: OpenAICompletionModelId;\n\n  private readonly config: OpenAICompletionConfig;\n\n  private get providerOptionsName(): string {\n    return this.config.provider.split('.')[0].trim();\n  }\n\n  constructor(\n    modelId: OpenAICompletionModelId,\n    config: OpenAICompletionConfig,\n  ) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  readonly supportedUrls: Record<string, RegExp[]> = {\n    // No URLs are supported for completion models.\n  };\n\n  private async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    stopSequences: userStopSequences,\n    responseFormat,\n    tools,\n    toolChoice,\n    seed,\n    providerOptions,\n  }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n    const warnings: LanguageModelV2CallWarning[] = [];\n\n    // Parse provider options\n    const openaiOptions = {\n      ...(await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiCompletionProviderOptions,\n      })),\n      ...(await parseProviderOptions({\n        provider: this.providerOptionsName,\n        providerOptions,\n        schema: openaiCompletionProviderOptions,\n      })),\n    };\n\n    if (topK != null) {\n      warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n    }\n\n    if (tools?.length) {\n      warnings.push({ type: 'unsupported-setting', setting: 'tools' });\n    }\n\n    if (toolChoice != null) {\n      warnings.push({ type: 'unsupported-setting', setting: 'toolChoice' });\n    }\n\n    if (responseFormat != null && responseFormat.type !== 'text') {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'responseFormat',\n        details: 'JSON response format is not supported.',\n      });\n    }\n\n    const { prompt: completionPrompt, stopSequences } =\n      convertToOpenAICompletionPrompt({ prompt });\n\n    const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n    return {\n      args: {\n        // model id:\n        model: this.modelId,\n\n        // model specific settings:\n        echo: openaiOptions.echo,\n        logit_bias: openaiOptions.logitBias,\n        logprobs:\n          openaiOptions?.logprobs === true\n            ? 0\n            : openaiOptions?.logprobs === false\n              ? undefined\n              : openaiOptions?.logprobs,\n        suffix: openaiOptions.suffix,\n        user: openaiOptions.user,\n\n        // standardized settings:\n        max_tokens: maxOutputTokens,\n        temperature,\n        top_p: topP,\n        frequency_penalty: frequencyPenalty,\n        presence_penalty: presencePenalty,\n        seed,\n\n        // prompt:\n        prompt: completionPrompt,\n\n        // stop sequences:\n        stop: stop.length > 0 ? stop : undefined,\n      },\n      warnings,\n    };\n  }\n\n  async doGenerate(\n    options: Parameters<LanguageModelV2['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n    const { args, warnings } = await this.getArgs(options);\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: args,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiCompletionResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const choice = response.choices[0];\n\n    const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n    if (choice.logprobs != null) {\n      providerMetadata.openai.logprobs = choice.logprobs;\n    }\n\n    return {\n      content: [{ type: 'text', text: choice.text }],\n      usage: {\n        inputTokens: response.usage?.prompt_tokens,\n        outputTokens: response.usage?.completion_tokens,\n        totalTokens: response.usage?.total_tokens,\n      },\n      finishReason: mapOpenAIFinishReason(choice.finish_reason),\n      request: { body: args },\n      response: {\n        ...getResponseMetadata(response),\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n      providerMetadata,\n      warnings,\n    };\n  }\n\n  async doStream(\n    options: Parameters<LanguageModelV2['doStream']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n    const { args, warnings } = await this.getArgs(options);\n\n    const body = {\n      ...args,\n      stream: true,\n\n      stream_options: {\n        include_usage: true,\n      },\n    };\n\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: '/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiCompletionChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    let finishReason: LanguageModelV2FinishReason = 'unknown';\n    const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n    const usage: LanguageModelV2Usage = {\n      inputTokens: undefined,\n      outputTokens: undefined,\n      totalTokens: undefined,\n    };\n    let isFirstChunk = true;\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAICompletionChunk>,\n          LanguageModelV2StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              finishReason = 'error';\n              controller.enqueue({ type: 'error', error: chunk.error });\n              return;\n            }\n\n            const value = chunk.value;\n\n            // handle error chunks:\n            if ('error' in value) {\n              finishReason = 'error';\n              controller.enqueue({ type: 'error', error: value.error });\n              return;\n            }\n\n            if (isFirstChunk) {\n              isFirstChunk = false;\n\n              controller.enqueue({\n                type: 'response-metadata',\n                ...getResponseMetadata(value),\n              });\n\n              controller.enqueue({ type: 'text-start', id: '0' });\n            }\n\n            if (value.usage != null) {\n              usage.inputTokens = value.usage.prompt_tokens;\n              usage.outputTokens = value.usage.completion_tokens;\n              usage.totalTokens = value.usage.total_tokens;\n            }\n\n            const choice = value.choices[0];\n\n            if (choice?.finish_reason != null) {\n              finishReason = mapOpenAIFinishReason(choice.finish_reason);\n            }\n\n            if (choice?.logprobs != null) {\n              providerMetadata.openai.logprobs = choice.logprobs;\n            }\n\n            if (choice?.text != null && choice.text.length > 0) {\n              controller.enqueue({\n                type: 'text-delta',\n                id: '0',\n                delta: choice.text,\n              });\n            }\n          },\n\n          flush(controller) {\n            if (!isFirstChunk) {\n              controller.enqueue({ type: 'text-end', id: '0' });\n            }\n\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              providerMetadata,\n              usage,\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n","import {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIEmbeddingModelId =\n  | 'text-embedding-3-small'\n  | 'text-embedding-3-large'\n  | 'text-embedding-ada-002'\n  | (string & {});\n\nexport const openaiEmbeddingProviderOptions = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      /**\nThe number of dimensions the resulting output embeddings should have.\nOnly supported in text-embedding-3 and later models.\n   */\n      dimensions: z.number().optional(),\n\n      /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n*/\n      user: z.string().optional(),\n    }),\n  ),\n);\n\nexport type OpenAIEmbeddingProviderOptions = InferValidator<\n  typeof openaiEmbeddingProviderOptions\n>;\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiTextEmbeddingResponseSchema = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      data: z.array(z.object({ embedding: z.array(z.number()) })),\n      usage: z.object({ prompt_tokens: z.number() }).nullish(),\n    }),\n  ),\n);\n","import {\n  type EmbeddingModelV2,\n  TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createJsonResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n  type OpenAIEmbeddingModelId,\n  openaiEmbeddingProviderOptions,\n} from './openai-embedding-options';\nimport { openaiTextEmbeddingResponseSchema } from './openai-embedding-api';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV2<string> {\n  readonly specificationVersion = 'v2';\n  readonly modelId: OpenAIEmbeddingModelId;\n  readonly maxEmbeddingsPerCall = 2048;\n  readonly supportsParallelCalls = true;\n\n  private readonly config: OpenAIConfig;\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  async doEmbed({\n    values,\n    headers,\n    abortSignal,\n    providerOptions,\n  }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n    Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n  > {\n    if (values.length > this.maxEmbeddingsPerCall) {\n      throw new TooManyEmbeddingValuesForCallError({\n        provider: this.provider,\n        modelId: this.modelId,\n        maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n        values,\n      });\n    }\n\n    // Parse provider options\n    const openaiOptions =\n      (await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiEmbeddingProviderOptions,\n      })) ?? {};\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/embeddings',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), headers),\n      body: {\n        model: this.modelId,\n        input: values,\n        encoding_format: 'float',\n        dimensions: openaiOptions.dimensions,\n        user: openaiOptions.user,\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiTextEmbeddingResponseSchema,\n      ),\n      abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      embeddings: response.data.map(item => item.embedding),\n      usage: response.usage\n        ? { tokens: response.usage.prompt_tokens }\n        : undefined,\n      response: { headers: responseHeaders, body: rawValue },\n    };\n  }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiImageResponseSchema = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      created: z.number().nullish(),\n      data: z.array(\n        z.object({\n          b64_json: z.string(),\n          revised_prompt: z.string().nullish(),\n        }),\n      ),\n      background: z.string().nullish(),\n      output_format: z.string().nullish(),\n      size: z.string().nullish(),\n      quality: z.string().nullish(),\n      usage: z\n        .object({\n          input_tokens: z.number().nullish(),\n          output_tokens: z.number().nullish(),\n          total_tokens: z.number().nullish(),\n          input_tokens_details: z\n            .object({\n              image_tokens: z.number().nullish(),\n              text_tokens: z.number().nullish(),\n            })\n            .nullish(),\n        })\n        .nullish(),\n    }),\n  ),\n);\n","import {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIImageModelId =\n  | 'dall-e-3'\n  | 'dall-e-2'\n  | 'gpt-image-1'\n  | 'gpt-image-1-mini'\n  | 'gpt-image-1.5'\n  | 'gpt-image-2'\n  | (string & {});\n\n// https://platform.openai.com/docs/guides/images\nexport const modelMaxImagesPerCall: Record<OpenAIImageModelId, number> = {\n  'dall-e-3': 1,\n  'dall-e-2': 10,\n  'gpt-image-1': 10,\n  'gpt-image-1-mini': 10,\n  'gpt-image-1.5': 10,\n  'gpt-image-2': 10,\n};\n\nexport const hasDefaultResponseFormat = new Set([\n  'gpt-image-1',\n  'gpt-image-1-mini',\n  'gpt-image-1.5',\n  'gpt-image-2',\n]);\n\nconst baseImageModelOptionsObject = z.object({\n  /**\n   * Quality of the generated image(s).\n   *\n   * Valid values: `standard`, `hd`, `low`, `medium`, `high`, `auto`.\n   */\n  quality: z\n    .enum(['standard', 'hd', 'low', 'medium', 'high', 'auto'])\n    .optional(),\n\n  /**\n   * Background behavior for the generated image(s).\n   *\n   * If `transparent`, the output format must support transparency\n   * (i.e. `png` or `webp`).\n   */\n  background: z.enum(['transparent', 'opaque', 'auto']).optional(),\n\n  /**\n   * Format in which the generated image(s) are returned.\n   */\n  outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n\n  /**\n   * Compression level (0-100) for the generated image(s). Applies to the\n   * `jpeg` and `webp` output formats.\n   */\n  outputCompression: z.number().int().min(0).max(100).optional(),\n\n  /**\n   * A unique identifier representing your end-user, which can help OpenAI\n   * to monitor and detect abuse.\n   */\n  user: z.string().optional(),\n});\n\nexport const openaiImageModelOptions = lazyValidator(() =>\n  zodSchema(baseImageModelOptionsObject),\n);\n\nexport type OpenAIImageModelOptions = InferValidator<\n  typeof openaiImageModelOptions\n>;\n\nexport const openaiImageModelGenerationOptions = lazyValidator(() =>\n  zodSchema(\n    baseImageModelOptionsObject.extend({\n      /**\n       * Style of the generated image. `vivid` produces hyper-real and\n       * dramatic images; `natural` produces more subdued, less hyper-real\n       * looking images.\n       */\n      style: z.enum(['vivid', 'natural']).optional(),\n\n      /**\n       * Content moderation level for the generated image(s). `low` applies\n       * less restrictive filtering.\n       */\n      moderation: z.enum(['auto', 'low']).optional(),\n    }),\n  ),\n);\n\nexport type OpenAIImageModelGenerationOptions = InferValidator<\n  typeof openaiImageModelGenerationOptions\n>;\n","import type { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createJsonResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiImageResponseSchema } from './openai-image-api';\nimport {\n  type OpenAIImageModelId,\n  hasDefaultResponseFormat,\n  modelMaxImagesPerCall,\n  openaiImageModelGenerationOptions,\n} from './openai-image-options';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n  _internal?: {\n    currentDate?: () => Date;\n  };\n}\n\nexport class OpenAIImageModel implements ImageModelV2 {\n  readonly specificationVersion = 'v2';\n\n  get maxImagesPerCall(): number {\n    return modelMaxImagesPerCall[this.modelId] ?? 1;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(\n    readonly modelId: OpenAIImageModelId,\n    private readonly config: OpenAIImageModelConfig,\n  ) {}\n\n  async doGenerate({\n    prompt,\n    n,\n    size,\n    aspectRatio,\n    seed,\n    providerOptions,\n    headers,\n    abortSignal,\n  }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n    Awaited<ReturnType<ImageModelV2['doGenerate']>>\n  > {\n    const warnings: Array<ImageModelV2CallWarning> = [];\n\n    if (aspectRatio != null) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'aspectRatio',\n        details:\n          'This model does not support aspect ratio. Use `size` instead.',\n      });\n    }\n\n    if (seed != null) {\n      warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n    }\n\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n    const openaiOptions =\n      (await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiImageModelGenerationOptions,\n      })) ?? {};\n\n    const { value: response, responseHeaders } = await postJsonToApi({\n      url: this.config.url({\n        path: '/images/generations',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), headers),\n      body: {\n        model: this.modelId,\n        prompt,\n        n,\n        size,\n        quality: openaiOptions.quality,\n        style: openaiOptions.style,\n        background: openaiOptions.background,\n        moderation: openaiOptions.moderation,\n        output_format: openaiOptions.outputFormat,\n        output_compression: openaiOptions.outputCompression,\n        user: openaiOptions.user,\n        ...(!hasDefaultResponseFormat.has(this.modelId)\n          ? { response_format: 'b64_json' }\n          : {}),\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiImageResponseSchema,\n      ),\n      abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      images: response.data.map(item => item.b64_json),\n      warnings,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n      },\n      providerMetadata: {\n        openai: {\n          images: response.data.map((item, index) => ({\n            ...(item.revised_prompt\n              ? { revisedPrompt: item.revised_prompt }\n              : {}),\n            ...(response.created != null ? { created: response.created } : {}),\n            ...(response.size != null ? { size: response.size } : {}),\n            ...(response.quality != null ? { quality: response.quality } : {}),\n            ...(response.background != null\n              ? { background: response.background }\n              : {}),\n            ...(response.output_format != null\n              ? { outputFormat: response.output_format }\n              : {}),\n            ...distributeTokenDetails(\n              response.usage,\n              index,\n              response.data.length,\n            ),\n          })),\n        },\n      },\n    };\n  }\n}\n\n/**\n * Distributes token usage details evenly across images, with the remainder\n * assigned to the last image so that summing across all entries gives the\n * exact total.\n */\nfunction distributeTokenDetails(\n  usage:\n    | {\n        input_tokens?: number | null;\n        output_tokens?: number | null;\n        total_tokens?: number | null;\n        input_tokens_details?: {\n          image_tokens?: number | null;\n          text_tokens?: number | null;\n        } | null;\n      }\n    | null\n    | undefined,\n  index: number,\n  total: number,\n): {\n  imageTokens?: number;\n  textTokens?: number;\n  inputTokens?: number;\n  outputTokens?: number;\n} {\n  if (usage == null) {\n    return {};\n  }\n\n  const result: {\n    imageTokens?: number;\n    textTokens?: number;\n    inputTokens?: number;\n    outputTokens?: number;\n  } = {};\n\n  const details = usage.input_tokens_details;\n\n  if (details?.image_tokens != null) {\n    const base = Math.floor(details.image_tokens / total);\n    const remainder = details.image_tokens - base * (total - 1);\n    result.imageTokens = index === total - 1 ? remainder : base;\n  }\n\n  if (details?.text_tokens != null) {\n    const base = Math.floor(details.text_tokens / total);\n    const remainder = details.text_tokens - base * (total - 1);\n    result.textTokens = index === total - 1 ? remainder : base;\n  }\n\n  if (usage.input_tokens != null) {\n    const base = Math.floor(usage.input_tokens / total);\n    const remainder = usage.input_tokens - base * (total - 1);\n    result.inputTokens = index === total - 1 ? remainder : base;\n  }\n\n  if (usage.output_tokens != null) {\n    const base = Math.floor(usage.output_tokens / total);\n    const remainder = usage.output_tokens - base * (total - 1);\n    result.outputTokens = index === total - 1 ? remainder : base;\n  }\n\n  return result;\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const openaiTranscriptionResponseSchema = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      text: z.string(),\n      language: z.string().nullish(),\n      duration: z.number().nullish(),\n      words: z\n        .array(\n          z.object({\n            word: z.string(),\n            start: z.number(),\n            end: z.number(),\n          }),\n        )\n        .nullish(),\n      segments: z\n        .array(\n          z.object({\n            id: z.number(),\n            seek: z.number(),\n            start: z.number(),\n            end: z.number(),\n            text: z.string(),\n            tokens: z.array(z.number()),\n            temperature: z.number(),\n            avg_logprob: z.number(),\n            compression_ratio: z.number(),\n            no_speech_prob: z.number(),\n          }),\n        )\n        .nullish(),\n    }),\n  ),\n);\n","import {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAITranscriptionModelId =\n  | 'whisper-1'\n  | 'gpt-4o-mini-transcribe'\n  | 'gpt-4o-transcribe'\n  | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createTranscription\nexport const openAITranscriptionProviderOptions = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      /**\n       * Additional information to include in the transcription response.\n       */\n\n      include: z.array(z.string()).optional(),\n\n      /**\n       * The language of the input audio in ISO-639-1 format.\n       */\n      language: z.string().optional(),\n\n      /**\n       * An optional text to guide the model's style or continue a previous audio segment.\n       */\n      prompt: z.string().optional(),\n\n      /**\n       * The sampling temperature, between 0 and 1.\n       * @default 0\n       */\n      temperature: z.number().min(0).max(1).default(0).optional(),\n\n      /**\n       * The timestamp granularities to populate for this transcription.\n       * @default ['segment']\n       */\n      timestampGranularities: z\n        .array(z.enum(['word', 'segment']))\n        .default(['segment'])\n        .optional(),\n    }),\n  ),\n);\n\nexport type OpenAITranscriptionProviderOptions = InferValidator<\n  typeof openAITranscriptionProviderOptions\n>;\n","import type {\n  TranscriptionModelV2,\n  TranscriptionModelV2CallOptions,\n  TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  convertBase64ToUint8Array,\n  createJsonResponseHandler,\n  mediaTypeToExtension,\n  parseProviderOptions,\n  postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiTranscriptionResponseSchema } from './openai-transcription-api';\nimport {\n  type OpenAITranscriptionModelId,\n  type OpenAITranscriptionProviderOptions,\n  openAITranscriptionProviderOptions,\n} from './openai-transcription-options';\n\nexport type OpenAITranscriptionCallOptions = Omit<\n  TranscriptionModelV2CallOptions,\n  'providerOptions'\n> & {\n  providerOptions?: {\n    openai?: OpenAITranscriptionProviderOptions;\n  };\n};\n\ninterface OpenAITranscriptionModelConfig extends OpenAIConfig {\n  _internal?: {\n    currentDate?: () => Date;\n  };\n}\n\n// https://platform.openai.com/docs/guides/speech-to-text#supported-languages\nconst languageMap = {\n  afrikaans: 'af',\n  arabic: 'ar',\n  armenian: 'hy',\n  azerbaijani: 'az',\n  belarusian: 'be',\n  bosnian: 'bs',\n  bulgarian: 'bg',\n  catalan: 'ca',\n  chinese: 'zh',\n  croatian: 'hr',\n  czech: 'cs',\n  danish: 'da',\n  dutch: 'nl',\n  english: 'en',\n  estonian: 'et',\n  finnish: 'fi',\n  french: 'fr',\n  galician: 'gl',\n  german: 'de',\n  greek: 'el',\n  hebrew: 'he',\n  hindi: 'hi',\n  hungarian: 'hu',\n  icelandic: 'is',\n  indonesian: 'id',\n  italian: 'it',\n  japanese: 'ja',\n  kannada: 'kn',\n  kazakh: 'kk',\n  korean: 'ko',\n  latvian: 'lv',\n  lithuanian: 'lt',\n  macedonian: 'mk',\n  malay: 'ms',\n  marathi: 'mr',\n  maori: 'mi',\n  nepali: 'ne',\n  norwegian: 'no',\n  persian: 'fa',\n  polish: 'pl',\n  portuguese: 'pt',\n  romanian: 'ro',\n  russian: 'ru',\n  serbian: 'sr',\n  slovak: 'sk',\n  slovenian: 'sl',\n  spanish: 'es',\n  swahili: 'sw',\n  swedish: 'sv',\n  tagalog: 'tl',\n  tamil: 'ta',\n  thai: 'th',\n  turkish: 'tr',\n  ukrainian: 'uk',\n  urdu: 'ur',\n  vietnamese: 'vi',\n  welsh: 'cy',\n};\n\nexport class OpenAITranscriptionModel implements TranscriptionModelV2 {\n  readonly specificationVersion = 'v2';\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(\n    readonly modelId: OpenAITranscriptionModelId,\n    private readonly config: OpenAITranscriptionModelConfig,\n  ) {}\n\n  private async getArgs({\n    audio,\n    mediaType,\n    providerOptions,\n  }: OpenAITranscriptionCallOptions) {\n    const warnings: TranscriptionModelV2CallWarning[] = [];\n\n    // Parse provider options\n    const openAIOptions = await parseProviderOptions({\n      provider: 'openai',\n      providerOptions,\n      schema: openAITranscriptionProviderOptions,\n    });\n\n    // Create form data with base fields\n    const formData = new FormData();\n    const blob =\n      audio instanceof Uint8Array\n        ? new Blob([audio])\n        : new Blob([convertBase64ToUint8Array(audio)]);\n\n    formData.append('model', this.modelId);\n    const fileExtension = mediaTypeToExtension(mediaType);\n    formData.append(\n      'file',\n      new File([blob], 'audio', { type: mediaType }),\n      `audio.${fileExtension}`,\n    );\n\n    // Add provider-specific options\n    if (openAIOptions) {\n      const transcriptionModelOptions = {\n        include: openAIOptions.include,\n        language: openAIOptions.language,\n        prompt: openAIOptions.prompt,\n        // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n        // prefer verbose_json to get segments for models that support it\n        response_format: [\n          'gpt-4o-transcribe',\n          'gpt-4o-mini-transcribe',\n        ].includes(this.modelId)\n          ? 'json'\n          : 'verbose_json',\n        temperature: openAIOptions.temperature,\n        timestamp_granularities: openAIOptions.timestampGranularities,\n      };\n\n      for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n        if (value != null) {\n          if (Array.isArray(value)) {\n            for (const item of value) {\n              formData.append(`${key}[]`, String(item));\n            }\n          } else {\n            formData.append(key, String(value));\n          }\n        }\n      }\n    }\n\n    return {\n      formData,\n      warnings,\n    };\n  }\n\n  async doGenerate(\n    options: OpenAITranscriptionCallOptions,\n  ): Promise<Awaited<ReturnType<TranscriptionModelV2['doGenerate']>>> {\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const { formData, warnings } = await this.getArgs(options);\n\n    const {\n      value: response,\n      responseHeaders,\n      rawValue: rawResponse,\n    } = await postFormDataToApi({\n      url: this.config.url({\n        path: '/audio/transcriptions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      formData,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiTranscriptionResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const language =\n      response.language != null && response.language in languageMap\n        ? languageMap[response.language as keyof typeof languageMap]\n        : undefined;\n\n    return {\n      text: response.text,\n      segments:\n        response.segments?.map(segment => ({\n          text: segment.text,\n          startSecond: segment.start,\n          endSecond: segment.end,\n        })) ??\n        response.words?.map(word => ({\n          text: word.word,\n          startSecond: word.start,\n          endSecond: word.end,\n        })) ??\n        [],\n      language,\n      durationInSeconds: response.duration ?? undefined,\n      warnings,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n    };\n  }\n}\n","import {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAISpeechModelId =\n  | 'tts-1'\n  | 'tts-1-hd'\n  | 'gpt-4o-mini-tts'\n  | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nexport const openaiSpeechProviderOptionsSchema = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      instructions: z.string().nullish(),\n      speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n    }),\n  ),\n);\n\nexport type OpenAISpeechCallOptions = InferValidator<\n  typeof openaiSpeechProviderOptionsSchema\n>;\n","import type { SpeechModelV2, SpeechModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createBinaryResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport type { OpenAISpeechAPITypes } from './openai-speech-api';\nimport {\n  type OpenAISpeechModelId,\n  openaiSpeechProviderOptionsSchema,\n} from './openai-speech-options';\n\ninterface OpenAISpeechModelConfig extends OpenAIConfig {\n  _internal?: {\n    currentDate?: () => Date;\n  };\n}\n\nexport class OpenAISpeechModel implements SpeechModelV2 {\n  readonly specificationVersion = 'v2';\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(\n    readonly modelId: OpenAISpeechModelId,\n    private readonly config: OpenAISpeechModelConfig,\n  ) {}\n\n  private async getArgs({\n    text,\n    voice = 'alloy',\n    outputFormat = 'mp3',\n    speed,\n    instructions,\n    language,\n    providerOptions,\n  }: Parameters<SpeechModelV2['doGenerate']>[0]) {\n    const warnings: SpeechModelV2CallWarning[] = [];\n\n    // Parse provider options\n    const openAIOptions = await parseProviderOptions({\n      provider: 'openai',\n      providerOptions,\n      schema: openaiSpeechProviderOptionsSchema,\n    });\n\n    // Create request body\n    const requestBody: Record<string, unknown> = {\n      model: this.modelId,\n      input: text,\n      voice,\n      response_format: 'mp3',\n      speed,\n      instructions,\n    };\n\n    if (outputFormat) {\n      if (['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'].includes(outputFormat)) {\n        requestBody.response_format = outputFormat;\n      } else {\n        warnings.push({\n          type: 'unsupported-setting',\n          setting: 'outputFormat',\n          details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n        });\n      }\n    }\n\n    // Add provider-specific options\n    if (openAIOptions) {\n      const speechModelOptions: OpenAISpeechAPITypes = {};\n\n      for (const key in speechModelOptions) {\n        const value = speechModelOptions[key as keyof OpenAISpeechAPITypes];\n        if (value !== undefined) {\n          requestBody[key] = value;\n        }\n      }\n    }\n\n    if (language) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'language',\n        details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`,\n      });\n    }\n\n    return {\n      requestBody,\n      warnings,\n    };\n  }\n\n  async doGenerate(\n    options: Parameters<SpeechModelV2['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<SpeechModelV2['doGenerate']>>> {\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const { requestBody, warnings } = await this.getArgs(options);\n\n    const {\n      value: audio,\n      responseHeaders,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/audio/speech',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: requestBody,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createBinaryResponseHandler(),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      audio,\n      warnings,\n      request: {\n        body: JSON.stringify(requestBody),\n      },\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n    };\n  }\n}\n","import {\n  createProviderDefinedToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z.object({\n        type: z.literal('exec'),\n        command: z.array(z.string()),\n        timeoutMs: z.number().optional(),\n        user: z.string().optional(),\n        workingDirectory: z.string().optional(),\n        env: z.record(z.string(), z.string()).optional(),\n      }),\n    }),\n  ),\n);\n\nexport const localShellOutputSchema = lazySchema(() =>\n  zodSchema(z.object({ output: z.string() })),\n);\n\nexport const localShell = createProviderDefinedToolFactoryWithOutputSchema<\n  {\n    /**\n     * Execute a shell command on the server.\n     */\n    action: {\n      type: 'exec';\n\n      /**\n       * The command to run.\n       */\n      command: string[];\n\n      /**\n       * Optional timeout in milliseconds for the command.\n       */\n      timeoutMs?: number;\n\n      /**\n       * Optional user to run the command as.\n       */\n      user?: string;\n\n      /**\n       * Optional working directory to run the command in.\n       */\n      workingDirectory?: string;\n\n      /**\n       * Environment variables to set for the command.\n       */\n      env?: Record<string, string>;\n    };\n  },\n  {\n    /**\n     * The output of local shell tool call.\n     */\n    output: string;\n  },\n  {}\n>({\n  id: 'openai.local_shell',\n  name: 'local_shell',\n  inputSchema: localShellInputSchema,\n  outputSchema: localShellOutputSchema,\n});\n","import {\n  type LanguageModelV2CallWarning,\n  type LanguageModelV2Prompt,\n  type LanguageModelV2ToolCallPart,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n  convertToBase64,\n  parseProviderOptions,\n  validateTypes,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n  localShellInputSchema,\n  localShellOutputSchema,\n} from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport type {\n  OpenAIResponsesFunctionCallOutput,\n  OpenAIResponsesInput,\n  OpenAIResponsesReasoning,\n} from './openai-responses-api';\n\n/**\n * Check if a string is a file ID based on the given prefixes\n * Returns false if prefixes is undefined (disables file ID detection)\n */\nfunction isFileId(data: string, prefixes?: readonly string[]): boolean {\n  if (!prefixes) return false;\n  return prefixes.some(prefix => data.startsWith(prefix));\n}\n\nexport async function convertToOpenAIResponsesInput({\n  prompt,\n  systemMessageMode,\n  fileIdPrefixes,\n  store,\n  hasLocalShellTool = false,\n}: {\n  prompt: LanguageModelV2Prompt;\n  systemMessageMode: 'system' | 'developer' | 'remove';\n  fileIdPrefixes?: readonly string[];\n  store: boolean;\n  hasLocalShellTool?: boolean;\n}): Promise<{\n  input: OpenAIResponsesInput;\n  warnings: Array<LanguageModelV2CallWarning>;\n}> {\n  let input: OpenAIResponsesInput = [];\n  const warnings: Array<LanguageModelV2CallWarning> = [];\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        switch (systemMessageMode) {\n          case 'system': {\n            input.push({ role: 'system', content });\n            break;\n          }\n          case 'developer': {\n            input.push({ role: 'developer', content });\n            break;\n          }\n          case 'remove': {\n            warnings.push({\n              type: 'other',\n              message: 'system messages are removed for this model',\n            });\n            break;\n          }\n          default: {\n            const _exhaustiveCheck: never = systemMessageMode;\n            throw new Error(\n              `Unsupported system message mode: ${_exhaustiveCheck}`,\n            );\n          }\n        }\n        break;\n      }\n\n      case 'user': {\n        input.push({\n          role: 'user',\n          content: content.map((part, index) => {\n            switch (part.type) {\n              case 'text': {\n                return { type: 'input_text', text: part.text };\n              }\n              case 'file': {\n                if (part.mediaType.startsWith('image/')) {\n                  const mediaType =\n                    part.mediaType === 'image/*'\n                      ? 'image/jpeg'\n                      : part.mediaType;\n\n                  return {\n                    type: 'input_image',\n                    ...(part.data instanceof URL\n                      ? { image_url: part.data.toString() }\n                      : typeof part.data === 'string' &&\n                          isFileId(part.data, fileIdPrefixes)\n                        ? { file_id: part.data }\n                        : {\n                            image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`,\n                          }),\n                    detail: part.providerOptions?.openai?.imageDetail,\n                  };\n                } else if (part.mediaType === 'application/pdf') {\n                  if (part.data instanceof URL) {\n                    return {\n                      type: 'input_file',\n                      file_url: part.data.toString(),\n                    };\n                  }\n                  return {\n                    type: 'input_file',\n                    ...(typeof part.data === 'string' &&\n                    isFileId(part.data, fileIdPrefixes)\n                      ? { file_id: part.data }\n                      : {\n                          filename: part.filename ?? `part-${index}.pdf`,\n                          file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n                        }),\n                  };\n                } else {\n                  throw new UnsupportedFunctionalityError({\n                    functionality: `file part media type ${part.mediaType}`,\n                  });\n                }\n              }\n            }\n          }),\n        });\n\n        break;\n      }\n\n      case 'assistant': {\n        const reasoningMessages: Record<string, OpenAIResponsesReasoning> = {};\n        const toolCallParts: Record<string, LanguageModelV2ToolCallPart> = {};\n\n        for (const part of content) {\n          switch (part.type) {\n            case 'text': {\n              const id = part.providerOptions?.openai?.itemId as\n                | string\n                | undefined;\n              const phase = part.providerOptions?.openai?.phase as\n                | 'commentary'\n                | 'final_answer'\n                | null\n                | undefined;\n\n              // item references reduce the payload size\n              if (store && id != null) {\n                input.push({ type: 'item_reference', id });\n                break;\n              }\n\n              input.push({\n                role: 'assistant',\n                content: [{ type: 'output_text', text: part.text }],\n                id,\n                ...(phase != null && { phase }),\n              });\n\n              break;\n            }\n            case 'tool-call': {\n              toolCallParts[part.toolCallId] = part;\n\n              if (part.providerExecuted) {\n                break;\n              }\n\n              const id = part.providerOptions?.openai?.itemId as\n                | string\n                | undefined;\n\n              // item references reduce the payload size\n              if (store && id != null) {\n                input.push({ type: 'item_reference', id });\n                break;\n              }\n\n              if (hasLocalShellTool && part.toolName === 'local_shell') {\n                const parsedInput = await validateTypes({\n                  value: part.input,\n                  schema: localShellInputSchema,\n                });\n                input.push({\n                  type: 'local_shell_call',\n                  call_id: part.toolCallId,\n                  id: id!,\n                  action: {\n                    type: 'exec',\n                    command: parsedInput.action.command,\n                    timeout_ms: parsedInput.action.timeoutMs,\n                    user: parsedInput.action.user,\n                    working_directory: parsedInput.action.workingDirectory,\n                    env: parsedInput.action.env,\n                  },\n                });\n\n                break;\n              }\n\n              input.push({\n                type: 'function_call',\n                call_id: part.toolCallId,\n                name: part.toolName,\n                arguments: JSON.stringify(part.input),\n                id,\n              });\n              break;\n            }\n\n            // assistant tool result parts are from provider-executed tools:\n            case 'tool-result': {\n              if (store) {\n                // use item references to refer to tool results from built-in tools\n                input.push({ type: 'item_reference', id: part.toolCallId });\n              } else {\n                warnings.push({\n                  type: 'other',\n                  message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`,\n                });\n              }\n\n              break;\n            }\n\n            case 'reasoning': {\n              const providerOptions = await parseProviderOptions({\n                provider: 'openai',\n                providerOptions: part.providerOptions,\n                schema: openaiResponsesReasoningProviderOptionsSchema,\n              });\n\n              const reasoningId = providerOptions?.itemId;\n\n              if (reasoningId != null) {\n                const reasoningMessage = reasoningMessages[reasoningId];\n\n                if (store) {\n                  // use item references to refer to reasoning (single reference)\n                  // when the first part is encountered\n                  if (reasoningMessage === undefined) {\n                    input.push({ type: 'item_reference', id: reasoningId });\n\n                    // store unused reasoning message to mark id as used\n                    reasoningMessages[reasoningId] = {\n                      type: 'reasoning',\n                      id: reasoningId,\n                      summary: [],\n                    };\n                  }\n                } else {\n                  const summaryParts: Array<{\n                    type: 'summary_text';\n                    text: string;\n                  }> = [];\n\n                  if (part.text.length > 0) {\n                    summaryParts.push({\n                      type: 'summary_text',\n                      text: part.text,\n                    });\n                  } else if (reasoningMessage !== undefined) {\n                    warnings.push({\n                      type: 'other',\n                      message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`,\n                    });\n                  }\n\n                  if (reasoningMessage === undefined) {\n                    reasoningMessages[reasoningId] = {\n                      type: 'reasoning',\n                      id: reasoningId,\n                      encrypted_content:\n                        providerOptions?.reasoningEncryptedContent,\n                      summary: summaryParts,\n                    };\n                    input.push(reasoningMessages[reasoningId]);\n                  } else {\n                    reasoningMessage.summary.push(...summaryParts);\n\n                    // updated encrypted content to enable setting it in the last summary part:\n                    if (providerOptions?.reasoningEncryptedContent != null) {\n                      reasoningMessage.encrypted_content =\n                        providerOptions.reasoningEncryptedContent;\n                    }\n                  }\n                }\n              } else {\n                warnings.push({\n                  type: 'other',\n                  message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`,\n                });\n              }\n              break;\n            }\n          }\n        }\n\n        break;\n      }\n\n      case 'tool': {\n        for (const part of content) {\n          const output = part.output;\n\n          if (\n            hasLocalShellTool &&\n            part.toolName === 'local_shell' &&\n            output.type === 'json'\n          ) {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: localShellOutputSchema,\n            });\n\n            input.push({\n              type: 'local_shell_call_output',\n              call_id: part.toolCallId,\n              output: parsedOutput.output,\n            });\n            break;\n          }\n\n          let contentValue: OpenAIResponsesFunctionCallOutput['output'];\n          switch (output.type) {\n            case 'text':\n            case 'error-text':\n              contentValue = output.value;\n              break;\n            case 'json':\n            case 'error-json':\n              contentValue = JSON.stringify(output.value);\n              break;\n            case 'content':\n              contentValue = output.value.map(item => {\n                switch (item.type) {\n                  case 'text': {\n                    return { type: 'input_text' as const, text: item.text };\n                  }\n                  case 'media': {\n                    return item.mediaType.startsWith('image/')\n                      ? {\n                          type: 'input_image' as const,\n                          image_url: `data:${item.mediaType};base64,${item.data}`,\n                        }\n                      : {\n                          type: 'input_file' as const,\n                          filename: 'data',\n                          file_data: `data:${item.mediaType};base64,${item.data}`,\n                        };\n                  }\n                }\n              });\n              break;\n          }\n\n          input.push({\n            type: 'function_call_output',\n            call_id: part.toolCallId,\n            output: contentValue,\n          });\n        }\n\n        break;\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  // when store is false, remove reasoning parts without encrypted content\n  if (\n    !store &&\n    input.some(\n      item =>\n        'type' in item &&\n        item.type === 'reasoning' &&\n        item.encrypted_content == null,\n    )\n  ) {\n    warnings.push({\n      type: 'other',\n      message:\n        'Reasoning parts without encrypted content are not supported when store is false. Skipping reasoning parts.',\n    });\n    input = input.filter(\n      item =>\n        !('type' in item) ||\n        item.type !== 'reasoning' ||\n        item.encrypted_content != null,\n    );\n  }\n\n  return { input, warnings };\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n  itemId: z.string().nullish(),\n  reasoningEncryptedContent: z.string().nullish(),\n});\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<\n  typeof openaiResponsesReasoningProviderOptionsSchema\n>;\n","import type { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n  finishReason,\n  hasFunctionCall,\n}: {\n  finishReason: string | null | undefined;\n  // flag that checks if there have been client-side tool calls (not executed by openai)\n  hasFunctionCall: boolean;\n}): LanguageModelV2FinishReason {\n  switch (finishReason) {\n    case undefined:\n    case null:\n      return hasFunctionCall ? 'tool-calls' : 'stop';\n    case 'max_output_tokens':\n      return 'length';\n    case 'content_filter':\n      return 'content-filter';\n    default:\n      return hasFunctionCall ? 'tool-calls' : 'unknown';\n  }\n}\n","import type { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIResponsesInput = Array<OpenAIResponsesInputItem>;\n\nexport type OpenAIResponsesInputItem =\n  | OpenAIResponsesSystemMessage\n  | OpenAIResponsesUserMessage\n  | OpenAIResponsesAssistantMessage\n  | OpenAIResponsesFunctionCall\n  | OpenAIResponsesFunctionCallOutput\n  | OpenAIResponsesComputerCall\n  | OpenAIResponsesLocalShellCall\n  | OpenAIResponsesLocalShellCallOutput\n  | OpenAIResponsesReasoning\n  | OpenAIResponsesItemReference;\n\nexport type OpenAIResponsesIncludeValue =\n  | 'web_search_call.action.sources'\n  | 'code_interpreter_call.outputs'\n  | 'computer_call_output.output.image_url'\n  | 'file_search_call.results'\n  | 'message.input_image.image_url'\n  | 'message.output_text.logprobs'\n  | 'reasoning.encrypted_content';\n\nexport type OpenAIResponsesIncludeOptions =\n  | Array<OpenAIResponsesIncludeValue>\n  | undefined\n  | null;\n\nexport type OpenAIResponsesSystemMessage = {\n  role: 'system' | 'developer';\n  content: string;\n};\n\nexport type OpenAIResponsesUserMessage = {\n  role: 'user';\n  content: Array<\n    | { type: 'input_text'; text: string }\n    | { type: 'input_image'; image_url: string }\n    | { type: 'input_image'; file_id: string }\n    | { type: 'input_file'; file_url: string }\n    | { type: 'input_file'; filename: string; file_data: string }\n    | { type: 'input_file'; file_id: string }\n  >;\n};\n\nexport type OpenAIResponsesAssistantMessage = {\n  role: 'assistant';\n  content: Array<{ type: 'output_text'; text: string }>;\n  id?: string;\n  phase?: 'commentary' | 'final_answer' | null;\n};\n\nexport type OpenAIResponsesFunctionCall = {\n  type: 'function_call';\n  call_id: string;\n  name: string;\n  arguments: string;\n  id?: string;\n};\n\nexport type OpenAIResponsesFunctionCallOutput = {\n  type: 'function_call_output';\n  call_id: string;\n  output:\n    | string\n    | Array<\n        | { type: 'input_text'; text: string }\n        | { type: 'input_image'; image_url: string }\n        | { type: 'input_file'; filename: string; file_data: string }\n      >;\n};\n\nexport type OpenAIResponsesComputerCall = {\n  type: 'computer_call';\n  id: string;\n  status?: string;\n};\n\nexport type OpenAIResponsesLocalShellCall = {\n  type: 'local_shell_call';\n  id: string;\n  call_id: string;\n  action: {\n    type: 'exec';\n    command: string[];\n    timeout_ms?: number;\n    user?: string;\n    working_directory?: string;\n    env?: Record<string, string>;\n  };\n};\n\nexport type OpenAIResponsesLocalShellCallOutput = {\n  type: 'local_shell_call_output';\n  call_id: string;\n  output: string;\n};\n\nexport type OpenAIResponsesItemReference = {\n  type: 'item_reference';\n  id: string;\n};\n\n/**\n * A filter used to compare a specified attribute key to a given value using a defined comparison operation.\n */\nexport type OpenAIResponsesFileSearchToolComparisonFilter = {\n  /**\n   * The key to compare against the value.\n   */\n  key: string;\n\n  /**\n   * Specifies the comparison operator: eq, ne, gt, gte, lt, lte, in, nin.\n   */\n  type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin';\n\n  /**\n   * The value to compare against the attribute key; supports string, number, boolean, or array of string types.\n   */\n  value: string | number | boolean | string[];\n};\n\n/**\n * Combine multiple filters using and or or.\n */\nexport type OpenAIResponsesFileSearchToolCompoundFilter = {\n  /**\n   * Type of operation: and or or.\n   */\n  type: 'and' | 'or';\n\n  /**\n   * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter.\n   */\n  filters: Array<\n    | OpenAIResponsesFileSearchToolComparisonFilter\n    | OpenAIResponsesFileSearchToolCompoundFilter\n  >;\n};\n\nexport type OpenAIResponsesTool =\n  | {\n      type: 'function';\n      name: string;\n      description: string | undefined;\n      parameters: JSONSchema7;\n      strict: boolean | undefined;\n    }\n  | {\n      type: 'web_search';\n      external_web_access: boolean | undefined;\n      filters: { allowed_domains: string[] | undefined } | undefined;\n      search_context_size: 'low' | 'medium' | 'high' | undefined;\n      user_location:\n        | {\n            type: 'approximate';\n            city?: string;\n            country?: string;\n            region?: string;\n            timezone?: string;\n          }\n        | undefined;\n    }\n  | {\n      type: 'web_search_preview';\n      search_context_size: 'low' | 'medium' | 'high' | undefined;\n      user_location:\n        | {\n            type: 'approximate';\n            city?: string;\n            country?: string;\n            region?: string;\n            timezone?: string;\n          }\n        | undefined;\n    }\n  | {\n      type: 'code_interpreter';\n      container: string | { type: 'auto'; file_ids: string[] | undefined };\n    }\n  | {\n      type: 'file_search';\n      vector_store_ids: string[];\n      max_num_results: number | undefined;\n      ranking_options:\n        | { ranker?: string; score_threshold?: number }\n        | undefined;\n      filters:\n        | OpenAIResponsesFileSearchToolComparisonFilter\n        | OpenAIResponsesFileSearchToolCompoundFilter\n        | undefined;\n    }\n  | {\n      type: 'image_generation';\n      background: 'auto' | 'opaque' | 'transparent' | undefined;\n      input_fidelity: 'low' | 'high' | undefined;\n      input_image_mask:\n        | {\n            file_id: string | undefined;\n            image_url: string | undefined;\n          }\n        | undefined;\n      model: string | undefined;\n      moderation: 'auto' | undefined;\n      output_compression: number | undefined;\n      output_format: 'png' | 'jpeg' | 'webp' | undefined;\n      quality: 'auto' | 'low' | 'medium' | 'high' | undefined;\n      size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined;\n    }\n  | {\n      type: 'local_shell';\n    };\n\nexport type OpenAIResponsesReasoning = {\n  type: 'reasoning';\n  id: string;\n  encrypted_content?: string | null;\n  summary: Array<{\n    type: 'summary_text';\n    text: string;\n  }>;\n};\n\nexport const openaiResponsesChunkSchema = lazyValidator(() =>\n  zodSchema(\n    z.union([\n      z.object({\n        type: z.literal('response.output_text.delta'),\n        item_id: z.string(),\n        delta: z.string(),\n        logprobs: z\n          .array(\n            z.object({\n              token: z.string(),\n              logprob: z.number(),\n              top_logprobs: z.array(\n                z.object({\n                  token: z.string(),\n                  logprob: z.number(),\n                }),\n              ),\n            }),\n          )\n          .nullish(),\n      }),\n      z.object({\n        type: z.enum(['response.completed', 'response.incomplete']),\n        response: z.object({\n          incomplete_details: z.object({ reason: z.string() }).nullish(),\n          usage: z.object({\n            input_tokens: z.number(),\n            input_tokens_details: z\n              .object({ cached_tokens: z.number().nullish() })\n              .nullish(),\n            output_tokens: z.number(),\n            output_tokens_details: z\n              .object({ reasoning_tokens: z.number().nullish() })\n              .nullish(),\n          }),\n          service_tier: z.string().nullish(),\n        }),\n      }),\n      z.object({\n        type: z.literal('response.created'),\n        response: z.object({\n          id: z.string(),\n          created_at: z.number(),\n          model: z.string(),\n          service_tier: z.string().nullish(),\n        }),\n      }),\n      z.object({\n        type: z.literal('response.output_item.added'),\n        output_index: z.number(),\n        item: z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('message'),\n            id: z.string(),\n            phase: z.enum(['commentary', 'final_answer']).nullish(),\n          }),\n          z.object({\n            type: z.literal('reasoning'),\n            id: z.string(),\n            encrypted_content: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('function_call'),\n            id: z.string(),\n            call_id: z.string(),\n            name: z.string(),\n            arguments: z.string(),\n          }),\n          z.object({\n            type: z.literal('web_search_call'),\n            id: z.string(),\n            status: z.string(),\n          }),\n          z.object({\n            type: z.literal('computer_call'),\n            id: z.string(),\n            status: z.string(),\n          }),\n          z.object({\n            type: z.literal('file_search_call'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('image_generation_call'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('code_interpreter_call'),\n            id: z.string(),\n            container_id: z.string(),\n            code: z.string().nullable(),\n            outputs: z\n              .array(\n                z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('logs'), logs: z.string() }),\n                  z.object({ type: z.literal('image'), url: z.string() }),\n                ]),\n              )\n              .nullable(),\n            status: z.string(),\n          }),\n        ]),\n      }),\n      z.object({\n        type: z.literal('response.output_item.done'),\n        output_index: z.number(),\n        item: z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('message'),\n            id: z.string(),\n            phase: z.enum(['commentary', 'final_answer']).nullish(),\n          }),\n          z.object({\n            type: z.literal('reasoning'),\n            id: z.string(),\n            encrypted_content: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('function_call'),\n            id: z.string(),\n            call_id: z.string(),\n            name: z.string(),\n            arguments: z.string(),\n            status: z.literal('completed'),\n          }),\n          z.object({\n            type: z.literal('code_interpreter_call'),\n            id: z.string(),\n            code: z.string().nullable(),\n            container_id: z.string(),\n            outputs: z\n              .array(\n                z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('logs'), logs: z.string() }),\n                  z.object({ type: z.literal('image'), url: z.string() }),\n                ]),\n              )\n              .nullable(),\n          }),\n          z.object({\n            type: z.literal('image_generation_call'),\n            id: z.string(),\n            result: z.string(),\n          }),\n          z.object({\n            type: z.literal('web_search_call'),\n            id: z.string(),\n            status: z.string(),\n            action: z\n              .discriminatedUnion('type', [\n                z.object({\n                  type: z.literal('search'),\n                  query: z.string().nullish(),\n                  sources: z\n                    .array(\n                      z.discriminatedUnion('type', [\n                        z.object({ type: z.literal('url'), url: z.string() }),\n                        z.object({ type: z.literal('api'), name: z.string() }),\n                      ]),\n                    )\n                    .nullish(),\n                }),\n                z.object({\n                  type: z.literal('open_page'),\n                  url: z.string().nullish(),\n                }),\n                z.object({\n                  type: z.literal('find_in_page'),\n                  url: z.string().nullish(),\n                  pattern: z.string().nullish(),\n                }),\n              ])\n              .nullish(),\n          }),\n          z.object({\n            type: z.literal('file_search_call'),\n            id: z.string(),\n            queries: z.array(z.string()),\n            results: z\n              .array(\n                z.object({\n                  attributes: z.record(z.string(), z.unknown()),\n                  file_id: z.string(),\n                  filename: z.string(),\n                  score: z.number(),\n                  text: z.string(),\n                }),\n              )\n              .nullish(),\n          }),\n          z.object({\n            type: z.literal('local_shell_call'),\n            id: z.string(),\n            call_id: z.string(),\n            action: z.object({\n              type: z.literal('exec'),\n              command: z.array(z.string()),\n              timeout_ms: z.number().optional(),\n              user: z.string().optional(),\n              working_directory: z.string().optional(),\n              env: z.record(z.string(), z.string()).optional(),\n            }),\n          }),\n          z.object({\n            type: z.literal('computer_call'),\n            id: z.string(),\n            status: z.literal('completed'),\n          }),\n        ]),\n      }),\n      z.object({\n        type: z.literal('response.function_call_arguments.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.image_generation_call.partial_image'),\n        item_id: z.string(),\n        output_index: z.number(),\n        partial_image_b64: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.code_interpreter_call_code.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.code_interpreter_call_code.done'),\n        item_id: z.string(),\n        output_index: z.number(),\n        code: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.output_text.annotation.added'),\n        annotation: z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('url_citation'),\n            start_index: z.number(),\n            end_index: z.number(),\n            url: z.string(),\n            title: z.string(),\n          }),\n          z.object({\n            type: z.literal('file_citation'),\n            file_id: z.string(),\n            filename: z.string().nullish(),\n            index: z.number().nullish(),\n            start_index: z.number().nullish(),\n            end_index: z.number().nullish(),\n            quote: z.string().nullish(),\n          }),\n        ]),\n      }),\n      z.object({\n        type: z.literal('response.reasoning_summary_part.added'),\n        item_id: z.string(),\n        summary_index: z.number(),\n      }),\n      z.object({\n        type: z.literal('response.reasoning_summary_text.delta'),\n        item_id: z.string(),\n        summary_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.reasoning_summary_part.done'),\n        item_id: z.string(),\n        summary_index: z.number(),\n      }),\n      z.object({\n        type: z.literal('error'),\n        sequence_number: z.number(),\n        error: z.object({\n          type: z.string(),\n          code: z.string(),\n          message: z.string(),\n          param: z.string().nullish(),\n        }),\n      }),\n      z\n        .object({ type: z.string() })\n        .loose()\n        .transform(value => ({\n          type: 'unknown_chunk' as const,\n          message: value.type,\n        })), // fallback for unknown chunks\n    ]),\n  ),\n);\n\nexport type OpenAIResponsesChunk = InferValidator<\n  typeof openaiResponsesChunkSchema\n>;\n\nexport type OpenAIResponsesLogprobs = NonNullable<\n  (OpenAIResponsesChunk & {\n    type: 'response.output_text.delta';\n  })['logprobs']\n> | null;\n\nexport type OpenAIResponsesWebSearchAction = NonNullable<\n  ((OpenAIResponsesChunk & {\n    type: 'response.output_item.done';\n  })['item'] & {\n    type: 'web_search_call';\n  })['action']\n>;\n\nexport const openaiResponsesResponseSchema = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      id: z.string().optional(),\n      created_at: z.number().optional(),\n      error: z\n        .object({\n          message: z.string(),\n          type: z.string(),\n          param: z.string().nullish(),\n          code: z.string(),\n        })\n        .nullish(),\n      model: z.string().optional(),\n      output: z\n        .array(\n          z.discriminatedUnion('type', [\n            z.object({\n              type: z.literal('message'),\n              role: z.literal('assistant'),\n              id: z.string(),\n              phase: z.enum(['commentary', 'final_answer']).nullish(),\n              content: z.array(\n                z.object({\n                  type: z.literal('output_text'),\n                  text: z.string(),\n                  logprobs: z\n                    .array(\n                      z.object({\n                        token: z.string(),\n                        logprob: z.number(),\n                        top_logprobs: z.array(\n                          z.object({\n                            token: z.string(),\n                            logprob: z.number(),\n                          }),\n                        ),\n                      }),\n                    )\n                    .nullish(),\n                  annotations: z.array(\n                    z.discriminatedUnion('type', [\n                      z.object({\n                        type: z.literal('url_citation'),\n                        start_index: z.number(),\n                        end_index: z.number(),\n                        url: z.string(),\n                        title: z.string(),\n                      }),\n                      z.object({\n                        type: z.literal('file_citation'),\n                        file_id: z.string(),\n                        filename: z.string().nullish(),\n                        index: z.number().nullish(),\n                        start_index: z.number().nullish(),\n                        end_index: z.number().nullish(),\n                        quote: z.string().nullish(),\n                      }),\n                      z.object({\n                        type: z.literal('container_file_citation'),\n                        container_id: z.string(),\n                        file_id: z.string(),\n                        filename: z.string().nullish(),\n                        start_index: z.number().nullish(),\n                        end_index: z.number().nullish(),\n                        index: z.number().nullish(),\n                      }),\n                      z.object({\n                        type: z.literal('file_path'),\n                        file_id: z.string(),\n                        index: z.number().nullish(),\n                      }),\n                    ]),\n                  ),\n                }),\n              ),\n            }),\n            z.object({\n              type: z.literal('web_search_call'),\n              id: z.string(),\n              status: z.string(),\n              action: z\n                .discriminatedUnion('type', [\n                  z.object({\n                    type: z.literal('search'),\n                    query: z.string().nullish(),\n                    sources: z\n                      .array(\n                        z.discriminatedUnion('type', [\n                          z.object({ type: z.literal('url'), url: z.string() }),\n                          z.object({\n                            type: z.literal('api'),\n                            name: z.string(),\n                          }),\n                        ]),\n                      )\n                      .nullish(),\n                  }),\n                  z.object({\n                    type: z.literal('open_page'),\n                    url: z.string().nullish(),\n                  }),\n                  z.object({\n                    type: z.literal('find_in_page'),\n                    url: z.string().nullish(),\n                    pattern: z.string().nullish(),\n                  }),\n                ])\n                .nullish(),\n            }),\n            z.object({\n              type: z.literal('file_search_call'),\n              id: z.string(),\n              queries: z.array(z.string()),\n              results: z\n                .array(\n                  z.object({\n                    attributes: z.record(\n                      z.string(),\n                      z.union([z.string(), z.number(), z.boolean()]),\n                    ),\n                    file_id: z.string(),\n                    filename: z.string(),\n                    score: z.number(),\n                    text: z.string(),\n                  }),\n                )\n                .nullish(),\n            }),\n            z.object({\n              type: z.literal('code_interpreter_call'),\n              id: z.string(),\n              code: z.string().nullable(),\n              container_id: z.string(),\n              outputs: z\n                .array(\n                  z.discriminatedUnion('type', [\n                    z.object({ type: z.literal('logs'), logs: z.string() }),\n                    z.object({ type: z.literal('image'), url: z.string() }),\n                  ]),\n                )\n                .nullable(),\n            }),\n            z.object({\n              type: z.literal('image_generation_call'),\n              id: z.string(),\n              result: z.string(),\n            }),\n            z.object({\n              type: z.literal('local_shell_call'),\n              id: z.string(),\n              call_id: z.string(),\n              action: z.object({\n                type: z.literal('exec'),\n                command: z.array(z.string()),\n                timeout_ms: z.number().optional(),\n                user: z.string().optional(),\n                working_directory: z.string().optional(),\n                env: z.record(z.string(), z.string()).optional(),\n              }),\n            }),\n            z.object({\n              type: z.literal('function_call'),\n              call_id: z.string(),\n              name: z.string(),\n              arguments: z.string(),\n              id: z.string(),\n            }),\n            z.object({\n              type: z.literal('computer_call'),\n              id: z.string(),\n              status: z.string().optional(),\n            }),\n            z.object({\n              type: z.literal('reasoning'),\n              id: z.string(),\n              encrypted_content: z.string().nullish(),\n              summary: z.array(\n                z.object({\n                  type: z.literal('summary_text'),\n                  text: z.string(),\n                }),\n              ),\n            }),\n          ]),\n        )\n        .optional(),\n      service_tier: z.string().nullish(),\n      incomplete_details: z.object({ reason: z.string() }).nullish(),\n      usage: z\n        .object({\n          input_tokens: z.number(),\n          input_tokens_details: z\n            .object({ cached_tokens: z.number().nullish() })\n            .nullish(),\n          output_tokens: z.number(),\n          output_tokens_details: z\n            .object({ reasoning_tokens: z.number().nullish() })\n            .nullish(),\n        })\n        .optional(),\n    }),\n  ),\n);\n","import {\n  type InferValidator,\n  lazyValidator,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * `top_logprobs` request body argument can be set to an integer between\n * 0 and 20 specifying the number of most likely tokens to return at each\n * token position, each with an associated log probability.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs\n */\nexport const TOP_LOGPROBS_MAX = 20;\n\nexport const openaiResponsesReasoningModelIds = [\n  'o1',\n  'o1-2024-12-17',\n  'o3',\n  'o3-2025-04-16',\n  'o3-deep-research',\n  'o3-deep-research-2025-06-26',\n  'o3-mini',\n  'o3-mini-2025-01-31',\n  'o4-mini',\n  'o4-mini-2025-04-16',\n  'o4-mini-deep-research',\n  'o4-mini-deep-research-2025-06-26',\n  'codex-mini-latest',\n  'computer-use-preview',\n  'gpt-5',\n  'gpt-5-2025-08-07',\n  'gpt-5-codex',\n  'gpt-5-mini',\n  'gpt-5-mini-2025-08-07',\n  'gpt-5-nano',\n  'gpt-5-nano-2025-08-07',\n  'gpt-5-pro',\n  'gpt-5-pro-2025-10-06',\n  'gpt-5.1',\n  'gpt-5.1-chat-latest',\n  'gpt-5.1-codex-mini',\n  'gpt-5.1-codex',\n  'gpt-5.1-codex-max',\n  'gpt-5.2',\n  'gpt-5.2-chat-latest',\n  'gpt-5.2-pro',\n  'gpt-5.2-codex',\n  'gpt-5.3-chat-latest',\n  'gpt-5.3-codex',\n  'gpt-5.4',\n  'gpt-5.4-2026-03-05',\n  'gpt-5.4-mini',\n  'gpt-5.4-mini-2026-03-17',\n  'gpt-5.4-nano',\n  'gpt-5.4-nano-2026-03-17',\n  'gpt-5.4-pro',\n  'gpt-5.4-pro-2026-03-05',\n] as const;\n\nexport const openaiResponsesModelIds = [\n  'gpt-4.1',\n  'gpt-4.1-2025-04-14',\n  'gpt-4.1-mini',\n  'gpt-4.1-mini-2025-04-14',\n  'gpt-4.1-nano',\n  'gpt-4.1-nano-2025-04-14',\n  'gpt-4o',\n  'gpt-4o-2024-05-13',\n  'gpt-4o-2024-08-06',\n  'gpt-4o-2024-11-20',\n  'gpt-4o-audio-preview',\n  'gpt-4o-audio-preview-2024-10-01',\n  'gpt-4o-audio-preview-2024-12-17',\n  'gpt-4o-search-preview',\n  'gpt-4o-search-preview-2025-03-11',\n  'gpt-4o-mini-search-preview',\n  'gpt-4o-mini-search-preview-2025-03-11',\n  'gpt-4o-mini',\n  'gpt-4o-mini-2024-07-18',\n  'gpt-4-turbo',\n  'gpt-4-turbo-2024-04-09',\n  'gpt-4-turbo-preview',\n  'gpt-4-0125-preview',\n  'gpt-4-1106-preview',\n  'gpt-4',\n  'gpt-4-0613',\n  'gpt-4.5-preview',\n  'gpt-4.5-preview-2025-02-27',\n  'gpt-3.5-turbo-0125',\n  'gpt-3.5-turbo',\n  'gpt-3.5-turbo-1106',\n  'chatgpt-4o-latest',\n  'gpt-5-chat-latest',\n  ...openaiResponsesReasoningModelIds,\n] as const;\n\nexport type OpenAIResponsesModelId =\n  | 'chatgpt-4o-latest'\n  | 'gpt-3.5-turbo-0125'\n  | 'gpt-3.5-turbo-1106'\n  | 'gpt-3.5-turbo'\n  | 'gpt-4-0613'\n  | 'gpt-4-turbo-2024-04-09'\n  | 'gpt-4-turbo'\n  | 'gpt-4.1-2025-04-14'\n  | 'gpt-4.1-mini-2025-04-14'\n  | 'gpt-4.1-mini'\n  | 'gpt-4.1-nano-2025-04-14'\n  | 'gpt-4.1-nano'\n  | 'gpt-4.1'\n  | 'gpt-4'\n  | 'gpt-4o-2024-05-13'\n  | 'gpt-4o-2024-08-06'\n  | 'gpt-4o-2024-11-20'\n  | 'gpt-4o-mini-2024-07-18'\n  | 'gpt-4o-mini'\n  | 'gpt-4o'\n  | 'gpt-5.1'\n  | 'gpt-5.1-chat-latest'\n  | 'gpt-5.1-codex-mini'\n  | 'gpt-5.1-codex'\n  | 'gpt-5.1-codex-max'\n  | 'gpt-5.2'\n  | 'gpt-5.2-chat-latest'\n  | 'gpt-5.2-pro'\n  | 'gpt-5.2-codex'\n  | 'gpt-5.3-chat-latest'\n  | 'gpt-5.3-codex'\n  | 'gpt-5.4'\n  | 'gpt-5.4-2026-03-05'\n  | 'gpt-5.4-mini'\n  | 'gpt-5.4-mini-2026-03-17'\n  | 'gpt-5.4-nano'\n  | 'gpt-5.4-nano-2026-03-17'\n  | 'gpt-5.4-pro'\n  | 'gpt-5.4-pro-2026-03-05'\n  | 'gpt-5-2025-08-07'\n  | 'gpt-5-chat-latest'\n  | 'gpt-5-codex'\n  | 'gpt-5-mini-2025-08-07'\n  | 'gpt-5-mini'\n  | 'gpt-5-nano-2025-08-07'\n  | 'gpt-5-nano'\n  | 'gpt-5-pro-2025-10-06'\n  | 'gpt-5-pro'\n  | 'gpt-5'\n  | 'o1-2024-12-17'\n  | 'o1'\n  | 'o3-2025-04-16'\n  | 'o3-mini-2025-01-31'\n  | 'o3-mini'\n  | 'o3'\n  | (string & {});\n\n// TODO AI SDK 6: use optional here instead of nullish\nexport const openaiResponsesProviderOptionsSchema = lazyValidator(() =>\n  zodSchema(\n    z.object({\n      conversation: z.string().nullish(),\n      include: z\n        .array(\n          z.enum([\n            'reasoning.encrypted_content', // handled internally by default, only needed for unknown reasoning models\n            'file_search_call.results',\n            'message.output_text.logprobs',\n          ]),\n        )\n        .nullish(),\n      instructions: z.string().nullish(),\n\n      /**\n       * Return the log probabilities of the tokens.\n       *\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\n       *\n       * Setting to a number will return the log probabilities of the top n\n       * tokens that were generated.\n       *\n       * @see https://platform.openai.com/docs/api-reference/responses/create\n       * @see https://cookbook.openai.com/examples/using_logprobs\n       */\n      logprobs: z\n        .union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)])\n        .optional(),\n\n      /**\n       * The maximum number of total calls to built-in tools that can be processed in a response.\n       * This maximum number applies across all built-in tool calls, not per individual tool.\n       * Any further attempts to call a tool by the model will be ignored.\n       */\n      maxToolCalls: z.number().nullish(),\n\n      metadata: z.any().nullish(),\n      parallelToolCalls: z.boolean().nullish(),\n      previousResponseId: z.string().nullish(),\n      promptCacheKey: z.string().nullish(),\n\n      /**\n       * The retention policy for the prompt cache.\n       * - 'in_memory': Default. Standard prompt caching behavior.\n       * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n       *          Currently only available for 5.1 series models.\n       *\n       * @default 'in_memory'\n       */\n      promptCacheRetention: z.enum(['in_memory', '24h']).nullish(),\n\n      /**\n       * Reasoning effort for reasoning models. Defaults to `medium`. If you use\n       * `providerOptions` to set the `reasoningEffort` option, this model setting will be ignored.\n       * Valid values: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh'\n       *\n       * The 'none' type for `reasoningEffort` is only available for OpenAI's GPT-5.1\n       * models. Also, the 'xhigh' type for `reasoningEffort` is only available for\n       * OpenAI's GPT-5.1-Codex-Max model. Setting `reasoningEffort` to 'none' or 'xhigh' with unsupported models will result in\n       * an error.\n       */\n      reasoningEffort: z.string().nullish(),\n      reasoningSummary: z.string().nullish(),\n      safetyIdentifier: z.string().nullish(),\n      serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).nullish(),\n      store: z.boolean().nullish(),\n      strictJsonSchema: z.boolean().nullish(),\n      textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n      truncation: z.enum(['auto', 'disabled']).nullish(),\n      user: z.string().nullish(),\n    }),\n  ),\n);\n\nexport type OpenAIResponsesProviderOptions = InferValidator<\n  typeof openaiResponsesProviderOptionsSchema\n>;\n","import {\n  createProviderDefinedToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      code: z.string().nullish(),\n      containerId: z.string(),\n    }),\n  ),\n);\n\nexport const codeInterpreterOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      outputs: z\n        .array(\n          z.discriminatedUnion('type', [\n            z.object({ type: z.literal('logs'), logs: z.string() }),\n            z.object({ type: z.literal('image'), url: z.string() }),\n          ]),\n        )\n        .nullish(),\n    }),\n  ),\n);\n\nexport const codeInterpreterArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      container: z\n        .union([\n          z.string(),\n          z.object({\n            fileIds: z.array(z.string()).optional(),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\ntype CodeInterpreterArgs = {\n  /**\n   * The code interpreter container.\n   * Can be a container ID\n   * or an object that specifies uploaded file IDs to make available to your code.\n   */\n  container?: string | { fileIds?: string[] };\n};\n\nexport const codeInterpreterToolFactory =\n  createProviderDefinedToolFactoryWithOutputSchema<\n    {\n      /**\n       * The code to run, or null if not available.\n       */\n      code?: string | null;\n\n      /**\n       * The ID of the container used to run the code.\n       */\n      containerId: string;\n    },\n    {\n      /**\n       * The outputs generated by the code interpreter, such as logs or images.\n       * Can be null if no outputs are available.\n       */\n      outputs?: Array<\n        | {\n            type: 'logs';\n\n            /**\n             * The logs output from the code interpreter.\n             */\n            logs: string;\n          }\n        | {\n            type: 'image';\n\n            /**\n             * The URL of the image output from the code interpreter.\n             */\n            url: string;\n          }\n      > | null;\n    },\n    CodeInterpreterArgs\n  >({\n    id: 'openai.code_interpreter',\n    name: 'code_interpreter',\n    inputSchema: codeInterpreterInputSchema,\n    outputSchema: codeInterpreterOutputSchema,\n  });\n\nexport const codeInterpreter = (\n  args: CodeInterpreterArgs = {}, // default\n) => {\n  return codeInterpreterToolFactory(args);\n};\n","import {\n  createProviderDefinedToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type {\n  OpenAIResponsesFileSearchToolComparisonFilter,\n  OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api';\n\nconst comparisonFilterSchema = z.object({\n  key: z.string(),\n  type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'nin']),\n  value: z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]),\n});\n\nconst compoundFilterSchema: z.ZodType<any> = z.object({\n  type: z.enum(['and', 'or']),\n  filters: z.array(\n    z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]),\n  ),\n});\n\nexport const fileSearchArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      vectorStoreIds: z.array(z.string()),\n      maxNumResults: z.number().optional(),\n      ranking: z\n        .object({\n          ranker: z.string().optional(),\n          scoreThreshold: z.number().optional(),\n        })\n        .optional(),\n      filters: z\n        .union([comparisonFilterSchema, compoundFilterSchema])\n        .optional(),\n    }),\n  ),\n);\n\nexport const fileSearchOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      queries: z.array(z.string()),\n      results: z\n        .array(\n          z.object({\n            attributes: z.record(z.string(), z.unknown()),\n            fileId: z.string(),\n            filename: z.string(),\n            score: z.number(),\n            text: z.string(),\n          }),\n        )\n        .nullable(),\n    }),\n  ),\n);\n\nexport const fileSearch = createProviderDefinedToolFactoryWithOutputSchema<\n  {},\n  {\n    /**\n     * The search query to execute.\n     */\n    queries: string[];\n\n    /**\n     * The results of the file search tool call.\n     */\n    results:\n      | null\n      | {\n          /**\n           * Set of 16 key-value pairs that can be attached to an object.\n           * This can be useful for storing additional information about the object\n           * in a structured format, and querying for objects via API or the dashboard.\n           * Keys are strings with a maximum length of 64 characters.\n           * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n           */\n          attributes: Record<string, unknown>;\n\n          /**\n           * The unique ID of the file.\n           */\n          fileId: string;\n\n          /**\n           * The name of the file.\n           */\n          filename: string;\n\n          /**\n           * The relevance score of the file - a value between 0 and 1.\n           */\n          score: number;\n\n          /**\n           * The text that was retrieved from the file.\n           */\n          text: string;\n        }[];\n  },\n  {\n    /**\n     * List of vector store IDs to search through.\n     */\n    vectorStoreIds: string[];\n\n    /**\n     * Maximum number of search results to return. Defaults to 10.\n     */\n    maxNumResults?: number;\n\n    /**\n     * Ranking options for the search.\n     */\n    ranking?: {\n      /**\n       * The ranker to use for the file search.\n       */\n      ranker?: string;\n\n      /**\n       * The score threshold for the file search, a number between 0 and 1.\n       * Numbers closer to 1 will attempt to return only the most relevant results,\n       * but may return fewer results.\n       */\n      scoreThreshold?: number;\n    };\n\n    /**\n     * A filter to apply.\n     */\n    filters?:\n      | OpenAIResponsesFileSearchToolComparisonFilter\n      | OpenAIResponsesFileSearchToolCompoundFilter;\n  }\n>({\n  id: 'openai.file_search',\n  name: 'file_search',\n  inputSchema: z.object({}),\n  outputSchema: fileSearchOutputSchema,\n});\n","import {\n  createProviderDefinedToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      externalWebAccess: z.boolean().optional(),\n      filters: z\n        .object({ allowedDomains: z.array(z.string()).optional() })\n        .optional(),\n      searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n      userLocation: z\n        .object({\n          type: z.literal('approximate'),\n          country: z.string().optional(),\n          city: z.string().optional(),\n          region: z.string().optional(),\n          timezone: z.string().optional(),\n        })\n        .optional(),\n    }),\n  ),\n);\n\nconst webSearchInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const webSearchOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z\n        .discriminatedUnion('type', [\n          z.object({\n            type: z.literal('search'),\n            query: z.string().optional(),\n          }),\n          z.object({\n            type: z.literal('openPage'),\n            url: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('findInPage'),\n            url: z.string().nullish(),\n            pattern: z.string().nullish(),\n          }),\n        ])\n        .optional(),\n      sources: z\n        .array(\n          z.discriminatedUnion('type', [\n            z.object({ type: z.literal('url'), url: z.string() }),\n            z.object({ type: z.literal('api'), name: z.string() }),\n          ]),\n        )\n        .optional(),\n    }),\n  ),\n);\n\nexport const webSearchToolFactory =\n  createProviderDefinedToolFactoryWithOutputSchema<\n    {\n      // Web search doesn't take input parameters - it's controlled by the prompt\n    },\n    {\n      /**\n       * An object describing the specific action taken in this web search call.\n       * Includes details on how the model used the web (search, open_page, findInPage).\n       */\n      action?:\n        | {\n            /**\n             * Action type \"search\" - Performs a web search query.\n             */\n            type: 'search';\n\n            /**\n             * The search query.\n             */\n            query?: string;\n          }\n        | {\n            /**\n             * Action type \"openPage\" - Opens a specific URL from search results.\n             */\n            type: 'openPage';\n\n            /**\n             * The URL opened by the model.\n             */\n            url?: string | null;\n          }\n        | {\n            /**\n             * Action type \"findInPage\": Searches for a pattern within a loaded page.\n             */\n            type: 'findInPage';\n\n            /**\n             * The URL of the page searched for the pattern.\n             */\n            url?: string | null;\n\n            /**\n             * The pattern or text to search for within the page.\n             */\n            pattern?: string | null;\n          };\n\n      /**\n       * Optional sources cited by the model for the web search call.\n       */\n      sources?: Array<\n        { type: 'url'; url: string } | { type: 'api'; name: string }\n      >;\n    },\n    {\n      /**\n       * Whether to use external web access for fetching live content.\n       * - true: Fetch live web content (default)\n       * - false: Use cached/indexed results\n       */\n      externalWebAccess?: boolean;\n\n      /**\n       * Filters for the search.\n       */\n      filters?: {\n        /**\n         * Allowed domains for the search.\n         * If not provided, all domains are allowed.\n         * Subdomains of the provided domains are allowed as well.\n         */\n        allowedDomains?: string[];\n      };\n\n      /**\n       * Search context size to use for the web search.\n       * - high: Most comprehensive context, highest cost, slower response\n       * - medium: Balanced context, cost, and latency (default)\n       * - low: Least context, lowest cost, fastest response\n       */\n      searchContextSize?: 'low' | 'medium' | 'high';\n\n      /**\n       * User location information to provide geographically relevant search results.\n       */\n      userLocation?: {\n        /**\n         * Type of location (always 'approximate')\n         */\n        type: 'approximate';\n        /**\n         * Two-letter ISO country code (e.g., 'US', 'GB')\n         */\n        country?: string;\n        /**\n         * City name (free text, e.g., 'Minneapolis')\n         */\n        city?: string;\n        /**\n         * Region name (free text, e.g., 'Minnesota')\n         */\n        region?: string;\n        /**\n         * IANA timezone (e.g., 'America/Chicago')\n         */\n        timezone?: string;\n      };\n    }\n  >({\n    id: 'openai.web_search',\n    name: 'web_search',\n    inputSchema: webSearchInputSchema,\n    outputSchema: webSearchOutputSchema,\n  });\n\nexport const webSearch = (\n  args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => webSearchToolFactory(args);\n","import {\n  createProviderDefinedToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchPreviewArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n      userLocation: z\n        .object({\n          type: z.literal('approximate'),\n          country: z.string().optional(),\n          city: z.string().optional(),\n          region: z.string().optional(),\n          timezone: z.string().optional(),\n        })\n        .optional(),\n    }),\n  ),\n);\n\nexport const webSearchPreviewInputSchema = lazySchema(() =>\n  zodSchema(z.object({})),\n);\n\nconst webSearchPreviewOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z\n        .discriminatedUnion('type', [\n          z.object({\n            type: z.literal('search'),\n            query: z.string().optional(),\n          }),\n          z.object({\n            type: z.literal('openPage'),\n            url: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('findInPage'),\n            url: z.string().nullish(),\n            pattern: z.string().nullish(),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\nexport const webSearchPreview =\n  createProviderDefinedToolFactoryWithOutputSchema<\n    {\n      // Web search preview doesn't take input parameters - it's controlled by the prompt\n    },\n    {\n      /**\n       * An object describing the specific action taken in this web search call.\n       * Includes details on how the model used the web (search, open_page, findInPage).\n       */\n      action?:\n        | {\n            /**\n             * Action type \"search\" - Performs a web search query.\n             */\n            type: 'search';\n\n            /**\n             * The search query.\n             */\n            query?: string;\n          }\n        | {\n            /**\n             * Action type \"openPage\" - Opens a specific URL from search results.\n             */\n            type: 'openPage';\n\n            /**\n             * The URL opened by the model.\n             */\n            url?: string | null;\n          }\n        | {\n            /**\n             * Action type \"findInPage\": Searches for a pattern within a loaded page.\n             */\n            type: 'findInPage';\n\n            /**\n             * The URL of the page searched for the pattern.\n             */\n            url?: string | null;\n            /**\n             * The pattern or text to search for within the page.\n             */\n            pattern?: string | null;\n          };\n    },\n    {\n      /**\n       * Search context size to use for the web search.\n       * - high: Most comprehensive context, highest cost, slower response\n       * - medium: Balanced context, cost, and latency (default)\n       * - low: Least context, lowest cost, fastest response\n       */\n      searchContextSize?: 'low' | 'medium' | 'high';\n\n      /**\n       * User location information to provide geographically relevant search results.\n       */\n      userLocation?: {\n        /**\n         * Type of location (always 'approximate')\n         */\n        type: 'approximate';\n        /**\n         * Two-letter ISO country code (e.g., 'US', 'GB')\n         */\n        country?: string;\n        /**\n         * City name (free text, e.g., 'Minneapolis')\n         */\n        city?: string;\n        /**\n         * Region name (free text, e.g., 'Minnesota')\n         */\n        region?: string;\n        /**\n         * IANA timezone (e.g., 'America/Chicago')\n         */\n        timezone?: string;\n      };\n    }\n  >({\n    id: 'openai.web_search_preview',\n    name: 'web_search_preview',\n    inputSchema: webSearchPreviewInputSchema,\n    outputSchema: webSearchPreviewOutputSchema,\n  });\n","import {\n  createProviderDefinedToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = lazySchema(() =>\n  zodSchema(\n    z\n      .object({\n        background: z.enum(['auto', 'opaque', 'transparent']).optional(),\n        inputFidelity: z.enum(['low', 'high']).optional(),\n        inputImageMask: z\n          .object({\n            fileId: z.string().optional(),\n            imageUrl: z.string().optional(),\n          })\n          .optional(),\n        model: z.string().optional(),\n        moderation: z.enum(['auto']).optional(),\n        outputCompression: z.number().int().min(0).max(100).optional(),\n        outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n        partialImages: z.number().int().min(0).max(3).optional(),\n        quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n        size: z\n          .enum(['1024x1024', '1024x1536', '1536x1024', 'auto'])\n          .optional(),\n      })\n      .strict(),\n  ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const imageGenerationOutputSchema = lazySchema(() =>\n  zodSchema(z.object({ result: z.string() })),\n);\n\ntype ImageGenerationArgs = {\n  /**\n   * Background type for the generated image. Default is 'auto'.\n   */\n  background?: 'auto' | 'opaque' | 'transparent';\n\n  /**\n   * Input fidelity for the generated image. Default is 'low'.\n   */\n  inputFidelity?: 'low' | 'high';\n\n  /**\n   * Optional mask for inpainting.\n   * Contains image_url (string, optional) and file_id (string, optional).\n   */\n  inputImageMask?: {\n    /**\n     * File ID for the mask image.\n     */\n    fileId?: string;\n\n    /**\n     * Base64-encoded mask image.\n     */\n    imageUrl?: string;\n  };\n\n  /**\n   * The image generation model to use. Default: gpt-image-1.\n   */\n  model?: string;\n\n  /**\n   * Moderation level for the generated image. Default: auto.\n   */\n  moderation?: 'auto';\n\n  /**\n   * Compression level for the output image. Default: 100.\n   */\n  outputCompression?: number;\n\n  /**\n   * The output format of the generated image. One of png, webp, or jpeg.\n   * Default: png\n   */\n  outputFormat?: 'png' | 'jpeg' | 'webp';\n\n  /**\n   * The quality of the generated image.\n   * One of low, medium, high, or auto. Default: auto.\n   */\n  quality?: 'auto' | 'low' | 'medium' | 'high';\n\n  /**\n   * The size of the generated image.\n   * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n   * Default: auto.\n   */\n  size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory =\n  createProviderDefinedToolFactoryWithOutputSchema<\n    {},\n    {\n      /**\n       * The generated image encoded in base64.\n       */\n      result: string;\n    },\n    ImageGenerationArgs\n  >({\n    id: 'openai.image_generation',\n    name: 'image_generation',\n    inputSchema: imageGenerationInputSchema,\n    outputSchema: imageGenerationOutputSchema,\n  });\n\nexport const imageGeneration = (\n  args: ImageGenerationArgs = {}, // default\n) => {\n  return imageGenerationToolFactory(args);\n};\n","import {\n  type LanguageModelV2CallOptions,\n  type LanguageModelV2CallWarning,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { codeInterpreterArgsSchema } from '../tool/code-interpreter';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { webSearchPreviewArgsSchema } from '../tool/web-search-preview';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport type { OpenAIResponsesTool } from './openai-responses-api';\nimport { validateTypes } from '@ai-sdk/provider-utils';\n\nexport async function prepareResponsesTools({\n  tools,\n  toolChoice,\n  strictJsonSchema,\n}: {\n  tools: LanguageModelV2CallOptions['tools'];\n  toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n  strictJsonSchema: boolean;\n}): Promise<{\n  tools?: Array<OpenAIResponsesTool>;\n  toolChoice?:\n    | 'auto'\n    | 'none'\n    | 'required'\n    | { type: 'file_search' }\n    | { type: 'web_search_preview' }\n    | { type: 'web_search' }\n    | { type: 'function'; name: string }\n    | { type: 'code_interpreter' }\n    | { type: 'image_generation' };\n  toolWarnings: LanguageModelV2CallWarning[];\n}> {\n  // when the tools array is empty, change it to undefined to prevent errors:\n  tools = tools?.length ? tools : undefined;\n\n  const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n  if (tools == null) {\n    return { tools: undefined, toolChoice: undefined, toolWarnings };\n  }\n\n  const openaiTools: Array<OpenAIResponsesTool> = [];\n\n  for (const tool of tools) {\n    switch (tool.type) {\n      case 'function':\n        openaiTools.push({\n          type: 'function',\n          name: tool.name,\n          description: tool.description,\n          parameters: tool.inputSchema,\n          strict: strictJsonSchema,\n        });\n        break;\n      case 'provider-defined': {\n        switch (tool.id) {\n          case 'openai.file_search': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: fileSearchArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'file_search',\n              vector_store_ids: args.vectorStoreIds,\n              max_num_results: args.maxNumResults,\n              ranking_options: args.ranking\n                ? {\n                    ranker: args.ranking.ranker,\n                    score_threshold: args.ranking.scoreThreshold,\n                  }\n                : undefined,\n              filters: args.filters,\n            });\n\n            break;\n          }\n          case 'openai.local_shell': {\n            openaiTools.push({\n              type: 'local_shell',\n            });\n            break;\n          }\n          case 'openai.web_search_preview': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webSearchPreviewArgsSchema,\n            });\n            openaiTools.push({\n              type: 'web_search_preview',\n              search_context_size: args.searchContextSize,\n              user_location: args.userLocation,\n            });\n            break;\n          }\n          case 'openai.web_search': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webSearchArgsSchema,\n            });\n            openaiTools.push({\n              type: 'web_search',\n              filters:\n                args.filters != null\n                  ? { allowed_domains: args.filters.allowedDomains }\n                  : undefined,\n              external_web_access: args.externalWebAccess,\n              search_context_size: args.searchContextSize,\n              user_location: args.userLocation,\n            });\n            break;\n          }\n          case 'openai.code_interpreter': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: codeInterpreterArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'code_interpreter',\n              container:\n                args.container == null\n                  ? { type: 'auto', file_ids: undefined }\n                  : typeof args.container === 'string'\n                    ? args.container\n                    : { type: 'auto', file_ids: args.container.fileIds },\n            });\n            break;\n          }\n          case 'openai.image_generation': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: imageGenerationArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'image_generation',\n              background: args.background,\n              input_fidelity: args.inputFidelity,\n              input_image_mask: args.inputImageMask\n                ? {\n                    file_id: args.inputImageMask.fileId,\n                    image_url: args.inputImageMask.imageUrl,\n                  }\n                : undefined,\n              model: args.model,\n              size: args.size,\n              quality: args.quality,\n              moderation: args.moderation,\n              output_format: args.outputFormat,\n              output_compression: args.outputCompression,\n            });\n            break;\n          }\n        }\n        break;\n      }\n      default:\n        toolWarnings.push({ type: 'unsupported-tool', tool });\n        break;\n    }\n  }\n\n  if (toolChoice == null) {\n    return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n  }\n\n  const type = toolChoice.type;\n\n  switch (type) {\n    case 'auto':\n    case 'none':\n    case 'required':\n      return { tools: openaiTools, toolChoice: type, toolWarnings };\n    case 'tool':\n      return {\n        tools: openaiTools,\n        toolChoice:\n          toolChoice.toolName === 'code_interpreter' ||\n          toolChoice.toolName === 'file_search' ||\n          toolChoice.toolName === 'image_generation' ||\n          toolChoice.toolName === 'web_search_preview' ||\n          toolChoice.toolName === 'web_search'\n            ? { type: toolChoice.toolName }\n            : { type: 'function', name: toolChoice.toolName },\n        toolWarnings,\n      };\n    default: {\n      const _exhaustiveCheck: never = type;\n      throw new UnsupportedFunctionalityError({\n        functionality: `tool choice type: ${_exhaustiveCheck}`,\n      });\n    }\n  }\n}\n","import {\n  type LanguageModelV2,\n  type LanguageModelV2CallWarning,\n  type LanguageModelV2Content,\n  type LanguageModelV2FinishReason,\n  type LanguageModelV2ProviderDefinedTool,\n  type LanguageModelV2StreamPart,\n  type LanguageModelV2Usage,\n  type SharedV2ProviderMetadata,\n  APICallError,\n} from '@ai-sdk/provider';\nimport {\n  type InferValidator,\n  type ParseResult,\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  generateId,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport type {\n  codeInterpreterInputSchema,\n  codeInterpreterOutputSchema,\n} from '../tool/code-interpreter';\nimport type { fileSearchOutputSchema } from '../tool/file-search';\nimport type { imageGenerationOutputSchema } from '../tool/image-generation';\nimport type { localShellInputSchema } from '../tool/local-shell';\nimport type { webSearchOutputSchema } from '../tool/web-search';\nimport { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n  type OpenAIResponsesChunk,\n  type OpenAIResponsesIncludeOptions,\n  type OpenAIResponsesIncludeValue,\n  type OpenAIResponsesLogprobs,\n  type OpenAIResponsesWebSearchAction,\n  openaiResponsesChunkSchema,\n  openaiResponsesResponseSchema,\n} from './openai-responses-api';\nimport {\n  type OpenAIResponsesModelId,\n  openaiResponsesProviderOptionsSchema,\n  TOP_LOGPROBS_MAX,\n} from './openai-responses-options';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\nimport { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities';\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV2 {\n  readonly specificationVersion = 'v2';\n\n  readonly modelId: OpenAIResponsesModelId;\n\n  private readonly config: OpenAIConfig;\n\n  constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  readonly supportedUrls: Record<string, RegExp[]> = {\n    'image/*': [/^https?:\\/\\/.*$/],\n    'application/pdf': [/^https?:\\/\\/.*$/],\n  };\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  private async getArgs({\n    maxOutputTokens,\n    temperature,\n    stopSequences,\n    topP,\n    topK,\n    presencePenalty,\n    frequencyPenalty,\n    seed,\n    prompt,\n    providerOptions,\n    tools,\n    toolChoice,\n    responseFormat,\n  }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n    const warnings: LanguageModelV2CallWarning[] = [];\n    const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n\n    if (topK != null) {\n      warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n    }\n\n    if (seed != null) {\n      warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n    }\n\n    if (presencePenalty != null) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'presencePenalty',\n      });\n    }\n\n    if (frequencyPenalty != null) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'frequencyPenalty',\n      });\n    }\n\n    if (stopSequences != null) {\n      warnings.push({ type: 'unsupported-setting', setting: 'stopSequences' });\n    }\n\n    const openaiOptions = await parseProviderOptions({\n      provider: 'openai',\n      providerOptions,\n      schema: openaiResponsesProviderOptionsSchema,\n    });\n\n    if (openaiOptions?.conversation && openaiOptions?.previousResponseId) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'conversation',\n        details: 'conversation and previousResponseId cannot be used together',\n      });\n    }\n\n    const { input, warnings: inputWarnings } =\n      await convertToOpenAIResponsesInput({\n        prompt,\n        systemMessageMode: modelCapabilities.systemMessageMode,\n        fileIdPrefixes: this.config.fileIdPrefixes,\n        store: openaiOptions?.store ?? true,\n        hasLocalShellTool: hasOpenAITool('openai.local_shell'),\n      });\n\n    warnings.push(...inputWarnings);\n\n    const strictJsonSchema = openaiOptions?.strictJsonSchema ?? false;\n\n    let include: OpenAIResponsesIncludeOptions = openaiOptions?.include;\n\n    function addInclude(key: OpenAIResponsesIncludeValue) {\n      if (include == null) {\n        include = [key];\n      } else if (!include.includes(key)) {\n        include = [...include, key];\n      }\n    }\n\n    function hasOpenAITool(id: string) {\n      return (\n        tools?.find(\n          tool => tool.type === 'provider-defined' && tool.id === id,\n        ) != null\n      );\n    }\n\n    // when logprobs are requested, automatically include them:\n    const topLogprobs =\n      typeof openaiOptions?.logprobs === 'number'\n        ? openaiOptions?.logprobs\n        : openaiOptions?.logprobs === true\n          ? TOP_LOGPROBS_MAX\n          : undefined;\n\n    if (topLogprobs) {\n      addInclude('message.output_text.logprobs');\n    }\n\n    // when a web search tool is present, automatically include the sources:\n    const webSearchToolName = (\n      tools?.find(\n        tool =>\n          tool.type === 'provider-defined' &&\n          (tool.id === 'openai.web_search' ||\n            tool.id === 'openai.web_search_preview'),\n      ) as LanguageModelV2ProviderDefinedTool | undefined\n    )?.name;\n\n    if (webSearchToolName) {\n      addInclude('web_search_call.action.sources');\n    }\n\n    // when a code interpreter tool is present, automatically include the outputs:\n    if (hasOpenAITool('openai.code_interpreter')) {\n      addInclude('code_interpreter_call.outputs');\n    }\n\n    const store = openaiOptions?.store;\n\n    // store defaults to true in the OpenAI responses API, so check for false exactly:\n    if (store === false && modelCapabilities.isReasoningModel) {\n      addInclude('reasoning.encrypted_content');\n    }\n\n    const baseArgs = {\n      model: this.modelId,\n      input,\n      temperature,\n      top_p: topP,\n      max_output_tokens: maxOutputTokens,\n\n      ...((responseFormat?.type === 'json' || openaiOptions?.textVerbosity) && {\n        text: {\n          ...(responseFormat?.type === 'json' && {\n            format:\n              responseFormat.schema != null\n                ? {\n                    type: 'json_schema',\n                    strict: strictJsonSchema,\n                    name: responseFormat.name ?? 'response',\n                    description: responseFormat.description,\n                    schema: responseFormat.schema,\n                  }\n                : { type: 'json_object' },\n          }),\n          ...(openaiOptions?.textVerbosity && {\n            verbosity: openaiOptions.textVerbosity,\n          }),\n        },\n      }),\n\n      // provider options:\n      conversation: openaiOptions?.conversation,\n      max_tool_calls: openaiOptions?.maxToolCalls,\n      metadata: openaiOptions?.metadata,\n      parallel_tool_calls: openaiOptions?.parallelToolCalls,\n      previous_response_id: openaiOptions?.previousResponseId,\n      store,\n      user: openaiOptions?.user,\n      instructions: openaiOptions?.instructions,\n      service_tier: openaiOptions?.serviceTier,\n      include,\n      prompt_cache_key: openaiOptions?.promptCacheKey,\n      prompt_cache_retention: openaiOptions?.promptCacheRetention,\n      safety_identifier: openaiOptions?.safetyIdentifier,\n      top_logprobs: topLogprobs,\n      truncation: openaiOptions?.truncation,\n\n      // model-specific settings:\n      ...(modelCapabilities.isReasoningModel &&\n        (openaiOptions?.reasoningEffort != null ||\n          openaiOptions?.reasoningSummary != null) && {\n          reasoning: {\n            ...(openaiOptions?.reasoningEffort != null && {\n              effort: openaiOptions.reasoningEffort,\n            }),\n            ...(openaiOptions?.reasoningSummary != null && {\n              summary: openaiOptions.reasoningSummary,\n            }),\n          },\n        }),\n    };\n\n    // remove unsupported settings for reasoning models\n    // see https://platform.openai.com/docs/guides/reasoning#limitations\n    if (modelCapabilities.isReasoningModel) {\n      // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs\n      //  https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n      if (\n        !(\n          openaiOptions?.reasoningEffort === 'none' &&\n          modelCapabilities.supportsNonReasoningParameters\n        )\n      ) {\n        if (baseArgs.temperature != null) {\n          baseArgs.temperature = undefined;\n          warnings.push({\n            type: 'unsupported-setting',\n            setting: 'temperature',\n            details: 'temperature is not supported for reasoning models',\n          });\n        }\n\n        if (baseArgs.top_p != null) {\n          baseArgs.top_p = undefined;\n          warnings.push({\n            type: 'unsupported-setting',\n            setting: 'topP',\n            details: 'topP is not supported for reasoning models',\n          });\n        }\n      }\n    } else {\n      if (openaiOptions?.reasoningEffort != null) {\n        warnings.push({\n          type: 'unsupported-setting',\n          setting: 'reasoningEffort',\n          details: 'reasoningEffort is not supported for non-reasoning models',\n        });\n      }\n\n      if (openaiOptions?.reasoningSummary != null) {\n        warnings.push({\n          type: 'unsupported-setting',\n          setting: 'reasoningSummary',\n          details: 'reasoningSummary is not supported for non-reasoning models',\n        });\n      }\n    }\n\n    // Validate flex processing support\n    if (\n      openaiOptions?.serviceTier === 'flex' &&\n      !modelCapabilities.supportsFlexProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'serviceTier',\n        details:\n          'flex processing is only available for o3, o4-mini, and gpt-5 models',\n      });\n      // Remove from args if not supported\n      delete (baseArgs as any).service_tier;\n    }\n\n    // Validate priority processing support\n    if (\n      openaiOptions?.serviceTier === 'priority' &&\n      !modelCapabilities.supportsPriorityProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'serviceTier',\n        details:\n          'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n      });\n      // Remove from args if not supported\n      delete (baseArgs as any).service_tier;\n    }\n\n    const {\n      tools: openaiTools,\n      toolChoice: openaiToolChoice,\n      toolWarnings,\n    } = await prepareResponsesTools({\n      tools,\n      toolChoice,\n      strictJsonSchema,\n    });\n\n    return {\n      webSearchToolName,\n      args: {\n        ...baseArgs,\n        tools: openaiTools,\n        tool_choice: openaiToolChoice,\n      },\n      warnings: [...warnings, ...toolWarnings],\n      store,\n    };\n  }\n\n  async doGenerate(\n    options: Parameters<LanguageModelV2['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n    const {\n      args: body,\n      warnings,\n      webSearchToolName,\n    } = await this.getArgs(options);\n    const url = this.config.url({\n      path: '/responses',\n      modelId: this.modelId,\n    });\n\n    const providerKey = this.config.provider.replace('.responses', ''); // can be 'openai' or 'azure'. provider is 'openai.responses' or 'azure.responses'.\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url,\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiResponsesResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    if (response.error) {\n      throw new APICallError({\n        message: response.error.message,\n        url,\n        requestBodyValues: body,\n        statusCode: 400,\n        responseHeaders,\n        responseBody: rawResponse as string,\n        isRetryable: false,\n      });\n    }\n\n    const content: Array<LanguageModelV2Content> = [];\n    const logprobs: Array<OpenAIResponsesLogprobs> = [];\n\n    // flag that checks if there have been client-side tool calls (not executed by openai)\n    let hasFunctionCall = false;\n\n    // map response content to content array (defined when there is no error)\n    for (const part of response.output!) {\n      switch (part.type) {\n        case 'reasoning': {\n          // when there are no summary parts, we need to add an empty reasoning part:\n          if (part.summary.length === 0) {\n            part.summary.push({ type: 'summary_text', text: '' });\n          }\n\n          for (const summary of part.summary) {\n            content.push({\n              type: 'reasoning' as const,\n              text: summary.text,\n              providerMetadata: {\n                [providerKey]: {\n                  itemId: part.id,\n                  reasoningEncryptedContent: part.encrypted_content ?? null,\n                },\n              },\n            });\n          }\n          break;\n        }\n\n        case 'image_generation_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: 'image_generation',\n            input: '{}',\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: 'image_generation',\n            result: {\n              result: part.result,\n            } satisfies InferValidator<typeof imageGenerationOutputSchema>,\n            providerExecuted: true,\n          });\n\n          break;\n        }\n\n        case 'local_shell_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: 'local_shell',\n            input: JSON.stringify({\n              action: part.action,\n            } satisfies InferValidator<typeof localShellInputSchema>),\n            providerMetadata: {\n              [providerKey]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n\n        case 'message': {\n          for (const contentPart of part.content) {\n            if (\n              options.providerOptions?.openai?.logprobs &&\n              contentPart.logprobs\n            ) {\n              logprobs.push(contentPart.logprobs);\n            }\n\n            content.push({\n              type: 'text',\n              text: contentPart.text,\n              providerMetadata: {\n                [providerKey]: {\n                  itemId: part.id,\n                  ...(part.phase != null && { phase: part.phase }),\n                },\n              },\n            });\n\n            for (const annotation of contentPart.annotations) {\n              if (annotation.type === 'url_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'url',\n                  id: this.config.generateId?.() ?? generateId(),\n                  url: annotation.url,\n                  title: annotation.title,\n                });\n              } else if (annotation.type === 'file_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title: annotation.quote ?? annotation.filename ?? 'Document',\n                  filename: annotation.filename ?? annotation.file_id,\n                  ...(annotation.file_id\n                    ? {\n                        providerMetadata: {\n                          [providerKey]: {\n                            fileId: annotation.file_id,\n                          },\n                        },\n                      }\n                    : {}),\n                });\n              } else if (annotation.type === 'container_file_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title:\n                    annotation.filename ?? annotation.file_id ?? 'Document',\n                  filename: annotation.filename ?? annotation.file_id,\n                  providerMetadata: {\n                    [providerKey]: {\n                      fileId: annotation.file_id,\n                      containerId: annotation.container_id,\n                      ...(annotation.index != null\n                        ? { index: annotation.index }\n                        : {}),\n                    },\n                  },\n                });\n              } else if (annotation.type === 'file_path') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'application/octet-stream',\n                  title: annotation.file_id,\n                  filename: annotation.file_id,\n                  providerMetadata: {\n                    [providerKey]: {\n                      fileId: annotation.file_id,\n                      ...(annotation.index != null\n                        ? { index: annotation.index }\n                        : {}),\n                    },\n                  },\n                });\n              }\n            }\n          }\n\n          break;\n        }\n\n        case 'function_call': {\n          hasFunctionCall = true;\n\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: part.name,\n            input: part.arguments,\n            providerMetadata: {\n              [providerKey]: {\n                itemId: part.id,\n              },\n            },\n          });\n          break;\n        }\n\n        case 'web_search_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: webSearchToolName ?? 'web_search',\n            input: JSON.stringify({}),\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: webSearchToolName ?? 'web_search',\n            result: mapWebSearchOutput(part.action),\n            providerExecuted: true,\n          });\n\n          break;\n        }\n\n        case 'computer_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: 'computer_use',\n            input: '',\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: 'computer_use',\n            result: {\n              type: 'computer_use_tool_result',\n              status: part.status || 'completed',\n            },\n            providerExecuted: true,\n          });\n          break;\n        }\n\n        case 'file_search_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: 'file_search',\n            input: '{}',\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: 'file_search',\n            result: {\n              queries: part.queries,\n              results:\n                part.results?.map(result => ({\n                  attributes: result.attributes,\n                  fileId: result.file_id,\n                  filename: result.filename,\n                  score: result.score,\n                  text: result.text,\n                })) ?? null,\n            } satisfies InferValidator<typeof fileSearchOutputSchema>,\n            providerExecuted: true,\n          });\n          break;\n        }\n\n        case 'code_interpreter_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: 'code_interpreter',\n            input: JSON.stringify({\n              code: part.code,\n              containerId: part.container_id,\n            } satisfies InferValidator<typeof codeInterpreterInputSchema>),\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: 'code_interpreter',\n            result: {\n              outputs: part.outputs,\n            } satisfies InferValidator<typeof codeInterpreterOutputSchema>,\n            providerExecuted: true,\n          });\n          break;\n        }\n      }\n    }\n\n    const providerMetadata: SharedV2ProviderMetadata = {\n      [providerKey]: {\n        ...(response.id != null ? { responseId: response.id } : {}),\n      },\n    };\n\n    if (logprobs.length > 0) {\n      providerMetadata[providerKey].logprobs = logprobs;\n    }\n\n    if (typeof response.service_tier === 'string') {\n      providerMetadata[providerKey].serviceTier = response.service_tier;\n    }\n\n    const usage = response.usage!; // defined when there is no error\n\n    return {\n      content,\n      finishReason: mapOpenAIResponseFinishReason({\n        finishReason: response.incomplete_details?.reason,\n        hasFunctionCall,\n      }),\n      usage: {\n        inputTokens: usage.input_tokens,\n        outputTokens: usage.output_tokens,\n        totalTokens: usage.input_tokens + usage.output_tokens,\n        reasoningTokens:\n          usage.output_tokens_details?.reasoning_tokens ?? undefined,\n        cachedInputTokens:\n          usage.input_tokens_details?.cached_tokens ?? undefined,\n      },\n      request: { body },\n      response: {\n        id: response.id,\n        timestamp: new Date(response.created_at! * 1000),\n        modelId: response.model,\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n      providerMetadata,\n      warnings,\n    };\n  }\n\n  async doStream(\n    options: Parameters<LanguageModelV2['doStream']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n    const {\n      args: body,\n      warnings,\n      webSearchToolName,\n      store,\n    } = await this.getArgs(options);\n\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: '/responses',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: {\n        ...body,\n        stream: true,\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiResponsesChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const self = this;\n    const providerKey = this.config.provider.replace('.responses', ''); // can be 'openai' or 'azure'. provider is 'openai.responses' or 'azure.responses'.\n\n    let finishReason: LanguageModelV2FinishReason = 'unknown';\n    const usage: LanguageModelV2Usage = {\n      inputTokens: undefined,\n      outputTokens: undefined,\n      totalTokens: undefined,\n    };\n    const logprobs: Array<OpenAIResponsesLogprobs> = [];\n    let responseId: string | null = null;\n    const ongoingToolCalls: Record<\n      number,\n      | {\n          toolName: string;\n          toolCallId: string;\n          codeInterpreter?: {\n            containerId: string;\n          };\n        }\n      | undefined\n    > = {};\n\n    // set annotations in 'text-end' part providerMetadata.\n    const ongoingAnnotations: Array<\n      Extract<\n        OpenAIResponsesChunk,\n        { type: 'response.output_text.annotation.added' }\n      >['annotation']\n    > = [];\n\n    // track the phase of the current message being streamed\n    let activeMessagePhase: 'commentary' | 'final_answer' | undefined;\n\n    // flag that checks if there have been client-side tool calls (not executed by openai)\n    let hasFunctionCall = false;\n\n    const activeReasoning: Record<\n      string,\n      {\n        encryptedContent?: string | null;\n        // summary index as string to reasoning part state:\n        summaryParts: Record<string, 'active' | 'can-conclude' | 'concluded'>;\n      }\n    > = {};\n\n    let serviceTier: string | undefined;\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAIResponsesChunk>,\n          LanguageModelV2StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              finishReason = 'error';\n              controller.enqueue({ type: 'error', error: chunk.error });\n              return;\n            }\n\n            const value = chunk.value;\n\n            if (isResponseOutputItemAddedChunk(value)) {\n              if (value.item.type === 'function_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: value.item.name,\n                  toolCallId: value.item.call_id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.call_id,\n                  toolName: value.item.name,\n                });\n              } else if (value.item.type === 'web_search_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: webSearchToolName ?? 'web_search',\n                  toolCallId: value.item.id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.id,\n                  toolName: webSearchToolName ?? 'web_search',\n                  providerExecuted: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.id,\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: webSearchToolName ?? 'web_search',\n                  input: JSON.stringify({}),\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'computer_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: 'computer_use',\n                  toolCallId: value.item.id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.id,\n                  toolName: 'computer_use',\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'code_interpreter_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: 'code_interpreter',\n                  toolCallId: value.item.id,\n                  codeInterpreter: {\n                    containerId: value.item.container_id,\n                  },\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.id,\n                  toolName: 'code_interpreter',\n                  providerExecuted: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: value.item.id,\n                  delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n                });\n              } else if (value.item.type === 'file_search_call') {\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: 'file_search',\n                  input: '{}',\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'image_generation_call') {\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: 'image_generation',\n                  input: '{}',\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'message') {\n                ongoingAnnotations.splice(0, ongoingAnnotations.length);\n                activeMessagePhase = value.item.phase ?? undefined;\n                controller.enqueue({\n                  type: 'text-start',\n                  id: value.item.id,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item.id,\n                      ...(value.item.phase != null && {\n                        phase: value.item.phase,\n                      }),\n                    },\n                  },\n                });\n              } else if (\n                isResponseOutputItemAddedChunk(value) &&\n                value.item.type === 'reasoning'\n              ) {\n                activeReasoning[value.item.id] = {\n                  encryptedContent: value.item.encrypted_content,\n                  summaryParts: { 0: 'active' },\n                };\n\n                controller.enqueue({\n                  type: 'reasoning-start',\n                  id: `${value.item.id}:0`,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item.id,\n                      reasoningEncryptedContent:\n                        value.item.encrypted_content ?? null,\n                    },\n                  },\n                });\n              }\n            } else if (isResponseOutputItemDoneChunk(value)) {\n              if (value.item.type === 'message') {\n                const phase = value.item.phase ?? activeMessagePhase;\n                activeMessagePhase = undefined;\n                controller.enqueue({\n                  type: 'text-end',\n                  id: value.item.id,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item.id,\n                      ...(phase != null && { phase }),\n                      ...(ongoingAnnotations.length > 0 && {\n                        annotations: ongoingAnnotations,\n                      }),\n                    },\n                  },\n                });\n              } else if (value.item.type === 'function_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n                hasFunctionCall = true;\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.call_id,\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.call_id,\n                  toolName: value.item.name,\n                  input: value.item.arguments,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item.id,\n                    },\n                  },\n                });\n              } else if (value.item.type === 'web_search_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: webSearchToolName ?? 'web_search',\n                  result: mapWebSearchOutput(value.item.action),\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'computer_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.id,\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: 'computer_use',\n                  input: '',\n                  providerExecuted: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: 'computer_use',\n                  result: {\n                    type: 'computer_use_tool_result',\n                    status: value.item.status || 'completed',\n                  },\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'file_search_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: 'file_search',\n                  result: {\n                    queries: value.item.queries,\n                    results:\n                      value.item.results?.map(result => ({\n                        attributes: result.attributes,\n                        fileId: result.file_id,\n                        filename: result.filename,\n                        score: result.score,\n                        text: result.text,\n                      })) ?? null,\n                  } satisfies InferValidator<typeof fileSearchOutputSchema>,\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'code_interpreter_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: 'code_interpreter',\n                  result: {\n                    outputs: value.item.outputs,\n                  } satisfies InferValidator<\n                    typeof codeInterpreterOutputSchema\n                  >,\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'image_generation_call') {\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: 'image_generation',\n                  result: {\n                    result: value.item.result,\n                  } satisfies InferValidator<\n                    typeof imageGenerationOutputSchema\n                  >,\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'local_shell_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.call_id,\n                  toolName: 'local_shell',\n                  input: JSON.stringify({\n                    action: {\n                      type: 'exec',\n                      command: value.item.action.command,\n                      timeoutMs: value.item.action.timeout_ms,\n                      user: value.item.action.user,\n                      workingDirectory: value.item.action.working_directory,\n                      env: value.item.action.env,\n                    },\n                  } satisfies InferValidator<typeof localShellInputSchema>),\n                  providerMetadata: {\n                    [providerKey]: { itemId: value.item.id },\n                  },\n                });\n              } else if (value.item.type === 'reasoning') {\n                const activeReasoningPart = activeReasoning[value.item.id];\n\n                // get all active or can-conclude summary parts' ids\n                // to conclude ongoing reasoning parts:\n                const summaryPartIndices = Object.entries(\n                  activeReasoningPart.summaryParts,\n                )\n                  .filter(\n                    ([_, status]) =>\n                      status === 'active' || status === 'can-conclude',\n                  )\n                  .map(([summaryIndex]) => summaryIndex);\n\n                for (const summaryIndex of summaryPartIndices) {\n                  controller.enqueue({\n                    type: 'reasoning-end',\n                    id: `${value.item.id}:${summaryIndex}`,\n                    providerMetadata: {\n                      [providerKey]: {\n                        itemId: value.item.id,\n                        reasoningEncryptedContent:\n                          value.item.encrypted_content ?? null,\n                      },\n                    },\n                  });\n                }\n\n                delete activeReasoning[value.item.id];\n              }\n            } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: value.delta,\n                });\n              }\n            } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  // The delta is code, which is embedding in a JSON string.\n                  // To escape it, we use JSON.stringify and slice to remove the outer quotes.\n                  delta: JSON.stringify(value.delta).slice(1, -1),\n                });\n              }\n            } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: '\"}',\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: toolCall.toolCallId,\n                });\n\n                // immediately send the tool call after the input end:\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: toolCall.toolCallId,\n                  toolName: 'code_interpreter',\n                  input: JSON.stringify({\n                    code: value.code,\n                    containerId: toolCall.codeInterpreter!.containerId,\n                  } satisfies InferValidator<\n                    typeof codeInterpreterInputSchema\n                  >),\n                  providerExecuted: true,\n                });\n              }\n            } else if (isResponseCreatedChunk(value)) {\n              responseId = value.response.id;\n              controller.enqueue({\n                type: 'response-metadata',\n                id: value.response.id,\n                timestamp: new Date(value.response.created_at * 1000),\n                modelId: value.response.model,\n              });\n            } else if (isTextDeltaChunk(value)) {\n              controller.enqueue({\n                type: 'text-delta',\n                id: value.item_id,\n                delta: value.delta,\n              });\n\n              if (options.providerOptions?.openai?.logprobs && value.logprobs) {\n                logprobs.push(value.logprobs);\n              }\n            } else if (value.type === 'response.reasoning_summary_part.added') {\n              // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk\n              if (value.summary_index > 0) {\n                const activeReasoningPart = activeReasoning[value.item_id]!;\n\n                activeReasoningPart.summaryParts[value.summary_index] =\n                  'active';\n\n                // since there is a new active summary part, we can conclude all can-conclude summary parts\n                for (const summaryIndex of Object.keys(\n                  activeReasoningPart.summaryParts,\n                )) {\n                  if (\n                    activeReasoningPart.summaryParts[summaryIndex] ===\n                    'can-conclude'\n                  ) {\n                    controller.enqueue({\n                      type: 'reasoning-end',\n                      id: `${value.item_id}:${summaryIndex}`,\n                      providerMetadata: {\n                        [providerKey]: { itemId: value.item_id },\n                      },\n                    });\n                    activeReasoningPart.summaryParts[summaryIndex] =\n                      'concluded';\n                  }\n                }\n\n                controller.enqueue({\n                  type: 'reasoning-start',\n                  id: `${value.item_id}:${value.summary_index}`,\n                  providerMetadata: {\n                    [providerKey]: {\n                      itemId: value.item_id,\n                      reasoningEncryptedContent:\n                        activeReasoning[value.item_id]?.encryptedContent ??\n                        null,\n                    },\n                  },\n                });\n              }\n            } else if (value.type === 'response.reasoning_summary_text.delta') {\n              controller.enqueue({\n                type: 'reasoning-delta',\n                id: `${value.item_id}:${value.summary_index}`,\n                delta: value.delta,\n                providerMetadata: {\n                  [providerKey]: {\n                    itemId: value.item_id,\n                  },\n                },\n              });\n            } else if (value.type === 'response.reasoning_summary_part.done') {\n              // when OpenAI stores the message data, we can immediately conclude the reasoning part\n              // since we do not need to send the encrypted content.\n              if (store) {\n                controller.enqueue({\n                  type: 'reasoning-end',\n                  id: `${value.item_id}:${value.summary_index}`,\n                  providerMetadata: {\n                    [providerKey]: { itemId: value.item_id },\n                  },\n                });\n\n                // mark the summary part as concluded\n                activeReasoning[value.item_id]!.summaryParts[\n                  value.summary_index\n                ] = 'concluded';\n              } else {\n                // mark the summary part as can-conclude only\n                // because we need to have a final summary part with the encrypted content\n                activeReasoning[value.item_id]!.summaryParts[\n                  value.summary_index\n                ] = 'can-conclude';\n              }\n            } else if (isResponseFinishedChunk(value)) {\n              finishReason = mapOpenAIResponseFinishReason({\n                finishReason: value.response.incomplete_details?.reason,\n                hasFunctionCall,\n              });\n              usage.inputTokens = value.response.usage.input_tokens;\n              usage.outputTokens = value.response.usage.output_tokens;\n              usage.totalTokens =\n                value.response.usage.input_tokens +\n                value.response.usage.output_tokens;\n              usage.reasoningTokens =\n                value.response.usage.output_tokens_details?.reasoning_tokens ??\n                undefined;\n              usage.cachedInputTokens =\n                value.response.usage.input_tokens_details?.cached_tokens ??\n                undefined;\n              if (typeof value.response.service_tier === 'string') {\n                serviceTier = value.response.service_tier;\n              }\n            } else if (isResponseAnnotationAddedChunk(value)) {\n              ongoingAnnotations.push(value.annotation);\n              if (value.annotation.type === 'url_citation') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'url',\n                  id: self.config.generateId?.() ?? generateId(),\n                  url: value.annotation.url,\n                  title: value.annotation.title,\n                });\n              } else if (value.annotation.type === 'file_citation') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: self.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title:\n                    value.annotation.quote ??\n                    value.annotation.filename ??\n                    'Document',\n                  filename:\n                    value.annotation.filename ?? value.annotation.file_id,\n                  ...(value.annotation.file_id\n                    ? {\n                        providerMetadata: {\n                          [providerKey]: {\n                            fileId: value.annotation.file_id,\n                          },\n                        },\n                      }\n                    : {}),\n                });\n              }\n            } else if (isErrorChunk(value)) {\n              controller.enqueue({ type: 'error', error: value });\n            }\n          },\n\n          flush(controller) {\n            const providerMetadata: SharedV2ProviderMetadata = {\n              [providerKey]: {\n                responseId,\n              },\n            };\n\n            if (logprobs.length > 0) {\n              providerMetadata[providerKey].logprobs = logprobs;\n            }\n\n            if (serviceTier !== undefined) {\n              providerMetadata[providerKey].serviceTier = serviceTier;\n            }\n\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              usage,\n              providerMetadata,\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n\nfunction isTextDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_text.delta' } {\n  return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.done' } {\n  return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseFinishedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.completed' | 'response.incomplete';\n} {\n  return (\n    chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n  );\n}\n\nfunction isResponseCreatedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.created' } {\n  return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.function_call_arguments.delta';\n} {\n  return chunk.type === 'response.function_call_arguments.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.code_interpreter_call_code.delta';\n} {\n  return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.code_interpreter_call_code.done';\n} {\n  return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.added' } {\n  return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseAnnotationAddedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.output_text.annotation.added';\n} {\n  return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isErrorChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'error' } {\n  return chunk.type === 'error';\n}\n\nfunction mapWebSearchOutput(\n  action: OpenAIResponsesWebSearchAction | null | undefined,\n): InferValidator<typeof webSearchOutputSchema> {\n  if (action == null) {\n    return {};\n  }\n\n  switch (action.type) {\n    case 'search':\n      return {\n        action: { type: 'search', query: action.query ?? undefined },\n        // include sources when provided by the Responses API (behind include flag)\n        ...(action.sources != null && { sources: action.sources }),\n      };\n    case 'open_page':\n      return { action: { type: 'openPage', url: action.url } };\n    case 'find_in_page':\n      return {\n        action: {\n          type: 'findInPage',\n          url: action.url,\n          pattern: action.pattern,\n        },\n      };\n  }\n}\n","import {\n  codeInterpreter,\n  fileSearch,\n  imageGeneration,\n  webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n  codeInterpreter: typeof codeInterpreter;\n  fileSearch: typeof fileSearch;\n  imageGeneration: typeof imageGeneration;\n  webSearchPreview: typeof webSearchPreview;\n} = {\n  codeInterpreter,\n  fileSearch,\n  imageGeneration,\n  webSearchPreview,\n};\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n","import {\n  OpenAIChatLanguageModel,\n  OpenAICompletionLanguageModel,\n  OpenAIEmbeddingModel,\n  OpenAIImageModel,\n  OpenAIResponsesLanguageModel,\n  OpenAISpeechModel,\n  OpenAITranscriptionModel,\n} from '@ai-sdk/openai/internal';\nimport type {\n  EmbeddingModelV2,\n  LanguageModelV2,\n  ProviderV2,\n  ImageModelV2,\n  SpeechModelV2,\n  TranscriptionModelV2,\n} from '@ai-sdk/provider';\nimport {\n  type FetchFunction,\n  loadApiKey,\n  loadSetting,\n  withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV2 {\n  (deploymentId: string): LanguageModelV2;\n\n  /**\nCreates an Azure OpenAI chat model for text generation.\n   */\n  languageModel(deploymentId: string): LanguageModelV2;\n\n  /**\nCreates an Azure OpenAI chat model for text generation.\n   */\n  chat(deploymentId: string): LanguageModelV2;\n\n  /**\nCreates an Azure OpenAI responses API model for text generation.\n   */\n  responses(deploymentId: string): LanguageModelV2;\n\n  /**\nCreates an Azure OpenAI completion model for text generation.\n   */\n  completion(deploymentId: string): LanguageModelV2;\n\n  /**\n@deprecated Use `textEmbedding` instead.\n   */\n  embedding(deploymentId: string): EmbeddingModelV2<string>;\n\n  /**\n   * Creates an Azure OpenAI DALL-E model for image generation.\n   */\n  image(deploymentId: string): ImageModelV2;\n\n  /**\n   * Creates an Azure OpenAI DALL-E model for image generation.\n   */\n  imageModel(deploymentId: string): ImageModelV2;\n\n  textEmbedding(deploymentId: string): EmbeddingModelV2<string>;\n\n  /**\nCreates an Azure OpenAI model for text embeddings.\n   */\n  textEmbeddingModel(deploymentId: string): EmbeddingModelV2<string>;\n\n  /**\n   * Creates an Azure OpenAI model for audio transcription.\n   */\n  transcription(deploymentId: string): TranscriptionModelV2;\n\n  /**\n   * Creates an Azure OpenAI model for speech generation.\n   */\n  speech(deploymentId: string): SpeechModelV2;\n\n  /**\n   * AzureOpenAI-specific tools.\n   */\n  tools: typeof azureOpenaiTools;\n}\n\nexport interface AzureOpenAIProviderSettings {\n  /**\nName of the Azure OpenAI resource. Either this or `baseURL` can be used.\n\nThe resource name is used in the assembled URL: `https://{resourceName}.openai.azure.com/openai/v1{path}`.\n     */\n  resourceName?: string;\n\n  /**\nUse a different URL prefix for API calls, e.g. to use proxy servers. Either this or `resourceName` can be used.\nWhen a baseURL is provided, the resourceName is ignored.\n\nWith a baseURL, the resolved URL is `{baseURL}/v1{path}`.\n   */\n  baseURL?: string;\n\n  /**\nAPI key for authenticating requests.\n     */\n  apiKey?: string;\n\n  /**\nCustom headers to include in the requests.\n     */\n  headers?: Record<string, string>;\n\n  /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n    */\n  fetch?: FetchFunction;\n\n  /**\nCustom api version to use. Defaults to `preview`.\n    */\n  apiVersion?: string;\n\n  /**\nUse deployment-based URLs for specific model types. Set to true to use legacy deployment format: \n`{baseURL}/deployments/{deploymentId}{path}?api-version={apiVersion}` instead of \n`{baseURL}/v1{path}?api-version={apiVersion}`.\n   */\n  useDeploymentBasedUrls?: boolean;\n}\n\n/**\nCreate an Azure OpenAI provider instance.\n */\nexport function createAzure(\n  options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n  const getHeaders = () => {\n    const baseHeaders = {\n      'api-key': loadApiKey({\n        apiKey: options.apiKey,\n        environmentVariableName: 'AZURE_API_KEY',\n        description: 'Azure OpenAI',\n      }),\n      ...options.headers,\n    };\n    return withUserAgentSuffix(baseHeaders, `ai-sdk/azure/${VERSION}`);\n  };\n\n  const getResourceName = () =>\n    loadSetting({\n      settingValue: options.resourceName,\n      settingName: 'resourceName',\n      environmentVariableName: 'AZURE_RESOURCE_NAME',\n      description: 'Azure OpenAI resource name',\n    });\n\n  const apiVersion = options.apiVersion ?? 'v1';\n\n  const url = ({ path, modelId }: { path: string; modelId: string }) => {\n    const baseUrlPrefix =\n      options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`;\n\n    let fullUrl: URL;\n    if (options.useDeploymentBasedUrls) {\n      // Use deployment-based format for compatibility with certain Azure OpenAI models\n      fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n    } else {\n      // Use v1 API format - no deployment ID in URL\n      fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n    }\n\n    fullUrl.searchParams.set('api-version', apiVersion);\n    return fullUrl.toString();\n  };\n\n  const createChatModel = (deploymentName: string) =>\n    new OpenAIChatLanguageModel(deploymentName, {\n      provider: 'azure.chat',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createCompletionModel = (modelId: string) =>\n    new OpenAICompletionLanguageModel(modelId, {\n      provider: 'azure.completion',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createEmbeddingModel = (modelId: string) =>\n    new OpenAIEmbeddingModel(modelId, {\n      provider: 'azure.embeddings',\n      headers: getHeaders,\n      url,\n      fetch: options.fetch,\n    });\n\n  const createResponsesModel = (modelId: string) =>\n    new OpenAIResponsesLanguageModel(modelId, {\n      provider: 'azure.responses',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n      fileIdPrefixes: ['assistant-'],\n    });\n\n  const createImageModel = (modelId: string) =>\n    new OpenAIImageModel(modelId, {\n      provider: 'azure.image',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createTranscriptionModel = (modelId: string) =>\n    new OpenAITranscriptionModel(modelId, {\n      provider: 'azure.transcription',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createSpeechModel = (modelId: string) =>\n    new OpenAISpeechModel(modelId, {\n      provider: 'azure.speech',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const provider = function (deploymentId: string) {\n    if (new.target) {\n      throw new Error(\n        'The Azure OpenAI model function cannot be called with the new keyword.',\n      );\n    }\n\n    return createChatModel(deploymentId);\n  };\n\n  provider.languageModel = createChatModel;\n  provider.chat = createChatModel;\n  provider.completion = createCompletionModel;\n  provider.embedding = createEmbeddingModel;\n  provider.image = createImageModel;\n  provider.imageModel = createImageModel;\n  provider.textEmbedding = createEmbeddingModel;\n  provider.textEmbeddingModel = createEmbeddingModel;\n  provider.responses = createResponsesModel;\n  provider.transcription = createTranscriptionModel;\n  provider.speech = createSpeechModel;\n  provider.tools = azureOpenaiTools;\n  return provider;\n}\n\n/**\nDefault Azure OpenAI provider instance.\n */\nexport const azure = createAzure();\n","import WebSocket from 'ws';\n\nexport interface CreateOpenAIWebSocketFetchOptions {\n  /**\n   * WebSocket endpoint URL.\n   * @default 'wss://api.openai.com/v1/responses'\n   */\n  url?: string;\n  /**\n   * Additional headers sent when establishing the WebSocket connection.\n   * Authorization and OpenAI-Beta are managed internally.\n   */\n  headers?: Record<string, string>;\n  /**\n   * Convert an `api-key` request header into `Authorization: Bearer ...` for\n   * providers whose WebSocket endpoint authenticates API keys as bearer tokens.\n   */\n  apiKeyAsBearer?: boolean;\n  /**\n   * Move an `api-key` request header into the WebSocket URL query string for\n   * providers whose WebSocket endpoint authenticates API keys through a query\n   * parameter. Entra ID and OpenAI bearer-token auth should leave this disabled.\n   */\n  apiKeyQueryParam?: string | false;\n  /**\n   * Optional beta header sent when establishing the WebSocket connection.\n   * @default 'responses_websockets=2026-02-06'\n   */\n  betaHeader?: string | false;\n}\n\nexport type OpenAIWebSocketFetch = ((input: RequestInfo | URL, init?: RequestInit) => Promise<Response>) & {\n  close(): void;\n};\n\nconst TERMINAL_RESPONSE_EVENTS = new Set(['response.completed', 'response.failed', 'response.incomplete', 'error']);\n\n/**\n * Creates a `fetch` function that routes OpenAI Responses API streaming\n * requests through a persistent WebSocket connection instead of HTTP.\n */\nexport function createOpenAIWebSocketFetch(options?: CreateOpenAIWebSocketFetchOptions): OpenAIWebSocketFetch {\n  const wsUrl = options?.url ?? 'wss://api.openai.com/v1/responses';\n  const betaHeader = options?.betaHeader === undefined ? 'responses_websockets=2026-02-06' : options.betaHeader;\n  const apiKeyQueryParam = options?.apiKeyQueryParam ?? false;\n\n  let ws: WebSocket | null = null;\n  let connecting: Promise<WebSocket> | null = null;\n  let connectionKey: string | null = null;\n  let nextQueryCredentialId = 0;\n  const queryCredentialIds = new Map<string, string>();\n  let busy = false;\n\n  function getQueryCredentialCacheId(value?: string): string {\n    if (!value) return '';\n\n    const existing = queryCredentialIds.get(value);\n    if (existing) return existing;\n\n    const id = String(++nextQueryCredentialId);\n    queryCredentialIds.set(value, id);\n    return id;\n  }\n\n  function getConnection(\n    authorization: string,\n    headers: Record<string, string>,\n    signal?: AbortSignal | null,\n  ): Promise<WebSocket> {\n    if (signal?.aborted) {\n      return Promise.reject(getAbortError(signal));\n    }\n\n    const normalizedHeaders = { ...normalizeHeaders(options?.headers), ...headers };\n    const apiKey = normalizedHeaders['api-key'];\n    delete normalizedHeaders['authorization'];\n    delete normalizedHeaders['openai-beta'];\n    if (options?.apiKeyAsBearer || apiKeyQueryParam) {\n      delete normalizedHeaders['api-key'];\n    }\n    const queryCredential = apiKeyQueryParam ? `${apiKeyQueryParam}:${getQueryCredentialCacheId(apiKey)}` : '';\n    const nextConnectionKey = buildConnectionKey(authorization, normalizedHeaders, queryCredential);\n\n    if (ws?.readyState === WebSocket.OPEN && connectionKey === nextConnectionKey) {\n      return Promise.resolve(ws);\n    }\n\n    if (ws?.readyState === WebSocket.OPEN && connectionKey !== nextConnectionKey) {\n      ws.close();\n      ws = null;\n      connectionKey = null;\n    }\n\n    if (connecting && connectionKey === nextConnectionKey) return connecting;\n\n    connectionKey = nextConnectionKey;\n\n    connecting = new Promise<WebSocket>((resolve, reject) => {\n      let settled = false;\n      const socket = new WebSocket(getWebSocketUrl(wsUrl, apiKeyQueryParam, apiKey), {\n        headers: {\n          ...normalizedHeaders,\n          ...(authorization ? { Authorization: authorization } : {}),\n          ...(betaHeader ? { 'OpenAI-Beta': betaHeader } : {}),\n        },\n      });\n\n      function cleanupAbortListener() {\n        signal?.removeEventListener('abort', onAbort);\n      }\n\n      function rejectConnection(err: unknown, closeSocket = true) {\n        if (settled) return;\n        settled = true;\n        connecting = null;\n        connectionKey = null;\n        cleanupAbortListener();\n        if (closeSocket) socket.close();\n        reject(err);\n      }\n\n      function onAbort() {\n        rejectConnection(getAbortError(signal));\n      }\n\n      signal?.addEventListener('abort', onAbort, { once: true });\n\n      socket.on('open', () => {\n        if (signal?.aborted) {\n          rejectConnection(getAbortError(signal));\n          return;\n        }\n        settled = true;\n        ws = socket;\n        connecting = null;\n        cleanupAbortListener();\n        resolve(socket);\n      });\n\n      socket.on('error', err => {\n        rejectConnection(err, false);\n      });\n\n      socket.on('close', () => {\n        if (settled) return;\n        rejectConnection(new Error('WebSocket closed before the connection opened'), false);\n      });\n\n      socket.on('close', () => {\n        if (ws === socket) ws = null;\n        if (ws === null) connectionKey = null;\n      });\n    });\n\n    return connecting;\n  }\n\n  async function websocketFetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n    const url = input instanceof URL ? input.toString() : typeof input === 'string' ? input : input.url;\n\n    if (init?.method !== 'POST' || !isResponsesUrl(url)) {\n      return globalThis.fetch(input, init);\n    }\n\n    let body: Record<string, unknown>;\n    try {\n      body = JSON.parse(typeof init.body === 'string' ? init.body : '');\n    } catch {\n      return globalThis.fetch(input, init);\n    }\n\n    if (!body.stream) {\n      return globalThis.fetch(input, init);\n    }\n\n    // Prevent concurrent streams from sharing one WebSocket transport instance.\n    // Only fall back to HTTP when the request does not depend on the socket's\n    // connection-local previous_response_id cache.\n    if (busy) {\n      if (body.previous_response_id) {\n        throw new Error(\n          'Cannot start an overlapping WebSocket Responses continuation. Wait for the active stream to finish before sending previous_response_id.',\n        );\n      }\n      return globalThis.fetch(input, init);\n    }\n\n    const headers = normalizeHeaders(init.headers);\n    const authorization =\n      headers['authorization'] ?? (options?.apiKeyAsBearer && headers['api-key'] ? `Bearer ${headers['api-key']}` : '');\n\n    // Acquire the busy lock before awaiting to prevent races\n    busy = true;\n    let connection: WebSocket;\n    try {\n      connection = await getConnection(authorization, headers, init?.signal);\n    } catch (err) {\n      busy = false;\n      throw err;\n    }\n\n    const { stream: _stream, background: _background, ...requestBody } = body;\n    const encoder = new TextEncoder();\n\n    let cleanupActiveStream: ((options?: { closeSocket?: boolean }) => void) | undefined;\n    const responseStream = new ReadableStream<Uint8Array>({\n      start(controller) {\n        let cleanedUp = false;\n        let abortHandler: (() => void) | undefined;\n\n        function cleanup({ closeSocket = false }: { closeSocket?: boolean } = {}) {\n          if (cleanedUp) return;\n          cleanedUp = true;\n          connection.off('message', onMessage);\n          connection.off('error', onError);\n          connection.off('close', onClose);\n          if (abortHandler) {\n            init?.signal?.removeEventListener('abort', abortHandler);\n            abortHandler = undefined;\n          }\n\n          if (closeSocket && ws === connection) {\n            connection.close();\n            ws = null;\n            connectionKey = null;\n          }\n\n          busy = false;\n          cleanupActiveStream = undefined;\n        }\n\n        cleanupActiveStream = cleanup;\n\n        function onMessage(data: WebSocket.RawData) {\n          const text = data.toString();\n          controller.enqueue(encoder.encode(formatSSEData(text)));\n\n          try {\n            const event = JSON.parse(text);\n            if (isTerminalWebSocketEvent(event)) {\n              controller.enqueue(encoder.encode('data: [DONE]\\n\\n'));\n              cleanup({ closeSocket: shouldReconnectAfterEvent(event) });\n              controller.close();\n            }\n          } catch {\n            // non-JSON frame, continue\n          }\n        }\n\n        function onError(err: Error) {\n          cleanup();\n          controller.error(err);\n        }\n\n        function onClose() {\n          cleanup();\n          try {\n            controller.close();\n          } catch {\n            // already closed\n          }\n        }\n\n        connection.on('message', onMessage);\n        connection.on('error', onError);\n        connection.on('close', onClose);\n\n        const signal = init?.signal;\n        if (signal) {\n          if (signal.aborted) {\n            cleanup({ closeSocket: true });\n            controller.error(signal.reason ?? new DOMException('Aborted', 'AbortError'));\n            return;\n          }\n          abortHandler = () => {\n            cleanup({ closeSocket: true });\n            try {\n              controller.error(signal.reason ?? new DOMException('Aborted', 'AbortError'));\n            } catch {\n              // already closed\n            }\n          };\n          signal.addEventListener('abort', abortHandler, { once: true });\n        }\n\n        connection.send(JSON.stringify({ type: 'response.create', ...requestBody }));\n      },\n      cancel() {\n        cleanupActiveStream?.({ closeSocket: true });\n      },\n    });\n\n    return new Response(responseStream, {\n      status: 200,\n      headers: { 'content-type': 'text/event-stream' },\n    });\n  }\n\n  return Object.assign(websocketFetch, {\n    /** Close the underlying WebSocket connection. */\n    close() {\n      if (ws) {\n        ws.close();\n        ws = null;\n      }\n      connectionKey = null;\n      connecting = null;\n    },\n  });\n}\n\nfunction isResponsesUrl(url: string): boolean {\n  try {\n    return new URL(url).pathname.endsWith('/responses');\n  } catch {\n    return url.split('?')[0]?.endsWith('/responses') ?? false;\n  }\n}\n\nfunction getWebSocketUrl(url: string, apiKeyQueryParam: string | false, apiKey?: string): string {\n  if (!apiKeyQueryParam || !apiKey) return url;\n\n  const parsedUrl = new URL(url);\n  parsedUrl.searchParams.set(apiKeyQueryParam, apiKey);\n  return parsedUrl.toString();\n}\n\nfunction formatSSEData(text: string): string {\n  return `${text\n    .split(/\\r?\\n/)\n    .map(line => `data: ${line}`)\n    .join('\\n')}\\n\\n`;\n}\n\nfunction buildConnectionKey(authorization: string, headers: Record<string, string>, queryCredential = ''): string {\n  return JSON.stringify({\n    authorization,\n    queryCredential,\n    headers: Object.entries(headers).sort(([a], [b]) => a.localeCompare(b)),\n  });\n}\n\nfunction isTerminalWebSocketEvent(event: unknown): event is { type: string } {\n  return (\n    typeof event === 'object' &&\n    event !== null &&\n    'type' in event &&\n    typeof event.type === 'string' &&\n    TERMINAL_RESPONSE_EVENTS.has(event.type)\n  );\n}\n\nfunction shouldReconnectAfterEvent(event: unknown): boolean {\n  if (typeof event !== 'object' || event === null || !('error' in event)) return false;\n  const error = event.error;\n  return (\n    typeof error === 'object' &&\n    error !== null &&\n    'code' in error &&\n    error.code === 'websocket_connection_limit_reached'\n  );\n}\n\nfunction getAbortError(signal?: AbortSignal | null): unknown {\n  return signal?.reason ?? new DOMException('Aborted', 'AbortError');\n}\n\nfunction normalizeHeaders(headers: HeadersInit | undefined): Record<string, string> {\n  const result: Record<string, string> = {};\n  if (!headers) return result;\n\n  if (headers instanceof Headers) {\n    headers.forEach((value, key) => {\n      result[key.toLowerCase()] = value;\n    });\n  } else if (Array.isArray(headers)) {\n    for (const [key, value] of headers) {\n      result[key.toLowerCase()] = value;\n    }\n  } else {\n    for (const [key, value] of Object.entries(headers)) {\n      if (value != null) result[key.toLowerCase()] = value;\n    }\n  }\n\n  return result;\n}\n","import { createAzure } from '@ai-sdk/azure';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { createOpenAIWebSocketFetch } from '../openai-websocket-fetch.js';\nimport type { OpenAITransport, ResponsesWebSocketOptions } from '../provider-options.js';\nimport { MASTRA_GATEWAY_STREAM_TRANSPORT, MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\nimport { MASTRA_USER_AGENT } from './constants.js';\n\ninterface AzureTokenResponse {\n  token_type: 'Bearer';\n  expires_in: number;\n  access_token: string;\n}\n\ninterface AzureDeployment {\n  name: string;\n  properties: {\n    model: {\n      name: string;\n      version: string;\n      format: string;\n    };\n    provisioningState: string;\n  };\n}\n\ninterface AzureDeploymentsResponse {\n  value: AzureDeployment[];\n  nextLink?: string;\n}\n\ninterface CachedToken {\n  token: string;\n  expiresAt: number;\n}\n\ntype AzureLanguageModelCallOptions = Parameters<LanguageModelV2['doGenerate']>[0];\n\nexport interface AzureAccessToken {\n  token: string;\n  expiresOnTimestamp?: number;\n}\n\nexport interface AzureTokenCredential {\n  getToken(scopes: string | string[], options?: unknown): Promise<AzureAccessToken | null>;\n}\n\nexport interface AzureOpenAIGatewayConfig {\n  resourceName: string;\n  apiKey?: string;\n  apiVersion?: string;\n  useResponsesAPI?: boolean;\n  useDeploymentBasedUrls?: boolean;\n  deployments?: string[];\n  authentication?: {\n    type: 'entraId';\n    credential: AzureTokenCredential;\n    scope?: string;\n  };\n  management?: {\n    tenantId: string;\n    clientId: string;\n    clientSecret: string;\n    subscriptionId: string;\n    resourceGroup: string;\n  };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction mirrorAzureProviderOptionsForOpenAI<T>(providerOptions: T): T {\n  if (!isRecord(providerOptions) || !isRecord(providerOptions.azure)) {\n    return providerOptions;\n  }\n\n  const openai = isRecord(providerOptions.openai) ? providerOptions.openai : {};\n\n  return {\n    ...providerOptions,\n    openai: {\n      ...openai,\n      ...providerOptions.azure,\n    },\n  } as T;\n}\n\nfunction mirrorAzureResponseProviderOptions(\n  prompt: AzureLanguageModelCallOptions['prompt'],\n): AzureLanguageModelCallOptions['prompt'] {\n  let promptModified = false;\n\n  const mirroredPrompt = prompt.map(message => {\n    const messageWithProviderOptions = message as typeof message & { providerOptions?: unknown };\n    const providerOptions = mirrorAzureProviderOptionsForOpenAI(messageWithProviderOptions.providerOptions);\n    const providerOptionsModified = providerOptions !== messageWithProviderOptions.providerOptions;\n\n    if (!Array.isArray(message.content)) {\n      if (providerOptionsModified) {\n        promptModified = true;\n        return { ...message, providerOptions } as typeof message;\n      }\n\n      return message;\n    }\n\n    let contentModified = false;\n    const content = message.content.map(part => {\n      if (!('providerOptions' in part)) {\n        return part;\n      }\n\n      const providerOptions = mirrorAzureProviderOptionsForOpenAI(part.providerOptions);\n      if (providerOptions === part.providerOptions) {\n        return part;\n      }\n\n      contentModified = true;\n      return { ...part, providerOptions };\n    }) as typeof message.content;\n\n    if (!contentModified) {\n      if (providerOptionsModified) {\n        promptModified = true;\n        return { ...message, providerOptions } as typeof message;\n      }\n\n      return message;\n    }\n\n    promptModified = true;\n    return { ...message, ...(providerOptionsModified ? { providerOptions } : {}), content };\n  });\n\n  return (promptModified ? mirroredPrompt : prompt) as AzureLanguageModelCallOptions['prompt'];\n}\n\nfunction withAzureResponsesInputCompatibility(model: LanguageModelV2): LanguageModelV2 {\n  return new Proxy(model, {\n    get(target, property, receiver) {\n      // Audit this wrapper when AI SDK adds new prompt-taking LanguageModelV2 methods.\n      if (property === 'doGenerate') {\n        return (options: AzureLanguageModelCallOptions) =>\n          target.doGenerate({\n            ...options,\n            providerOptions: mirrorAzureProviderOptionsForOpenAI(options.providerOptions),\n            prompt: mirrorAzureResponseProviderOptions(options.prompt),\n          });\n      }\n\n      if (property === 'doStream') {\n        return (options: Parameters<LanguageModelV2['doStream']>[0]) =>\n          target.doStream({\n            ...options,\n            providerOptions: mirrorAzureProviderOptionsForOpenAI(options.providerOptions),\n            prompt: mirrorAzureResponseProviderOptions(options.prompt),\n          });\n      }\n\n      return Reflect.get(target, property, receiver);\n    },\n  });\n}\n\nexport class AzureOpenAIGateway extends MastraModelGateway {\n  readonly id = 'azure-openai';\n  readonly name = 'azure-openai';\n  private tokenCache = new InMemoryServerCache();\n  private entraIdTokenRequests = new Map<string, Promise<CachedToken>>();\n\n  constructor(private config: AzureOpenAIGatewayConfig) {\n    super();\n    this.validateConfig();\n  }\n\n  private validateConfig(): void {\n    if (!this.config.resourceName) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'resourceName is required for Azure OpenAI gateway',\n      });\n    }\n\n    if (!this.config.apiKey && this.config.authentication?.type !== 'entraId') {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'apiKey or Entra ID authentication is required for Azure OpenAI gateway',\n      });\n    }\n\n    if (this.config.authentication?.type === 'entraId' && !this.config.authentication.credential) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'credential is required for Azure OpenAI Entra ID authentication',\n      });\n    }\n\n    if (this.config.apiKey && this.config.authentication?.type === 'entraId') {\n      console.warn(\n        '[AzureOpenAIGateway] Both apiKey and Entra ID authentication provided. Using Entra ID authentication and ignoring apiKey.',\n      );\n    }\n\n    if (this.config.useResponsesAPI && this.config.useDeploymentBasedUrls === true) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'useResponsesAPI: true cannot be combined with useDeploymentBasedUrls: true. Omit useDeploymentBasedUrls or set it to false.',\n      });\n    }\n\n    if (this.config.useResponsesAPI && this.config.apiVersion && !['v1', 'preview'].includes(this.config.apiVersion)) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'useResponsesAPI: true requires apiVersion: \"v1\" or apiVersion: \"preview\". Omit apiVersion to use \"v1\".',\n      });\n    }\n\n    if (\n      this.config.useDeploymentBasedUrls === false &&\n      this.config.apiVersion &&\n      !['v1', 'preview'].includes(this.config.apiVersion)\n    ) {\n      throw new MastraError({\n        id: 'AZURE_GATEWAY_INVALID_CONFIG',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'useDeploymentBasedUrls: false requires apiVersion: \"v1\" or apiVersion: \"preview\". Omit apiVersion to use \"v1\".',\n      });\n    }\n\n    const hasDeployments = this.config.deployments && this.config.deployments.length > 0;\n    const hasManagement = this.config.management !== undefined;\n\n    if (hasDeployments && hasManagement) {\n      console.warn(\n        '[AzureOpenAIGateway] Both deployments and management credentials provided. Using static deployments list and ignoring management API.',\n      );\n    }\n\n    if (hasManagement) {\n      this.getManagementCredentials(this.config.management!);\n    }\n  }\n\n  async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n    if (this.config.deployments && this.config.deployments.length > 0) {\n      return {\n        'azure-openai': {\n          apiKeyEnvVar: [],\n          apiKeyHeader: 'api-key',\n          name: 'Azure OpenAI',\n          models: this.config.deployments,\n          docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n          gateway: 'azure-openai',\n        },\n      };\n    }\n\n    if (!this.config.management) {\n      return {\n        'azure-openai': {\n          apiKeyEnvVar: [],\n          apiKeyHeader: 'api-key',\n          name: 'Azure OpenAI',\n          models: [],\n          docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n          gateway: 'azure-openai',\n        },\n      };\n    }\n\n    try {\n      const credentials = this.getManagementCredentials(this.config.management);\n\n      const token = await this.getAzureADToken({\n        tenantId: credentials.tenantId,\n        clientId: credentials.clientId,\n        clientSecret: credentials.clientSecret,\n      });\n\n      const deployments = await this.fetchDeployments(token, {\n        subscriptionId: credentials.subscriptionId,\n        resourceGroup: credentials.resourceGroup,\n        resourceName: this.config.resourceName,\n      });\n\n      return {\n        'azure-openai': {\n          apiKeyEnvVar: [],\n          apiKeyHeader: 'api-key',\n          name: 'Azure OpenAI',\n          models: deployments.map(d => d.name),\n          docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n          gateway: 'azure-openai',\n        },\n      };\n    } catch (error) {\n      const errorMsg = error instanceof Error ? error.message : String(error);\n      console.warn(\n        `[AzureOpenAIGateway] Deployment discovery failed: ${errorMsg}`,\n        '\\nReturning fallback configuration. Azure OpenAI can still be used by manually specifying deployment names.',\n      );\n\n      return {\n        'azure-openai': {\n          apiKeyEnvVar: [],\n          apiKeyHeader: 'api-key',\n          name: 'Azure OpenAI',\n          models: [],\n          docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n          gateway: 'azure-openai',\n        },\n      };\n    }\n  }\n\n  private getManagementCredentials(management: NonNullable<AzureOpenAIGatewayConfig['management']>) {\n    const { tenantId, clientId, clientSecret, subscriptionId, resourceGroup } = management;\n\n    const missing = [];\n    if (!tenantId) missing.push('tenantId');\n    if (!clientId) missing.push('clientId');\n    if (!clientSecret) missing.push('clientSecret');\n    if (!subscriptionId) missing.push('subscriptionId');\n    if (!resourceGroup) missing.push('resourceGroup');\n\n    if (missing.length > 0) {\n      throw new MastraError({\n        id: 'AZURE_MANAGEMENT_CREDENTIALS_MISSING',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: `Management credentials incomplete. Missing: ${missing.join(', ')}. Required fields: tenantId, clientId, clientSecret, subscriptionId, resourceGroup.`,\n      });\n    }\n\n    return {\n      tenantId,\n      clientId,\n      clientSecret,\n      subscriptionId,\n      resourceGroup,\n    };\n  }\n\n  private async getAzureADToken(credentials: {\n    tenantId: string;\n    clientId: string;\n    clientSecret: string;\n  }): Promise<string> {\n    const { tenantId, clientId, clientSecret } = credentials;\n\n    const cacheKey = `azure-mgmt-token:${tenantId}:${clientId}`;\n\n    const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n    if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n      return cached.token;\n    }\n\n    const tokenEndpoint = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`;\n\n    const body = new URLSearchParams({\n      grant_type: 'client_credentials',\n      client_id: clientId,\n      client_secret: clientSecret,\n      scope: 'https://management.azure.com/.default',\n    });\n\n    const response = await fetch(tokenEndpoint, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/x-www-form-urlencoded',\n      },\n      body: body.toString(),\n    });\n\n    if (!response.ok) {\n      const error = await response.text();\n      throw new MastraError({\n        id: 'AZURE_AD_TOKEN_ERROR',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: `Failed to get Azure AD token: ${response.status} ${error}`,\n      });\n    }\n\n    const tokenResponse = (await response.json()) as AzureTokenResponse;\n\n    const expiresAt = Math.floor(Date.now() / 1000) + tokenResponse.expires_in;\n\n    await this.tokenCache.set(cacheKey, {\n      token: tokenResponse.access_token,\n      expiresAt,\n    });\n\n    return tokenResponse.access_token;\n  }\n\n  private async fetchDeployments(\n    token: string,\n    credentials: {\n      subscriptionId: string;\n      resourceGroup: string;\n      resourceName: string;\n    },\n  ): Promise<AzureDeployment[]> {\n    const { subscriptionId, resourceGroup, resourceName } = credentials;\n\n    let url: string | undefined =\n      `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.CognitiveServices/accounts/${resourceName}/deployments?api-version=2024-10-01`;\n\n    const allDeployments: AzureDeployment[] = [];\n\n    while (url) {\n      const response = await fetch(url, {\n        headers: {\n          Authorization: `Bearer ${token}`,\n          'Content-Type': 'application/json',\n        },\n      });\n\n      if (!response.ok) {\n        const error = await response.text();\n        throw new MastraError({\n          id: 'AZURE_DEPLOYMENTS_FETCH_ERROR',\n          domain: 'LLM',\n          category: 'UNKNOWN',\n          text: `Failed to fetch Azure deployments: ${response.status} ${error}`,\n        });\n      }\n\n      const data = (await response.json()) as AzureDeploymentsResponse;\n\n      allDeployments.push(...data.value);\n\n      url = data.nextLink;\n    }\n\n    const successfulDeployments = allDeployments.filter(d => d.properties.provisioningState === 'Succeeded');\n\n    return successfulDeployments;\n  }\n\n  buildUrl(_routerId: string, _envVars?: typeof process.env): undefined {\n    return undefined;\n  }\n\n  async getApiKey(_modelId: string): Promise<string> {\n    return this.config.authentication?.type === 'entraId' ? '' : (this.config.apiKey ?? '');\n  }\n\n  private async getEntraIdToken(): Promise<string> {\n    if (this.config.authentication?.type !== 'entraId') {\n      throw new MastraError({\n        id: 'AZURE_ENTRA_ID_AUTH_NOT_CONFIGURED',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'Entra ID authentication is not configured for Azure OpenAI gateway',\n      });\n    }\n\n    const scope = this.config.authentication.scope ?? 'https://cognitiveservices.azure.com/.default';\n    const cacheKey = `azure-openai-token:${scope}`;\n    const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n    if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n      return cached.token;\n    }\n\n    let tokenRequest = this.entraIdTokenRequests.get(cacheKey);\n\n    if (!tokenRequest) {\n      tokenRequest = this.fetchEntraIdToken(scope, cacheKey);\n      this.entraIdTokenRequests.set(cacheKey, tokenRequest);\n    }\n\n    try {\n      const token = await tokenRequest;\n      return token.token;\n    } finally {\n      this.entraIdTokenRequests.delete(cacheKey);\n    }\n  }\n\n  private async fetchEntraIdToken(scope: string, cacheKey: string): Promise<CachedToken> {\n    if (this.config.authentication?.type !== 'entraId') {\n      throw new MastraError({\n        id: 'AZURE_ENTRA_ID_AUTH_NOT_CONFIGURED',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'Entra ID authentication is not configured for Azure OpenAI gateway',\n      });\n    }\n\n    const accessToken = await this.config.authentication.credential.getToken(scope);\n    if (!accessToken?.token) {\n      throw new MastraError({\n        id: 'AZURE_ENTRA_ID_TOKEN_ERROR',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'Failed to get Entra ID token for Azure OpenAI gateway',\n      });\n    }\n\n    const token = {\n      token: accessToken.token,\n      expiresAt: accessToken.expiresOnTimestamp\n        ? Math.floor(accessToken.expiresOnTimestamp / 1000)\n        : Math.floor(Date.now() / 1000) + 300,\n    };\n\n    await this.tokenCache.set(cacheKey, token);\n\n    return token;\n  }\n\n  private createEntraIdFetch(innerFetch: typeof globalThis.fetch = fetch): typeof globalThis.fetch {\n    return async (input, init) => {\n      const token = await this.getEntraIdToken();\n      const headers = new Headers(init?.headers);\n      headers.delete('api-key');\n      headers.set('Authorization', `Bearer ${token}`);\n\n      return innerFetch(input, {\n        ...init,\n        headers,\n      });\n    };\n  }\n\n  private createAzureResponsesWebSocketFetch({\n    useEntraId,\n    responsesWebSocket,\n  }: {\n    useEntraId: boolean;\n    responsesWebSocket?: ResponsesWebSocketOptions;\n  }): typeof globalThis.fetch & { close(): void } {\n    const websocketFetch = createOpenAIWebSocketFetch({\n      url: responsesWebSocket?.url ?? `wss://${this.config.resourceName}.openai.azure.com/openai/v1/responses`,\n      headers: responsesWebSocket?.headers,\n      apiKeyQueryParam: useEntraId ? false : 'api-key',\n      betaHeader: false,\n    });\n\n    return useEntraId\n      ? Object.assign(this.createEntraIdFetch(websocketFetch), { close: websocketFetch.close })\n      : websocketFetch;\n  }\n\n  async resolveLanguageModel({\n    modelId,\n    apiKey,\n    headers,\n    transport,\n    responsesWebSocket,\n  }: {\n    modelId: string;\n    providerId: string;\n    apiKey: string;\n    headers?: Record<string, string>;\n    transport?: OpenAITransport;\n    responsesWebSocket?: ResponsesWebSocketOptions;\n  }): Promise<LanguageModelV2> {\n    const useResponsesAPI = this.config.useResponsesAPI ?? false;\n    const apiVersion =\n      this.config.apiVersion ||\n      (useResponsesAPI || this.config.useDeploymentBasedUrls === false ? 'v1' : '2024-04-01-preview');\n    const useDeploymentBasedUrls = this.config.useDeploymentBasedUrls ?? (useResponsesAPI ? false : true);\n    const useEntraId = this.config.authentication?.type === 'entraId';\n    const useWebSocket = useResponsesAPI && transport === 'websocket';\n    const websocketFetch = useWebSocket\n      ? this.createAzureResponsesWebSocketFetch({\n          useEntraId,\n          responsesWebSocket,\n        })\n      : undefined;\n    const azureConfig = {\n      resourceName: this.config.resourceName,\n      apiKey: useEntraId ? '' : apiKey,\n      apiVersion,\n      // Mastra's Azure gateway has historically used deployment-based URLs.\n      // Keep that default for compatibility; set false with apiVersion: 'v1'\n      // to use the newer Azure OpenAI v1 route.\n      useDeploymentBasedUrls,\n      headers: { 'User-Agent': MASTRA_USER_AGENT, ...headers },\n      ...(websocketFetch && !useEntraId ? { fetch: websocketFetch } : {}),\n    };\n\n    const azureProvider = createAzure(\n      useEntraId\n        ? {\n            ...azureConfig,\n            fetch: websocketFetch ?? this.createEntraIdFetch(),\n          }\n        : azureConfig,\n    );\n\n    if (useResponsesAPI) {\n      const model = withAzureResponsesInputCompatibility(azureProvider.responses(modelId));\n      if (websocketFetch) {\n        Object.defineProperty(model, MASTRA_GATEWAY_STREAM_TRANSPORT, {\n          configurable: true,\n          value: {\n            type: 'openai-websocket',\n            close: websocketFetch.close,\n          },\n        });\n      }\n\n      return model;\n    }\n\n    return azureProvider(modelId);\n  }\n}\n","import { createAnthropic } from '@ai-sdk/anthropic-v6';\nimport { createOpenRouter } from '@openrouter/ai-sdk-provider-v5';\nimport { MastraError } from '../../../error/index.js';\nimport { PROVIDER_REGISTRY } from '../provider-registry.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig, GatewayLanguageModel } from './base.js';\nimport { GATEWAY_AUTH_HEADER, MASTRA_USER_AGENT } from './constants.js';\n\nexport interface MastraGatewayConfig {\n  apiKey?: string;\n  baseUrl?: string;\n  customFetch?: typeof globalThis.fetch;\n}\n\nexport class MastraGateway extends MastraModelGateway {\n  readonly id = 'mastra';\n  readonly name = 'Memory Gateway';\n\n  constructor(private config?: MastraGatewayConfig) {\n    super();\n  }\n\n  private getBaseUrl(): string {\n    const raw = this.config?.baseUrl ?? process.env['MASTRA_GATEWAY_URL'] ?? 'https://gateway-api.mastra.ai';\n    return raw.replace(/\\/+$/, '').replace(/\\/v1$/, '');\n  }\n\n  override shouldEnable(): boolean {\n    return !!(this.config?.apiKey ?? process.env['MASTRA_GATEWAY_API_KEY']);\n  }\n\n  async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n    if (!this.shouldEnable()) {\n      return {};\n    }\n\n    const openrouterConfig = PROVIDER_REGISTRY['openrouter'];\n    const models = openrouterConfig?.models ?? [];\n\n    const providers = {\n      mastra: {\n        apiKeyEnvVar: 'MASTRA_GATEWAY_API_KEY',\n        apiKeyHeader: 'Authorization',\n        name: 'Memory Gateway',\n        gateway: 'mastra',\n        models: [...models],\n        docUrl: 'https://mastra.ai/docs/gateway',\n      },\n    };\n\n    return providers;\n  }\n\n  async buildUrl(_modelId: string): Promise<string> {\n    return `${this.getBaseUrl()}/v1`;\n  }\n\n  async getApiKey(): Promise<string> {\n    const apiKey = this.config?.apiKey ?? process.env['MASTRA_GATEWAY_API_KEY'];\n    if (!apiKey) {\n      throw new MastraError({\n        id: 'MASTRA_GATEWAY_NO_API_KEY',\n        domain: 'LLM',\n        category: 'UNKNOWN',\n        text: 'Missing MASTRA_GATEWAY_API_KEY environment variable',\n      });\n    }\n    return apiKey;\n  }\n\n  resolveLanguageModel({\n    modelId,\n    providerId,\n    apiKey,\n    headers,\n  }: {\n    modelId: string;\n    providerId: string;\n    apiKey: string;\n    headers?: Record<string, string>;\n  }): GatewayLanguageModel {\n    const baseURL = `${this.getBaseUrl()}/v1`;\n    const fullModelId = `${providerId}/${modelId}`;\n\n    if (this.config?.customFetch && providerId === 'anthropic') {\n      // Anthropic OAuth path: use native Anthropic SDK (sends /messages, not /chat/completions)\n      return createAnthropic({\n        apiKey: 'oauth-gateway-placeholder',\n        baseURL,\n        headers: {\n          'User-Agent': MASTRA_USER_AGENT,\n          [GATEWAY_AUTH_HEADER]: `Bearer ${apiKey}`,\n          ...headers,\n        },\n        fetch: this.config.customFetch as any,\n      })(modelId) as unknown as GatewayLanguageModel;\n    }\n\n    if (this.config?.customFetch) {\n      // Non-Anthropic OAuth path: gateway key in GATEWAY_AUTH_HEADER, customFetch owns Authorization\n      return createOpenRouter({\n        apiKey: 'oauth-gateway-placeholder',\n        baseURL,\n        headers: {\n          'User-Agent': MASTRA_USER_AGENT,\n          [GATEWAY_AUTH_HEADER]: `Bearer ${apiKey}`,\n          ...headers,\n        },\n        fetch: this.config.customFetch,\n      }).chat(fullModelId) as unknown as GatewayLanguageModel;\n    }\n\n    // API key path: gateway key goes via Authorization (standard flow)\n    return createOpenRouter({\n      apiKey,\n      baseURL,\n      headers: {\n        'User-Agent': MASTRA_USER_AGENT,\n        ...headers,\n      },\n    }).chat(fullModelId) as unknown as GatewayLanguageModel;\n  }\n}\n","import { MastraError } from '../../../error/index.js';\nimport type { MastraModelGatewayInterface } from './base.js';\nexport {\n  MastraModelGateway,\n  type MastraModelGatewayInterface,\n  type ProviderConfig,\n  type GatewayLanguageModel,\n  type GatewayAuthRequest,\n  type GatewayAuthResult,\n  type GatewayAuthSource,\n} from './base.js';\nexport {\n  AzureOpenAIGateway,\n  type AzureAccessToken,\n  type AzureOpenAIGatewayConfig,\n  type AzureTokenCredential,\n} from './azure.js';\nexport { ModelsDevGateway } from './models-dev.js';\nexport { MastraGateway, type MastraGatewayConfig } from './mastra.js';\nexport { NetlifyGateway } from './netlify.js';\n\nexport function getGatewayId(gateway: MastraModelGatewayInterface): string {\n  return gateway.getId?.() ?? gateway.id;\n}\n\nexport function shouldEnableGateway(gateway: MastraModelGatewayInterface): boolean {\n  return gateway.shouldEnable?.() ?? true;\n}\n\nexport function serializeGatewayForSpan(\n  gateway: MastraModelGatewayInterface,\n): { id: string; name: string } & Record<string, unknown> {\n  return gateway.serializeForSpan?.() ?? { id: getGatewayId(gateway), name: gateway.name };\n}\n\n/**\n * Find the gateway that handles a specific model ID based on gateway ID\n * Gateway ID is used as the prefix (e.g., \"netlify\" for netlify gateway)\n * Exception: models.dev is a provider registry and doesn't use a prefix\n */\nexport function findGatewayForModel(\n  gatewayId: string,\n  gateways: MastraModelGatewayInterface[],\n): MastraModelGatewayInterface {\n  // First, check for gateways whose ID matches the prefix (true gateways like netlify, openrouter, vercel)\n  const prefixedGateway = gateways.find(g => {\n    const id = getGatewayId(g);\n    return id !== 'models.dev' && (id === gatewayId || gatewayId.startsWith(`${id}/`));\n  });\n  if (prefixedGateway) {\n    return prefixedGateway;\n  }\n\n  // Then check models.dev (provider registry without prefix)\n  const modelsDevGateway = gateways.find(g => getGatewayId(g) === 'models.dev');\n  if (modelsDevGateway) {\n    return modelsDevGateway;\n  }\n\n  throw new MastraError({\n    id: 'MODEL_ROUTER_NO_GATEWAY_FOUND',\n    category: 'USER',\n    domain: 'MODEL_ROUTER',\n    text: `No Mastra model router gateway found for model id ${gatewayId}`,\n  });\n}\n","{\n  \"providers\": {\n    \"helicone\": {\n      \"url\": \"https://ai-gateway.helicone.ai/v1\",\n      \"apiKeyEnvVar\": \"HELICONE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Helicone\",\n      \"models\": [\n        \"chatgpt-4o-latest\",\n        \"claude-3-haiku-20240307\",\n        \"claude-3.5-haiku\",\n        \"claude-3.5-sonnet-v2\",\n        \"claude-3.7-sonnet\",\n        \"claude-4.5-haiku\",\n        \"claude-4.5-opus\",\n        \"claude-4.5-sonnet\",\n        \"claude-haiku-4-5-20251001\",\n        \"claude-opus-4\",\n        \"claude-opus-4-1\",\n        \"claude-opus-4-1-20250805\",\n        \"claude-sonnet-4\",\n        \"claude-sonnet-4-5-20250929\",\n        \"deepseek-r1-distill-llama-70b\",\n        \"deepseek-reasoner\",\n        \"deepseek-tng-r1t2-chimera\",\n        \"deepseek-v3\",\n        \"deepseek-v3.1-terminus\",\n        \"deepseek-v3.2\",\n        \"ernie-4.5-21b-a3b-thinking\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-flash-lite\",\n        \"gemini-2.5-pro\",\n        \"gemini-3-pro-preview\",\n        \"gemma-3-12b-it\",\n        \"gemma2-9b-it\",\n        \"glm-4.6\",\n        \"gpt-4.1\",\n        \"gpt-4.1-mini\",\n        \"gpt-4.1-mini-2025-04-14\",\n        \"gpt-4.1-nano\",\n        \"gpt-4o\",\n        \"gpt-4o-mini\",\n        \"gpt-5\",\n        \"gpt-5-chat-latest\",\n        \"gpt-5-codex\",\n        \"gpt-5-mini\",\n        \"gpt-5-nano\",\n        \"gpt-5-pro\",\n        \"gpt-5.1\",\n        \"gpt-5.1-chat-latest\",\n        \"gpt-5.1-codex\",\n        \"gpt-5.1-codex-mini\",\n        \"gpt-oss-120b\",\n        \"gpt-oss-20b\",\n        \"grok-3\",\n        \"grok-3-mini\",\n        \"grok-4\",\n        \"grok-4-1-fast-non-reasoning\",\n        \"grok-4-1-fast-reasoning\",\n        \"grok-4-fast-non-reasoning\",\n        \"grok-4-fast-reasoning\",\n        \"grok-code-fast-1\",\n        \"hermes-2-pro-llama-3-8b\",\n        \"kimi-k2-0711\",\n        \"kimi-k2-0905\",\n        \"kimi-k2-thinking\",\n        \"llama-3.1-8b-instant\",\n        \"llama-3.1-8b-instruct\",\n        \"llama-3.1-8b-instruct-turbo\",\n        \"llama-3.3-70b-instruct\",\n        \"llama-3.3-70b-versatile\",\n        \"llama-4-maverick\",\n        \"llama-4-scout\",\n        \"llama-guard-4\",\n        \"llama-prompt-guard-2-22m\",\n        \"llama-prompt-guard-2-86m\",\n        \"mistral-large-2411\",\n        \"mistral-nemo\",\n        \"mistral-small\",\n        \"o1\",\n        \"o1-mini\",\n        \"o3\",\n        \"o3-mini\",\n        \"o3-pro\",\n        \"o4-mini\",\n        \"qwen2.5-coder-7b-fast\",\n        \"qwen3-235b-a22b-thinking\",\n        \"qwen3-30b-a3b\",\n        \"qwen3-32b\",\n        \"qwen3-coder\",\n        \"qwen3-coder-30b-a3b-instruct\",\n        \"qwen3-next-80b-a3b-instruct\",\n        \"qwen3-vl-235b-a22b-instruct\",\n        \"sonar\",\n        \"sonar-deep-research\",\n        \"sonar-pro\",\n        \"sonar-reasoning\",\n        \"sonar-reasoning-pro\"\n      ],\n      \"docUrl\": \"https://helicone.ai/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"auriko\": {\n      \"url\": \"https://api.auriko.ai/v1\",\n      \"apiKeyEnvVar\": \"AURIKO_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Auriko\",\n      \"models\": [\n        \"claude-opus-4-6\",\n        \"claude-opus-4-7\",\n        \"claude-sonnet-4-6\",\n        \"deepseek-v4-flash\",\n        \"deepseek-v4-pro\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-pro\",\n        \"gemini-3.1-pro-preview\",\n        \"glm-5.1\",\n        \"grok-4.3\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\",\n        \"minimax-m2-7\",\n        \"minimax-m2-7-highspeed\",\n        \"qwen-3.6-plus\"\n      ],\n      \"docUrl\": \"https://docs.auriko.ai\",\n      \"gateway\": \"models.dev\"\n    },\n    \"firepass\": {\n      \"url\": \"https://api.fireworks.ai/inference/v1/\",\n      \"apiKeyEnvVar\": \"FIREPASS_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Fireworks (Firepass)\",\n      \"models\": [\"accounts/fireworks/routers/kimi-k2p6-turbo\"],\n      \"docUrl\": \"https://docs.fireworks.ai/firepass\",\n      \"gateway\": \"models.dev\"\n    },\n    \"nano-gpt\": {\n      \"url\": \"https://nano-gpt.com/api/v1\",\n      \"apiKeyEnvVar\": \"NANO_GPT_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"NanoGPT\",\n      \"models\": [\n        \"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B\",\n        \"Baichuan-M2\",\n        \"Baichuan4-Air\",\n        \"Baichuan4-Turbo\",\n        \"CrucibleLab/L3.3-70B-Loki-V2.0\",\n        \"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond\",\n        \"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0\",\n        \"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1\",\n        \"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2\",\n        \"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2\",\n        \"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B\",\n        \"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B\",\n        \"GLM-4.5-Air-Derestricted\",\n        \"GLM-4.5-Air-Derestricted-Iceblink\",\n        \"GLM-4.5-Air-Derestricted-Iceblink-ReExtract\",\n        \"GLM-4.5-Air-Derestricted-Iceblink-v2\",\n        \"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract\",\n        \"GLM-4.5-Air-Derestricted-Steam\",\n        \"GLM-4.5-Air-Derestricted-Steam-ReExtract\",\n        \"GLM-4.6-Derestricted-v5\",\n        \"GalrionSoftworks/MN-LooseCannon-12B-v1\",\n        \"Gemma-3-27B-ArliAI-RPMax-v3\",\n        \"Gemma-3-27B-Big-Tiger-v3\",\n        \"Gemma-3-27B-CardProjector-v4\",\n        \"Gemma-3-27B-Glitter\",\n        \"Gemma-3-27B-Nidum-Uncensored\",\n        \"Gemma-3-27B-it\",\n        \"Gemma-3-27B-it-Abliterated\",\n        \"Gryphe/MythoMax-L2-13b\",\n        \"Infermatic/MN-12B-Inferor-v0.0\",\n        \"KAT-Coder-Air-V1\",\n        \"KAT-Coder-Exp-72B-1010\",\n        \"KAT-Coder-Pro-V1\",\n        \"LLM360/K2-Think\",\n        \"LatitudeGames/Wayfarer-Large-70B-Llama-3.3\",\n        \"Llama-3.3+(3.1v3.3)-70B-Hanami-x1\",\n        \"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1\",\n        \"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter\",\n        \"Llama-3.3-70B-Anthrobomination\",\n        \"Llama-3.3-70B-Argunaut-1-SFT\",\n        \"Llama-3.3-70B-ArliAI-RPMax-v1.4\",\n        \"Llama-3.3-70B-ArliAI-RPMax-v2\",\n        \"Llama-3.3-70B-ArliAI-RPMax-v3\",\n        \"Llama-3.3-70B-Aurora-Borealis\",\n        \"Llama-3.3-70B-Bigger-Body\",\n        \"Llama-3.3-70B-Cirrus-x1\",\n        \"Llama-3.3-70B-Cu-Mai-R1\",\n        \"Llama-3.3-70B-Damascus-R1\",\n        \"Llama-3.3-70B-Dark-Ages-v0.1\",\n        \"Llama-3.3-70B-Electra-R1\",\n        \"Llama-3.3-70B-Electranova-v1.0\",\n        \"Llama-3.3-70B-Fallen-R1-v1\",\n        \"Llama-3.3-70B-Fallen-v1\",\n        \"Llama-3.3-70B-Forgotten-Abomination-v5.0\",\n        \"Llama-3.3-70B-Forgotten-Safeword-3.6\",\n        \"Llama-3.3-70B-GeneticLemonade-Opus\",\n        \"Llama-3.3-70B-GeneticLemonade-Unleashed-v3\",\n        \"Llama-3.3-70B-Ignition-v0.1\",\n        \"Llama-3.3-70B-Incandescent-Malevolence\",\n        \"Llama-3.3-70B-Legion-V2.1\",\n        \"Llama-3.3-70B-MS-Nevoria\",\n        \"Llama-3.3-70B-Magnum-v4-SE\",\n        \"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP\",\n        \"Llama-3.3-70B-Mhnnn-x1\",\n        \"Llama-3.3-70B-MiraiFanfare\",\n        \"Llama-3.3-70B-Mokume-Gane-R1\",\n        \"Llama-3.3-70B-Nova\",\n        \"Llama-3.3-70B-Predatorial-Extasy\",\n        \"Llama-3.3-70B-Progenitor-V3.3\",\n        \"Llama-3.3-70B-RAWMAW\",\n        \"Llama-3.3-70B-Sapphira-0.1\",\n        \"Llama-3.3-70B-Sapphira-0.2\",\n        \"Llama-3.3-70B-Shakudo\",\n        \"Llama-3.3-70B-StrawberryLemonade-v1.0\",\n        \"Llama-3.3-70B-Strawberrylemonade-v1.2\",\n        \"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0\",\n        \"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1\",\n        \"Llama-3.3-70B-Vulpecula-R1\",\n        \"Magistral-Small-2506\",\n        \"MarinaraSpaghetti/NemoMix-Unleashed-12B\",\n        \"Meta-Llama-3-1-8B-Instruct-FP8\",\n        \"MiniMax-M1\",\n        \"MiniMax-M2\",\n        \"MiniMaxAI/MiniMax-M1-80k\",\n        \"Mistral-Nemo-12B-Instruct-2407\",\n        \"NeverSleep/Llama-3-Lumimaid-70B-v0.1\",\n        \"NeverSleep/Lumimaid-v0.2-70B\",\n        \"NousResearch 2/DeepHermes-3-Mistral-24B-Preview\",\n        \"NousResearch 2/Hermes-4-70B:thinking\",\n        \"NousResearch 2/hermes-3-llama-3.1-70b\",\n        \"NousResearch 2/hermes-4-405b\",\n        \"NousResearch 2/hermes-4-405b:thinking\",\n        \"NousResearch 2/hermes-4-70b\",\n        \"QwQ-32B-ArliAI-RpR-v1\",\n        \"Qwen2.5-32B-EVA-v0.2\",\n        \"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0\",\n        \"ReadyArt/The-Omega-Abomination-L-70B-v1.0\",\n        \"Salesforce/Llama-xLAM-2-70b-fc-r\",\n        \"Sao10K/L3-8B-Stheno-v3.2\",\n        \"Sao10K/L3.1-70B-Euryale-v2.2\",\n        \"Sao10K/L3.1-70B-Hanami-x1\",\n        \"Sao10K/L3.3-70B-Euryale-v2.3\",\n        \"Steelskull/L3.3-Cu-Mai-R1-70b\",\n        \"Steelskull/L3.3-Electra-R1-70b\",\n        \"Steelskull/L3.3-MS-Evalebis-70b\",\n        \"Steelskull/L3.3-MS-Evayale-70B\",\n        \"Steelskull/L3.3-MS-Nevoria-70b\",\n        \"Steelskull/L3.3-Nevoria-R1-70b\",\n        \"TEE/deepseek-r1-0528\",\n        \"TEE/deepseek-v3.1\",\n        \"TEE/deepseek-v3.2\",\n        \"TEE/gemma-3-27b-it\",\n        \"TEE/glm-4.6\",\n        \"TEE/glm-4.7\",\n        \"TEE/glm-4.7-flash\",\n        \"TEE/glm-5\",\n        \"TEE/gpt-oss-120b\",\n        \"TEE/gpt-oss-20b\",\n        \"TEE/kimi-k2-thinking\",\n        \"TEE/kimi-k2.5\",\n        \"TEE/kimi-k2.5-thinking\",\n        \"TEE/llama3-3-70b\",\n        \"TEE/minimax-m2.1\",\n        \"TEE/qwen2.5-vl-72b-instruct\",\n        \"TEE/qwen3-30b-a3b-instruct-2507\",\n        \"TEE/qwen3-coder\",\n        \"TEE/qwen3.5-397b-a17b\",\n        \"THUDM/GLM-4-32B-0414\",\n        \"THUDM/GLM-4-9B-0414\",\n        \"THUDM/GLM-Z1-32B-0414\",\n        \"THUDM/GLM-Z1-9B-0414\",\n        \"THUDM/GLM-Z1-Rumination-32B-0414\",\n        \"TheDrummer 2/Anubis-70B-v1\",\n        \"TheDrummer 2/Anubis-70B-v1.1\",\n        \"TheDrummer 2/Cydonia-24B-v2\",\n        \"TheDrummer 2/Cydonia-24B-v4\",\n        \"TheDrummer 2/Cydonia-24B-v4.1\",\n        \"TheDrummer 2/Cydonia-24B-v4.3\",\n        \"TheDrummer 2/Magidonia-24B-v4.3\",\n        \"TheDrummer 2/Rocinante-12B-v1.1\",\n        \"TheDrummer 2/UnslopNemo-12B-v4.1\",\n        \"TheDrummer 2/skyfall-36b-v2\",\n        \"Tongyi-Zhiwen/QwenLong-L1-32B\",\n        \"VongolaChouko/Starcannon-Unleashed-12B-v1.0\",\n        \"abacusai/Dracarys-72B-Instruct\",\n        \"aion-labs/aion-1.0\",\n        \"aion-labs/aion-1.0-mini\",\n        \"aion-labs/aion-rp-llama-3.1-8b\",\n        \"alibaba/qwen3.6-flash\",\n        \"allenai/molmo-2-8b\",\n        \"allenai/olmo-3-32b-think\",\n        \"allenai/olmo-3.1-32b-instruct\",\n        \"allenai/olmo-3.1-32b-think\",\n        \"amazon/nova-2-lite-v1\",\n        \"amazon/nova-lite-v1\",\n        \"amazon/nova-micro-v1\",\n        \"amazon/nova-pro-v1\",\n        \"anthracite-org/magnum-v2-72b\",\n        \"anthracite-org/magnum-v4-72b\",\n        \"anthropic/claude-opus-4.6\",\n        \"anthropic/claude-opus-4.6:thinking\",\n        \"anthropic/claude-opus-4.6:thinking:low\",\n        \"anthropic/claude-opus-4.6:thinking:max\",\n        \"anthropic/claude-opus-4.6:thinking:medium\",\n        \"anthropic/claude-sonnet-4.6\",\n        \"anthropic/claude-sonnet-4.6:thinking\",\n        \"arcee-ai/trinity-large\",\n        \"arcee-ai/trinity-mini\",\n        \"asi1-mini\",\n        \"auto-model\",\n        \"auto-model-basic\",\n        \"auto-model-premium\",\n        \"auto-model-standard\",\n        \"azure-gpt-4-turbo\",\n        \"azure-gpt-4o\",\n        \"azure-gpt-4o-mini\",\n        \"azure-o1\",\n        \"azure-o3-mini\",\n        \"baidu/ernie-4.5-300b-a47b\",\n        \"baidu/ernie-4.5-vl-28b-a3b\",\n        \"baseten/Kimi-K2-Instruct-FP4\",\n        \"brave\",\n        \"brave-pro\",\n        \"brave-research\",\n        \"chroma\",\n        \"chutesai/Mistral-Small-3.2-24B-Instruct-2506\",\n        \"claude-3-5-haiku-20241022\",\n        \"claude-3-5-sonnet-20240620\",\n        \"claude-3-5-sonnet-20241022\",\n        \"claude-3-7-sonnet-20250219\",\n        \"claude-3-7-sonnet-reasoner\",\n        \"claude-3-7-sonnet-thinking\",\n        \"claude-3-7-sonnet-thinking:1024\",\n        \"claude-3-7-sonnet-thinking:128000\",\n        \"claude-3-7-sonnet-thinking:32768\",\n        \"claude-3-7-sonnet-thinking:8192\",\n        \"claude-haiku-4-5-20251001\",\n        \"claude-opus-4-1-20250805\",\n        \"claude-opus-4-1-thinking\",\n        \"claude-opus-4-1-thinking:1024\",\n        \"claude-opus-4-1-thinking:32000\",\n        \"claude-opus-4-1-thinking:32768\",\n        \"claude-opus-4-1-thinking:8192\",\n        \"claude-opus-4-20250514\",\n        \"claude-opus-4-5-20251101\",\n        \"claude-opus-4-5-20251101:thinking\",\n        \"claude-opus-4-thinking\",\n        \"claude-opus-4-thinking:1024\",\n        \"claude-opus-4-thinking:32000\",\n        \"claude-opus-4-thinking:32768\",\n        \"claude-opus-4-thinking:8192\",\n        \"claude-sonnet-4-20250514\",\n        \"claude-sonnet-4-5-20250929\",\n        \"claude-sonnet-4-5-20250929-thinking\",\n        \"claude-sonnet-4-thinking\",\n        \"claude-sonnet-4-thinking:1024\",\n        \"claude-sonnet-4-thinking:32768\",\n        \"claude-sonnet-4-thinking:64000\",\n        \"claude-sonnet-4-thinking:8192\",\n        \"cognitivecomputations/dolphin-2.9.2-qwen2-72b\",\n        \"cohere/command-r\",\n        \"cohere/command-r-plus-08-2024\",\n        \"command-a-reasoning-08-2025\",\n        \"deepclaude\",\n        \"deepcogito/cogito-v1-preview-qwen-32B\",\n        \"deepcogito/cogito-v2.1-671b\",\n        \"deepseek-ai/DeepSeek-R1-0528\",\n        \"deepseek-ai/DeepSeek-V3.1\",\n        \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n        \"deepseek-ai/DeepSeek-V3.1-Terminus:thinking\",\n        \"deepseek-ai/DeepSeek-V3.1:thinking\",\n        \"deepseek-ai/deepseek-v3.2-exp\",\n        \"deepseek-ai/deepseek-v3.2-exp-thinking\",\n        \"deepseek-chat\",\n        \"deepseek-chat-cheaper\",\n        \"deepseek-math-v2\",\n        \"deepseek-r1\",\n        \"deepseek-r1-sambanova\",\n        \"deepseek-reasoner\",\n        \"deepseek-reasoner-cheaper\",\n        \"deepseek-v3-0324\",\n        \"deepseek/deepseek-prover-v2-671b\",\n        \"deepseek/deepseek-v3.2\",\n        \"deepseek/deepseek-v3.2-speciale\",\n        \"deepseek/deepseek-v3.2:thinking\",\n        \"dmind/dmind-1\",\n        \"dmind/dmind-1-mini\",\n        \"doubao-1-5-thinking-pro-250415\",\n        \"doubao-1-5-thinking-pro-vision-250415\",\n        \"doubao-1-5-thinking-vision-pro-250428\",\n        \"doubao-1.5-pro-256k\",\n        \"doubao-1.5-pro-32k\",\n        \"doubao-1.5-vision-pro-32k\",\n        \"doubao-seed-1-6-250615\",\n        \"doubao-seed-1-6-flash-250615\",\n        \"doubao-seed-1-6-thinking-250615\",\n        \"doubao-seed-1-8-251215\",\n        \"doubao-seed-2-0-code-preview-260215\",\n        \"doubao-seed-2-0-lite-260215\",\n        \"doubao-seed-2-0-mini-260215\",\n        \"doubao-seed-2-0-pro-260215\",\n        \"doubao-seed-code-preview-latest\",\n        \"ernie-4.5-8k-preview\",\n        \"ernie-4.5-turbo-128k\",\n        \"ernie-4.5-turbo-vl-32k\",\n        \"ernie-5.0-thinking-latest\",\n        \"ernie-5.0-thinking-preview\",\n        \"ernie-x1-32k\",\n        \"ernie-x1-32k-preview\",\n        \"ernie-x1-turbo-32k\",\n        \"ernie-x1.1-preview\",\n        \"essentialai/rnj-1-instruct\",\n        \"exa-answer\",\n        \"exa-research\",\n        \"exa-research-pro\",\n        \"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5\",\n        \"fastgpt\",\n        \"featherless-ai/Qwerky-72B\",\n        \"gemini-2.0-flash-001\",\n        \"gemini-2.0-flash-exp-image-generation\",\n        \"gemini-2.0-flash-lite\",\n        \"gemini-2.0-flash-thinking-exp-01-21\",\n        \"gemini-2.0-flash-thinking-exp-1219\",\n        \"gemini-2.0-pro-exp-02-05\",\n        \"gemini-2.0-pro-reasoner\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-flash-lite\",\n        \"gemini-2.5-flash-lite-preview-06-17\",\n        \"gemini-2.5-flash-lite-preview-09-2025\",\n        \"gemini-2.5-flash-lite-preview-09-2025-thinking\",\n        \"gemini-2.5-flash-nothinking\",\n        \"gemini-2.5-flash-preview-04-17\",\n        \"gemini-2.5-flash-preview-04-17:thinking\",\n        \"gemini-2.5-flash-preview-05-20\",\n        \"gemini-2.5-flash-preview-05-20:thinking\",\n        \"gemini-2.5-flash-preview-09-2025\",\n        \"gemini-2.5-flash-preview-09-2025-thinking\",\n        \"gemini-2.5-pro\",\n        \"gemini-2.5-pro-exp-03-25\",\n        \"gemini-2.5-pro-preview-03-25\",\n        \"gemini-2.5-pro-preview-05-06\",\n        \"gemini-2.5-pro-preview-06-05\",\n        \"gemini-3-pro-image-preview\",\n        \"gemini-3-pro-preview\",\n        \"gemini-3-pro-preview-thinking\",\n        \"gemini-exp-1206\",\n        \"glm-4\",\n        \"glm-4-air\",\n        \"glm-4-air-0111\",\n        \"glm-4-airx\",\n        \"glm-4-flash\",\n        \"glm-4-long\",\n        \"glm-4-plus\",\n        \"glm-4-plus-0111\",\n        \"glm-4.1v-thinking-flash\",\n        \"glm-4.1v-thinking-flashx\",\n        \"glm-z1-air\",\n        \"glm-z1-airx\",\n        \"glm-zero-preview\",\n        \"google/gemini-3-flash-preview\",\n        \"google/gemini-3-flash-preview-thinking\",\n        \"google/gemini-flash-1.5\",\n        \"grok-3-beta\",\n        \"grok-3-fast-beta\",\n        \"grok-3-mini-beta\",\n        \"grok-3-mini-fast-beta\",\n        \"hidream\",\n        \"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated\",\n        \"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated\",\n        \"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated\",\n        \"huihui-ai/Llama-3.3-70B-Instruct-abliterated\",\n        \"huihui-ai/Qwen2.5-32B-Instruct-abliterated\",\n        \"hunyuan-t1-latest\",\n        \"hunyuan-turbos-20250226\",\n        \"inflatebot/MN-12B-Mag-Mell-R1\",\n        \"inflection/inflection-3-pi\",\n        \"inflection/inflection-3-productivity\",\n        \"jamba-large\",\n        \"jamba-large-1.6\",\n        \"jamba-large-1.7\",\n        \"jamba-mini\",\n        \"jamba-mini-1.6\",\n        \"jamba-mini-1.7\",\n        \"kimi-k2-instruct-fast\",\n        \"kimi-thinking-preview\",\n        \"learnlm-1.5-pro-experimental\",\n        \"meganova-ai/manta-flash-1.0\",\n        \"meganova-ai/manta-mini-1.0\",\n        \"meganova-ai/manta-pro-1.0\",\n        \"meituan-longcat/LongCat-Flash-Chat-FP8\",\n        \"meta-llama/llama-3.1-8b-instruct\",\n        \"meta-llama/llama-3.2-3b-instruct\",\n        \"meta-llama/llama-3.2-90b-vision-instruct\",\n        \"meta-llama/llama-3.3-70b-instruct\",\n        \"meta-llama/llama-4-maverick\",\n        \"meta-llama/llama-4-scout\",\n        \"microsoft/MAI-DS-R1-FP8\",\n        \"microsoft/wizardlm-2-8x22b\",\n        \"minimax/minimax-01\",\n        \"minimax/minimax-m2-her\",\n        \"minimax/minimax-m2.1\",\n        \"minimax/minimax-m2.5\",\n        \"minimax/minimax-m2.7\",\n        \"miromind-ai/mirothinker-v1.5-235b\",\n        \"mistral-small-31-24b-instruct\",\n        \"mistralai/Devstral-Small-2505\",\n        \"mistralai/Mistral-Nemo-Instruct-2407\",\n        \"mistralai/codestral-2508\",\n        \"mistralai/devstral-2-123b-instruct-2512\",\n        \"mistralai/ministral-14b-2512\",\n        \"mistralai/ministral-14b-instruct-2512\",\n        \"mistralai/ministral-3b-2512\",\n        \"mistralai/ministral-8b-2512\",\n        \"mistralai/mistral-7b-instruct\",\n        \"mistralai/mistral-large\",\n        \"mistralai/mistral-large-3-675b-instruct-2512\",\n        \"mistralai/mistral-medium-3\",\n        \"mistralai/mistral-medium-3.1\",\n        \"mistralai/mistral-saba\",\n        \"mistralai/mistral-small-creative\",\n        \"mistralai/mistral-tiny\",\n        \"mistralai/mixtral-8x22b-instruct-v0.1\",\n        \"mistralai/mixtral-8x7b-instruct-v0.1\",\n        \"mlabonne/NeuralDaredevil-8B-abliterated\",\n        \"moonshotai/Kimi-Dev-72B\",\n        \"moonshotai/Kimi-K2-Instruct-0905\",\n        \"moonshotai/kimi-k2-instruct\",\n        \"moonshotai/kimi-k2-instruct-0711\",\n        \"moonshotai/kimi-k2-thinking\",\n        \"moonshotai/kimi-k2-thinking-original\",\n        \"moonshotai/kimi-k2-thinking-turbo-original\",\n        \"moonshotai/kimi-k2.5\",\n        \"moonshotai/kimi-k2.5:thinking\",\n        \"moonshotai/kimi-k2.6\",\n        \"moonshotai/kimi-k2.6:thinking\",\n        \"nex-agi/deepseek-v3.1-nex-n1\",\n        \"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16\",\n        \"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF\",\n        \"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1\",\n        \"nvidia/Llama-3.3-Nemotron-Super-49B-v1\",\n        \"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5\",\n        \"nvidia/nemotron-3-nano-30b-a3b\",\n        \"nvidia/nvidia-nemotron-nano-9b-v2\",\n        \"openai/chatgpt-4o-latest\",\n        \"openai/gpt-3.5-turbo\",\n        \"openai/gpt-4-turbo\",\n        \"openai/gpt-4-turbo-preview\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4.1-nano\",\n        \"openai/gpt-4o\",\n        \"openai/gpt-4o-2024-08-06\",\n        \"openai/gpt-4o-2024-11-20\",\n        \"openai/gpt-4o-mini\",\n        \"openai/gpt-4o-mini-search-preview\",\n        \"openai/gpt-4o-search-preview\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-chat-latest\",\n        \"openai/gpt-5-codex\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-5-pro\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.1-2025-11-13\",\n        \"openai/gpt-5.1-chat\",\n        \"openai/gpt-5.1-chat-latest\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-max\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.2-chat\",\n        \"openai/gpt-5.2-codex\",\n        \"openai/gpt-5.2-pro\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"openai/gpt-oss-safeguard-20b\",\n        \"openai/o1\",\n        \"openai/o1-preview\",\n        \"openai/o1-pro\",\n        \"openai/o3\",\n        \"openai/o3-deep-research\",\n        \"openai/o3-mini\",\n        \"openai/o3-mini-high\",\n        \"openai/o3-mini-low\",\n        \"openai/o3-pro-2025-06-10\",\n        \"openai/o4-mini\",\n        \"openai/o4-mini-deep-research\",\n        \"openai/o4-mini-high\",\n        \"pamanseau/OpenReasoning-Nemotron-32B\",\n        \"phi-4-mini-instruct\",\n        \"phi-4-multimodal-instruct\",\n        \"qvq-max\",\n        \"qwen-3.6-plus\",\n        \"qwen-image\",\n        \"qwen-long\",\n        \"qwen-max\",\n        \"qwen-plus\",\n        \"qwen-turbo\",\n        \"qwen/Qwen3.6-35B-A3B\",\n        \"qwen/Qwen3.6-35B-A3B:thinking\",\n        \"qwen/qwen3.5-397b-a17b\",\n        \"qwen25-vl-72b-instruct\",\n        \"qwen3-30b-a3b-instruct-2507\",\n        \"qwen3-coder-30b-a3b-instruct\",\n        \"qwen3-max-2026-01-23\",\n        \"qwen3-vl-235b-a22b-instruct-original\",\n        \"qwen3-vl-235b-a22b-thinking\",\n        \"qwen3.6-max-preview\",\n        \"qwq-32b\",\n        \"raifle/sorcererlm-8x22b\",\n        \"sarvan-medium\",\n        \"shisa-ai/shisa-v2-llama3.3-70b\",\n        \"shisa-ai/shisa-v2.1-llama3.3-70b\",\n        \"sonar\",\n        \"sonar-deep-research\",\n        \"sonar-pro\",\n        \"sonar-reasoning-pro\",\n        \"soob3123/GrayLine-Qwen3-8B\",\n        \"soob3123/Veiled-Calla-12B\",\n        \"soob3123/amoral-gemma3-27B-v2\",\n        \"step-2-16k-exp\",\n        \"step-2-mini\",\n        \"step-3\",\n        \"step-r1-v-mini\",\n        \"stepfun-ai/step-3.5-flash\",\n        \"stepfun-ai/step-3.5-flash:thinking\",\n        \"study_gpt-chatgpt-4o-latest\",\n        \"tencent/Hunyuan-MT-7B\",\n        \"tngtech/DeepSeek-TNG-R1T2-Chimera\",\n        \"tngtech/tng-r1t-chimera\",\n        \"undi95/remm-slerp-l2-13b\",\n        \"universal-summarizer\",\n        \"unsloth/gemma-3-12b-it\",\n        \"unsloth/gemma-3-1b-it\",\n        \"unsloth/gemma-3-27b-it\",\n        \"unsloth/gemma-3-4b-it\",\n        \"v0-1.0-md\",\n        \"v0-1.5-lg\",\n        \"v0-1.5-md\",\n        \"venice-uncensored\",\n        \"venice-uncensored:web\",\n        \"x-ai/grok-4-07-09\",\n        \"x-ai/grok-4-fast\",\n        \"x-ai/grok-4-fast:thinking\",\n        \"x-ai/grok-4.1-fast\",\n        \"x-ai/grok-4.1-fast-reasoning\",\n        \"x-ai/grok-code-fast-1\",\n        \"xiaomi/mimo-v2-flash\",\n        \"xiaomi/mimo-v2-flash-original\",\n        \"xiaomi/mimo-v2-flash-thinking\",\n        \"xiaomi/mimo-v2-flash-thinking-original\",\n        \"yi-large\",\n        \"yi-lightning\",\n        \"yi-medium-200k\",\n        \"z-ai/glm-4.5v\",\n        \"z-ai/glm-4.5v:thinking\",\n        \"z-ai/glm-4.6\",\n        \"z-ai/glm-4.6:thinking\",\n        \"z-image-turbo\",\n        \"zai-org/glm-4.7\",\n        \"zai-org/glm-4.7-flash\",\n        \"zai-org/glm-5\",\n        \"zai-org/glm-5.1\",\n        \"zai-org/glm-5.1:thinking\",\n        \"zai-org/glm-5:thinking\"\n      ],\n      \"docUrl\": \"https://docs.nano-gpt.com\",\n      \"gateway\": \"models.dev\"\n    },\n    \"io-net\": {\n      \"url\": \"https://api.intelligence.io.solutions/api/v1\",\n      \"apiKeyEnvVar\": \"IOINTELLIGENCE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"IO.NET\",\n      \"models\": [\n        \"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar\",\n        \"Qwen/Qwen2.5-VL-32B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n        \"deepseek-ai/DeepSeek-R1-0528\",\n        \"meta-llama/Llama-3.2-90B-Vision-Instruct\",\n        \"meta-llama/Llama-3.3-70B-Instruct\",\n        \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n        \"mistralai/Devstral-Small-2505\",\n        \"mistralai/Magistral-Small-2506\",\n        \"mistralai/Mistral-Large-Instruct-2411\",\n        \"mistralai/Mistral-Nemo-Instruct-2407\",\n        \"moonshotai/Kimi-K2-Instruct-0905\",\n        \"moonshotai/Kimi-K2-Thinking\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"zai-org/GLM-4.6\"\n      ],\n      \"docUrl\": \"https://io.net/docs/guides/intelligence/io-intelligence\",\n      \"gateway\": \"models.dev\"\n    },\n    \"inception\": {\n      \"url\": \"https://api.inceptionlabs.ai/v1/\",\n      \"apiKeyEnvVar\": \"INCEPTION_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Inception\",\n      \"models\": [\"mercury-2\", \"mercury-edit-2\"],\n      \"docUrl\": \"https://platform.inceptionlabs.ai/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"submodel\": {\n      \"url\": \"https://llm.submodel.ai/v1\",\n      \"apiKeyEnvVar\": \"SUBMODEL_INSTAGEN_ACCESS_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"submodel\",\n      \"models\": [\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8\",\n        \"deepseek-ai/DeepSeek-R1-0528\",\n        \"deepseek-ai/DeepSeek-V3-0324\",\n        \"deepseek-ai/DeepSeek-V3.1\",\n        \"openai/gpt-oss-120b\",\n        \"zai-org/GLM-4.5-Air\",\n        \"zai-org/GLM-4.5-FP8\"\n      ],\n      \"docUrl\": \"https://submodel.gitbook.io\",\n      \"gateway\": \"models.dev\"\n    },\n    \"requesty\": {\n      \"url\": \"https://router.requesty.ai/v1\",\n      \"apiKeyEnvVar\": \"REQUESTY_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Requesty\",\n      \"models\": [\n        \"anthropic/claude-3-7-sonnet\",\n        \"anthropic/claude-haiku-4-5\",\n        \"anthropic/claude-opus-4\",\n        \"anthropic/claude-opus-4-1\",\n        \"anthropic/claude-opus-4-5\",\n        \"anthropic/claude-opus-4-6\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-sonnet-4-5\",\n        \"anthropic/claude-sonnet-4-6\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-3-flash-preview\",\n        \"google/gemini-3-pro-preview\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4o-mini\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-chat\",\n        \"openai/gpt-5-codex\",\n        \"openai/gpt-5-image\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-5-pro\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.1-chat\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-max\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.2-chat\",\n        \"openai/gpt-5.2-codex\",\n        \"openai/gpt-5.2-pro\",\n        \"openai/gpt-5.3-codex\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.4-pro\",\n        \"openai/o4-mini\",\n        \"xai/grok-4\",\n        \"xai/grok-4-fast\"\n      ],\n      \"docUrl\": \"https://requesty.ai/solution/llm-routing/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"zai\": {\n      \"url\": \"https://api.z.ai/api/paas/v4\",\n      \"apiKeyEnvVar\": \"ZHIPU_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Z.AI\",\n      \"models\": [\n        \"glm-4.5\",\n        \"glm-4.5-air\",\n        \"glm-4.5-flash\",\n        \"glm-4.5v\",\n        \"glm-4.6\",\n        \"glm-4.6v\",\n        \"glm-4.7\",\n        \"glm-4.7-flash\",\n        \"glm-4.7-flashx\",\n        \"glm-5\",\n        \"glm-5-turbo\",\n        \"glm-5.1\",\n        \"glm-5v-turbo\"\n      ],\n      \"docUrl\": \"https://docs.z.ai/guides/overview/pricing\",\n      \"gateway\": \"models.dev\"\n    },\n    \"zai-coding-plan\": {\n      \"url\": \"https://api.z.ai/api/coding/paas/v4\",\n      \"apiKeyEnvVar\": \"ZHIPU_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Z.AI Coding Plan\",\n      \"models\": [\"glm-4.5-air\", \"glm-4.7\", \"glm-5-turbo\", \"glm-5.1\", \"glm-5v-turbo\"],\n      \"docUrl\": \"https://docs.z.ai/devpack/overview\",\n      \"gateway\": \"models.dev\"\n    },\n    \"deepinfra\": {\n      \"apiKeyEnvVar\": \"DEEPINFRA_API_KEY\",\n      \"name\": \"Deep Infra\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2\",\n        \"MiniMaxAI/MiniMax-M2.1\",\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\",\n        \"Qwen/Qwen3.5-35B-A3B\",\n        \"Qwen/Qwen3.5-397B-A17B\",\n        \"Qwen/Qwen3.6-35B-A3B\",\n        \"anthropic/claude-3-7-sonnet-latest\",\n        \"anthropic/claude-4-opus\",\n        \"deepseek-ai/DeepSeek-R1-0528\",\n        \"deepseek-ai/DeepSeek-V3.2\",\n        \"deepseek-ai/DeepSeek-V4-Flash\",\n        \"deepseek-ai/DeepSeek-V4-Pro\",\n        \"google/gemma-4-26B-A4B-it\",\n        \"google/gemma-4-31B-it\",\n        \"meta-llama/Llama-3.1-70B-Instruct\",\n        \"meta-llama/Llama-3.1-70B-Instruct-Turbo\",\n        \"meta-llama/Llama-3.1-8B-Instruct\",\n        \"meta-llama/Llama-3.1-8B-Instruct-Turbo\",\n        \"meta-llama/Llama-3.3-70B-Instruct-Turbo\",\n        \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n        \"meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n        \"moonshotai/Kimi-K2-Instruct\",\n        \"moonshotai/Kimi-K2-Instruct-0905\",\n        \"moonshotai/Kimi-K2-Thinking\",\n        \"moonshotai/Kimi-K2.5\",\n        \"moonshotai/Kimi-K2.6\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"xiaomi/mimo-v2.5\",\n        \"xiaomi/mimo-v2.5-pro\",\n        \"zai-org/GLM-4.6\",\n        \"zai-org/GLM-4.6V\",\n        \"zai-org/GLM-4.7\",\n        \"zai-org/GLM-4.7-Flash\",\n        \"zai-org/GLM-5\",\n        \"zai-org/GLM-5.1\"\n      ],\n      \"docUrl\": \"https://deepinfra.com/models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/deepinfra\"\n    },\n    \"clarifai\": {\n      \"url\": \"https://api.clarifai.com/v2/ext/openai/v1\",\n      \"apiKeyEnvVar\": \"CLARIFAI_PAT\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Clarifai\",\n      \"models\": [\n        \"arcee_ai/AFM/models/trinity-mini\",\n        \"clarifai/main/models/mm-poly-8b\",\n        \"deepseek-ai/deepseek-ocr/models/DeepSeek-OCR\",\n        \"minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput\",\n        \"mistralai/completion/models/Ministral-3-14B-Reasoning-2512\",\n        \"mistralai/completion/models/Ministral-3-3B-Reasoning-2512\",\n        \"moonshotai/chat-completion/models/Kimi-K2_6\",\n        \"openai/chat-completion/models/gpt-oss-120b-high-throughput\",\n        \"openai/chat-completion/models/gpt-oss-20b\",\n        \"qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct\",\n        \"qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507\",\n        \"qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507\"\n      ],\n      \"docUrl\": \"https://docs.clarifai.com/compute/inference/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"moark\": {\n      \"url\": \"https://moark.com/v1\",\n      \"apiKeyEnvVar\": \"MOARK_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Moark\",\n      \"models\": [\"GLM-4.7\", \"MiniMax-M2.1\"],\n      \"docUrl\": \"https://moark.com/docs/openapi/v1#tag/%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90\",\n      \"gateway\": \"models.dev\"\n    },\n    \"frogbot\": {\n      \"url\": \"https://app.frogbot.ai/api/v1\",\n      \"apiKeyEnvVar\": \"FROGBOT_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"FrogBot\",\n      \"models\": [\n        \"claude-haiku-4-5\",\n        \"claude-opus-4-6\",\n        \"claude-opus-4-7\",\n        \"claude-sonnet-4-6\",\n        \"deepseek-v4-pro\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-pro\",\n        \"gemini-3-1-pro-preview\",\n        \"gemini-3-flash-preview\",\n        \"gpt-4o\",\n        \"gpt-5-3-codex\",\n        \"gpt-5-4-mini\",\n        \"gpt-5-4-nano\",\n        \"gpt-5-5\",\n        \"gpt-oss-120b\",\n        \"gpt-oss-20b\",\n        \"grok-4-1-fast-non-reasoning\",\n        \"grok-4-1-fast-reasoning\",\n        \"grok-4-3\",\n        \"grok-code-fast-1\",\n        \"kimi-k2-6\",\n        \"kimi-k2.5\",\n        \"minimax-m2-5\",\n        \"minimax-m2-7\",\n        \"qwen-3-6-plus\",\n        \"zai-glm-5-1\"\n      ],\n      \"docUrl\": \"https://docs.frogbot.ai\",\n      \"gateway\": \"models.dev\"\n    },\n    \"wandb\": {\n      \"url\": \"https://api.inference.wandb.ai/v1\",\n      \"apiKeyEnvVar\": \"WANDB_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Weights & Biases\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"OpenPipe/Qwen3-14B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"deepseek-ai/DeepSeek-V3.1\",\n        \"meta-llama/Llama-3.1-70B-Instruct\",\n        \"meta-llama/Llama-3.1-8B-Instruct\",\n        \"meta-llama/Llama-3.3-70B-Instruct\",\n        \"meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n        \"microsoft/Phi-4-mini-instruct\",\n        \"moonshotai/Kimi-K2.5\",\n        \"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"zai-org/GLM-5-FP8\",\n        \"zai-org/GLM-5.1\"\n      ],\n      \"docUrl\": \"https://docs.wandb.ai/guides/integrations/inference/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"gmicloud\": {\n      \"url\": \"https://api.gmi-serving.com/v1\",\n      \"apiKeyEnvVar\": \"GMICLOUD_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"GMI Cloud\",\n      \"models\": [\n        \"anthropic/claude-opus-4.6\",\n        \"anthropic/claude-opus-4.7\",\n        \"anthropic/claude-sonnet-4.6\",\n        \"deepseek-ai/DeepSeek-V4-Flash\",\n        \"deepseek-ai/DeepSeek-V4-Pro\",\n        \"moonshotai/Kimi-K2.6\",\n        \"zai-org/GLM-5-FP8\",\n        \"zai-org/GLM-5.1-FP8\"\n      ],\n      \"docUrl\": \"https://docs.gmicloud.ai/inference-engine/api-reference/llm-api-reference\",\n      \"gateway\": \"models.dev\"\n    },\n    \"crof\": {\n      \"url\": \"https://crof.ai/v1\",\n      \"apiKeyEnvVar\": \"CROF_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"CrofAI\",\n      \"models\": [\n        \"deepseek-v3.2\",\n        \"deepseek-v4-flash\",\n        \"deepseek-v4-pro\",\n        \"deepseek-v4-pro-precision\",\n        \"gemma-4-31b-it\",\n        \"glm-4.7\",\n        \"glm-4.7-flash\",\n        \"glm-5\",\n        \"glm-5.1\",\n        \"glm-5.1-precision\",\n        \"greg\",\n        \"kimi-k2.5\",\n        \"kimi-k2.5-lightning\",\n        \"kimi-k2.6\",\n        \"kimi-k2.6-precision\",\n        \"mimo-v2.5-pro\",\n        \"mimo-v2.5-pro-precision\",\n        \"minimax-m2.5\",\n        \"qwen3.5-397b-a17b\",\n        \"qwen3.5-9b\",\n        \"qwen3.6-27b\"\n      ],\n      \"docUrl\": \"https://crof.ai/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"ambient\": {\n      \"url\": \"https://api.ambient.xyz/v1\",\n      \"apiKeyEnvVar\": \"AMBIENT_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Ambient\",\n      \"models\": [\"moonshotai/kimi-k2.6\", \"zai-org/GLM-5.1-FP8\"],\n      \"docUrl\": \"https://ambient.xyz\",\n      \"gateway\": \"models.dev\"\n    },\n    \"routing-run\": {\n      \"url\": \"https://api.routing.run/v1\",\n      \"apiKeyEnvVar\": \"ROUTING_RUN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"routing.run\",\n      \"models\": [\n        \"route/deepseek-v3.2\",\n        \"route/deepseek-v4-flash\",\n        \"route/deepseek-v4-flash-6bit\",\n        \"route/deepseek-v4-pro\",\n        \"route/deepseek-v4-pro-6bit\",\n        \"route/gemma-4-31b-it\",\n        \"route/glm-5.1\",\n        \"route/glm-5.1-6bit\",\n        \"route/kimi-k2.5\",\n        \"route/kimi-k2.6\",\n        \"route/kimi-k2.6-6bit\",\n        \"route/mimo-v2.5-pro\",\n        \"route/mimo-v2.5-pro-6bit\",\n        \"route/minimax-m2.5\",\n        \"route/minimax-m2.5-highspeed\",\n        \"route/minimax-m2.7\",\n        \"route/minimax-m2.7-highspeed\",\n        \"route/mistral-large-3\",\n        \"route/mistral-medium-2505\",\n        \"route/mistral-small-2503\",\n        \"route/qwen3.6-27b\",\n        \"route/step-3.5-flash\",\n        \"route/step-3.5-flash-2603\",\n        \"route/stepfun-3.5-flash\"\n      ],\n      \"docUrl\": \"https://docs.routing.run/api-reference/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"the-grid-ai\": {\n      \"url\": \"https://api.thegrid.ai/v1\",\n      \"apiKeyEnvVar\": \"THEGRIDAI_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"The Grid AI\",\n      \"models\": [\n        \"agent-max\",\n        \"agent-prime\",\n        \"agent-standard\",\n        \"code-max\",\n        \"code-prime\",\n        \"code-standard\",\n        \"text-max\",\n        \"text-prime\",\n        \"text-standard\"\n      ],\n      \"docUrl\": \"https://thegrid.ai/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"fastrouter\": {\n      \"url\": \"https://go.fastrouter.ai/api/v1\",\n      \"apiKeyEnvVar\": \"FASTROUTER_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"FastRouter\",\n      \"models\": [\n        \"anthropic/claude-opus-4.1\",\n        \"anthropic/claude-sonnet-4\",\n        \"deepseek-ai/deepseek-r1-distill-llama-70b\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-pro\",\n        \"moonshotai/kimi-k2\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"qwen/qwen3-coder\",\n        \"x-ai/grok-4\",\n        \"z-ai/glm-5\"\n      ],\n      \"docUrl\": \"https://fastrouter.ai/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"tencent-coding-plan\": {\n      \"url\": \"https://api.lkeap.cloud.tencent.com/coding/v3\",\n      \"apiKeyEnvVar\": \"TENCENT_CODING_PLAN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Tencent Coding Plan (China)\",\n      \"models\": [\n        \"glm-5\",\n        \"hunyuan-2.0-instruct\",\n        \"hunyuan-2.0-thinking\",\n        \"hunyuan-t1\",\n        \"hunyuan-turbos\",\n        \"kimi-k2.5\",\n        \"minimax-m2.5\",\n        \"tc-code-latest\"\n      ],\n      \"docUrl\": \"https://cloud.tencent.com/document/product/1772/128947\",\n      \"gateway\": \"models.dev\"\n    },\n    \"cortecs\": {\n      \"url\": \"https://api.cortecs.ai/v1\",\n      \"apiKeyEnvVar\": \"CORTECS_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Cortecs\",\n      \"models\": [\n        \"claude-4-5-sonnet\",\n        \"claude-4-6-sonnet\",\n        \"claude-haiku-4-5\",\n        \"claude-opus4-5\",\n        \"claude-opus4-6\",\n        \"claude-opus4-7\",\n        \"claude-sonnet-4\",\n        \"codestral-2508\",\n        \"deepseek-r1-0528\",\n        \"deepseek-v3-0324\",\n        \"deepseek-v3.2\",\n        \"deepseek-v4-flash\",\n        \"deepseek-v4-pro\",\n        \"devstral-2512\",\n        \"devstral-small-2512\",\n        \"gemini-2.5-pro\",\n        \"glm-4.5\",\n        \"glm-4.5-air\",\n        \"glm-4.7\",\n        \"glm-4.7-flash\",\n        \"glm-5\",\n        \"glm-5.1\",\n        \"gpt-4.1\",\n        \"gpt-oss-120b\",\n        \"hermes-4-70b\",\n        \"intellect-3\",\n        \"kimi-k2-instruct\",\n        \"kimi-k2-thinking\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\",\n        \"llama-3.1-405b-instruct\",\n        \"llama-3.3-70b-instruct\",\n        \"minimax-m2\",\n        \"minimax-m2.1\",\n        \"minimax-m2.5\",\n        \"minimax-m2.7\",\n        \"mistral-large-2512\",\n        \"mixtral-8x7B-instruct-v0.1\",\n        \"nemotron-3-super-120b-a12b\",\n        \"nova-pro-v1\",\n        \"qwen-2.5-72b-instruct\",\n        \"qwen3-235b-a22b-instruct-2507\",\n        \"qwen3-32b\",\n        \"qwen3-coder-30b-a3b-instruct\",\n        \"qwen3-coder-480b-a35b-instruct\",\n        \"qwen3-coder-next\",\n        \"qwen3-next-80b-a3b-thinking\",\n        \"qwen3.5-122b-a10b\",\n        \"qwen3.5-397b-a17b\"\n      ],\n      \"docUrl\": \"https://api.cortecs.ai/v1/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"baseten\": {\n      \"url\": \"https://inference.baseten.co/v1\",\n      \"apiKeyEnvVar\": \"BASETEN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Baseten\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"deepseek-ai/DeepSeek-V3-0324\",\n        \"deepseek-ai/DeepSeek-V3.1\",\n        \"deepseek-ai/DeepSeek-V4-Pro\",\n        \"moonshotai/Kimi-K2.5\",\n        \"moonshotai/Kimi-K2.6\",\n        \"nvidia/Nemotron-120B-A12B\",\n        \"openai/gpt-oss-120b\",\n        \"zai-org/GLM-4.6\",\n        \"zai-org/GLM-4.7\",\n        \"zai-org/GLM-5\"\n      ],\n      \"docUrl\": \"https://docs.baseten.co/development/model-apis/overview\",\n      \"gateway\": \"models.dev\"\n    },\n    \"llama\": {\n      \"url\": \"https://api.llama.com/compat/v1/\",\n      \"apiKeyEnvVar\": \"LLAMA_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Llama\",\n      \"models\": [\n        \"cerebras-llama-4-maverick-17b-128e-instruct\",\n        \"cerebras-llama-4-scout-17b-16e-instruct\",\n        \"groq-llama-4-maverick-17b-128e-instruct\",\n        \"llama-3.3-70b-instruct\",\n        \"llama-3.3-8b-instruct\",\n        \"llama-4-maverick-17b-128e-instruct-fp8\",\n        \"llama-4-scout-17b-16e-instruct-fp8\"\n      ],\n      \"docUrl\": \"https://llama.developer.meta.com/docs/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"novita-ai\": {\n      \"url\": \"https://api.novita.ai/openai\",\n      \"apiKeyEnvVar\": \"NOVITA_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"NovitaAI\",\n      \"models\": [\n        \"baichuan/baichuan-m2-32b\",\n        \"baidu/ernie-4.5-21B-a3b\",\n        \"baidu/ernie-4.5-21B-a3b-thinking\",\n        \"baidu/ernie-4.5-300b-a47b-paddle\",\n        \"baidu/ernie-4.5-vl-28b-a3b\",\n        \"baidu/ernie-4.5-vl-28b-a3b-thinking\",\n        \"baidu/ernie-4.5-vl-424b-a47b\",\n        \"deepseek/deepseek-ocr\",\n        \"deepseek/deepseek-ocr-2\",\n        \"deepseek/deepseek-prover-v2-671b\",\n        \"deepseek/deepseek-r1-0528\",\n        \"deepseek/deepseek-r1-0528-qwen3-8b\",\n        \"deepseek/deepseek-r1-distill-llama-70b\",\n        \"deepseek/deepseek-r1-distill-qwen-14b\",\n        \"deepseek/deepseek-r1-distill-qwen-32b\",\n        \"deepseek/deepseek-r1-turbo\",\n        \"deepseek/deepseek-v3-0324\",\n        \"deepseek/deepseek-v3-turbo\",\n        \"deepseek/deepseek-v3.1\",\n        \"deepseek/deepseek-v3.1-terminus\",\n        \"deepseek/deepseek-v3.2\",\n        \"deepseek/deepseek-v3.2-exp\",\n        \"deepseek/deepseek-v4-flash\",\n        \"deepseek/deepseek-v4-pro\",\n        \"google/gemma-3-12b-it\",\n        \"google/gemma-3-27b-it\",\n        \"google/gemma-4-26b-a4b-it\",\n        \"google/gemma-4-31b-it\",\n        \"gryphe/mythomax-l2-13b\",\n        \"inclusionai/ling-2.6-1t\",\n        \"inclusionai/ling-2.6-flash\",\n        \"kwaipilot/kat-coder-pro\",\n        \"meta-llama/llama-3-70b-instruct\",\n        \"meta-llama/llama-3-8b-instruct\",\n        \"meta-llama/llama-3.1-8b-instruct\",\n        \"meta-llama/llama-3.2-3b-instruct\",\n        \"meta-llama/llama-3.3-70b-instruct\",\n        \"meta-llama/llama-4-maverick-17b-128e-instruct-fp8\",\n        \"meta-llama/llama-4-scout-17b-16e-instruct\",\n        \"microsoft/wizardlm-2-8x22b\",\n        \"minimax/minimax-m2\",\n        \"minimax/minimax-m2.1\",\n        \"minimax/minimax-m2.5\",\n        \"minimax/minimax-m2.5-highspeed\",\n        \"minimax/minimax-m2.7\",\n        \"minimaxai/minimax-m1-80k\",\n        \"mistralai/mistral-nemo\",\n        \"moonshotai/kimi-k2-0905\",\n        \"moonshotai/kimi-k2-instruct\",\n        \"moonshotai/kimi-k2-thinking\",\n        \"moonshotai/kimi-k2.5\",\n        \"moonshotai/kimi-k2.6\",\n        \"nousresearch/hermes-2-pro-llama-3-8b\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"paddlepaddle/paddleocr-vl\",\n        \"qwen/qwen-2.5-72b-instruct\",\n        \"qwen/qwen-mt-plus\",\n        \"qwen/qwen2.5-7b-instruct\",\n        \"qwen/qwen2.5-vl-72b-instruct\",\n        \"qwen/qwen3-235b-a22b-fp8\",\n        \"qwen/qwen3-235b-a22b-instruct-2507\",\n        \"qwen/qwen3-235b-a22b-thinking-2507\",\n        \"qwen/qwen3-30b-a3b-fp8\",\n        \"qwen/qwen3-32b-fp8\",\n        \"qwen/qwen3-4b-fp8\",\n        \"qwen/qwen3-8b-fp8\",\n        \"qwen/qwen3-coder-30b-a3b-instruct\",\n        \"qwen/qwen3-coder-480b-a35b-instruct\",\n        \"qwen/qwen3-coder-next\",\n        \"qwen/qwen3-max\",\n        \"qwen/qwen3-next-80b-a3b-instruct\",\n        \"qwen/qwen3-next-80b-a3b-thinking\",\n        \"qwen/qwen3-omni-30b-a3b-instruct\",\n        \"qwen/qwen3-omni-30b-a3b-thinking\",\n        \"qwen/qwen3-vl-235b-a22b-instruct\",\n        \"qwen/qwen3-vl-235b-a22b-thinking\",\n        \"qwen/qwen3-vl-30b-a3b-instruct\",\n        \"qwen/qwen3-vl-30b-a3b-thinking\",\n        \"qwen/qwen3-vl-8b-instruct\",\n        \"qwen/qwen3.5-122b-a10b\",\n        \"qwen/qwen3.5-27b\",\n        \"qwen/qwen3.5-35b-a3b\",\n        \"qwen/qwen3.5-397b-a17b\",\n        \"sao10K/L3-8B-stheno-v3.2\",\n        \"sao10K/l3-70b-euryale-v2.1\",\n        \"sao10K/l3-8b-lunaris\",\n        \"sao10K/l31-70b-euryale-v2.2\",\n        \"xiaomimimo/mimo-v2-flash\",\n        \"zai-org/autoglm-phone-9b-multilingual\",\n        \"zai-org/glm-4.5\",\n        \"zai-org/glm-4.5-air\",\n        \"zai-org/glm-4.5v\",\n        \"zai-org/glm-4.6\",\n        \"zai-org/glm-4.6v\",\n        \"zai-org/glm-4.7\",\n        \"zai-org/glm-4.7-flash\",\n        \"zai-org/glm-5\",\n        \"zai-org/glm-5.1\"\n      ],\n      \"docUrl\": \"https://novita.ai/docs/guides/introduction\",\n      \"gateway\": \"models.dev\"\n    },\n    \"digitalocean\": {\n      \"url\": \"https://inference.do-ai.run/v1\",\n      \"apiKeyEnvVar\": \"DIGITALOCEAN_ACCESS_TOKEN\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"DigitalOcean\",\n      \"models\": [\n        \"alibaba-qwen3-32b\",\n        \"all-mini-lm-l6-v2\",\n        \"anthropic-claude-4.1-opus\",\n        \"anthropic-claude-4.5-haiku\",\n        \"anthropic-claude-4.5-sonnet\",\n        \"anthropic-claude-4.6-sonnet\",\n        \"anthropic-claude-haiku-4.5\",\n        \"anthropic-claude-opus-4\",\n        \"anthropic-claude-opus-4.5\",\n        \"anthropic-claude-opus-4.6\",\n        \"anthropic-claude-opus-4.7\",\n        \"anthropic-claude-sonnet-4\",\n        \"arcee-trinity-large-thinking\",\n        \"bge-m3\",\n        \"bge-reranker-v2-m3\",\n        \"deepseek-3.2\",\n        \"deepseek-r1-distill-llama-70b\",\n        \"deepseek-v3\",\n        \"deepseek-v4-pro\",\n        \"e5-large-v2\",\n        \"fal-ai/elevenlabs/tts/multilingual-v2\",\n        \"fal-ai/fast-sdxl\",\n        \"fal-ai/flux/schnell\",\n        \"fal-ai/stable-audio-25/text-to-audio\",\n        \"gemma-4-31B-it\",\n        \"glm-5\",\n        \"gte-large-en-v1.5\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\",\n        \"llama-4-maverick\",\n        \"llama3-8b-instruct\",\n        \"llama3.3-70b-instruct\",\n        \"minimax-m2.5\",\n        \"ministral-3-8b-instruct-2512\",\n        \"mistral-3-14B\",\n        \"mistral-7b-instruct-v0.3\",\n        \"multi-qa-mpnet-base-dot-v1\",\n        \"nemotron-3-nano-30b\",\n        \"nemotron-3-nano-omni\",\n        \"nemotron-nano-12b-v2-vl\",\n        \"nvidia-nemotron-3-super-120b\",\n        \"openai-gpt-4.1\",\n        \"openai-gpt-4o\",\n        \"openai-gpt-4o-mini\",\n        \"openai-gpt-5\",\n        \"openai-gpt-5-mini\",\n        \"openai-gpt-5-nano\",\n        \"openai-gpt-5.1-codex-max\",\n        \"openai-gpt-5.2\",\n        \"openai-gpt-5.2-pro\",\n        \"openai-gpt-5.3-codex\",\n        \"openai-gpt-5.4\",\n        \"openai-gpt-5.4-mini\",\n        \"openai-gpt-5.4-nano\",\n        \"openai-gpt-5.4-pro\",\n        \"openai-gpt-5.5\",\n        \"openai-gpt-image-1\",\n        \"openai-gpt-image-1.5\",\n        \"openai-gpt-image-2\",\n        \"openai-gpt-oss-120b\",\n        \"openai-gpt-oss-20b\",\n        \"openai-o1\",\n        \"openai-o3\",\n        \"openai-o3-mini\",\n        \"qwen-2.5-14b-instruct\",\n        \"qwen3-coder-flash\",\n        \"qwen3-embedding-0.6b\",\n        \"qwen3-tts-voicedesign\",\n        \"qwen3.5-397b-a17b\",\n        \"stable-diffusion-3.5-large\",\n        \"wan2-2-t2v-a14b\"\n      ],\n      \"docUrl\": \"https://docs.digitalocean.com/products/gradient-ai-platform/details/models/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"moonshotai\": {\n      \"url\": \"https://api.moonshot.ai/anthropic/v1\",\n      \"apiKeyEnvVar\": \"MOONSHOT_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Moonshot AI\",\n      \"models\": [\n        \"kimi-k2-0711-preview\",\n        \"kimi-k2-0905-preview\",\n        \"kimi-k2-thinking\",\n        \"kimi-k2-thinking-turbo\",\n        \"kimi-k2-turbo-preview\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\"\n      ],\n      \"docUrl\": \"https://platform.moonshot.ai/docs/api/chat\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/anthropic\"\n    },\n    \"mistral\": {\n      \"url\": \"https://api.mistral.ai/v1\",\n      \"apiKeyEnvVar\": \"MISTRAL_API_KEY\",\n      \"name\": \"Mistral\",\n      \"models\": [\n        \"codestral-latest\",\n        \"devstral-2512\",\n        \"devstral-medium-2507\",\n        \"devstral-medium-latest\",\n        \"devstral-small-2505\",\n        \"devstral-small-2507\",\n        \"labs-devstral-small-2512\",\n        \"magistral-medium-latest\",\n        \"magistral-small\",\n        \"ministral-3b-latest\",\n        \"ministral-8b-latest\",\n        \"mistral-embed\",\n        \"mistral-large-2411\",\n        \"mistral-large-2512\",\n        \"mistral-large-latest\",\n        \"mistral-medium-2505\",\n        \"mistral-medium-2508\",\n        \"mistral-medium-2604\",\n        \"mistral-medium-latest\",\n        \"mistral-nemo\",\n        \"mistral-small-2506\",\n        \"mistral-small-2603\",\n        \"mistral-small-latest\",\n        \"open-mistral-7b\",\n        \"open-mixtral-8x22b\",\n        \"open-mixtral-8x7b\",\n        \"pixtral-12b\",\n        \"pixtral-large-latest\"\n      ],\n      \"docUrl\": \"https://docs.mistral.ai/getting-started/models/\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/mistral\"\n    },\n    \"kilo\": {\n      \"url\": \"https://api.kilo.ai/api/gateway\",\n      \"apiKeyEnvVar\": \"KILO_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Kilo Gateway\",\n      \"models\": [\n        \"ai21/jamba-large-1.7\",\n        \"aion-labs/aion-1.0\",\n        \"aion-labs/aion-1.0-mini\",\n        \"aion-labs/aion-2.0\",\n        \"aion-labs/aion-rp-llama-3.1-8b\",\n        \"alfredpros/codellama-7b-instruct-solidity\",\n        \"alibaba/tongyi-deepresearch-30b-a3b\",\n        \"allenai/olmo-3-32b-think\",\n        \"amazon/nova-2-lite-v1\",\n        \"amazon/nova-lite-v1\",\n        \"amazon/nova-micro-v1\",\n        \"amazon/nova-premier-v1\",\n        \"amazon/nova-pro-v1\",\n        \"anthracite-org/magnum-v4-72b\",\n        \"anthropic/claude-3-haiku\",\n        \"anthropic/claude-3.5-haiku\",\n        \"anthropic/claude-haiku-4.5\",\n        \"anthropic/claude-opus-4\",\n        \"anthropic/claude-opus-4.1\",\n        \"anthropic/claude-opus-4.5\",\n        \"anthropic/claude-opus-4.6\",\n        \"anthropic/claude-opus-4.6-fast\",\n        \"anthropic/claude-opus-4.7\",\n        \"anthropic/claude-opus-4.7-fast\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-sonnet-4.5\",\n        \"anthropic/claude-sonnet-4.6\",\n        \"arcee-ai/coder-large\",\n        \"arcee-ai/maestro-reasoning\",\n        \"arcee-ai/spotlight\",\n        \"arcee-ai/trinity-large-preview\",\n        \"arcee-ai/trinity-large-thinking\",\n        \"arcee-ai/trinity-mini\",\n        \"arcee-ai/virtuoso-large\",\n        \"baidu/cobuddy:free\",\n        \"baidu/ernie-4.5-21b-a3b\",\n        \"baidu/ernie-4.5-21b-a3b-thinking\",\n        \"baidu/ernie-4.5-300b-a47b\",\n        \"baidu/ernie-4.5-vl-28b-a3b\",\n        \"baidu/ernie-4.5-vl-424b-a47b\",\n        \"baidu/qianfan-ocr-fast\",\n        \"bytedance-seed/seed-1.6\",\n        \"bytedance-seed/seed-1.6-flash\",\n        \"bytedance-seed/seed-2.0-lite\",\n        \"bytedance-seed/seed-2.0-mini\",\n        \"bytedance/ui-tars-1.5-7b\",\n        \"cohere/command-a\",\n        \"cohere/command-r-08-2024\",\n        \"cohere/command-r-plus-08-2024\",\n        \"cohere/command-r7b-12-2024\",\n        \"deepcogito/cogito-v2.1-671b\",\n        \"deepseek/deepseek-chat\",\n        \"deepseek/deepseek-chat-v3-0324\",\n        \"deepseek/deepseek-chat-v3.1\",\n        \"deepseek/deepseek-r1\",\n        \"deepseek/deepseek-r1-0528\",\n        \"deepseek/deepseek-r1-distill-llama-70b\",\n        \"deepseek/deepseek-r1-distill-qwen-32b\",\n        \"deepseek/deepseek-v3.1-terminus\",\n        \"deepseek/deepseek-v3.2\",\n        \"deepseek/deepseek-v3.2-exp\",\n        \"deepseek/deepseek-v3.2-speciale\",\n        \"deepseek/deepseek-v4-flash\",\n        \"deepseek/deepseek-v4-flash:free\",\n        \"deepseek/deepseek-v4-pro\",\n        \"essentialai/rnj-1-instruct\",\n        \"google/gemini-2.0-flash-001\",\n        \"google/gemini-2.0-flash-lite-001\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-flash-image\",\n        \"google/gemini-2.5-flash-lite\",\n        \"google/gemini-2.5-flash-lite-preview-09-2025\",\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-2.5-pro-preview\",\n        \"google/gemini-2.5-pro-preview-05-06\",\n        \"google/gemini-3-flash-preview\",\n        \"google/gemini-3-pro-image-preview\",\n        \"google/gemini-3.1-flash-image-preview\",\n        \"google/gemini-3.1-flash-lite\",\n        \"google/gemini-3.1-flash-lite-preview\",\n        \"google/gemini-3.1-pro-preview\",\n        \"google/gemini-3.1-pro-preview-customtools\",\n        \"google/gemma-2-27b-it\",\n        \"google/gemma-3-12b-it\",\n        \"google/gemma-3-27b-it\",\n        \"google/gemma-3-4b-it\",\n        \"google/gemma-3n-e4b-it\",\n        \"google/gemma-4-26b-a4b-it\",\n        \"google/gemma-4-31b-it\",\n        \"google/lyria-3-clip-preview\",\n        \"google/lyria-3-pro-preview\",\n        \"gryphe/mythomax-l2-13b\",\n        \"ibm-granite/granite-4.0-h-micro\",\n        \"ibm-granite/granite-4.1-8b\",\n        \"inception/mercury-2\",\n        \"inclusionai/ling-2.6-1t\",\n        \"inclusionai/ling-2.6-flash\",\n        \"inclusionai/ring-2.6-1t\",\n        \"inflection/inflection-3-pi\",\n        \"inflection/inflection-3-productivity\",\n        \"kilo-auto/balanced\",\n        \"kilo-auto/free\",\n        \"kilo-auto/frontier\",\n        \"kilo-auto/small\",\n        \"kwaipilot/kat-coder-pro-v2\",\n        \"liquid/lfm-2-24b-a2b\",\n        \"mancer/weaver\",\n        \"meta-llama/llama-3-70b-instruct\",\n        \"meta-llama/llama-3-8b-instruct\",\n        \"meta-llama/llama-3.1-70b-instruct\",\n        \"meta-llama/llama-3.1-8b-instruct\",\n        \"meta-llama/llama-3.2-11b-vision-instruct\",\n        \"meta-llama/llama-3.2-1b-instruct\",\n        \"meta-llama/llama-3.2-3b-instruct\",\n        \"meta-llama/llama-3.3-70b-instruct\",\n        \"meta-llama/llama-4-maverick\",\n        \"meta-llama/llama-4-scout\",\n        \"meta-llama/llama-guard-3-8b\",\n        \"meta-llama/llama-guard-4-12b\",\n        \"microsoft/phi-4\",\n        \"microsoft/phi-4-mini-instruct\",\n        \"microsoft/wizardlm-2-8x22b\",\n        \"minimax/minimax-01\",\n        \"minimax/minimax-m1\",\n        \"minimax/minimax-m2\",\n        \"minimax/minimax-m2-her\",\n        \"minimax/minimax-m2.1\",\n        \"minimax/minimax-m2.5\",\n        \"minimax/minimax-m2.7\",\n        \"mistralai/codestral-2508\",\n        \"mistralai/devstral-2512\",\n        \"mistralai/devstral-medium\",\n        \"mistralai/devstral-small\",\n        \"mistralai/ministral-14b-2512\",\n        \"mistralai/ministral-3b-2512\",\n        \"mistralai/ministral-8b-2512\",\n        \"mistralai/mistral-7b-instruct-v0.1\",\n        \"mistralai/mistral-large\",\n        \"mistralai/mistral-large-2407\",\n        \"mistralai/mistral-large-2411\",\n        \"mistralai/mistral-large-2512\",\n        \"mistralai/mistral-medium-3\",\n        \"mistralai/mistral-medium-3-5\",\n        \"mistralai/mistral-medium-3.1\",\n        \"mistralai/mistral-nemo\",\n        \"mistralai/mistral-saba\",\n        \"mistralai/mistral-small-24b-instruct-2501\",\n        \"mistralai/mistral-small-2603\",\n        \"mistralai/mistral-small-3.1-24b-instruct\",\n        \"mistralai/mistral-small-3.2-24b-instruct\",\n        \"mistralai/mixtral-8x22b-instruct\",\n        \"mistralai/pixtral-large-2411\",\n        \"mistralai/voxtral-small-24b-2507\",\n        \"moonshotai/kimi-k2\",\n        \"moonshotai/kimi-k2-0905\",\n        \"moonshotai/kimi-k2-thinking\",\n        \"moonshotai/kimi-k2.5\",\n        \"moonshotai/kimi-k2.6\",\n        \"morph/morph-v3-fast\",\n        \"morph/morph-v3-large\",\n        \"nex-agi/deepseek-v3.1-nex-n1\",\n        \"nousresearch/hermes-2-pro-llama-3-8b\",\n        \"nousresearch/hermes-3-llama-3.1-405b\",\n        \"nousresearch/hermes-3-llama-3.1-70b\",\n        \"nousresearch/hermes-4-405b\",\n        \"nousresearch/hermes-4-70b\",\n        \"nvidia/llama-3.3-nemotron-super-49b-v1.5\",\n        \"nvidia/nemotron-3-nano-30b-a3b\",\n        \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free\",\n        \"nvidia/nemotron-3-super-120b-a12b\",\n        \"nvidia/nemotron-3-super-120b-a12b:free\",\n        \"nvidia/nemotron-nano-9b-v2\",\n        \"openai/gpt-3.5-turbo\",\n        \"openai/gpt-3.5-turbo-0613\",\n        \"openai/gpt-3.5-turbo-16k\",\n        \"openai/gpt-3.5-turbo-instruct\",\n        \"openai/gpt-4\",\n        \"openai/gpt-4-0314\",\n        \"openai/gpt-4-1106-preview\",\n        \"openai/gpt-4-turbo\",\n        \"openai/gpt-4-turbo-preview\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4.1-nano\",\n        \"openai/gpt-4o\",\n        \"openai/gpt-4o-2024-05-13\",\n        \"openai/gpt-4o-2024-08-06\",\n        \"openai/gpt-4o-2024-11-20\",\n        \"openai/gpt-4o-audio-preview\",\n        \"openai/gpt-4o-mini\",\n        \"openai/gpt-4o-mini-2024-07-18\",\n        \"openai/gpt-4o-mini-search-preview\",\n        \"openai/gpt-4o-search-preview\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-chat\",\n        \"openai/gpt-5-codex\",\n        \"openai/gpt-5-image\",\n        \"openai/gpt-5-image-mini\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-5-pro\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.1-chat\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-max\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.2-chat\",\n        \"openai/gpt-5.2-codex\",\n        \"openai/gpt-5.2-pro\",\n        \"openai/gpt-5.3-chat\",\n        \"openai/gpt-5.3-codex\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.4-image-2\",\n        \"openai/gpt-5.4-mini\",\n        \"openai/gpt-5.4-nano\",\n        \"openai/gpt-5.4-pro\",\n        \"openai/gpt-5.5\",\n        \"openai/gpt-5.5-pro\",\n        \"openai/gpt-audio\",\n        \"openai/gpt-audio-mini\",\n        \"openai/gpt-chat-latest\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"openai/gpt-oss-safeguard-20b\",\n        \"openai/o1\",\n        \"openai/o1-pro\",\n        \"openai/o3\",\n        \"openai/o3-deep-research\",\n        \"openai/o3-mini\",\n        \"openai/o3-mini-high\",\n        \"openai/o3-pro\",\n        \"openai/o4-mini\",\n        \"openai/o4-mini-deep-research\",\n        \"openai/o4-mini-high\",\n        \"openrouter/auto\",\n        \"openrouter/bodybuilder\",\n        \"openrouter/free\",\n        \"openrouter/owl-alpha\",\n        \"openrouter/pareto-code\",\n        \"perceptron/perceptron-mk1\",\n        \"perplexity/sonar\",\n        \"perplexity/sonar-deep-research\",\n        \"perplexity/sonar-pro\",\n        \"perplexity/sonar-pro-search\",\n        \"perplexity/sonar-reasoning-pro\",\n        \"poolside/laguna-m.1:free\",\n        \"poolside/laguna-xs.2:free\",\n        \"prime-intellect/intellect-3\",\n        \"qwen/qwen-2.5-72b-instruct\",\n        \"qwen/qwen-2.5-7b-instruct\",\n        \"qwen/qwen-2.5-coder-32b-instruct\",\n        \"qwen/qwen-plus\",\n        \"qwen/qwen-plus-2025-07-28\",\n        \"qwen/qwen-plus-2025-07-28:thinking\",\n        \"qwen/qwen2.5-vl-72b-instruct\",\n        \"qwen/qwen3-14b\",\n        \"qwen/qwen3-235b-a22b\",\n        \"qwen/qwen3-235b-a22b-2507\",\n        \"qwen/qwen3-235b-a22b-thinking-2507\",\n        \"qwen/qwen3-30b-a3b\",\n        \"qwen/qwen3-30b-a3b-instruct-2507\",\n        \"qwen/qwen3-30b-a3b-thinking-2507\",\n        \"qwen/qwen3-32b\",\n        \"qwen/qwen3-8b\",\n        \"qwen/qwen3-coder\",\n        \"qwen/qwen3-coder-30b-a3b-instruct\",\n        \"qwen/qwen3-coder-flash\",\n        \"qwen/qwen3-coder-next\",\n        \"qwen/qwen3-coder-plus\",\n        \"qwen/qwen3-max\",\n        \"qwen/qwen3-max-thinking\",\n        \"qwen/qwen3-next-80b-a3b-instruct\",\n        \"qwen/qwen3-next-80b-a3b-thinking\",\n        \"qwen/qwen3-vl-235b-a22b-instruct\",\n        \"qwen/qwen3-vl-235b-a22b-thinking\",\n        \"qwen/qwen3-vl-30b-a3b-instruct\",\n        \"qwen/qwen3-vl-30b-a3b-thinking\",\n        \"qwen/qwen3-vl-32b-instruct\",\n        \"qwen/qwen3-vl-8b-instruct\",\n        \"qwen/qwen3-vl-8b-thinking\",\n        \"qwen/qwen3.5-122b-a10b\",\n        \"qwen/qwen3.5-27b\",\n        \"qwen/qwen3.5-35b-a3b\",\n        \"qwen/qwen3.5-397b-a17b\",\n        \"qwen/qwen3.5-9b\",\n        \"qwen/qwen3.5-flash-02-23\",\n        \"qwen/qwen3.5-plus-02-15\",\n        \"qwen/qwen3.5-plus-20260420\",\n        \"qwen/qwen3.6-27b\",\n        \"qwen/qwen3.6-35b-a3b\",\n        \"qwen/qwen3.6-flash\",\n        \"qwen/qwen3.6-max-preview\",\n        \"qwen/qwen3.6-plus\",\n        \"rekaai/reka-edge\",\n        \"rekaai/reka-flash-3\",\n        \"relace/relace-apply-3\",\n        \"relace/relace-search\",\n        \"sao10k/l3-euryale-70b\",\n        \"sao10k/l3-lunaris-8b\",\n        \"sao10k/l3.1-70b-hanami-x1\",\n        \"sao10k/l3.1-euryale-70b\",\n        \"sao10k/l3.3-euryale-70b\",\n        \"stepfun/step-3.5-flash\",\n        \"stepfun/step-3.5-flash:free\",\n        \"switchpoint/router\",\n        \"tencent/hunyuan-a13b-instruct\",\n        \"tencent/hy3-preview\",\n        \"thedrummer/cydonia-24b-v4.1\",\n        \"thedrummer/rocinante-12b\",\n        \"thedrummer/skyfall-36b-v2\",\n        \"thedrummer/unslopnemo-12b\",\n        \"undi95/remm-slerp-l2-13b\",\n        \"upstage/solar-pro-3\",\n        \"writer/palmyra-x5\",\n        \"x-ai/grok-4.20\",\n        \"x-ai/grok-4.20-multi-agent\",\n        \"x-ai/grok-4.3\",\n        \"x-ai/grok-code-fast-1:optimized:free\",\n        \"xiaomi/mimo-v2-flash\",\n        \"xiaomi/mimo-v2-omni\",\n        \"xiaomi/mimo-v2-pro\",\n        \"xiaomi/mimo-v2.5\",\n        \"xiaomi/mimo-v2.5-pro\",\n        \"z-ai/glm-4-32b\",\n        \"z-ai/glm-4.5\",\n        \"z-ai/glm-4.5-air\",\n        \"z-ai/glm-4.5v\",\n        \"z-ai/glm-4.6\",\n        \"z-ai/glm-4.6v\",\n        \"z-ai/glm-4.7\",\n        \"z-ai/glm-4.7-flash\",\n        \"z-ai/glm-5\",\n        \"z-ai/glm-5-turbo\",\n        \"z-ai/glm-5.1\",\n        \"z-ai/glm-5v-turbo\",\n        \"~anthropic/claude-haiku-latest\",\n        \"~anthropic/claude-opus-latest\",\n        \"~anthropic/claude-sonnet-latest\",\n        \"~google/gemini-flash-latest\",\n        \"~google/gemini-pro-latest\",\n        \"~moonshotai/kimi-latest\",\n        \"~openai/gpt-latest\",\n        \"~openai/gpt-mini-latest\"\n      ],\n      \"docUrl\": \"https://kilo.ai\",\n      \"gateway\": \"models.dev\"\n    },\n    \"cloudflare-workers-ai\": {\n      \"url\": \"https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1\",\n      \"apiKeyEnvVar\": \"CLOUDFLARE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Cloudflare Workers AI\",\n      \"models\": [\n        \"@cf/aisingapore/gemma-sea-lion-v4-27b-it\",\n        \"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b\",\n        \"@cf/google/gemma-3-12b-it\",\n        \"@cf/google/gemma-4-26b-a4b-it\",\n        \"@cf/ibm-granite/granite-4.0-h-micro\",\n        \"@cf/meta/llama-2-7b-chat-fp16\",\n        \"@cf/meta/llama-3-8b-instruct\",\n        \"@cf/meta/llama-3-8b-instruct-awq\",\n        \"@cf/meta/llama-3.1-8b-instruct-awq\",\n        \"@cf/meta/llama-3.1-8b-instruct-fp8\",\n        \"@cf/meta/llama-3.2-11b-vision-instruct\",\n        \"@cf/meta/llama-3.2-1b-instruct\",\n        \"@cf/meta/llama-3.2-3b-instruct\",\n        \"@cf/meta/llama-3.3-70b-instruct-fp8-fast\",\n        \"@cf/meta/llama-4-scout-17b-16e-instruct\",\n        \"@cf/meta/llama-guard-3-8b\",\n        \"@cf/mistral/mistral-7b-instruct-v0.1\",\n        \"@cf/mistralai/mistral-small-3.1-24b-instruct\",\n        \"@cf/moonshotai/kimi-k2.5\",\n        \"@cf/moonshotai/kimi-k2.6\",\n        \"@cf/nvidia/nemotron-3-120b-a12b\",\n        \"@cf/openai/gpt-oss-120b\",\n        \"@cf/openai/gpt-oss-20b\",\n        \"@cf/qwen/qwen2.5-coder-32b-instruct\",\n        \"@cf/qwen/qwen3-30b-a3b-fp8\",\n        \"@cf/qwen/qwq-32b\",\n        \"@cf/zai-org/glm-4.7-flash\"\n      ],\n      \"docUrl\": \"https://developers.cloudflare.com/workers-ai/models/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"lmstudio\": {\n      \"url\": \"http://127.0.0.1:1234/v1\",\n      \"apiKeyEnvVar\": \"LMSTUDIO_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"LMStudio\",\n      \"models\": [\"openai/gpt-oss-20b\", \"qwen/qwen3-30b-a3b-2507\", \"qwen/qwen3-coder-30b\"],\n      \"docUrl\": \"https://lmstudio.ai/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"xiaomi-token-plan-cn\": {\n      \"url\": \"https://token-plan-cn.xiaomimimo.com/v1\",\n      \"apiKeyEnvVar\": \"XIAOMI_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Xiaomi Token Plan (China)\",\n      \"models\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2-tts\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n      \"docUrl\": \"https://platform.xiaomimimo.com/#/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"morph\": {\n      \"url\": \"https://api.morphllm.com/v1\",\n      \"apiKeyEnvVar\": \"MORPH_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Morph\",\n      \"models\": [\"auto\", \"morph-v3-fast\", \"morph-v3-large\"],\n      \"docUrl\": \"https://docs.morphllm.com/api-reference/introduction\",\n      \"gateway\": \"models.dev\"\n    },\n    \"nearai\": {\n      \"url\": \"https://cloud-api.near.ai/v1\",\n      \"apiKeyEnvVar\": \"NEARAI_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"NEAR AI Cloud\",\n      \"models\": [\n        \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n        \"Qwen/Qwen3-Embedding-0.6B\",\n        \"Qwen/Qwen3-Reranker-0.6B\",\n        \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n        \"Qwen/Qwen3.5-122B-A10B\",\n        \"anthropic/claude-haiku-4-5\",\n        \"anthropic/claude-opus-4-6\",\n        \"anthropic/claude-opus-4-7\",\n        \"anthropic/claude-sonnet-4-5\",\n        \"anthropic/claude-sonnet-4-6\",\n        \"black-forest-labs/FLUX.2-klein-4B\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-flash-lite\",\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-3.1-flash-lite\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4.1-nano\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.4-mini\",\n        \"openai/gpt-5.4-nano\",\n        \"openai/gpt-5.5\",\n        \"openai/gpt-oss-120b\",\n        \"openai/o3\",\n        \"openai/o3-mini\",\n        \"openai/o4-mini\",\n        \"openai/whisper-large-v3\",\n        \"zai-org/GLM-5.1-FP8\"\n      ],\n      \"docUrl\": \"https://docs.near.ai/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"abacus\": {\n      \"url\": \"https://routellm.abacus.ai/v1\",\n      \"apiKeyEnvVar\": \"ABACUS_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Abacus\",\n      \"models\": [\n        \"Qwen/QwQ-32B\",\n        \"Qwen/Qwen2.5-72B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"Qwen/Qwen3-32B\",\n        \"Qwen/qwen3-coder-480b-a35b-instruct\",\n        \"claude-3-7-sonnet-20250219\",\n        \"claude-haiku-4-5-20251001\",\n        \"claude-opus-4-1-20250805\",\n        \"claude-opus-4-20250514\",\n        \"claude-opus-4-5-20251101\",\n        \"claude-opus-4-6\",\n        \"claude-sonnet-4-20250514\",\n        \"claude-sonnet-4-5-20250929\",\n        \"claude-sonnet-4-6\",\n        \"deepseek-ai/DeepSeek-R1\",\n        \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n        \"deepseek-ai/DeepSeek-V3.2\",\n        \"deepseek/deepseek-v3.1\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-pro\",\n        \"gemini-3-flash-preview\",\n        \"gemini-3.1-flash-lite-preview\",\n        \"gemini-3.1-pro-preview\",\n        \"gpt-4.1\",\n        \"gpt-4.1-mini\",\n        \"gpt-4.1-nano\",\n        \"gpt-4o-2024-11-20\",\n        \"gpt-4o-mini\",\n        \"gpt-5\",\n        \"gpt-5-codex\",\n        \"gpt-5-mini\",\n        \"gpt-5-nano\",\n        \"gpt-5.1\",\n        \"gpt-5.1-chat-latest\",\n        \"gpt-5.1-codex\",\n        \"gpt-5.1-codex-max\",\n        \"gpt-5.2\",\n        \"gpt-5.2-chat-latest\",\n        \"gpt-5.2-codex\",\n        \"gpt-5.3-chat-latest\",\n        \"gpt-5.3-codex\",\n        \"gpt-5.3-codex-xhigh\",\n        \"gpt-5.4\",\n        \"grok-4-0709\",\n        \"grok-4-1-fast-non-reasoning\",\n        \"grok-4-fast-non-reasoning\",\n        \"grok-code-fast-1\",\n        \"kimi-k2-turbo-preview\",\n        \"kimi-k2.5\",\n        \"llama-3.3-70b-versatile\",\n        \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n        \"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo\",\n        \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n        \"o3\",\n        \"o3-mini\",\n        \"o3-pro\",\n        \"o4-mini\",\n        \"openai/gpt-oss-120b\",\n        \"qwen-2.5-coder-32b\",\n        \"qwen3-max\",\n        \"route-llm\",\n        \"zai-org/glm-4.5\",\n        \"zai-org/glm-4.6\",\n        \"zai-org/glm-4.7\",\n        \"zai-org/glm-5\"\n      ],\n      \"docUrl\": \"https://abacus.ai/help/api\",\n      \"gateway\": \"models.dev\"\n    },\n    \"privatemode-ai\": {\n      \"url\": \"http://localhost:8080/v1\",\n      \"apiKeyEnvVar\": \"PRIVATEMODE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Privatemode AI\",\n      \"models\": [\"gemma-3-27b\", \"gpt-oss-120b\", \"qwen3-coder-30b-a3b\", \"qwen3-embedding-4b\", \"whisper-large-v3\"],\n      \"docUrl\": \"https://docs.privatemode.ai/api/overview\",\n      \"gateway\": \"models.dev\"\n    },\n    \"minimax-cn-coding-plan\": {\n      \"url\": \"https://api.minimaxi.com/anthropic/v1\",\n      \"apiKeyEnvVar\": \"MINIMAX_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"MiniMax Token Plan (minimaxi.com)\",\n      \"models\": [\n        \"MiniMax-M2\",\n        \"MiniMax-M2.1\",\n        \"MiniMax-M2.5\",\n        \"MiniMax-M2.5-highspeed\",\n        \"MiniMax-M2.7\",\n        \"MiniMax-M2.7-highspeed\"\n      ],\n      \"docUrl\": \"https://platform.minimaxi.com/docs/token-plan/intro\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/anthropic\"\n    },\n    \"xiaomi-token-plan-ams\": {\n      \"url\": \"https://token-plan-ams.xiaomimimo.com/v1\",\n      \"apiKeyEnvVar\": \"XIAOMI_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Xiaomi Token Plan (Europe)\",\n      \"models\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2-tts\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n      \"docUrl\": \"https://platform.xiaomimimo.com/#/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"cloudferro-sherlock\": {\n      \"url\": \"https://api-sherlock.cloudferro.com/openai/v1/\",\n      \"apiKeyEnvVar\": \"CLOUDFERRO_SHERLOCK_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"CloudFerro Sherlock\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"meta-llama/Llama-3.3-70B-Instruct\",\n        \"openai/gpt-oss-120b\",\n        \"speakleash/Bielik-11B-v2.6-Instruct\",\n        \"speakleash/Bielik-11B-v3.0-Instruct\"\n      ],\n      \"docUrl\": \"https://docs.sherlock.cloudferro.com/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"openai\": {\n      \"apiKeyEnvVar\": \"OPENAI_API_KEY\",\n      \"name\": \"OpenAI\",\n      \"models\": [\n        \"chatgpt-image-latest\",\n        \"gpt-3.5-turbo\",\n        \"gpt-4\",\n        \"gpt-4-turbo\",\n        \"gpt-4.1\",\n        \"gpt-4.1-mini\",\n        \"gpt-4.1-nano\",\n        \"gpt-4o\",\n        \"gpt-4o-2024-05-13\",\n        \"gpt-4o-2024-08-06\",\n        \"gpt-4o-2024-11-20\",\n        \"gpt-4o-mini\",\n        \"gpt-5\",\n        \"gpt-5-chat-latest\",\n        \"gpt-5-codex\",\n        \"gpt-5-mini\",\n        \"gpt-5-nano\",\n        \"gpt-5-pro\",\n        \"gpt-5.1\",\n        \"gpt-5.1-chat-latest\",\n        \"gpt-5.1-codex\",\n        \"gpt-5.1-codex-max\",\n        \"gpt-5.1-codex-mini\",\n        \"gpt-5.2\",\n        \"gpt-5.2-chat-latest\",\n        \"gpt-5.2-codex\",\n        \"gpt-5.2-pro\",\n        \"gpt-5.3-chat-latest\",\n        \"gpt-5.3-codex\",\n        \"gpt-5.3-codex-spark\",\n        \"gpt-5.4\",\n        \"gpt-5.4-mini\",\n        \"gpt-5.4-nano\",\n        \"gpt-5.4-pro\",\n        \"gpt-5.5\",\n        \"gpt-5.5-pro\",\n        \"gpt-image-1\",\n        \"gpt-image-1-mini\",\n        \"gpt-image-1.5\",\n        \"o1\",\n        \"o1-mini\",\n        \"o1-preview\",\n        \"o1-pro\",\n        \"o3\",\n        \"o3-deep-research\",\n        \"o3-mini\",\n        \"o3-pro\",\n        \"o4-mini\",\n        \"o4-mini-deep-research\",\n        \"text-embedding-3-large\",\n        \"text-embedding-3-small\",\n        \"text-embedding-ada-002\"\n      ],\n      \"docUrl\": \"https://platform.openai.com/docs/models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/openai\"\n    },\n    \"dinference\": {\n      \"url\": \"https://api.dinference.com/v1\",\n      \"apiKeyEnvVar\": \"DINFERENCE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"DInference\",\n      \"models\": [\"glm-4.7\", \"glm-5\", \"glm-5.1\", \"gpt-oss-120b\", \"minimax-m2.5\"],\n      \"docUrl\": \"https://dinference.com\",\n      \"gateway\": \"models.dev\"\n    },\n    \"vivgrid\": {\n      \"url\": \"https://api.vivgrid.com/v1\",\n      \"apiKeyEnvVar\": \"VIVGRID_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Vivgrid\",\n      \"models\": [\n        \"deepseek-v3.2\",\n        \"deepseek-v4-pro\",\n        \"gemini-3.1-flash-lite-preview\",\n        \"gemini-3.1-pro-preview\",\n        \"gpt-5-mini\",\n        \"gpt-5.1-codex\",\n        \"gpt-5.1-codex-max\",\n        \"gpt-5.2-codex\",\n        \"gpt-5.3-codex\",\n        \"gpt-5.4\",\n        \"gpt-5.4-mini\",\n        \"gpt-5.4-nano\",\n        \"gpt-5.5\"\n      ],\n      \"docUrl\": \"https://docs.vivgrid.com/models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/openai\"\n    },\n    \"cerebras\": {\n      \"apiKeyEnvVar\": \"CEREBRAS_API_KEY\",\n      \"name\": \"Cerebras\",\n      \"models\": [\"gpt-oss-120b\", \"llama3.1-8b\", \"qwen-3-235b-a22b-instruct-2507\", \"zai-glm-4.7\"],\n      \"docUrl\": \"https://inference-docs.cerebras.ai/models/overview\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/cerebras\"\n    },\n    \"vultr\": {\n      \"url\": \"https://api.vultrinference.com/v1\",\n      \"apiKeyEnvVar\": \"VULTR_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Vultr\",\n      \"models\": [\"DeepSeek-V3.2\", \"GLM-5-FP8\", \"Kimi-K2.5\", \"MiniMax-M2.5\", \"gpt-oss-120b\"],\n      \"docUrl\": \"https://api.vultrinference.com/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"kuae-cloud-coding-plan\": {\n      \"url\": \"https://coding-plan-endpoint.kuaecloud.net/v1\",\n      \"apiKeyEnvVar\": \"KUAE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"KUAE Cloud Coding Plan\",\n      \"models\": [\"GLM-4.7\"],\n      \"docUrl\": \"https://docs.mthreads.com/kuaecloud/kuaecloud-doc-online/coding_plan/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"modelscope\": {\n      \"url\": \"https://api-inference.modelscope.cn/v1\",\n      \"apiKeyEnvVar\": \"MODELSCOPE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"ModelScope\",\n      \"models\": [\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n        \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n        \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n        \"ZhipuAI/GLM-4.5\",\n        \"ZhipuAI/GLM-4.6\"\n      ],\n      \"docUrl\": \"https://modelscope.cn/docs/model-service/API-Inference/intro\",\n      \"gateway\": \"models.dev\"\n    },\n    \"kimi-for-coding\": {\n      \"url\": \"https://api.kimi.com/coding/v1\",\n      \"apiKeyEnvVar\": \"KIMI_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Kimi For Coding\",\n      \"models\": [\"k2p5\", \"k2p6\", \"kimi-k2-thinking\"],\n      \"docUrl\": \"https://www.kimi.com/coding/docs/en/third-party-agents.html\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/anthropic\"\n    },\n    \"lucidquery\": {\n      \"url\": \"https://lucidquery.com/api/v1\",\n      \"apiKeyEnvVar\": \"LUCIDQUERY_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"LucidQuery AI\",\n      \"models\": [\"lucidnova-rf1-100b\", \"lucidquery-nexus-coder\"],\n      \"docUrl\": \"https://lucidquery.com/api/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"neuralwatt\": {\n      \"url\": \"https://api.neuralwatt.com/v1\",\n      \"apiKeyEnvVar\": \"NEURALWATT_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Neuralwatt\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"Qwen/Qwen3.5-397B-A17B-FP8\",\n        \"Qwen/Qwen3.6-35B-A3B\",\n        \"glm-5-fast\",\n        \"glm-5.1-fast\",\n        \"kimi-k2.5-fast\",\n        \"kimi-k2.6-fast\",\n        \"mistralai/Devstral-Small-2-24B-Instruct-2512\",\n        \"moonshotai/Kimi-K2.5\",\n        \"moonshotai/Kimi-K2.6\",\n        \"openai/gpt-oss-20b\",\n        \"qwen3.5-397b-fast\",\n        \"qwen3.6-35b-fast\",\n        \"zai-org/GLM-5.1-FP8\"\n      ],\n      \"docUrl\": \"https://portal.neuralwatt.com/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"jiekou\": {\n      \"url\": \"https://api.jiekou.ai/openai\",\n      \"apiKeyEnvVar\": \"JIEKOU_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Jiekou.AI\",\n      \"models\": [\n        \"baidu/ernie-4.5-300b-a47b-paddle\",\n        \"baidu/ernie-4.5-vl-424b-a47b\",\n        \"claude-haiku-4-5-20251001\",\n        \"claude-opus-4-1-20250805\",\n        \"claude-opus-4-20250514\",\n        \"claude-opus-4-5-20251101\",\n        \"claude-opus-4-6\",\n        \"claude-sonnet-4-20250514\",\n        \"claude-sonnet-4-5-20250929\",\n        \"deepseek/deepseek-r1-0528\",\n        \"deepseek/deepseek-v3-0324\",\n        \"deepseek/deepseek-v3.1\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-flash-lite\",\n        \"gemini-2.5-flash-lite-preview-06-17\",\n        \"gemini-2.5-flash-lite-preview-09-2025\",\n        \"gemini-2.5-flash-preview-05-20\",\n        \"gemini-2.5-pro\",\n        \"gemini-2.5-pro-preview-06-05\",\n        \"gemini-3-flash-preview\",\n        \"gemini-3-pro-preview\",\n        \"gpt-5-chat-latest\",\n        \"gpt-5-codex\",\n        \"gpt-5-mini\",\n        \"gpt-5-nano\",\n        \"gpt-5-pro\",\n        \"gpt-5.1\",\n        \"gpt-5.1-codex\",\n        \"gpt-5.1-codex-max\",\n        \"gpt-5.1-codex-mini\",\n        \"gpt-5.2\",\n        \"gpt-5.2-codex\",\n        \"gpt-5.2-pro\",\n        \"grok-4-0709\",\n        \"grok-4-1-fast-non-reasoning\",\n        \"grok-4-1-fast-reasoning\",\n        \"grok-4-fast-non-reasoning\",\n        \"grok-4-fast-reasoning\",\n        \"grok-code-fast-1\",\n        \"minimax/minimax-m2.1\",\n        \"minimaxai/minimax-m1-80k\",\n        \"moonshotai/kimi-k2-0905\",\n        \"moonshotai/kimi-k2-instruct\",\n        \"moonshotai/kimi-k2.5\",\n        \"o3\",\n        \"o3-mini\",\n        \"o4-mini\",\n        \"qwen/qwen3-235b-a22b-fp8\",\n        \"qwen/qwen3-235b-a22b-instruct-2507\",\n        \"qwen/qwen3-235b-a22b-thinking-2507\",\n        \"qwen/qwen3-30b-a3b-fp8\",\n        \"qwen/qwen3-32b-fp8\",\n        \"qwen/qwen3-coder-480b-a35b-instruct\",\n        \"qwen/qwen3-coder-next\",\n        \"qwen/qwen3-next-80b-a3b-instruct\",\n        \"qwen/qwen3-next-80b-a3b-thinking\",\n        \"xiaomimimo/mimo-v2-flash\",\n        \"zai-org/glm-4.5\",\n        \"zai-org/glm-4.5v\",\n        \"zai-org/glm-4.7\",\n        \"zai-org/glm-4.7-flash\"\n      ],\n      \"docUrl\": \"https://docs.jiekou.ai/docs/support/quickstart?utm_source=github_models.dev\",\n      \"gateway\": \"models.dev\"\n    },\n    \"ovhcloud\": {\n      \"url\": \"https://oai.endpoints.kepler.ai.cloud.ovh.net/v1\",\n      \"apiKeyEnvVar\": \"OVHCLOUD_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"OVHcloud AI Endpoints\",\n      \"models\": [\n        \"gpt-oss-120b\",\n        \"gpt-oss-20b\",\n        \"llama-3.1-8b-instruct\",\n        \"meta-llama-3_3-70b-instruct\",\n        \"mistral-7b-instruct-v0.3\",\n        \"mistral-nemo-instruct-2407\",\n        \"mistral-small-3.2-24b-instruct-2506\",\n        \"qwen2.5-vl-72b-instruct\",\n        \"qwen3-32b\",\n        \"qwen3-coder-30b-a3b-instruct\",\n        \"qwen3.5-9b\"\n      ],\n      \"docUrl\": \"https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog//\",\n      \"gateway\": \"models.dev\"\n    },\n    \"friendli\": {\n      \"url\": \"https://api.friendli.ai/serverless/v1\",\n      \"apiKeyEnvVar\": \"FRIENDLI_TOKEN\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Friendli\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"meta-llama/Llama-3.1-8B-Instruct\",\n        \"meta-llama/Llama-3.3-70B-Instruct\",\n        \"zai-org/GLM-5\",\n        \"zai-org/GLM-5.1\"\n      ],\n      \"docUrl\": \"https://friendli.ai/docs/guides/serverless_endpoints/introduction\",\n      \"gateway\": \"models.dev\"\n    },\n    \"openrouter\": {\n      \"url\": \"https://openrouter.ai/api/v1\",\n      \"apiKeyEnvVar\": \"OPENROUTER_API_KEY\",\n      \"name\": \"OpenRouter\",\n      \"models\": [\n        \"ai21/jamba-large-1.7\",\n        \"aion-labs/aion-1.0\",\n        \"aion-labs/aion-1.0-mini\",\n        \"aion-labs/aion-2.0\",\n        \"aion-labs/aion-rp-llama-3.1-8b\",\n        \"alfredpros/codellama-7b-instruct-solidity\",\n        \"alibaba/tongyi-deepresearch-30b-a3b\",\n        \"allenai/olmo-3-32b-think\",\n        \"amazon/nova-2-lite-v1\",\n        \"amazon/nova-lite-v1\",\n        \"amazon/nova-micro-v1\",\n        \"amazon/nova-premier-v1\",\n        \"amazon/nova-pro-v1\",\n        \"anthracite-org/magnum-v4-72b\",\n        \"anthropic/claude-3-haiku\",\n        \"anthropic/claude-3.5-haiku\",\n        \"anthropic/claude-haiku-4.5\",\n        \"anthropic/claude-opus-4\",\n        \"anthropic/claude-opus-4.1\",\n        \"anthropic/claude-opus-4.5\",\n        \"anthropic/claude-opus-4.6\",\n        \"anthropic/claude-opus-4.6-fast\",\n        \"anthropic/claude-opus-4.7\",\n        \"anthropic/claude-opus-4.7-fast\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-sonnet-4.5\",\n        \"anthropic/claude-sonnet-4.6\",\n        \"arcee-ai/coder-large\",\n        \"arcee-ai/maestro-reasoning\",\n        \"arcee-ai/spotlight\",\n        \"arcee-ai/trinity-large-thinking\",\n        \"arcee-ai/trinity-large-thinking:free\",\n        \"arcee-ai/trinity-mini\",\n        \"arcee-ai/virtuoso-large\",\n        \"baidu/cobuddy:free\",\n        \"baidu/ernie-4.5-21b-a3b\",\n        \"baidu/ernie-4.5-21b-a3b-thinking\",\n        \"baidu/ernie-4.5-300b-a47b\",\n        \"baidu/ernie-4.5-vl-28b-a3b\",\n        \"baidu/ernie-4.5-vl-424b-a47b\",\n        \"baidu/qianfan-ocr-fast\",\n        \"bytedance-seed/seed-1.6\",\n        \"bytedance-seed/seed-1.6-flash\",\n        \"bytedance-seed/seed-2.0-lite\",\n        \"bytedance-seed/seed-2.0-mini\",\n        \"bytedance/ui-tars-1.5-7b\",\n        \"cognitivecomputations/dolphin-mistral-24b-venice-edition:free\",\n        \"cohere/command-a\",\n        \"cohere/command-r-08-2024\",\n        \"cohere/command-r-plus-08-2024\",\n        \"cohere/command-r7b-12-2024\",\n        \"deepcogito/cogito-v2.1-671b\",\n        \"deepseek/deepseek-chat\",\n        \"deepseek/deepseek-chat-v3-0324\",\n        \"deepseek/deepseek-chat-v3.1\",\n        \"deepseek/deepseek-r1\",\n        \"deepseek/deepseek-r1-0528\",\n        \"deepseek/deepseek-r1-distill-llama-70b\",\n        \"deepseek/deepseek-r1-distill-qwen-32b\",\n        \"deepseek/deepseek-v3.1-terminus\",\n        \"deepseek/deepseek-v3.2\",\n        \"deepseek/deepseek-v3.2-exp\",\n        \"deepseek/deepseek-v3.2-speciale\",\n        \"deepseek/deepseek-v4-flash\",\n        \"deepseek/deepseek-v4-flash:free\",\n        \"deepseek/deepseek-v4-pro\",\n        \"essentialai/rnj-1-instruct\",\n        \"google/gemini-2.0-flash-001\",\n        \"google/gemini-2.0-flash-lite-001\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-flash-image\",\n        \"google/gemini-2.5-flash-lite\",\n        \"google/gemini-2.5-flash-lite-preview-09-2025\",\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-2.5-pro-preview\",\n        \"google/gemini-2.5-pro-preview-05-06\",\n        \"google/gemini-3-flash-preview\",\n        \"google/gemini-3-pro-image-preview\",\n        \"google/gemini-3.1-flash-image-preview\",\n        \"google/gemini-3.1-flash-lite\",\n        \"google/gemini-3.1-flash-lite-preview\",\n        \"google/gemini-3.1-pro-preview\",\n        \"google/gemini-3.1-pro-preview-customtools\",\n        \"google/gemini-3.5-flash\",\n        \"google/gemma-2-27b-it\",\n        \"google/gemma-3-12b-it\",\n        \"google/gemma-3-27b-it\",\n        \"google/gemma-3-4b-it\",\n        \"google/gemma-3n-e4b-it\",\n        \"google/gemma-4-26b-a4b-it\",\n        \"google/gemma-4-26b-a4b-it:free\",\n        \"google/gemma-4-31b-it\",\n        \"google/gemma-4-31b-it:free\",\n        \"google/lyria-3-clip-preview\",\n        \"google/lyria-3-pro-preview\",\n        \"gryphe/mythomax-l2-13b\",\n        \"ibm-granite/granite-4.0-h-micro\",\n        \"ibm-granite/granite-4.1-8b\",\n        \"inception/mercury-2\",\n        \"inclusionai/ling-2.6-1t\",\n        \"inclusionai/ling-2.6-flash\",\n        \"inclusionai/ring-2.6-1t\",\n        \"inflection/inflection-3-pi\",\n        \"inflection/inflection-3-productivity\",\n        \"kwaipilot/kat-coder-pro-v2\",\n        \"liquid/lfm-2-24b-a2b\",\n        \"liquid/lfm-2.5-1.2b-instruct:free\",\n        \"liquid/lfm-2.5-1.2b-thinking:free\",\n        \"mancer/weaver\",\n        \"meta-llama/llama-3-70b-instruct\",\n        \"meta-llama/llama-3-8b-instruct\",\n        \"meta-llama/llama-3.1-70b-instruct\",\n        \"meta-llama/llama-3.1-8b-instruct\",\n        \"meta-llama/llama-3.2-11b-vision-instruct\",\n        \"meta-llama/llama-3.2-1b-instruct\",\n        \"meta-llama/llama-3.2-3b-instruct\",\n        \"meta-llama/llama-3.2-3b-instruct:free\",\n        \"meta-llama/llama-3.3-70b-instruct\",\n        \"meta-llama/llama-3.3-70b-instruct:free\",\n        \"meta-llama/llama-4-maverick\",\n        \"meta-llama/llama-4-scout\",\n        \"meta-llama/llama-guard-3-8b\",\n        \"meta-llama/llama-guard-4-12b\",\n        \"microsoft/phi-4\",\n        \"microsoft/phi-4-mini-instruct\",\n        \"microsoft/wizardlm-2-8x22b\",\n        \"minimax/minimax-01\",\n        \"minimax/minimax-m1\",\n        \"minimax/minimax-m2\",\n        \"minimax/minimax-m2-her\",\n        \"minimax/minimax-m2.1\",\n        \"minimax/minimax-m2.5\",\n        \"minimax/minimax-m2.5:free\",\n        \"minimax/minimax-m2.7\",\n        \"mistralai/codestral-2508\",\n        \"mistralai/devstral-2512\",\n        \"mistralai/devstral-medium\",\n        \"mistralai/devstral-small\",\n        \"mistralai/ministral-14b-2512\",\n        \"mistralai/ministral-3b-2512\",\n        \"mistralai/ministral-8b-2512\",\n        \"mistralai/mistral-7b-instruct-v0.1\",\n        \"mistralai/mistral-large\",\n        \"mistralai/mistral-large-2407\",\n        \"mistralai/mistral-large-2411\",\n        \"mistralai/mistral-large-2512\",\n        \"mistralai/mistral-medium-3\",\n        \"mistralai/mistral-medium-3-5\",\n        \"mistralai/mistral-medium-3.1\",\n        \"mistralai/mistral-nemo\",\n        \"mistralai/mistral-saba\",\n        \"mistralai/mistral-small-24b-instruct-2501\",\n        \"mistralai/mistral-small-2603\",\n        \"mistralai/mistral-small-3.1-24b-instruct\",\n        \"mistralai/mistral-small-3.2-24b-instruct\",\n        \"mistralai/mixtral-8x22b-instruct\",\n        \"mistralai/pixtral-large-2411\",\n        \"mistralai/voxtral-small-24b-2507\",\n        \"moonshotai/kimi-k2\",\n        \"moonshotai/kimi-k2-0905\",\n        \"moonshotai/kimi-k2-thinking\",\n        \"moonshotai/kimi-k2.5\",\n        \"moonshotai/kimi-k2.6\",\n        \"morph/morph-v3-fast\",\n        \"morph/morph-v3-large\",\n        \"nex-agi/deepseek-v3.1-nex-n1\",\n        \"nousresearch/hermes-2-pro-llama-3-8b\",\n        \"nousresearch/hermes-3-llama-3.1-405b\",\n        \"nousresearch/hermes-3-llama-3.1-405b:free\",\n        \"nousresearch/hermes-3-llama-3.1-70b\",\n        \"nousresearch/hermes-4-405b\",\n        \"nousresearch/hermes-4-70b\",\n        \"nvidia/llama-3.3-nemotron-super-49b-v1.5\",\n        \"nvidia/nemotron-3-nano-30b-a3b\",\n        \"nvidia/nemotron-3-nano-30b-a3b:free\",\n        \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free\",\n        \"nvidia/nemotron-3-super-120b-a12b\",\n        \"nvidia/nemotron-3-super-120b-a12b:free\",\n        \"nvidia/nemotron-nano-12b-v2-vl:free\",\n        \"nvidia/nemotron-nano-9b-v2\",\n        \"nvidia/nemotron-nano-9b-v2:free\",\n        \"openai/gpt-3.5-turbo\",\n        \"openai/gpt-3.5-turbo-0613\",\n        \"openai/gpt-3.5-turbo-16k\",\n        \"openai/gpt-3.5-turbo-instruct\",\n        \"openai/gpt-4\",\n        \"openai/gpt-4-0314\",\n        \"openai/gpt-4-1106-preview\",\n        \"openai/gpt-4-turbo\",\n        \"openai/gpt-4-turbo-preview\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4.1-nano\",\n        \"openai/gpt-4o\",\n        \"openai/gpt-4o-2024-05-13\",\n        \"openai/gpt-4o-2024-08-06\",\n        \"openai/gpt-4o-2024-11-20\",\n        \"openai/gpt-4o-audio-preview\",\n        \"openai/gpt-4o-mini\",\n        \"openai/gpt-4o-mini-2024-07-18\",\n        \"openai/gpt-4o-mini-search-preview\",\n        \"openai/gpt-4o-search-preview\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-chat\",\n        \"openai/gpt-5-codex\",\n        \"openai/gpt-5-image\",\n        \"openai/gpt-5-image-mini\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-5-pro\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.1-chat\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-max\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.2-chat\",\n        \"openai/gpt-5.2-codex\",\n        \"openai/gpt-5.2-pro\",\n        \"openai/gpt-5.3-chat\",\n        \"openai/gpt-5.3-codex\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.4-image-2\",\n        \"openai/gpt-5.4-mini\",\n        \"openai/gpt-5.4-nano\",\n        \"openai/gpt-5.4-pro\",\n        \"openai/gpt-5.5\",\n        \"openai/gpt-5.5-pro\",\n        \"openai/gpt-audio\",\n        \"openai/gpt-audio-mini\",\n        \"openai/gpt-chat-latest\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-120b:free\",\n        \"openai/gpt-oss-20b\",\n        \"openai/gpt-oss-20b:free\",\n        \"openai/gpt-oss-safeguard-20b\",\n        \"openai/o1\",\n        \"openai/o1-pro\",\n        \"openai/o3\",\n        \"openai/o3-deep-research\",\n        \"openai/o3-mini\",\n        \"openai/o3-mini-high\",\n        \"openai/o3-pro\",\n        \"openai/o4-mini\",\n        \"openai/o4-mini-deep-research\",\n        \"openai/o4-mini-high\",\n        \"openrouter/auto\",\n        \"openrouter/bodybuilder\",\n        \"openrouter/free\",\n        \"openrouter/owl-alpha\",\n        \"openrouter/pareto-code\",\n        \"perceptron/perceptron-mk1\",\n        \"perplexity/sonar\",\n        \"perplexity/sonar-deep-research\",\n        \"perplexity/sonar-pro\",\n        \"perplexity/sonar-pro-search\",\n        \"perplexity/sonar-reasoning-pro\",\n        \"poolside/laguna-m.1:free\",\n        \"poolside/laguna-xs.2:free\",\n        \"prime-intellect/intellect-3\",\n        \"qwen/qwen-2.5-72b-instruct\",\n        \"qwen/qwen-2.5-7b-instruct\",\n        \"qwen/qwen-2.5-coder-32b-instruct\",\n        \"qwen/qwen-plus\",\n        \"qwen/qwen-plus-2025-07-28\",\n        \"qwen/qwen-plus-2025-07-28:thinking\",\n        \"qwen/qwen2.5-vl-72b-instruct\",\n        \"qwen/qwen3-14b\",\n        \"qwen/qwen3-235b-a22b\",\n        \"qwen/qwen3-235b-a22b-2507\",\n        \"qwen/qwen3-235b-a22b-thinking-2507\",\n        \"qwen/qwen3-30b-a3b\",\n        \"qwen/qwen3-30b-a3b-instruct-2507\",\n        \"qwen/qwen3-30b-a3b-thinking-2507\",\n        \"qwen/qwen3-32b\",\n        \"qwen/qwen3-8b\",\n        \"qwen/qwen3-coder\",\n        \"qwen/qwen3-coder-30b-a3b-instruct\",\n        \"qwen/qwen3-coder-flash\",\n        \"qwen/qwen3-coder-next\",\n        \"qwen/qwen3-coder-plus\",\n        \"qwen/qwen3-coder:free\",\n        \"qwen/qwen3-max\",\n        \"qwen/qwen3-max-thinking\",\n        \"qwen/qwen3-next-80b-a3b-instruct\",\n        \"qwen/qwen3-next-80b-a3b-instruct:free\",\n        \"qwen/qwen3-next-80b-a3b-thinking\",\n        \"qwen/qwen3-vl-235b-a22b-instruct\",\n        \"qwen/qwen3-vl-235b-a22b-thinking\",\n        \"qwen/qwen3-vl-30b-a3b-instruct\",\n        \"qwen/qwen3-vl-30b-a3b-thinking\",\n        \"qwen/qwen3-vl-32b-instruct\",\n        \"qwen/qwen3-vl-8b-instruct\",\n        \"qwen/qwen3-vl-8b-thinking\",\n        \"qwen/qwen3.5-122b-a10b\",\n        \"qwen/qwen3.5-27b\",\n        \"qwen/qwen3.5-35b-a3b\",\n        \"qwen/qwen3.5-397b-a17b\",\n        \"qwen/qwen3.5-9b\",\n        \"qwen/qwen3.5-flash-02-23\",\n        \"qwen/qwen3.5-plus-02-15\",\n        \"qwen/qwen3.5-plus-20260420\",\n        \"qwen/qwen3.6-27b\",\n        \"qwen/qwen3.6-35b-a3b\",\n        \"qwen/qwen3.6-flash\",\n        \"qwen/qwen3.6-max-preview\",\n        \"qwen/qwen3.6-plus\",\n        \"qwen/qwen3.7-max\",\n        \"rekaai/reka-edge\",\n        \"rekaai/reka-flash-3\",\n        \"relace/relace-apply-3\",\n        \"relace/relace-search\",\n        \"sao10k/l3-euryale-70b\",\n        \"sao10k/l3-lunaris-8b\",\n        \"sao10k/l3.1-70b-hanami-x1\",\n        \"sao10k/l3.1-euryale-70b\",\n        \"sao10k/l3.3-euryale-70b\",\n        \"stepfun/step-3.5-flash\",\n        \"switchpoint/router\",\n        \"tencent/hunyuan-a13b-instruct\",\n        \"tencent/hy3-preview\",\n        \"thedrummer/cydonia-24b-v4.1\",\n        \"thedrummer/rocinante-12b\",\n        \"thedrummer/skyfall-36b-v2\",\n        \"thedrummer/unslopnemo-12b\",\n        \"undi95/remm-slerp-l2-13b\",\n        \"upstage/solar-pro-3\",\n        \"writer/palmyra-x5\",\n        \"x-ai/grok-4.20\",\n        \"x-ai/grok-4.20-multi-agent\",\n        \"x-ai/grok-4.3\",\n        \"x-ai/grok-build-0.1\",\n        \"xiaomi/mimo-v2-flash\",\n        \"xiaomi/mimo-v2-omni\",\n        \"xiaomi/mimo-v2-pro\",\n        \"xiaomi/mimo-v2.5\",\n        \"xiaomi/mimo-v2.5-pro\",\n        \"z-ai/glm-4-32b\",\n        \"z-ai/glm-4.5\",\n        \"z-ai/glm-4.5-air\",\n        \"z-ai/glm-4.5-air:free\",\n        \"z-ai/glm-4.5v\",\n        \"z-ai/glm-4.6\",\n        \"z-ai/glm-4.6v\",\n        \"z-ai/glm-4.7\",\n        \"z-ai/glm-4.7-flash\",\n        \"z-ai/glm-5\",\n        \"z-ai/glm-5-turbo\",\n        \"z-ai/glm-5.1\",\n        \"z-ai/glm-5v-turbo\",\n        \"~anthropic/claude-haiku-latest\",\n        \"~anthropic/claude-opus-latest\",\n        \"~anthropic/claude-sonnet-latest\",\n        \"~google/gemini-flash-latest\",\n        \"~google/gemini-pro-latest\",\n        \"~moonshotai/kimi-latest\",\n        \"~openai/gpt-latest\",\n        \"~openai/gpt-mini-latest\"\n      ],\n      \"docUrl\": \"https://openrouter.ai/models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@openrouter/ai-sdk-provider\"\n    },\n    \"regolo-ai\": {\n      \"url\": \"https://api.regolo.ai/v1\",\n      \"apiKeyEnvVar\": \"REGOLO_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Regolo AI\",\n      \"models\": [\n        \"gpt-oss-120b\",\n        \"gpt-oss-20b\",\n        \"llama-3.1-8b-instruct\",\n        \"llama-3.3-70b-instruct\",\n        \"minimax-m2.5\",\n        \"mistral-small-4-119b\",\n        \"mistral-small3.2\",\n        \"qwen-image\",\n        \"qwen3-coder-next\",\n        \"qwen3-embedding-8b\",\n        \"qwen3-reranker-4b\",\n        \"qwen3.5-122b\",\n        \"qwen3.5-9b\"\n      ],\n      \"docUrl\": \"https://docs.regolo.ai/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"claudinio\": {\n      \"url\": \"https://api.claudin.io/v1\",\n      \"apiKeyEnvVar\": \"CLAUDINIO_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Claudinio\",\n      \"models\": [\"claudinio\"],\n      \"docUrl\": \"https://claudin.io\",\n      \"gateway\": \"models.dev\"\n    },\n    \"orcarouter\": {\n      \"url\": \"https://api.orcarouter.ai/v1\",\n      \"apiKeyEnvVar\": \"ORCAROUTER_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"OrcaRouter\",\n      \"models\": [\n        \"anthropic/claude-haiku-4.5\",\n        \"anthropic/claude-opus-4\",\n        \"anthropic/claude-opus-4.1\",\n        \"anthropic/claude-opus-4.5\",\n        \"anthropic/claude-opus-4.6\",\n        \"anthropic/claude-opus-4.7\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-sonnet-4.5\",\n        \"anthropic/claude-sonnet-4.6\",\n        \"deepseek/deepseek-chat\",\n        \"deepseek/deepseek-reasoner\",\n        \"deepseek/deepseek-v4-flash\",\n        \"deepseek/deepseek-v4-pro\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-flash-lite\",\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-3-flash-preview\",\n        \"google/gemini-3-pro-preview\",\n        \"google/gemini-3.1-flash-lite-preview\",\n        \"google/gemini-3.1-pro-preview\",\n        \"google/gemini-3.1-pro-preview-customtools\",\n        \"google/gemini-flash-latest\",\n        \"google/gemini-flash-lite-latest\",\n        \"google/gemma-4-26b-a4b-it\",\n        \"google/gemma-4-31b-it\",\n        \"grok/grok-4.3\",\n        \"kimi/kimi-k2.5\",\n        \"kimi/kimi-k2.6\",\n        \"minimax/minimax-m2.5\",\n        \"minimax/minimax-m2.5-highspeed\",\n        \"minimax/minimax-m2.7\",\n        \"minimax/minimax-m2.7-highspeed\",\n        \"openai/gpt-3.5-turbo\",\n        \"openai/gpt-4\",\n        \"openai/gpt-4-turbo\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4.1-nano\",\n        \"openai/gpt-4o\",\n        \"openai/gpt-4o-2024-05-13\",\n        \"openai/gpt-4o-2024-08-06\",\n        \"openai/gpt-4o-2024-11-20\",\n        \"openai/gpt-4o-mini\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-chat-latest\",\n        \"openai/gpt-5-codex\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-5-pro\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.1-chat-latest\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-max\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.2-chat-latest\",\n        \"openai/gpt-5.2-codex\",\n        \"openai/gpt-5.2-pro\",\n        \"openai/gpt-5.3-chat-latest\",\n        \"openai/gpt-5.3-codex\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.4-mini\",\n        \"openai/gpt-5.4-nano\",\n        \"openai/gpt-5.4-pro\",\n        \"openai/gpt-5.5\",\n        \"openai/gpt-5.5-pro\",\n        \"orcarouter/auto\",\n        \"qwen/qwen3-max\",\n        \"qwen/qwen3.5-122b-a10b\",\n        \"qwen/qwen3.5-27b\",\n        \"qwen/qwen3.5-35b-a3b\",\n        \"qwen/qwen3.5-397b-a17b\",\n        \"qwen/qwen3.5-plus\",\n        \"qwen/qwen3.6-35b-a3b\",\n        \"qwen/qwen3.6-plus\",\n        \"z-ai/glm-4.5\",\n        \"z-ai/glm-4.5-air\",\n        \"z-ai/glm-4.6\",\n        \"z-ai/glm-4.7\",\n        \"z-ai/glm-5\",\n        \"z-ai/glm-5.1\"\n      ],\n      \"docUrl\": \"https://docs.orcarouter.ai\",\n      \"gateway\": \"models.dev\"\n    },\n    \"opencode-go\": {\n      \"url\": \"https://opencode.ai/zen/go/v1\",\n      \"apiKeyEnvVar\": \"OPENCODE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"OpenCode Go\",\n      \"models\": [\n        \"deepseek-v4-flash\",\n        \"deepseek-v4-pro\",\n        \"glm-5\",\n        \"glm-5.1\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\",\n        \"mimo-v2.5\",\n        \"mimo-v2.5-pro\",\n        \"minimax-m2.5\",\n        \"minimax-m2.7\",\n        \"qwen3.5-plus\",\n        \"qwen3.6-plus\"\n      ],\n      \"docUrl\": \"https://opencode.ai/docs/zen\",\n      \"gateway\": \"models.dev\"\n    },\n    \"llmgateway\": {\n      \"url\": \"https://api.llmgateway.io/v1\",\n      \"apiKeyEnvVar\": \"LLMGATEWAY_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"LLM Gateway\",\n      \"models\": [\n        \"auto\",\n        \"claude-3-5-sonnet-20241022\",\n        \"claude-3-7-sonnet\",\n        \"claude-3-7-sonnet-20250219\",\n        \"claude-3-opus\",\n        \"claude-haiku-4-5\",\n        \"claude-haiku-4-5-20251001\",\n        \"claude-opus-4-1-20250805\",\n        \"claude-opus-4-20250514\",\n        \"claude-opus-4-5-20251101\",\n        \"claude-opus-4-6\",\n        \"claude-opus-4-7\",\n        \"claude-sonnet-4-20250514\",\n        \"claude-sonnet-4-5\",\n        \"claude-sonnet-4-5-20250929\",\n        \"claude-sonnet-4-6\",\n        \"codestral-2508\",\n        \"custom\",\n        \"deepseek-r1-0528\",\n        \"deepseek-v3.1\",\n        \"deepseek-v3.2\",\n        \"deepseek-v4-flash\",\n        \"deepseek-v4-pro\",\n        \"devstral-2512\",\n        \"devstral-small-2507\",\n        \"gemini-2.0-flash\",\n        \"gemini-2.0-flash-lite\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-flash-lite\",\n        \"gemini-2.5-pro\",\n        \"gemini-3-flash-preview\",\n        \"gemini-3.1-flash-lite\",\n        \"gemini-3.1-flash-lite-preview\",\n        \"gemini-3.1-pro-preview\",\n        \"gemini-3.5-flash\",\n        \"gemini-pro-latest\",\n        \"gemma-2-27b-it-together\",\n        \"gemma-3-1b-it\",\n        \"gemma-3-27b\",\n        \"glm-4-32b-0414-128k\",\n        \"glm-4.5\",\n        \"glm-4.5-air\",\n        \"glm-4.5-airx\",\n        \"glm-4.5-flash\",\n        \"glm-4.5-x\",\n        \"glm-4.5v\",\n        \"glm-4.6\",\n        \"glm-4.6v\",\n        \"glm-4.6v-flash\",\n        \"glm-4.6v-flashx\",\n        \"glm-4.7\",\n        \"glm-4.7-flash\",\n        \"glm-4.7-flashx\",\n        \"glm-5\",\n        \"glm-5.1\",\n        \"gpt-3.5-turbo\",\n        \"gpt-4\",\n        \"gpt-4-turbo\",\n        \"gpt-4.1\",\n        \"gpt-4.1-mini\",\n        \"gpt-4.1-nano\",\n        \"gpt-4o\",\n        \"gpt-4o-mini\",\n        \"gpt-4o-mini-search-preview\",\n        \"gpt-4o-search-preview\",\n        \"gpt-5\",\n        \"gpt-5-chat-latest\",\n        \"gpt-5-mini\",\n        \"gpt-5-nano\",\n        \"gpt-5-pro\",\n        \"gpt-5.1\",\n        \"gpt-5.1-codex\",\n        \"gpt-5.1-codex-mini\",\n        \"gpt-5.2\",\n        \"gpt-5.2-chat-latest\",\n        \"gpt-5.2-codex\",\n        \"gpt-5.2-pro\",\n        \"gpt-5.3-chat-latest\",\n        \"gpt-5.3-codex\",\n        \"gpt-5.4\",\n        \"gpt-5.4-mini\",\n        \"gpt-5.4-nano\",\n        \"gpt-5.4-pro\",\n        \"gpt-5.5\",\n        \"gpt-5.5-pro\",\n        \"gpt-oss-120b\",\n        \"gpt-oss-20b\",\n        \"grok-4-0709\",\n        \"grok-4-1-fast-reasoning\",\n        \"grok-4-20-beta-0309-non-reasoning\",\n        \"grok-4-20-beta-0309-reasoning\",\n        \"grok-4-20-non-reasoning\",\n        \"grok-4-20-reasoning\",\n        \"grok-4-3\",\n        \"grok-4-fast-reasoning\",\n        \"hermes-2-pro-llama-3-8b\",\n        \"kimi-k2\",\n        \"kimi-k2-thinking\",\n        \"kimi-k2-thinking-turbo\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\",\n        \"llama-3-70b-instruct\",\n        \"llama-3-8b-instruct\",\n        \"llama-3.1-70b-instruct\",\n        \"llama-3.1-8b-instruct\",\n        \"llama-3.1-nemotron-ultra-253b\",\n        \"llama-3.2-11b-instruct\",\n        \"llama-3.2-3b-instruct\",\n        \"llama-3.3-70b-instruct\",\n        \"llama-4-maverick-17b-instruct\",\n        \"llama-4-scout\",\n        \"llama-4-scout-17b-instruct\",\n        \"mimo-v2-flash\",\n        \"mimo-v2-omni\",\n        \"mimo-v2-pro\",\n        \"mimo-v2.5\",\n        \"mimo-v2.5-pro\",\n        \"minimax-m2\",\n        \"minimax-m2.1\",\n        \"minimax-m2.1-lightning\",\n        \"minimax-m2.5\",\n        \"minimax-m2.5-highspeed\",\n        \"minimax-m2.7\",\n        \"minimax-m2.7-highspeed\",\n        \"minimax-text-01\",\n        \"ministral-14b-2512\",\n        \"ministral-3b-2512\",\n        \"ministral-8b-2512\",\n        \"mistral-large-2512\",\n        \"mistral-large-latest\",\n        \"mistral-small-2506\",\n        \"o1\",\n        \"o3\",\n        \"o3-mini\",\n        \"o4-mini\",\n        \"pixtral-large-latest\",\n        \"qwen-coder-plus\",\n        \"qwen-flash\",\n        \"qwen-max\",\n        \"qwen-max-latest\",\n        \"qwen-omni-turbo\",\n        \"qwen-plus\",\n        \"qwen-plus-latest\",\n        \"qwen-turbo\",\n        \"qwen-vl-max\",\n        \"qwen-vl-plus\",\n        \"qwen2-5-vl-32b-instruct\",\n        \"qwen2-5-vl-72b-instruct\",\n        \"qwen25-coder-7b\",\n        \"qwen3-235b-a22b-fp8\",\n        \"qwen3-235b-a22b-instruct-2507\",\n        \"qwen3-235b-a22b-thinking-2507\",\n        \"qwen3-30b-a3b-fp8\",\n        \"qwen3-30b-a3b-instruct-2507\",\n        \"qwen3-30b-a3b-thinking-2507\",\n        \"qwen3-32b\",\n        \"qwen3-32b-fp8\",\n        \"qwen3-4b-fp8\",\n        \"qwen3-coder-30b-a3b-instruct\",\n        \"qwen3-coder-480b-a35b-instruct\",\n        \"qwen3-coder-flash\",\n        \"qwen3-coder-next\",\n        \"qwen3-coder-plus\",\n        \"qwen3-max\",\n        \"qwen3-max-2026-01-23\",\n        \"qwen3-next-80b-a3b-instruct\",\n        \"qwen3-next-80b-a3b-thinking\",\n        \"qwen3-vl-235b-a22b-instruct\",\n        \"qwen3-vl-235b-a22b-thinking\",\n        \"qwen3-vl-30b-a3b-instruct\",\n        \"qwen3-vl-30b-a3b-thinking\",\n        \"qwen3-vl-8b-instruct\",\n        \"qwen3-vl-flash\",\n        \"qwen3-vl-plus\",\n        \"qwen3.6-35b-a3b\",\n        \"qwen3.6-max-preview\",\n        \"qwen3.6-plus\",\n        \"qwen35-397b-a17b\",\n        \"qwen37-max\",\n        \"qwq-plus\",\n        \"seed-1-6-250615\",\n        \"seed-1-6-250915\",\n        \"seed-1-6-flash-250715\",\n        \"seed-1-8-251228\",\n        \"sonar\",\n        \"sonar-pro\",\n        \"sonar-reasoning-pro\"\n      ],\n      \"docUrl\": \"https://llmgateway.io/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"poe\": {\n      \"url\": \"https://api.poe.com/v1\",\n      \"apiKeyEnvVar\": \"POE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Poe\",\n      \"models\": [\n        \"anthropic/claude-haiku-3\",\n        \"anthropic/claude-haiku-3.5\",\n        \"anthropic/claude-haiku-4.5\",\n        \"anthropic/claude-opus-4\",\n        \"anthropic/claude-opus-4.1\",\n        \"anthropic/claude-opus-4.5\",\n        \"anthropic/claude-opus-4.6\",\n        \"anthropic/claude-opus-4.7\",\n        \"anthropic/claude-sonnet-3.7\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-sonnet-4.5\",\n        \"anthropic/claude-sonnet-4.6\",\n        \"cerebras/gpt-oss-120b-cs\",\n        \"cerebras/llama-3.1-8b-cs\",\n        \"elevenlabs/elevenlabs-music\",\n        \"elevenlabs/elevenlabs-v2.5-turbo\",\n        \"elevenlabs/elevenlabs-v3\",\n        \"empiriolabs/deepseek-v4-flash-el\",\n        \"empiriolabs/deepseek-v4-pro-el\",\n        \"fireworks-ai/kimi-k2.5-fw\",\n        \"google/gemini-2.0-flash\",\n        \"google/gemini-2.0-flash-lite\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-flash-lite\",\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-3-flash\",\n        \"google/gemini-3.1-flash-lite\",\n        \"google/gemini-3.1-pro\",\n        \"google/gemini-3.5-flash\",\n        \"google/gemma-4-31b\",\n        \"google/imagen-3\",\n        \"google/imagen-3-fast\",\n        \"google/imagen-4\",\n        \"google/imagen-4-fast\",\n        \"google/imagen-4-ultra\",\n        \"google/lyria\",\n        \"google/nano-banana\",\n        \"google/nano-banana-pro\",\n        \"google/veo-2\",\n        \"google/veo-3\",\n        \"google/veo-3-fast\",\n        \"google/veo-3.1\",\n        \"google/veo-3.1-fast\",\n        \"ideogramai/ideogram\",\n        \"ideogramai/ideogram-v2\",\n        \"ideogramai/ideogram-v2a\",\n        \"ideogramai/ideogram-v2a-turbo\",\n        \"lumalabs/ray2\",\n        \"novita/deepseek-v3.2\",\n        \"novita/glm-4.6\",\n        \"novita/glm-4.6v\",\n        \"novita/glm-4.7-flash\",\n        \"novita/glm-4.7-n\",\n        \"novita/glm-5\",\n        \"novita/kimi-k2-thinking\",\n        \"novita/kimi-k2.5\",\n        \"novita/kimi-k2.6\",\n        \"novita/minimax-m2.1\",\n        \"openai/dall-e-3\",\n        \"openai/gpt-3.5-turbo\",\n        \"openai/gpt-3.5-turbo-instruct\",\n        \"openai/gpt-3.5-turbo-raw\",\n        \"openai/gpt-4-turbo\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4.1-nano\",\n        \"openai/gpt-4o\",\n        \"openai/gpt-4o-aug\",\n        \"openai/gpt-4o-mini\",\n        \"openai/gpt-4o-mini-search\",\n        \"openai/gpt-4o-search\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-chat\",\n        \"openai/gpt-5-codex\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-5-pro\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-max\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"openai/gpt-5.1-instant\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.2-codex\",\n        \"openai/gpt-5.2-instant\",\n        \"openai/gpt-5.2-pro\",\n        \"openai/gpt-5.3-codex\",\n        \"openai/gpt-5.3-codex-spark\",\n        \"openai/gpt-5.3-instant\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.4-mini\",\n        \"openai/gpt-5.4-nano\",\n        \"openai/gpt-5.4-pro\",\n        \"openai/gpt-5.5\",\n        \"openai/gpt-5.5-pro\",\n        \"openai/gpt-image-1\",\n        \"openai/gpt-image-1-mini\",\n        \"openai/gpt-image-1.5\",\n        \"openai/gpt-image-2\",\n        \"openai/o1\",\n        \"openai/o1-pro\",\n        \"openai/o3\",\n        \"openai/o3-deep-research\",\n        \"openai/o3-mini\",\n        \"openai/o3-mini-high\",\n        \"openai/o3-pro\",\n        \"openai/o4-mini\",\n        \"openai/o4-mini-deep-research\",\n        \"openai/sora-2\",\n        \"openai/sora-2-pro\",\n        \"poetools/claude-code\",\n        \"runwayml/runway\",\n        \"runwayml/runway-gen-4-turbo\",\n        \"stabilityai/stablediffusionxl\",\n        \"topazlabs-co/topazlabs\",\n        \"trytako/tako\",\n        \"xai/grok-3\",\n        \"xai/grok-3-mini\",\n        \"xai/grok-4\",\n        \"xai/grok-4-fast-non-reasoning\",\n        \"xai/grok-4-fast-reasoning\",\n        \"xai/grok-4.1-fast-non-reasoning\",\n        \"xai/grok-4.1-fast-reasoning\",\n        \"xai/grok-4.20-multi-agent\",\n        \"xai/grok-code-fast-1\"\n      ],\n      \"docUrl\": \"https://creator.poe.com/docs/external-applications/openai-compatible-api\",\n      \"gateway\": \"models.dev\"\n    },\n    \"minimax\": {\n      \"url\": \"https://api.minimax.io/anthropic/v1\",\n      \"apiKeyEnvVar\": \"MINIMAX_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"MiniMax (minimax.io)\",\n      \"models\": [\n        \"MiniMax-M2\",\n        \"MiniMax-M2.1\",\n        \"MiniMax-M2.5\",\n        \"MiniMax-M2.5-highspeed\",\n        \"MiniMax-M2.7\",\n        \"MiniMax-M2.7-highspeed\"\n      ],\n      \"docUrl\": \"https://platform.minimax.io/docs/guides/quickstart\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/anthropic\"\n    },\n    \"groq\": {\n      \"url\": \"https://api.groq.com/openai/v1\",\n      \"apiKeyEnvVar\": \"GROQ_API_KEY\",\n      \"name\": \"Groq\",\n      \"models\": [\n        \"allam-2-7b\",\n        \"canopylabs/orpheus-arabic-saudi\",\n        \"canopylabs/orpheus-v1-english\",\n        \"groq/compound\",\n        \"groq/compound-mini\",\n        \"llama-3.1-8b-instant\",\n        \"llama-3.3-70b-versatile\",\n        \"meta-llama/llama-4-scout-17b-16e-instruct\",\n        \"meta-llama/llama-prompt-guard-2-22m\",\n        \"meta-llama/llama-prompt-guard-2-86m\",\n        \"moonshotai/kimi-k2-instruct-0905\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"openai/gpt-oss-safeguard-20b\",\n        \"qwen/qwen3-32b\",\n        \"whisper-large-v3\",\n        \"whisper-large-v3-turbo\"\n      ],\n      \"docUrl\": \"https://console.groq.com/docs/models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/groq\"\n    },\n    \"xiaomi-token-plan-sgp\": {\n      \"url\": \"https://token-plan-sgp.xiaomimimo.com/v1\",\n      \"apiKeyEnvVar\": \"XIAOMI_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Xiaomi Token Plan (Singapore)\",\n      \"models\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2-tts\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n      \"docUrl\": \"https://platform.xiaomimimo.com/#/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"siliconflow\": {\n      \"url\": \"https://api.siliconflow.com/v1\",\n      \"apiKeyEnvVar\": \"SILICONFLOW_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"SiliconFlow\",\n      \"models\": [\n        \"ByteDance-Seed/Seed-OSS-36B-Instruct\",\n        \"MiniMaxAI/MiniMax-M2.1\",\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"Qwen/QwQ-32B\",\n        \"Qwen/Qwen2.5-14B-Instruct\",\n        \"Qwen/Qwen2.5-32B-Instruct\",\n        \"Qwen/Qwen2.5-72B-Instruct\",\n        \"Qwen/Qwen2.5-72B-Instruct-128K\",\n        \"Qwen/Qwen2.5-7B-Instruct\",\n        \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n        \"Qwen/Qwen2.5-VL-32B-Instruct\",\n        \"Qwen/Qwen2.5-VL-72B-Instruct\",\n        \"Qwen/Qwen2.5-VL-7B-Instruct\",\n        \"Qwen/Qwen3-14B\",\n        \"Qwen/Qwen3-235B-A22B\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n        \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n        \"Qwen/Qwen3-32B\",\n        \"Qwen/Qwen3-8B\",\n        \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n        \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n        \"Qwen/Qwen3-Omni-30B-A3B-Captioner\",\n        \"Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n        \"Qwen/Qwen3-Omni-30B-A3B-Thinking\",\n        \"Qwen/Qwen3-VL-235B-A22B-Instruct\",\n        \"Qwen/Qwen3-VL-235B-A22B-Thinking\",\n        \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n        \"Qwen/Qwen3-VL-30B-A3B-Thinking\",\n        \"Qwen/Qwen3-VL-32B-Instruct\",\n        \"Qwen/Qwen3-VL-32B-Thinking\",\n        \"Qwen/Qwen3-VL-8B-Instruct\",\n        \"Qwen/Qwen3-VL-8B-Thinking\",\n        \"THUDM/GLM-4-32B-0414\",\n        \"THUDM/GLM-4-9B-0414\",\n        \"THUDM/GLM-Z1-32B-0414\",\n        \"THUDM/GLM-Z1-9B-0414\",\n        \"baidu/ERNIE-4.5-300B-A47B\",\n        \"deepseek-ai/DeepSeek-R1\",\n        \"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B\",\n        \"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B\",\n        \"deepseek-ai/DeepSeek-V3\",\n        \"deepseek-ai/DeepSeek-V3.1\",\n        \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n        \"deepseek-ai/DeepSeek-V3.2\",\n        \"deepseek-ai/DeepSeek-V3.2-Exp\",\n        \"deepseek-ai/deepseek-v4-flash\",\n        \"deepseek-ai/deepseek-v4-pro\",\n        \"deepseek-ai/deepseek-vl2\",\n        \"inclusionAI/Ling-flash-2.0\",\n        \"inclusionAI/Ling-mini-2.0\",\n        \"inclusionAI/Ring-flash-2.0\",\n        \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n        \"moonshotai/Kimi-K2-Instruct\",\n        \"moonshotai/Kimi-K2-Instruct-0905\",\n        \"moonshotai/Kimi-K2-Thinking\",\n        \"moonshotai/Kimi-K2.5\",\n        \"moonshotai/Kimi-K2.6\",\n        \"nex-agi/DeepSeek-V3.1-Nex-N1\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"stepfun-ai/Step-3.5-Flash\",\n        \"tencent/Hunyuan-A13B-Instruct\",\n        \"tencent/Hunyuan-MT-7B\",\n        \"zai-org/GLM-4.5\",\n        \"zai-org/GLM-4.5-Air\",\n        \"zai-org/GLM-4.5V\",\n        \"zai-org/GLM-4.6\",\n        \"zai-org/GLM-4.6V\",\n        \"zai-org/GLM-4.7\",\n        \"zai-org/GLM-5\",\n        \"zai-org/GLM-5.1\",\n        \"zai-org/GLM-5V-Turbo\"\n      ],\n      \"docUrl\": \"https://cloud.siliconflow.com/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"ollama-cloud\": {\n      \"url\": \"https://ollama.com/v1\",\n      \"apiKeyEnvVar\": \"OLLAMA_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Ollama Cloud\",\n      \"models\": [\n        \"cogito-2.1:671b\",\n        \"deepseek-v3.1:671b\",\n        \"deepseek-v3.2\",\n        \"deepseek-v4-flash\",\n        \"deepseek-v4-pro\",\n        \"devstral-2:123b\",\n        \"devstral-small-2:24b\",\n        \"gemini-3-flash-preview\",\n        \"gemma3:12b\",\n        \"gemma3:27b\",\n        \"gemma3:4b\",\n        \"gemma4:31b\",\n        \"glm-4.6\",\n        \"glm-4.7\",\n        \"glm-5\",\n        \"glm-5.1\",\n        \"gpt-oss:120b\",\n        \"gpt-oss:20b\",\n        \"kimi-k2-thinking\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\",\n        \"kimi-k2:1t\",\n        \"minimax-m2\",\n        \"minimax-m2.1\",\n        \"minimax-m2.5\",\n        \"minimax-m2.7\",\n        \"ministral-3:14b\",\n        \"ministral-3:3b\",\n        \"ministral-3:8b\",\n        \"mistral-large-3:675b\",\n        \"nemotron-3-nano:30b\",\n        \"nemotron-3-super\",\n        \"qwen3-coder-next\",\n        \"qwen3-coder:480b\",\n        \"qwen3-next:80b\",\n        \"qwen3-vl:235b\",\n        \"qwen3-vl:235b-instruct\",\n        \"qwen3.5:397b\",\n        \"rnj-1:8b\"\n      ],\n      \"docUrl\": \"https://docs.ollama.com/cloud\",\n      \"gateway\": \"models.dev\"\n    },\n    \"databricks\": {\n      \"url\": \"https://${DATABRICKS_HOST}/ai-gateway/mlflow/v1\",\n      \"apiKeyEnvVar\": \"DATABRICKS_TOKEN\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Databricks\",\n      \"models\": [\n        \"databricks-claude-haiku-4-5\",\n        \"databricks-claude-opus-4-1\",\n        \"databricks-claude-opus-4-5\",\n        \"databricks-claude-opus-4-6\",\n        \"databricks-claude-opus-4-7\",\n        \"databricks-claude-sonnet-4\",\n        \"databricks-claude-sonnet-4-5\",\n        \"databricks-claude-sonnet-4-6\",\n        \"databricks-gemini-2-5-flash\",\n        \"databricks-gemini-2-5-pro\",\n        \"databricks-gemini-3-1-flash-lite\",\n        \"databricks-gemini-3-1-pro\",\n        \"databricks-gemini-3-flash\",\n        \"databricks-gemini-3-pro\",\n        \"databricks-gpt-5\",\n        \"databricks-gpt-5-1\",\n        \"databricks-gpt-5-2\",\n        \"databricks-gpt-5-4\",\n        \"databricks-gpt-5-4-mini\",\n        \"databricks-gpt-5-4-nano\",\n        \"databricks-gpt-5-5\",\n        \"databricks-gpt-5-mini\",\n        \"databricks-gpt-5-nano\",\n        \"databricks-gpt-oss-120b\",\n        \"databricks-gpt-oss-20b\"\n      ],\n      \"docUrl\": \"https://docs.databricks.com/aws/en/machine-learning/foundation-models/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"berget\": {\n      \"url\": \"https://api.berget.ai/v1\",\n      \"apiKeyEnvVar\": \"BERGET_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Berget.AI\",\n      \"models\": [\n        \"google/gemma-4-31B-it\",\n        \"meta-llama/Llama-3.3-70B-Instruct\",\n        \"mistralai/Mistral-Medium-3.5-128B\",\n        \"mistralai/Mistral-Small-3.2-24B-Instruct-2506\",\n        \"moonshotai/Kimi-K2.6\",\n        \"openai/gpt-oss-120b\",\n        \"zai-org/GLM-4.7\"\n      ],\n      \"docUrl\": \"https://api.berget.ai\",\n      \"gateway\": \"models.dev\"\n    },\n    \"moonshotai-cn\": {\n      \"url\": \"https://api.moonshot.cn/anthropic/v1\",\n      \"apiKeyEnvVar\": \"MOONSHOT_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Moonshot AI (China)\",\n      \"models\": [\n        \"kimi-k2-0711-preview\",\n        \"kimi-k2-0905-preview\",\n        \"kimi-k2-thinking\",\n        \"kimi-k2-thinking-turbo\",\n        \"kimi-k2-turbo-preview\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\"\n      ],\n      \"docUrl\": \"https://platform.moonshot.cn/docs/api/chat\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/anthropic\"\n    },\n    \"alibaba-coding-plan-cn\": {\n      \"url\": \"https://coding.dashscope.aliyuncs.com/v1\",\n      \"apiKeyEnvVar\": \"ALIBABA_CODING_PLAN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Alibaba Coding Plan (China)\",\n      \"models\": [\n        \"MiniMax-M2.5\",\n        \"glm-4.7\",\n        \"glm-5\",\n        \"kimi-k2.5\",\n        \"qwen3-coder-next\",\n        \"qwen3-coder-plus\",\n        \"qwen3-max-2026-01-23\",\n        \"qwen3.5-plus\",\n        \"qwen3.6-plus\"\n      ],\n      \"docUrl\": \"https://help.aliyun.com/zh/model-studio/coding-plan\",\n      \"gateway\": \"models.dev\"\n    },\n    \"minimax-cn\": {\n      \"url\": \"https://api.minimaxi.com/anthropic/v1\",\n      \"apiKeyEnvVar\": \"MINIMAX_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"MiniMax (minimaxi.com)\",\n      \"models\": [\n        \"MiniMax-M2\",\n        \"MiniMax-M2.1\",\n        \"MiniMax-M2.5\",\n        \"MiniMax-M2.5-highspeed\",\n        \"MiniMax-M2.7\",\n        \"MiniMax-M2.7-highspeed\"\n      ],\n      \"docUrl\": \"https://platform.minimaxi.com/docs/guides/quickstart\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/anthropic\"\n    },\n    \"chutes\": {\n      \"url\": \"https://llm.chutes.ai/v1\",\n      \"apiKeyEnvVar\": \"CHUTES_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Chutes\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.5-TEE\",\n        \"NousResearch/DeepHermes-3-Mistral-24B-Preview\",\n        \"NousResearch/Hermes-4-14B\",\n        \"Qwen/Qwen2.5-72B-Instruct\",\n        \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n        \"Qwen/Qwen2.5-VL-32B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Qwen/Qwen3-30B-A3B\",\n        \"Qwen/Qwen3-32B-TEE\",\n        \"Qwen/Qwen3-Coder-Next-TEE\",\n        \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n        \"Qwen/Qwen3.5-397B-A17B-TEE\",\n        \"Qwen/Qwen3.6-27B-TEE\",\n        \"Qwen/Qwen3Guard-Gen-0.6B\",\n        \"XiaomiMiMo/MiMo-V2-Flash-TEE\",\n        \"deepseek-ai/DeepSeek-R1-0528-TEE\",\n        \"deepseek-ai/DeepSeek-R1-Distill-Llama-70B\",\n        \"deepseek-ai/DeepSeek-V3-0324-TEE\",\n        \"deepseek-ai/DeepSeek-V3.1-TEE\",\n        \"deepseek-ai/DeepSeek-V3.2-TEE\",\n        \"google/gemma-4-31B-turbo-TEE\",\n        \"moonshotai/Kimi-K2.5-TEE\",\n        \"moonshotai/Kimi-K2.6-TEE\",\n        \"openai/gpt-oss-120b-TEE\",\n        \"rednote-hilab/dots.ocr\",\n        \"tngtech/DeepSeek-TNG-R1T2-Chimera-TEE\",\n        \"unsloth/Llama-3.2-1B-Instruct\",\n        \"unsloth/Llama-3.2-3B-Instruct\",\n        \"unsloth/Mistral-Nemo-Instruct-2407\",\n        \"unsloth/gemma-3-12b-it\",\n        \"unsloth/gemma-3-27b-it\",\n        \"unsloth/gemma-3-4b-it\",\n        \"zai-org/GLM-4.6V\",\n        \"zai-org/GLM-4.7-FP8\",\n        \"zai-org/GLM-4.7-TEE\",\n        \"zai-org/GLM-5-TEE\",\n        \"zai-org/GLM-5-Turbo\",\n        \"zai-org/GLM-5.1-TEE\"\n      ],\n      \"docUrl\": \"https://llm.chutes.ai/v1/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"siliconflow-cn\": {\n      \"url\": \"https://api.siliconflow.cn/v1\",\n      \"apiKeyEnvVar\": \"SILICONFLOW_CN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"SiliconFlow (China)\",\n      \"models\": [\n        \"ByteDance-Seed/Seed-OSS-36B-Instruct\",\n        \"Kwaipilot/KAT-Dev\",\n        \"PaddlePaddle/PaddleOCR-VL\",\n        \"PaddlePaddle/PaddleOCR-VL-1.5\",\n        \"Pro/MiniMaxAI/MiniMax-M2.1\",\n        \"Pro/MiniMaxAI/MiniMax-M2.5\",\n        \"Pro/deepseek-ai/DeepSeek-R1\",\n        \"Pro/deepseek-ai/DeepSeek-V3\",\n        \"Pro/deepseek-ai/DeepSeek-V3.1-Terminus\",\n        \"Pro/deepseek-ai/DeepSeek-V3.2\",\n        \"Pro/moonshotai/Kimi-K2-Instruct-0905\",\n        \"Pro/moonshotai/Kimi-K2-Thinking\",\n        \"Pro/moonshotai/Kimi-K2.5\",\n        \"Pro/moonshotai/Kimi-K2.6\",\n        \"Pro/zai-org/GLM-4.7\",\n        \"Pro/zai-org/GLM-5\",\n        \"Pro/zai-org/GLM-5.1\",\n        \"Qwen/QwQ-32B\",\n        \"Qwen/Qwen2.5-14B-Instruct\",\n        \"Qwen/Qwen2.5-32B-Instruct\",\n        \"Qwen/Qwen2.5-72B-Instruct\",\n        \"Qwen/Qwen2.5-72B-Instruct-128K\",\n        \"Qwen/Qwen2.5-7B-Instruct\",\n        \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n        \"Qwen/Qwen2.5-VL-32B-Instruct\",\n        \"Qwen/Qwen2.5-VL-72B-Instruct\",\n        \"Qwen/Qwen3-14B\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n        \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n        \"Qwen/Qwen3-32B\",\n        \"Qwen/Qwen3-8B\",\n        \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n        \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n        \"Qwen/Qwen3-Omni-30B-A3B-Captioner\",\n        \"Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n        \"Qwen/Qwen3-Omni-30B-A3B-Thinking\",\n        \"Qwen/Qwen3-VL-235B-A22B-Instruct\",\n        \"Qwen/Qwen3-VL-235B-A22B-Thinking\",\n        \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n        \"Qwen/Qwen3-VL-30B-A3B-Thinking\",\n        \"Qwen/Qwen3-VL-32B-Instruct\",\n        \"Qwen/Qwen3-VL-32B-Thinking\",\n        \"Qwen/Qwen3-VL-8B-Instruct\",\n        \"Qwen/Qwen3-VL-8B-Thinking\",\n        \"Qwen/Qwen3.5-122B-A10B\",\n        \"Qwen/Qwen3.5-27B\",\n        \"Qwen/Qwen3.5-35B-A3B\",\n        \"Qwen/Qwen3.5-397B-A17B\",\n        \"Qwen/Qwen3.5-4B\",\n        \"Qwen/Qwen3.5-9B\",\n        \"Qwen/Qwen3.6-35B-A3B\",\n        \"THUDM/GLM-4-32B-0414\",\n        \"THUDM/GLM-4-9B-0414\",\n        \"THUDM/GLM-Z1-32B-0414\",\n        \"THUDM/GLM-Z1-9B-0414\",\n        \"ascend-tribe/pangu-pro-moe\",\n        \"baidu/ERNIE-4.5-300B-A47B\",\n        \"deepseek-ai/DeepSeek-OCR\",\n        \"deepseek-ai/DeepSeek-R1\",\n        \"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B\",\n        \"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B\",\n        \"deepseek-ai/DeepSeek-V3\",\n        \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n        \"deepseek-ai/DeepSeek-V3.2\",\n        \"deepseek-ai/deepseek-vl2\",\n        \"inclusionAI/Ling-flash-2.0\",\n        \"inclusionAI/Ling-mini-2.0\",\n        \"inclusionAI/Ring-flash-2.0\",\n        \"moonshotai/Kimi-K2-Instruct-0905\",\n        \"moonshotai/Kimi-K2-Thinking\",\n        \"stepfun-ai/Step-3.5-Flash\",\n        \"tencent/Hunyuan-A13B-Instruct\",\n        \"tencent/Hunyuan-MT-7B\",\n        \"zai-org/GLM-4.5-Air\",\n        \"zai-org/GLM-4.5V\",\n        \"zai-org/GLM-4.6\",\n        \"zai-org/GLM-4.6V\"\n      ],\n      \"docUrl\": \"https://cloud.siliconflow.com/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"nvidia\": {\n      \"url\": \"https://integrate.api.nvidia.com/v1\",\n      \"apiKeyEnvVar\": \"NVIDIA_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Nvidia\",\n      \"models\": [\n        \"abacusai/dracarys-llama-3_1-70b-instruct\",\n        \"baai/bge-m3\",\n        \"black-forest-labs/flux.1-dev\",\n        \"black-forest-labs/flux_1-kontext-dev\",\n        \"black-forest-labs/flux_1-schnell\",\n        \"black-forest-labs/flux_2-klein-4b\",\n        \"bytedance/seed-oss-36b-instruct\",\n        \"deepseek-ai/deepseek-v3.1-terminus\",\n        \"deepseek-ai/deepseek-v3.2\",\n        \"deepseek-ai/deepseek-v4-flash\",\n        \"deepseek-ai/deepseek-v4-pro\",\n        \"google/gemma-2-2b-it\",\n        \"google/gemma-3-27b-it\",\n        \"google/gemma-3n-e2b-it\",\n        \"google/gemma-3n-e4b-it\",\n        \"google/gemma-4-31b-it\",\n        \"google/google-paligemma\",\n        \"meta/esm2-650m\",\n        \"meta/esmfold\",\n        \"meta/llama-3.1-70b-instruct\",\n        \"meta/llama-3.1-8b-instruct\",\n        \"meta/llama-3.2-11b-vision-instruct\",\n        \"meta/llama-3.2-1b-instruct\",\n        \"meta/llama-3.2-3b-instruct\",\n        \"meta/llama-3.2-90b-vision-instruct\",\n        \"meta/llama-3.3-70b-instruct\",\n        \"meta/llama-4-maverick-17b-128e-instruct\",\n        \"meta/llama-guard-4-12b\",\n        \"microsoft/phi-4-mini-instruct\",\n        \"microsoft/phi-4-multimodal-instruct\",\n        \"minimaxai/minimax-m2.5\",\n        \"minimaxai/minimax-m2.7\",\n        \"mistralai/devstral-2-123b-instruct-2512\",\n        \"mistralai/magistral-small-2506\",\n        \"mistralai/mistral-7b-instruct-v03\",\n        \"mistralai/mistral-large-3-675b-instruct-2512\",\n        \"mistralai/mistral-medium-3-instruct\",\n        \"mistralai/mistral-nemotron\",\n        \"mistralai/mistral-small-4-119b-2603\",\n        \"mistralai/mixtral-8x22b-instruct\",\n        \"mistralai/mixtral-8x7b-instruct\",\n        \"moonshotai/kimi-k2-instruct\",\n        \"moonshotai/kimi-k2-instruct-0905\",\n        \"moonshotai/kimi-k2-thinking\",\n        \"moonshotai/kimi-k2.6\",\n        \"nvidia/active-speaker-detection\",\n        \"nvidia/bevformer\",\n        \"nvidia/cosmos-predict1-5b\",\n        \"nvidia/cosmos-transfer1-7b\",\n        \"nvidia/cosmos-transfer2_5-2b\",\n        \"nvidia/gliner-pii\",\n        \"nvidia/llama-3_1-nemotron-safety-guard-8b-v3\",\n        \"nvidia/llama-3_2-nemoretriever-300m-embed-v1\",\n        \"nvidia/llama-3_3-nemotron-super-49b-v1\",\n        \"nvidia/llama-3_3-nemotron-super-49b-v1_5\",\n        \"nvidia/llama-nemotron-embed-vl-1b-v2\",\n        \"nvidia/llama-nemotron-rerank-vl-1b-v2\",\n        \"nvidia/magpie-tts-zeroshot\",\n        \"nvidia/nemotron-3-content-safety\",\n        \"nvidia/nemotron-3-nano-30b-a3b\",\n        \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\",\n        \"nvidia/nemotron-3-super-120b-a12b\",\n        \"nvidia/nemotron-content-safety-reasoning-4b\",\n        \"nvidia/nemotron-mini-4b-instruct\",\n        \"nvidia/nemotron-voicechat\",\n        \"nvidia/nv-embed-v1\",\n        \"nvidia/nv-embedcode-7b-v1\",\n        \"nvidia/nvidia-nemotron-nano-9b-v2\",\n        \"nvidia/rerank-qa-mistral-4b\",\n        \"nvidia/riva-translate-4b-instruct-v1_1\",\n        \"nvidia/sparsedrive\",\n        \"nvidia/streampetr\",\n        \"nvidia/studiovoice\",\n        \"nvidia/synthetic-video-detector\",\n        \"nvidia/usdcode\",\n        \"nvidia/usdvalidate\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"openai/whisper-large-v3\",\n        \"qwen/qwen-image\",\n        \"qwen/qwen-image-edit\",\n        \"qwen/qwen2.5-coder-32b-instruct\",\n        \"qwen/qwen3-coder-480b-a35b-instruct\",\n        \"qwen/qwen3-next-80b-a3b-instruct\",\n        \"qwen/qwen3-next-80b-a3b-thinking\",\n        \"qwen/qwen3.5-122b-a10b\",\n        \"qwen/qwen3.5-397b-a17b\",\n        \"sarvamai/sarvam-m\",\n        \"stepfun-ai/step-3.5-flash\",\n        \"upstage/solar-10_7b-instruct\",\n        \"z-ai/glm-5.1\",\n        \"z-ai/glm4.7\"\n      ],\n      \"docUrl\": \"https://docs.api.nvidia.com/nim/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"anthropic\": {\n      \"apiKeyEnvVar\": \"ANTHROPIC_API_KEY\",\n      \"name\": \"Anthropic\",\n      \"models\": [\n        \"claude-3-5-haiku-20241022\",\n        \"claude-3-5-haiku-latest\",\n        \"claude-3-5-sonnet-20240620\",\n        \"claude-3-5-sonnet-20241022\",\n        \"claude-3-7-sonnet-20250219\",\n        \"claude-3-haiku-20240307\",\n        \"claude-3-opus-20240229\",\n        \"claude-3-sonnet-20240229\",\n        \"claude-haiku-4-5\",\n        \"claude-haiku-4-5-20251001\",\n        \"claude-opus-4-0\",\n        \"claude-opus-4-1\",\n        \"claude-opus-4-1-20250805\",\n        \"claude-opus-4-20250514\",\n        \"claude-opus-4-5\",\n        \"claude-opus-4-5-20251101\",\n        \"claude-opus-4-6\",\n        \"claude-opus-4-7\",\n        \"claude-sonnet-4-0\",\n        \"claude-sonnet-4-20250514\",\n        \"claude-sonnet-4-5\",\n        \"claude-sonnet-4-5-20250929\",\n        \"claude-sonnet-4-6\"\n      ],\n      \"docUrl\": \"https://docs.anthropic.com/en/docs/about-claude/models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/anthropic\"\n    },\n    \"zhipuai-coding-plan\": {\n      \"url\": \"https://open.bigmodel.cn/api/coding/paas/v4\",\n      \"apiKeyEnvVar\": \"ZHIPU_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Zhipu AI Coding Plan\",\n      \"models\": [\"glm-4.5-air\", \"glm-4.7\", \"glm-5-turbo\", \"glm-5.1\", \"glm-5v-turbo\"],\n      \"docUrl\": \"https://docs.bigmodel.cn/cn/coding-plan/overview\",\n      \"gateway\": \"models.dev\"\n    },\n    \"atomic-chat\": {\n      \"url\": \"http://127.0.0.1:1337/v1\",\n      \"apiKeyEnvVar\": \"ATOMIC_CHAT_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Atomic Chat\",\n      \"models\": [\n        \"Meta-Llama-3_1-8B-Instruct-GGUF\",\n        \"Qwen3_5-9B-MLX-4bit\",\n        \"Qwen3_5-9B-Q4_K_M\",\n        \"gemma-4-E4B-it-IQ4_XS\",\n        \"gemma-4-E4B-it-MLX-4bit\"\n      ],\n      \"docUrl\": \"https://atomic.chat\",\n      \"gateway\": \"models.dev\"\n    },\n    \"github-models\": {\n      \"url\": \"https://models.github.ai/inference\",\n      \"apiKeyEnvVar\": \"GITHUB_TOKEN\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"GitHub Models\",\n      \"models\": [\n        \"ai21-labs/ai21-jamba-1.5-large\",\n        \"ai21-labs/ai21-jamba-1.5-mini\",\n        \"cohere/cohere-command-a\",\n        \"cohere/cohere-command-r\",\n        \"cohere/cohere-command-r-08-2024\",\n        \"cohere/cohere-command-r-plus\",\n        \"cohere/cohere-command-r-plus-08-2024\",\n        \"core42/jais-30b-chat\",\n        \"deepseek/deepseek-r1\",\n        \"deepseek/deepseek-r1-0528\",\n        \"deepseek/deepseek-v3-0324\",\n        \"meta/llama-3.2-11b-vision-instruct\",\n        \"meta/llama-3.2-90b-vision-instruct\",\n        \"meta/llama-3.3-70b-instruct\",\n        \"meta/llama-4-maverick-17b-128e-instruct-fp8\",\n        \"meta/llama-4-scout-17b-16e-instruct\",\n        \"meta/meta-llama-3-70b-instruct\",\n        \"meta/meta-llama-3-8b-instruct\",\n        \"meta/meta-llama-3.1-405b-instruct\",\n        \"meta/meta-llama-3.1-70b-instruct\",\n        \"meta/meta-llama-3.1-8b-instruct\",\n        \"microsoft/mai-ds-r1\",\n        \"microsoft/phi-3-medium-128k-instruct\",\n        \"microsoft/phi-3-medium-4k-instruct\",\n        \"microsoft/phi-3-mini-128k-instruct\",\n        \"microsoft/phi-3-mini-4k-instruct\",\n        \"microsoft/phi-3-small-128k-instruct\",\n        \"microsoft/phi-3-small-8k-instruct\",\n        \"microsoft/phi-3.5-mini-instruct\",\n        \"microsoft/phi-3.5-moe-instruct\",\n        \"microsoft/phi-3.5-vision-instruct\",\n        \"microsoft/phi-4\",\n        \"microsoft/phi-4-mini-instruct\",\n        \"microsoft/phi-4-mini-reasoning\",\n        \"microsoft/phi-4-multimodal-instruct\",\n        \"microsoft/phi-4-reasoning\",\n        \"mistral-ai/codestral-2501\",\n        \"mistral-ai/ministral-3b\",\n        \"mistral-ai/mistral-large-2411\",\n        \"mistral-ai/mistral-medium-2505\",\n        \"mistral-ai/mistral-nemo\",\n        \"mistral-ai/mistral-small-2503\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4.1-nano\",\n        \"openai/gpt-4o\",\n        \"openai/gpt-4o-mini\",\n        \"openai/o1\",\n        \"openai/o1-mini\",\n        \"openai/o1-preview\",\n        \"openai/o3\",\n        \"openai/o3-mini\",\n        \"openai/o4-mini\",\n        \"xai/grok-3\",\n        \"xai/grok-3-mini\"\n      ],\n      \"docUrl\": \"https://docs.github.com/en/github-models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"qiniu-ai\": {\n      \"url\": \"https://api.qnaigc.com/v1\",\n      \"apiKeyEnvVar\": \"QINIU_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Qiniu\",\n      \"models\": [\n        \"MiniMax-M1\",\n        \"claude-3.5-haiku\",\n        \"claude-3.5-sonnet\",\n        \"claude-3.7-sonnet\",\n        \"claude-4.0-opus\",\n        \"claude-4.0-sonnet\",\n        \"claude-4.1-opus\",\n        \"claude-4.5-haiku\",\n        \"claude-4.5-opus\",\n        \"claude-4.5-sonnet\",\n        \"deepseek-r1\",\n        \"deepseek-r1-0528\",\n        \"deepseek-v3\",\n        \"deepseek-v3-0324\",\n        \"deepseek-v3.1\",\n        \"deepseek/deepseek-math-v2\",\n        \"deepseek/deepseek-v3.1-terminus\",\n        \"deepseek/deepseek-v3.1-terminus-thinking\",\n        \"deepseek/deepseek-v3.2-251201\",\n        \"deepseek/deepseek-v3.2-exp\",\n        \"deepseek/deepseek-v3.2-exp-thinking\",\n        \"doubao-1.5-pro-32k\",\n        \"doubao-1.5-thinking-pro\",\n        \"doubao-1.5-vision-pro\",\n        \"doubao-seed-1.6\",\n        \"doubao-seed-1.6-flash\",\n        \"doubao-seed-1.6-thinking\",\n        \"doubao-seed-2.0-code\",\n        \"doubao-seed-2.0-lite\",\n        \"doubao-seed-2.0-mini\",\n        \"doubao-seed-2.0-pro\",\n        \"gemini-2.0-flash\",\n        \"gemini-2.0-flash-lite\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-flash-image\",\n        \"gemini-2.5-flash-lite\",\n        \"gemini-2.5-pro\",\n        \"gemini-3.0-flash-preview\",\n        \"gemini-3.0-pro-image-preview\",\n        \"gemini-3.0-pro-preview\",\n        \"glm-4.5\",\n        \"glm-4.5-air\",\n        \"gpt-oss-120b\",\n        \"gpt-oss-20b\",\n        \"kimi-k2\",\n        \"kling-v2-6\",\n        \"meituan/longcat-flash-chat\",\n        \"meituan/longcat-flash-lite\",\n        \"mimo-v2-flash\",\n        \"minimax/minimax-m2\",\n        \"minimax/minimax-m2.1\",\n        \"minimax/minimax-m2.5\",\n        \"minimax/minimax-m2.5-highspeed\",\n        \"moonshotai/kimi-k2-0905\",\n        \"moonshotai/kimi-k2-thinking\",\n        \"moonshotai/kimi-k2.5\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5.2\",\n        \"qwen-max-2025-01-25\",\n        \"qwen-turbo\",\n        \"qwen-vl-max-2025-01-25\",\n        \"qwen2.5-vl-72b-instruct\",\n        \"qwen2.5-vl-7b-instruct\",\n        \"qwen3-235b-a22b\",\n        \"qwen3-235b-a22b-instruct-2507\",\n        \"qwen3-235b-a22b-thinking-2507\",\n        \"qwen3-30b-a3b\",\n        \"qwen3-30b-a3b-instruct-2507\",\n        \"qwen3-30b-a3b-thinking-2507\",\n        \"qwen3-32b\",\n        \"qwen3-coder-480b-a35b-instruct\",\n        \"qwen3-max\",\n        \"qwen3-max-preview\",\n        \"qwen3-next-80b-a3b-instruct\",\n        \"qwen3-next-80b-a3b-thinking\",\n        \"qwen3-vl-30b-a3b-thinking\",\n        \"qwen3.5-397b-a17b\",\n        \"stepfun-ai/gelab-zero-4b-preview\",\n        \"stepfun/step-3.5-flash\",\n        \"x-ai/grok-4-fast\",\n        \"x-ai/grok-4-fast-non-reasoning\",\n        \"x-ai/grok-4-fast-reasoning\",\n        \"x-ai/grok-4.1-fast\",\n        \"x-ai/grok-4.1-fast-non-reasoning\",\n        \"x-ai/grok-4.1-fast-reasoning\",\n        \"x-ai/grok-code-fast-1\",\n        \"xiaomi/mimo-v2-flash\",\n        \"z-ai/autoglm-phone-9b\",\n        \"z-ai/glm-4.6\",\n        \"z-ai/glm-4.7\",\n        \"z-ai/glm-5\"\n      ],\n      \"docUrl\": \"https://developer.qiniu.com/aitokenapi\",\n      \"gateway\": \"models.dev\"\n    },\n    \"google\": {\n      \"apiKeyEnvVar\": [\"GOOGLE_API_KEY\", \"GOOGLE_GENERATIVE_AI_API_KEY\"],\n      \"name\": \"Google\",\n      \"models\": [\n        \"gemini-2.0-flash\",\n        \"gemini-2.0-flash-lite\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-flash-image\",\n        \"gemini-2.5-flash-lite\",\n        \"gemini-2.5-flash-preview-tts\",\n        \"gemini-2.5-pro\",\n        \"gemini-2.5-pro-preview-tts\",\n        \"gemini-3-flash-preview\",\n        \"gemini-3-pro-preview\",\n        \"gemini-3.1-flash-image-preview\",\n        \"gemini-3.1-flash-lite\",\n        \"gemini-3.1-flash-lite-preview\",\n        \"gemini-3.1-pro-preview\",\n        \"gemini-3.1-pro-preview-customtools\",\n        \"gemini-3.5-flash\",\n        \"gemini-embedding-001\",\n        \"gemini-flash-latest\",\n        \"gemini-flash-lite-latest\",\n        \"gemma-4-26b-a4b-it\",\n        \"gemma-4-31b-it\"\n      ],\n      \"docUrl\": \"https://ai.google.dev/gemini-api/docs/models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/google\"\n    },\n    \"scaleway\": {\n      \"url\": \"https://api.scaleway.ai/v1\",\n      \"apiKeyEnvVar\": \"SCALEWAY_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Scaleway\",\n      \"models\": [\n        \"bge-multilingual-gemma2\",\n        \"deepseek-r1-distill-llama-70b\",\n        \"devstral-2-123b-instruct-2512\",\n        \"gemma-3-27b-it\",\n        \"gpt-oss-120b\",\n        \"llama-3.1-8b-instruct\",\n        \"llama-3.3-70b-instruct\",\n        \"mistral-medium-3.5-128b\",\n        \"mistral-nemo-instruct-2407\",\n        \"mistral-small-3.2-24b-instruct-2506\",\n        \"pixtral-12b-2409\",\n        \"qwen3-235b-a22b-instruct-2507\",\n        \"qwen3-coder-30b-a3b-instruct\",\n        \"qwen3-embedding-8b\",\n        \"qwen3.5-397b-a17b\",\n        \"voxtral-small-24b-2507\",\n        \"whisper-large-v3\"\n      ],\n      \"docUrl\": \"https://www.scaleway.com/en/docs/generative-apis/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"opencode\": {\n      \"url\": \"https://opencode.ai/zen/v1\",\n      \"apiKeyEnvVar\": \"OPENCODE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"OpenCode Zen\",\n      \"models\": [\n        \"big-pickle\",\n        \"claude-haiku-4-5\",\n        \"claude-opus-4-1\",\n        \"claude-opus-4-5\",\n        \"claude-opus-4-6\",\n        \"claude-opus-4-7\",\n        \"claude-sonnet-4\",\n        \"claude-sonnet-4-5\",\n        \"claude-sonnet-4-6\",\n        \"deepseek-v4-flash-free\",\n        \"gemini-3-flash\",\n        \"gemini-3.1-pro\",\n        \"gemini-3.5-flash\",\n        \"glm-5\",\n        \"glm-5.1\",\n        \"gpt-5\",\n        \"gpt-5-codex\",\n        \"gpt-5-nano\",\n        \"gpt-5.1\",\n        \"gpt-5.1-codex\",\n        \"gpt-5.1-codex-max\",\n        \"gpt-5.1-codex-mini\",\n        \"gpt-5.2\",\n        \"gpt-5.2-codex\",\n        \"gpt-5.3-codex\",\n        \"gpt-5.3-codex-spark\",\n        \"gpt-5.4\",\n        \"gpt-5.4-mini\",\n        \"gpt-5.4-nano\",\n        \"gpt-5.4-pro\",\n        \"gpt-5.5\",\n        \"gpt-5.5-pro\",\n        \"grok-build-0.1\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\",\n        \"minimax-m2.5\",\n        \"minimax-m2.7\",\n        \"nemotron-3-super-free\",\n        \"qwen3.5-plus\",\n        \"qwen3.6-plus\"\n      ],\n      \"docUrl\": \"https://opencode.ai/docs/zen\",\n      \"gateway\": \"models.dev\"\n    },\n    \"mixlayer\": {\n      \"url\": \"https://models.mixlayer.ai/v1\",\n      \"apiKeyEnvVar\": \"MIXLAYER_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Mixlayer\",\n      \"models\": [\n        \"qwen/qwen3.5-122b-a10b\",\n        \"qwen/qwen3.5-27b\",\n        \"qwen/qwen3.5-35b-a3b\",\n        \"qwen/qwen3.5-397b-a17b\",\n        \"qwen/qwen3.5-9b\"\n      ],\n      \"docUrl\": \"https://docs.mixlayer.com\",\n      \"gateway\": \"models.dev\"\n    },\n    \"zenmux\": {\n      \"url\": \"https://zenmux.ai/api/v1\",\n      \"apiKeyEnvVar\": \"ZENMUX_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"ZenMux\",\n      \"models\": [\n        \"anthropic/claude-3.5-haiku\",\n        \"anthropic/claude-3.7-sonnet\",\n        \"anthropic/claude-haiku-4.5\",\n        \"anthropic/claude-opus-4\",\n        \"anthropic/claude-opus-4.1\",\n        \"anthropic/claude-opus-4.5\",\n        \"anthropic/claude-opus-4.6\",\n        \"anthropic/claude-opus-4.7\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-sonnet-4.5\",\n        \"anthropic/claude-sonnet-4.6\",\n        \"baidu/ernie-5.0-thinking-preview\",\n        \"deepseek/deepseek-chat\",\n        \"deepseek/deepseek-v3.2\",\n        \"deepseek/deepseek-v3.2-exp\",\n        \"deepseek/deepseek-v4-flash\",\n        \"deepseek/deepseek-v4-pro\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-flash-lite\",\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-3-flash-preview\",\n        \"google/gemini-3.1-flash-lite-preview\",\n        \"google/gemini-3.1-pro-preview\",\n        \"inclusionai/ling-1t\",\n        \"inclusionai/ring-1t\",\n        \"kuaishou/kat-coder-pro-v2\",\n        \"minimax/minimax-m2\",\n        \"minimax/minimax-m2.1\",\n        \"minimax/minimax-m2.5\",\n        \"minimax/minimax-m2.5-lightning\",\n        \"minimax/minimax-m2.7\",\n        \"minimax/minimax-m2.7-highspeed\",\n        \"moonshotai/kimi-k2-0905\",\n        \"moonshotai/kimi-k2-thinking\",\n        \"moonshotai/kimi-k2-thinking-turbo\",\n        \"moonshotai/kimi-k2.5\",\n        \"moonshotai/kimi-k2.6\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-codex\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.1-chat\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.2-codex\",\n        \"openai/gpt-5.2-pro\",\n        \"openai/gpt-5.3-chat\",\n        \"openai/gpt-5.3-codex\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.4-mini\",\n        \"openai/gpt-5.4-nano\",\n        \"openai/gpt-5.4-pro\",\n        \"openai/gpt-5.5\",\n        \"openai/gpt-5.5-pro\",\n        \"qwen/qwen3-coder-plus\",\n        \"qwen/qwen3-max\",\n        \"qwen/qwen3.5-flash\",\n        \"qwen/qwen3.5-plus\",\n        \"qwen/qwen3.6-plus\",\n        \"sapiens-ai/agnes-1.5-lite\",\n        \"sapiens-ai/agnes-1.5-pro\",\n        \"stepfun/step-3\",\n        \"stepfun/step-3.5-flash\",\n        \"stepfun/step-3.5-flash-free\",\n        \"tencent/hy3-preview\",\n        \"volcengine/doubao-seed-1.8\",\n        \"volcengine/doubao-seed-2.0-code\",\n        \"volcengine/doubao-seed-2.0-lite\",\n        \"volcengine/doubao-seed-2.0-mini\",\n        \"volcengine/doubao-seed-2.0-pro\",\n        \"volcengine/doubao-seed-code\",\n        \"x-ai/grok-4\",\n        \"x-ai/grok-4-fast\",\n        \"x-ai/grok-4.1-fast\",\n        \"x-ai/grok-4.1-fast-non-reasoning\",\n        \"x-ai/grok-4.2-fast\",\n        \"x-ai/grok-4.2-fast-non-reasoning\",\n        \"x-ai/grok-code-fast-1\",\n        \"xiaomi/mimo-v2-flash\",\n        \"xiaomi/mimo-v2-omni\",\n        \"xiaomi/mimo-v2-pro\",\n        \"xiaomi/mimo-v2.5\",\n        \"xiaomi/mimo-v2.5-pro\",\n        \"z-ai/glm-4.5\",\n        \"z-ai/glm-4.5-air\",\n        \"z-ai/glm-4.6\",\n        \"z-ai/glm-4.6v\",\n        \"z-ai/glm-4.6v-flash\",\n        \"z-ai/glm-4.6v-flash-free\",\n        \"z-ai/glm-4.7\",\n        \"z-ai/glm-4.7-flash-free\",\n        \"z-ai/glm-4.7-flashx\",\n        \"z-ai/glm-5\",\n        \"z-ai/glm-5-turbo\",\n        \"z-ai/glm-5.1\",\n        \"z-ai/glm-5v-turbo\"\n      ],\n      \"docUrl\": \"https://docs.zenmux.ai\",\n      \"gateway\": \"models.dev\"\n    },\n    \"perplexity-agent\": {\n      \"url\": \"https://api.perplexity.ai/v1\",\n      \"apiKeyEnvVar\": \"PERPLEXITY_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Perplexity Agent\",\n      \"models\": [\n        \"anthropic/claude-haiku-4-5\",\n        \"anthropic/claude-opus-4-5\",\n        \"anthropic/claude-opus-4-6\",\n        \"anthropic/claude-opus-4-7\",\n        \"anthropic/claude-sonnet-4-5\",\n        \"anthropic/claude-sonnet-4-6\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-3-flash-preview\",\n        \"google/gemini-3.1-pro-preview\",\n        \"nvidia/nemotron-3-super-120b-a12b\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.5\",\n        \"perplexity/sonar\",\n        \"xai/grok-4-1-fast-non-reasoning\"\n      ],\n      \"docUrl\": \"https://docs.perplexity.ai/docs/agent-api/models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/openai\"\n    },\n    \"alibaba-coding-plan\": {\n      \"url\": \"https://coding-intl.dashscope.aliyuncs.com/v1\",\n      \"apiKeyEnvVar\": \"ALIBABA_CODING_PLAN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Alibaba Coding Plan\",\n      \"models\": [\n        \"MiniMax-M2.5\",\n        \"glm-4.7\",\n        \"glm-5\",\n        \"kimi-k2.5\",\n        \"qwen3-coder-next\",\n        \"qwen3-coder-plus\",\n        \"qwen3-max-2026-01-23\",\n        \"qwen3.5-plus\",\n        \"qwen3.6-plus\"\n      ],\n      \"docUrl\": \"https://www.alibabacloud.com/help/en/model-studio/coding-plan\",\n      \"gateway\": \"models.dev\"\n    },\n    \"meganova\": {\n      \"url\": \"https://api.meganova.ai/v1\",\n      \"apiKeyEnvVar\": \"MEGANOVA_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Meganova\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.1\",\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"Qwen/Qwen2.5-VL-32B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"Qwen/Qwen3.5-Plus\",\n        \"XiaomiMiMo/MiMo-V2-Flash\",\n        \"deepseek-ai/DeepSeek-R1-0528\",\n        \"deepseek-ai/DeepSeek-V3-0324\",\n        \"deepseek-ai/DeepSeek-V3.1\",\n        \"deepseek-ai/DeepSeek-V3.2\",\n        \"deepseek-ai/DeepSeek-V3.2-Exp\",\n        \"meta-llama/Llama-3.3-70B-Instruct\",\n        \"mistralai/Mistral-Nemo-Instruct-2407\",\n        \"mistralai/Mistral-Small-3.2-24B-Instruct-2506\",\n        \"moonshotai/Kimi-K2-Thinking\",\n        \"moonshotai/Kimi-K2.5\",\n        \"zai-org/GLM-4.6\",\n        \"zai-org/GLM-4.7\",\n        \"zai-org/GLM-5\"\n      ],\n      \"docUrl\": \"https://docs.meganova.ai\",\n      \"gateway\": \"models.dev\"\n    },\n    \"synthetic\": {\n      \"url\": \"https://api.synthetic.new/openai/v1\",\n      \"apiKeyEnvVar\": \"SYNTHETIC_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Synthetic\",\n      \"models\": [\n        \"hf:MiniMaxAI/MiniMax-M2\",\n        \"hf:MiniMaxAI/MiniMax-M2.1\",\n        \"hf:MiniMaxAI/MiniMax-M2.5\",\n        \"hf:Qwen/Qwen2.5-Coder-32B-Instruct\",\n        \"hf:Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"hf:Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"hf:Qwen/Qwen3.5-397B-A17B\",\n        \"hf:deepseek-ai/DeepSeek-R1\",\n        \"hf:deepseek-ai/DeepSeek-R1-0528\",\n        \"hf:deepseek-ai/DeepSeek-V3\",\n        \"hf:deepseek-ai/DeepSeek-V3-0324\",\n        \"hf:deepseek-ai/DeepSeek-V3.1\",\n        \"hf:deepseek-ai/DeepSeek-V3.1-Terminus\",\n        \"hf:deepseek-ai/DeepSeek-V3.2\",\n        \"hf:meta-llama/Llama-3.1-405B-Instruct\",\n        \"hf:meta-llama/Llama-3.1-70B-Instruct\",\n        \"hf:meta-llama/Llama-3.1-8B-Instruct\",\n        \"hf:meta-llama/Llama-3.3-70B-Instruct\",\n        \"hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n        \"hf:meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n        \"hf:moonshotai/Kimi-K2-Instruct-0905\",\n        \"hf:moonshotai/Kimi-K2-Thinking\",\n        \"hf:moonshotai/Kimi-K2.5\",\n        \"hf:moonshotai/Kimi-K2.6\",\n        \"hf:nvidia/Kimi-K2.5-NVFP4\",\n        \"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4\",\n        \"hf:openai/gpt-oss-120b\",\n        \"hf:zai-org/GLM-4.6\",\n        \"hf:zai-org/GLM-4.7\",\n        \"hf:zai-org/GLM-4.7-Flash\",\n        \"hf:zai-org/GLM-5\",\n        \"hf:zai-org/GLM-5.1\"\n      ],\n      \"docUrl\": \"https://synthetic.new/pricing\",\n      \"gateway\": \"models.dev\"\n    },\n    \"inceptron\": {\n      \"url\": \"https://api.inceptron.io/v1\",\n      \"apiKeyEnvVar\": \"INCEPTRON_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Inceptron\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"moonshotai/Kimi-K2.6\",\n        \"nvidia/llama-3.3-70b-instruct-fp8\",\n        \"zai-org/GLM-5.1-FP8\"\n      ],\n      \"docUrl\": \"https://docs.inceptron.io\",\n      \"gateway\": \"models.dev\"\n    },\n    \"minimax-coding-plan\": {\n      \"url\": \"https://api.minimax.io/anthropic/v1\",\n      \"apiKeyEnvVar\": \"MINIMAX_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"MiniMax Token Plan (minimax.io)\",\n      \"models\": [\n        \"MiniMax-M2\",\n        \"MiniMax-M2.1\",\n        \"MiniMax-M2.5\",\n        \"MiniMax-M2.5-highspeed\",\n        \"MiniMax-M2.7\",\n        \"MiniMax-M2.7-highspeed\"\n      ],\n      \"docUrl\": \"https://platform.minimax.io/docs/token-plan/intro\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/anthropic\"\n    },\n    \"upstage\": {\n      \"url\": \"https://api.upstage.ai/v1/solar\",\n      \"apiKeyEnvVar\": \"UPSTAGE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Upstage\",\n      \"models\": [\"solar-mini\", \"solar-pro2\", \"solar-pro3\"],\n      \"docUrl\": \"https://developers.upstage.ai/docs/apis/chat\",\n      \"gateway\": \"models.dev\"\n    },\n    \"vercel\": {\n      \"apiKeyEnvVar\": \"AI_GATEWAY_API_KEY\",\n      \"name\": \"Vercel AI Gateway\",\n      \"models\": [\n        \"alibaba/qwen-3-14b\",\n        \"alibaba/qwen-3-235b\",\n        \"alibaba/qwen-3-30b\",\n        \"alibaba/qwen-3-32b\",\n        \"alibaba/qwen-3.6-max-preview\",\n        \"alibaba/qwen3-235b-a22b-thinking\",\n        \"alibaba/qwen3-coder\",\n        \"alibaba/qwen3-coder-30b-a3b\",\n        \"alibaba/qwen3-coder-next\",\n        \"alibaba/qwen3-coder-plus\",\n        \"alibaba/qwen3-embedding-0.6b\",\n        \"alibaba/qwen3-embedding-4b\",\n        \"alibaba/qwen3-embedding-8b\",\n        \"alibaba/qwen3-max\",\n        \"alibaba/qwen3-max-preview\",\n        \"alibaba/qwen3-max-thinking\",\n        \"alibaba/qwen3-next-80b-a3b-instruct\",\n        \"alibaba/qwen3-next-80b-a3b-thinking\",\n        \"alibaba/qwen3-vl-235b-a22b-instruct\",\n        \"alibaba/qwen3-vl-instruct\",\n        \"alibaba/qwen3-vl-thinking\",\n        \"alibaba/qwen3.5-flash\",\n        \"alibaba/qwen3.5-plus\",\n        \"alibaba/qwen3.6-27b\",\n        \"alibaba/qwen3.6-plus\",\n        \"alibaba/qwen3.7-max\",\n        \"amazon/nova-2-lite\",\n        \"amazon/nova-lite\",\n        \"amazon/nova-micro\",\n        \"amazon/nova-pro\",\n        \"amazon/titan-embed-text-v2\",\n        \"anthropic/claude-3-haiku\",\n        \"anthropic/claude-3-opus\",\n        \"anthropic/claude-3.5-haiku\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.5-sonnet-20240620\",\n        \"anthropic/claude-3.7-sonnet\",\n        \"anthropic/claude-haiku-4.5\",\n        \"anthropic/claude-opus-4\",\n        \"anthropic/claude-opus-4.1\",\n        \"anthropic/claude-opus-4.5\",\n        \"anthropic/claude-opus-4.6\",\n        \"anthropic/claude-opus-4.7\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-sonnet-4.5\",\n        \"anthropic/claude-sonnet-4.6\",\n        \"arcee-ai/trinity-large-preview\",\n        \"arcee-ai/trinity-large-thinking\",\n        \"arcee-ai/trinity-mini\",\n        \"bfl/flux-kontext-max\",\n        \"bfl/flux-kontext-pro\",\n        \"bfl/flux-pro-1.0-fill\",\n        \"bfl/flux-pro-1.1\",\n        \"bfl/flux-pro-1.1-ultra\",\n        \"bytedance/seed-1.6\",\n        \"bytedance/seed-1.8\",\n        \"cohere/command-a\",\n        \"cohere/embed-v4.0\",\n        \"deepseek/deepseek-r1\",\n        \"deepseek/deepseek-v3\",\n        \"deepseek/deepseek-v3.1\",\n        \"deepseek/deepseek-v3.1-terminus\",\n        \"deepseek/deepseek-v3.2\",\n        \"deepseek/deepseek-v3.2-exp\",\n        \"deepseek/deepseek-v3.2-thinking\",\n        \"deepseek/deepseek-v4-flash\",\n        \"deepseek/deepseek-v4-pro\",\n        \"google/gemini-2.0-flash\",\n        \"google/gemini-2.0-flash-lite\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-flash-image\",\n        \"google/gemini-2.5-flash-image-preview\",\n        \"google/gemini-2.5-flash-lite\",\n        \"google/gemini-2.5-flash-lite-preview-09-2025\",\n        \"google/gemini-2.5-flash-preview-09-2025\",\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-3-flash\",\n        \"google/gemini-3-pro-image\",\n        \"google/gemini-3-pro-preview\",\n        \"google/gemini-3.1-flash-image-preview\",\n        \"google/gemini-3.1-flash-lite\",\n        \"google/gemini-3.1-flash-lite-preview\",\n        \"google/gemini-3.1-pro-preview\",\n        \"google/gemini-3.5-flash\",\n        \"google/gemini-embedding-001\",\n        \"google/gemini-embedding-2\",\n        \"google/gemma-4-26b-a4b-it\",\n        \"google/gemma-4-31b-it\",\n        \"google/imagen-4.0-fast-generate-001\",\n        \"google/imagen-4.0-generate-001\",\n        \"google/imagen-4.0-ultra-generate-001\",\n        \"google/text-embedding-005\",\n        \"google/text-multilingual-embedding-002\",\n        \"inception/mercury-2\",\n        \"inception/mercury-coder-small\",\n        \"inception/mercury-edit-2\",\n        \"interfaze/interfaze-beta\",\n        \"kwaipilot/kat-coder-pro-v1\",\n        \"kwaipilot/kat-coder-pro-v2\",\n        \"meituan/longcat-flash-chat\",\n        \"meituan/longcat-flash-thinking\",\n        \"meituan/longcat-flash-thinking-2601\",\n        \"meta/llama-3.1-70b\",\n        \"meta/llama-3.1-8b\",\n        \"meta/llama-3.2-11b\",\n        \"meta/llama-3.2-1b\",\n        \"meta/llama-3.2-3b\",\n        \"meta/llama-3.2-90b\",\n        \"meta/llama-3.3-70b\",\n        \"meta/llama-4-maverick\",\n        \"meta/llama-4-scout\",\n        \"minimax/minimax-m2\",\n        \"minimax/minimax-m2.1\",\n        \"minimax/minimax-m2.1-lightning\",\n        \"minimax/minimax-m2.5\",\n        \"minimax/minimax-m2.5-highspeed\",\n        \"minimax/minimax-m2.7\",\n        \"minimax/minimax-m2.7-highspeed\",\n        \"mistral/codestral\",\n        \"mistral/codestral-embed\",\n        \"mistral/devstral-2\",\n        \"mistral/devstral-small\",\n        \"mistral/devstral-small-2\",\n        \"mistral/magistral-medium\",\n        \"mistral/magistral-small\",\n        \"mistral/ministral-14b\",\n        \"mistral/ministral-3b\",\n        \"mistral/ministral-8b\",\n        \"mistral/mistral-embed\",\n        \"mistral/mistral-large-3\",\n        \"mistral/mistral-medium\",\n        \"mistral/mistral-medium-3.5\",\n        \"mistral/mistral-nemo\",\n        \"mistral/mistral-small\",\n        \"mistral/mixtral-8x22b-instruct\",\n        \"mistral/pixtral-12b\",\n        \"mistral/pixtral-large\",\n        \"moonshotai/kimi-k2-0905\",\n        \"moonshotai/kimi-k2-thinking\",\n        \"moonshotai/kimi-k2-thinking-turbo\",\n        \"moonshotai/kimi-k2-turbo\",\n        \"moonshotai/kimi-k2.5\",\n        \"moonshotai/kimi-k2.6\",\n        \"morph/morph-v3-fast\",\n        \"morph/morph-v3-large\",\n        \"nvidia/nemotron-3-nano-30b-a3b\",\n        \"nvidia/nemotron-3-super-120b-a12b\",\n        \"nvidia/nemotron-nano-12b-v2-vl\",\n        \"nvidia/nemotron-nano-9b-v2\",\n        \"openai/codex-mini\",\n        \"openai/gpt-3.5-turbo\",\n        \"openai/gpt-3.5-turbo-instruct\",\n        \"openai/gpt-4-turbo\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4.1-nano\",\n        \"openai/gpt-4o\",\n        \"openai/gpt-4o-mini\",\n        \"openai/gpt-4o-mini-search-preview\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-chat\",\n        \"openai/gpt-5-codex\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-5-pro\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-max\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"openai/gpt-5.1-instant\",\n        \"openai/gpt-5.1-thinking\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.2-chat\",\n        \"openai/gpt-5.2-codex\",\n        \"openai/gpt-5.2-pro\",\n        \"openai/gpt-5.3-chat\",\n        \"openai/gpt-5.3-codex\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.4-mini\",\n        \"openai/gpt-5.4-nano\",\n        \"openai/gpt-5.4-pro\",\n        \"openai/gpt-5.5\",\n        \"openai/gpt-5.5-pro\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-20b\",\n        \"openai/gpt-oss-safeguard-20b\",\n        \"openai/o1\",\n        \"openai/o3\",\n        \"openai/o3-deep-research\",\n        \"openai/o3-mini\",\n        \"openai/o3-pro\",\n        \"openai/o4-mini\",\n        \"openai/text-embedding-3-large\",\n        \"openai/text-embedding-3-small\",\n        \"openai/text-embedding-ada-002\",\n        \"perplexity/sonar\",\n        \"perplexity/sonar-pro\",\n        \"perplexity/sonar-reasoning\",\n        \"perplexity/sonar-reasoning-pro\",\n        \"prime-intellect/intellect-3\",\n        \"recraft/recraft-v2\",\n        \"recraft/recraft-v3\",\n        \"vercel/v0-1.0-md\",\n        \"vercel/v0-1.5-md\",\n        \"voyage/voyage-3-large\",\n        \"voyage/voyage-3.5\",\n        \"voyage/voyage-3.5-lite\",\n        \"voyage/voyage-4\",\n        \"voyage/voyage-4-large\",\n        \"voyage/voyage-4-lite\",\n        \"voyage/voyage-code-2\",\n        \"voyage/voyage-code-3\",\n        \"voyage/voyage-finance-2\",\n        \"voyage/voyage-law-2\",\n        \"xai/grok-4-fast-reasoning\",\n        \"xai/grok-4.1-fast-non-reasoning\",\n        \"xai/grok-4.1-fast-reasoning\",\n        \"xai/grok-4.20-multi-agent\",\n        \"xai/grok-4.20-multi-agent-beta\",\n        \"xai/grok-4.20-non-reasoning\",\n        \"xai/grok-4.20-non-reasoning-beta\",\n        \"xai/grok-4.20-reasoning\",\n        \"xai/grok-4.20-reasoning-beta\",\n        \"xai/grok-4.3\",\n        \"xai/grok-build-0.1\",\n        \"xai/grok-imagine-image\",\n        \"xai/grok-imagine-image-pro\",\n        \"xiaomi/mimo-v2-flash\",\n        \"xiaomi/mimo-v2-pro\",\n        \"xiaomi/mimo-v2.5\",\n        \"xiaomi/mimo-v2.5-pro\",\n        \"zai/glm-4.5\",\n        \"zai/glm-4.5-air\",\n        \"zai/glm-4.5v\",\n        \"zai/glm-4.6\",\n        \"zai/glm-4.6v\",\n        \"zai/glm-4.6v-flash\",\n        \"zai/glm-4.7\",\n        \"zai/glm-4.7-flash\",\n        \"zai/glm-4.7-flashx\",\n        \"zai/glm-5\",\n        \"zai/glm-5-turbo\",\n        \"zai/glm-5.1\",\n        \"zai/glm-5v-turbo\"\n      ],\n      \"docUrl\": \"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway\",\n      \"gateway\": \"models.dev\"\n    },\n    \"abliteration-ai\": {\n      \"url\": \"https://api.abliteration.ai/v1\",\n      \"apiKeyEnvVar\": \"ABLIT_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"abliteration.ai\",\n      \"models\": [\"abliterated-model\"],\n      \"docUrl\": \"https://docs.abliteration.ai/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"deepseek\": {\n      \"url\": \"https://api.deepseek.com\",\n      \"apiKeyEnvVar\": \"DEEPSEEK_API_KEY\",\n      \"name\": \"DeepSeek\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\", \"deepseek-v4-flash\", \"deepseek-v4-pro\"],\n      \"docUrl\": \"https://api-docs.deepseek.com/quick_start/pricing\",\n      \"gateway\": \"models.dev\"\n    },\n    \"perplexity\": {\n      \"apiKeyEnvVar\": \"PERPLEXITY_API_KEY\",\n      \"name\": \"Perplexity\",\n      \"models\": [\"sonar\", \"sonar-deep-research\", \"sonar-pro\", \"sonar-reasoning-pro\"],\n      \"docUrl\": \"https://docs.perplexity.ai\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/perplexity\"\n    },\n    \"iflowcn\": {\n      \"url\": \"https://apis.iflow.cn/v1\",\n      \"apiKeyEnvVar\": \"IFLOW_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"iFlow\",\n      \"models\": [\n        \"deepseek-r1\",\n        \"deepseek-v3\",\n        \"deepseek-v3.2\",\n        \"glm-4.6\",\n        \"kimi-k2\",\n        \"kimi-k2-0905\",\n        \"qwen3-235b\",\n        \"qwen3-235b-a22b-instruct\",\n        \"qwen3-235b-a22b-thinking-2507\",\n        \"qwen3-32b\",\n        \"qwen3-coder-plus\",\n        \"qwen3-max\",\n        \"qwen3-max-preview\",\n        \"qwen3-vl-plus\"\n      ],\n      \"docUrl\": \"https://platform.iflow.cn/en/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"stackit\": {\n      \"url\": \"https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1\",\n      \"apiKeyEnvVar\": \"STACKIT_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"STACKIT\",\n      \"models\": [\n        \"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8\",\n        \"Qwen/Qwen3-VL-Embedding-8B\",\n        \"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic\",\n        \"google/gemma-3-27b-it\",\n        \"intfloat/e5-mistral-7b-instruct\",\n        \"neuralmagic/Meta-Llama-3.1-8B-Instruct-FP8\",\n        \"neuralmagic/Mistral-Nemo-Instruct-2407-FP8\",\n        \"openai/gpt-oss-120b\"\n      ],\n      \"docUrl\": \"https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"wafer.ai\": {\n      \"url\": \"https://pass.wafer.ai/v1\",\n      \"apiKeyEnvVar\": \"WAFER_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Wafer\",\n      \"models\": [\"GLM-5.1\", \"Qwen3.5-397B-A17B\"],\n      \"docUrl\": \"https://docs.wafer.ai/wafer-pass\",\n      \"gateway\": \"models.dev\"\n    },\n    \"evroc\": {\n      \"url\": \"https://models.think.evroc.com/v1\",\n      \"apiKeyEnvVar\": \"EVROC_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"evroc\",\n      \"models\": [\n        \"KBLab/kb-whisper-large\",\n        \"Qwen/Qwen3-30B-A3B-Instruct-2507-FP8\",\n        \"Qwen/Qwen3-Embedding-8B\",\n        \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n        \"intfloat/multilingual-e5-large-instruct\",\n        \"microsoft/Phi-4-multimodal-instruct\",\n        \"mistralai/Magistral-Small-2509\",\n        \"mistralai/Voxtral-Small-24B-2507\",\n        \"mistralai/devstral-small-2-24b-instruct-2512\",\n        \"moonshotai/Kimi-K2.5\",\n        \"nvidia/Llama-3.3-70B-Instruct-FP8\",\n        \"openai/gpt-oss-120b\",\n        \"openai/whisper-large-v3\"\n      ],\n      \"docUrl\": \"https://docs.evroc.com/products/think/overview.html\",\n      \"gateway\": \"models.dev\"\n    },\n    \"nova\": {\n      \"url\": \"https://api.nova.amazon.com/v1\",\n      \"apiKeyEnvVar\": \"NOVA_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Nova\",\n      \"models\": [\"nova-2-lite-v1\", \"nova-2-pro-v1\"],\n      \"docUrl\": \"https://nova.amazon.com/dev/documentation\",\n      \"gateway\": \"models.dev\"\n    },\n    \"fireworks-ai\": {\n      \"url\": \"https://api.fireworks.ai/inference/v1/\",\n      \"apiKeyEnvVar\": \"FIREWORKS_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Fireworks AI\",\n      \"models\": [\n        \"accounts/fireworks/models/deepseek-v3p1\",\n        \"accounts/fireworks/models/deepseek-v3p2\",\n        \"accounts/fireworks/models/deepseek-v4-flash\",\n        \"accounts/fireworks/models/deepseek-v4-pro\",\n        \"accounts/fireworks/models/glm-4p5\",\n        \"accounts/fireworks/models/glm-4p5-air\",\n        \"accounts/fireworks/models/glm-4p7\",\n        \"accounts/fireworks/models/glm-5\",\n        \"accounts/fireworks/models/glm-5p1\",\n        \"accounts/fireworks/models/gpt-oss-120b\",\n        \"accounts/fireworks/models/gpt-oss-20b\",\n        \"accounts/fireworks/models/kimi-k2-instruct\",\n        \"accounts/fireworks/models/kimi-k2-thinking\",\n        \"accounts/fireworks/models/kimi-k2p5\",\n        \"accounts/fireworks/models/kimi-k2p6\",\n        \"accounts/fireworks/models/minimax-m2p1\",\n        \"accounts/fireworks/models/minimax-m2p5\",\n        \"accounts/fireworks/models/minimax-m2p7\",\n        \"accounts/fireworks/models/qwen3p6-plus\",\n        \"accounts/fireworks/routers/kimi-k2p5-turbo\"\n      ],\n      \"docUrl\": \"https://fireworks.ai/docs/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"alibaba\": {\n      \"url\": \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\",\n      \"apiKeyEnvVar\": \"DASHSCOPE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Alibaba\",\n      \"models\": [\n        \"qvq-max\",\n        \"qwen-flash\",\n        \"qwen-max\",\n        \"qwen-mt-plus\",\n        \"qwen-mt-turbo\",\n        \"qwen-omni-turbo\",\n        \"qwen-omni-turbo-realtime\",\n        \"qwen-plus\",\n        \"qwen-plus-character-ja\",\n        \"qwen-turbo\",\n        \"qwen-vl-max\",\n        \"qwen-vl-ocr\",\n        \"qwen-vl-plus\",\n        \"qwen2-5-14b-instruct\",\n        \"qwen2-5-32b-instruct\",\n        \"qwen2-5-72b-instruct\",\n        \"qwen2-5-7b-instruct\",\n        \"qwen2-5-omni-7b\",\n        \"qwen2-5-vl-72b-instruct\",\n        \"qwen2-5-vl-7b-instruct\",\n        \"qwen3-14b\",\n        \"qwen3-235b-a22b\",\n        \"qwen3-32b\",\n        \"qwen3-8b\",\n        \"qwen3-asr-flash\",\n        \"qwen3-coder-30b-a3b-instruct\",\n        \"qwen3-coder-480b-a35b-instruct\",\n        \"qwen3-coder-flash\",\n        \"qwen3-coder-plus\",\n        \"qwen3-livetranslate-flash-realtime\",\n        \"qwen3-max\",\n        \"qwen3-next-80b-a3b-instruct\",\n        \"qwen3-next-80b-a3b-thinking\",\n        \"qwen3-omni-flash\",\n        \"qwen3-omni-flash-realtime\",\n        \"qwen3-vl-235b-a22b\",\n        \"qwen3-vl-30b-a3b\",\n        \"qwen3-vl-plus\",\n        \"qwen3.5-122b-a10b\",\n        \"qwen3.5-27b\",\n        \"qwen3.5-35b-a3b\",\n        \"qwen3.5-397b-a17b\",\n        \"qwen3.5-plus\",\n        \"qwen3.6-27b\",\n        \"qwen3.6-35b-a3b\",\n        \"qwen3.6-max-preview\",\n        \"qwen3.6-plus\",\n        \"qwen3.7-max\",\n        \"qwq-plus\"\n      ],\n      \"docUrl\": \"https://www.alibabacloud.com/help/en/model-studio/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"302ai\": {\n      \"url\": \"https://api.302.ai/v1\",\n      \"apiKeyEnvVar\": \"302AI_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"302.AI\",\n      \"models\": [\n        \"MiniMax-M1\",\n        \"MiniMax-M2\",\n        \"MiniMax-M2.1\",\n        \"MiniMax-M2.7\",\n        \"MiniMax-M2.7-highspeed\",\n        \"chatgpt-4o-latest\",\n        \"claude-3-5-haiku-20241022\",\n        \"claude-3-5-haiku-latest\",\n        \"claude-haiku-4-5\",\n        \"claude-haiku-4-5-20251001\",\n        \"claude-opus-4-1-20250805\",\n        \"claude-opus-4-1-20250805-thinking\",\n        \"claude-opus-4-20250514\",\n        \"claude-opus-4-5\",\n        \"claude-opus-4-5-20251101\",\n        \"claude-opus-4-5-20251101-thinking\",\n        \"claude-opus-4-6\",\n        \"claude-opus-4-6-thinking\",\n        \"claude-opus-4-7\",\n        \"claude-sonnet-4-20250514\",\n        \"claude-sonnet-4-5\",\n        \"claude-sonnet-4-5-20250929\",\n        \"claude-sonnet-4-5-20250929-thinking\",\n        \"claude-sonnet-4-6\",\n        \"claude-sonnet-4-6-thinking\",\n        \"deepseek-chat\",\n        \"deepseek-reasoner\",\n        \"deepseek-v3.2\",\n        \"deepseek-v3.2-thinking\",\n        \"doubao-seed-1-6-thinking-250715\",\n        \"doubao-seed-1-6-vision-250815\",\n        \"doubao-seed-1-8-251215\",\n        \"doubao-seed-code-preview-251028\",\n        \"gemini-2.0-flash-lite\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-flash-image\",\n        \"gemini-2.5-flash-lite-preview-09-2025\",\n        \"gemini-2.5-flash-nothink\",\n        \"gemini-2.5-flash-preview-09-2025\",\n        \"gemini-2.5-pro\",\n        \"gemini-3-flash-preview\",\n        \"gemini-3-pro-image-preview\",\n        \"gemini-3-pro-preview\",\n        \"gemini-3.1-flash-image-preview\",\n        \"glm-4.5\",\n        \"glm-4.5-air\",\n        \"glm-4.5-airx\",\n        \"glm-4.5-x\",\n        \"glm-4.5v\",\n        \"glm-4.6\",\n        \"glm-4.6v\",\n        \"glm-4.7\",\n        \"glm-4.7-flashx\",\n        \"glm-5\",\n        \"glm-5-turbo\",\n        \"glm-5.1\",\n        \"glm-5v-turbo\",\n        \"glm-for-coding\",\n        \"gpt-4.1\",\n        \"gpt-4.1-mini\",\n        \"gpt-4.1-nano\",\n        \"gpt-4o\",\n        \"gpt-5\",\n        \"gpt-5-mini\",\n        \"gpt-5-pro\",\n        \"gpt-5-thinking\",\n        \"gpt-5.1\",\n        \"gpt-5.1-chat-latest\",\n        \"gpt-5.2\",\n        \"gpt-5.2-chat-latest\",\n        \"gpt-5.4\",\n        \"gpt-5.4-mini\",\n        \"gpt-5.4-mini-2026-03-17\",\n        \"gpt-5.4-nano\",\n        \"gpt-5.4-nano-2026-03-17\",\n        \"gpt-5.4-pro\",\n        \"grok-4-1-fast-non-reasoning\",\n        \"grok-4-1-fast-reasoning\",\n        \"grok-4-fast-non-reasoning\",\n        \"grok-4-fast-reasoning\",\n        \"grok-4.1\",\n        \"grok-4.20-beta-0309-non-reasoning\",\n        \"grok-4.20-beta-0309-reasoning\",\n        \"grok-4.20-multi-agent-beta-0309\",\n        \"kimi-k2-0905-preview\",\n        \"kimi-k2-thinking\",\n        \"kimi-k2-thinking-turbo\",\n        \"ministral-14b-2512\",\n        \"mistral-large-2512\",\n        \"qwen-flash\",\n        \"qwen-max-latest\",\n        \"qwen-plus\",\n        \"qwen3-235b-a22b\",\n        \"qwen3-235b-a22b-instruct-2507\",\n        \"qwen3-30b-a3b\",\n        \"qwen3-coder-480b-a35b-instruct\",\n        \"qwen3-max-2025-09-23\"\n      ],\n      \"docUrl\": \"https://doc.302.ai\",\n      \"gateway\": \"models.dev\"\n    },\n    \"xpersona\": {\n      \"url\": \"https://www.xpersona.co/v1\",\n      \"apiKeyEnvVar\": \"XPERSONA_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Xpersona\",\n      \"models\": [\"xpersona-frieren-coder\"],\n      \"docUrl\": \"https://www.xpersona.co/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"stepfun\": {\n      \"url\": \"https://api.stepfun.com/v1\",\n      \"apiKeyEnvVar\": \"STEPFUN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"StepFun\",\n      \"models\": [\"step-1-32k\", \"step-2-16k\", \"step-3.5-flash\", \"step-3.5-flash-2603\"],\n      \"docUrl\": \"https://platform.stepfun.com/docs/zh/overview/concept\",\n      \"gateway\": \"models.dev\"\n    },\n    \"xai\": {\n      \"apiKeyEnvVar\": \"XAI_API_KEY\",\n      \"name\": \"xAI\",\n      \"models\": [\n        \"grok-4.20-0309-non-reasoning\",\n        \"grok-4.20-0309-reasoning\",\n        \"grok-4.20-multi-agent-0309\",\n        \"grok-4.3\",\n        \"grok-build-0.1\",\n        \"grok-imagine-image\",\n        \"grok-imagine-image-quality\",\n        \"grok-imagine-video\"\n      ],\n      \"docUrl\": \"https://docs.x.ai/docs/models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/xai\"\n    },\n    \"sarvam\": {\n      \"url\": \"https://api.sarvam.ai/v1\",\n      \"apiKeyEnvVar\": \"SARVAM_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Sarvam AI\",\n      \"models\": [\"sarvam-105b\", \"sarvam-30b\"],\n      \"docUrl\": \"https://docs.sarvam.ai/api-reference-docs/getting-started/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"zhipuai\": {\n      \"url\": \"https://open.bigmodel.cn/api/paas/v4\",\n      \"apiKeyEnvVar\": \"ZHIPU_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Zhipu AI\",\n      \"models\": [\n        \"glm-4.5\",\n        \"glm-4.5-air\",\n        \"glm-4.5-flash\",\n        \"glm-4.5v\",\n        \"glm-4.6\",\n        \"glm-4.6v\",\n        \"glm-4.7\",\n        \"glm-4.7-flash\",\n        \"glm-4.7-flashx\",\n        \"glm-5\",\n        \"glm-5.1\",\n        \"glm-5v-turbo\"\n      ],\n      \"docUrl\": \"https://docs.z.ai/guides/overview/pricing\",\n      \"gateway\": \"models.dev\"\n    },\n    \"bailing\": {\n      \"url\": \"https://api.tbox.cn/api/llm/v1/chat/completions\",\n      \"apiKeyEnvVar\": \"BAILING_API_TOKEN\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Bailing\",\n      \"models\": [\"Ling-1T\", \"Ring-1T\"],\n      \"docUrl\": \"https://alipaytbox.yuque.com/sxs0ba/ling/intro\",\n      \"gateway\": \"models.dev\"\n    },\n    \"qihang-ai\": {\n      \"url\": \"https://api.qhaigc.net/v1\",\n      \"apiKeyEnvVar\": \"QIHANG_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"QiHang\",\n      \"models\": [\n        \"claude-haiku-4-5-20251001\",\n        \"claude-opus-4-5-20251101\",\n        \"claude-sonnet-4-5-20250929\",\n        \"gemini-2.5-flash\",\n        \"gemini-3-flash-preview\",\n        \"gemini-3-pro-preview\",\n        \"gpt-5-mini\",\n        \"gpt-5.2\",\n        \"gpt-5.2-codex\"\n      ],\n      \"docUrl\": \"https://www.qhaigc.net/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"lilac\": {\n      \"url\": \"https://api.getlilac.com/v1\",\n      \"apiKeyEnvVar\": \"LILAC_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Lilac\",\n      \"models\": [\"google/gemma-4-31b-it\", \"minimaxai/minimax-m2.7\", \"moonshotai/kimi-k2.6\", \"zai-org/glm-5.1\"],\n      \"docUrl\": \"https://docs.getlilac.com/inference/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"alibaba-cn\": {\n      \"url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n      \"apiKeyEnvVar\": \"DASHSCOPE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Alibaba (China)\",\n      \"models\": [\n        \"MiniMax-M2.5\",\n        \"MiniMax/MiniMax-M2.7\",\n        \"deepseek-r1\",\n        \"deepseek-r1-0528\",\n        \"deepseek-r1-distill-llama-70b\",\n        \"deepseek-r1-distill-llama-8b\",\n        \"deepseek-r1-distill-qwen-1-5b\",\n        \"deepseek-r1-distill-qwen-14b\",\n        \"deepseek-r1-distill-qwen-32b\",\n        \"deepseek-r1-distill-qwen-7b\",\n        \"deepseek-v3\",\n        \"deepseek-v3-1\",\n        \"deepseek-v3-2-exp\",\n        \"deepseek-v4-flash\",\n        \"deepseek-v4-pro\",\n        \"glm-5\",\n        \"glm-5.1\",\n        \"kimi-k2-thinking\",\n        \"kimi-k2.5\",\n        \"kimi-k2.6\",\n        \"kimi/kimi-k2.5\",\n        \"moonshot-kimi-k2-instruct\",\n        \"qvq-max\",\n        \"qwen-deep-research\",\n        \"qwen-doc-turbo\",\n        \"qwen-flash\",\n        \"qwen-long\",\n        \"qwen-math-plus\",\n        \"qwen-math-turbo\",\n        \"qwen-max\",\n        \"qwen-mt-plus\",\n        \"qwen-mt-turbo\",\n        \"qwen-omni-turbo\",\n        \"qwen-omni-turbo-realtime\",\n        \"qwen-plus\",\n        \"qwen-plus-character\",\n        \"qwen-turbo\",\n        \"qwen-vl-max\",\n        \"qwen-vl-ocr\",\n        \"qwen-vl-plus\",\n        \"qwen2-5-14b-instruct\",\n        \"qwen2-5-32b-instruct\",\n        \"qwen2-5-72b-instruct\",\n        \"qwen2-5-7b-instruct\",\n        \"qwen2-5-coder-32b-instruct\",\n        \"qwen2-5-coder-7b-instruct\",\n        \"qwen2-5-math-72b-instruct\",\n        \"qwen2-5-math-7b-instruct\",\n        \"qwen2-5-omni-7b\",\n        \"qwen2-5-vl-72b-instruct\",\n        \"qwen2-5-vl-7b-instruct\",\n        \"qwen3-14b\",\n        \"qwen3-235b-a22b\",\n        \"qwen3-32b\",\n        \"qwen3-8b\",\n        \"qwen3-asr-flash\",\n        \"qwen3-coder-30b-a3b-instruct\",\n        \"qwen3-coder-480b-a35b-instruct\",\n        \"qwen3-coder-flash\",\n        \"qwen3-coder-plus\",\n        \"qwen3-max\",\n        \"qwen3-next-80b-a3b-instruct\",\n        \"qwen3-next-80b-a3b-thinking\",\n        \"qwen3-omni-flash\",\n        \"qwen3-omni-flash-realtime\",\n        \"qwen3-vl-235b-a22b\",\n        \"qwen3-vl-30b-a3b\",\n        \"qwen3-vl-plus\",\n        \"qwen3.5-397b-a17b\",\n        \"qwen3.5-flash\",\n        \"qwen3.5-plus\",\n        \"qwen3.6-max-preview\",\n        \"qwen3.6-plus\",\n        \"qwq-32b\",\n        \"qwq-plus\",\n        \"siliconflow/deepseek-r1-0528\",\n        \"siliconflow/deepseek-v3-0324\",\n        \"siliconflow/deepseek-v3.1-terminus\",\n        \"siliconflow/deepseek-v3.2\",\n        \"tongyi-intent-detect-v3\"\n      ],\n      \"docUrl\": \"https://www.alibabacloud.com/help/en/model-studio/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"drun\": {\n      \"url\": \"https://chat.d.run/v1\",\n      \"apiKeyEnvVar\": \"DRUN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"D.Run (China)\",\n      \"models\": [\"public/deepseek-r1\", \"public/deepseek-v3\", \"public/minimax-m25\"],\n      \"docUrl\": \"https://www.d.run\",\n      \"gateway\": \"models.dev\"\n    },\n    \"huggingface\": {\n      \"url\": \"https://router.huggingface.co/v1\",\n      \"apiKeyEnvVar\": \"HF_TOKEN\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Hugging Face\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.1\",\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"MiniMaxAI/MiniMax-M2.7\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"Qwen/Qwen3-Coder-Next\",\n        \"Qwen/Qwen3-Embedding-4B\",\n        \"Qwen/Qwen3-Embedding-8B\",\n        \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n        \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n        \"Qwen/Qwen3.5-397B-A17B\",\n        \"XiaomiMiMo/MiMo-V2-Flash\",\n        \"deepseek-ai/DeepSeek-R1-0528\",\n        \"deepseek-ai/DeepSeek-V3.2\",\n        \"deepseek-ai/DeepSeek-V4-Pro\",\n        \"moonshotai/Kimi-K2-Instruct\",\n        \"moonshotai/Kimi-K2-Instruct-0905\",\n        \"moonshotai/Kimi-K2-Thinking\",\n        \"moonshotai/Kimi-K2.5\",\n        \"moonshotai/Kimi-K2.6\",\n        \"zai-org/GLM-4.7\",\n        \"zai-org/GLM-4.7-Flash\",\n        \"zai-org/GLM-5\",\n        \"zai-org/GLM-5.1\"\n      ],\n      \"docUrl\": \"https://huggingface.co/docs/inference-providers\",\n      \"gateway\": \"models.dev\"\n    },\n    \"umans-ai-coding-plan\": {\n      \"url\": \"https://api.code.umans.ai/v1\",\n      \"apiKeyEnvVar\": \"UMANS_AI_CODING_PLAN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Umans AI Coding Plan\",\n      \"models\": [\"umans-coder\", \"umans-flash\", \"umans-glm-5.1\", \"umans-kimi-k2.6\", \"umans-qwen3.6-35b-a3b\"],\n      \"docUrl\": \"https://app.umans.ai/offers/code/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"tencent-tokenhub\": {\n      \"url\": \"https://tokenhub.tencentmaas.com/v1\",\n      \"apiKeyEnvVar\": \"TENCENT_TOKENHUB_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Tencent TokenHub\",\n      \"models\": [\"hy3-preview\"],\n      \"docUrl\": \"https://cloud.tencent.com/document/product/1823/130050\",\n      \"gateway\": \"models.dev\"\n    },\n    \"nebius\": {\n      \"url\": \"https://api.tokenfactory.nebius.com/v1\",\n      \"apiKeyEnvVar\": \"NEBIUS_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Nebius Token Factory\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"MiniMaxAI/MiniMax-M2.5-fast\",\n        \"NousResearch/Hermes-4-405B\",\n        \"NousResearch/Hermes-4-70B\",\n        \"PrimeIntellect/INTELLECT-3\",\n        \"Qwen/Qwen2.5-VL-72B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507-fast\",\n        \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n        \"Qwen/Qwen3-32B\",\n        \"Qwen/Qwen3-Embedding-8B\",\n        \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n        \"Qwen/Qwen3-Next-80B-A3B-Thinking-fast\",\n        \"Qwen/Qwen3.5-397B-A17B\",\n        \"Qwen/Qwen3.5-397B-A17B-fast\",\n        \"deepseek-ai/DeepSeek-V3.2\",\n        \"deepseek-ai/DeepSeek-V3.2-fast\",\n        \"deepseek-ai/DeepSeek-V4-Pro\",\n        \"google/gemma-2-2b-it\",\n        \"google/gemma-3-27b-it\",\n        \"meta-llama/Llama-3.3-70B-Instruct\",\n        \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n        \"moonshotai/Kimi-K2.5\",\n        \"moonshotai/Kimi-K2.5-fast\",\n        \"nvidia/Llama-3_1-Nemotron-Ultra-253B-v1\",\n        \"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B\",\n        \"nvidia/Nemotron-3-Nano-Omni\",\n        \"nvidia/nemotron-3-super-120b-a12b\",\n        \"openai/gpt-oss-120b\",\n        \"openai/gpt-oss-120b-fast\",\n        \"zai-org/GLM-5\"\n      ],\n      \"docUrl\": \"https://docs.tokenfactory.nebius.com/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"hpc-ai\": {\n      \"url\": \"https://api.hpc-ai.com/inference/v1\",\n      \"apiKeyEnvVar\": \"HPC_AI_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"HPC-AI\",\n      \"models\": [\"minimax/minimax-m2.5\", \"moonshotai/kimi-k2.5\", \"zai-org/glm-5.1\"],\n      \"docUrl\": \"https://www.hpc-ai.com/doc/docs/quickstart/\",\n      \"gateway\": \"models.dev\"\n    },\n    \"xiaomi\": {\n      \"url\": \"https://api.xiaomimimo.com/v1\",\n      \"apiKeyEnvVar\": \"XIAOMI_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Xiaomi\",\n      \"models\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n      \"docUrl\": \"https://platform.xiaomimimo.com/#/docs\",\n      \"gateway\": \"models.dev\"\n    },\n    \"togetherai\": {\n      \"apiKeyEnvVar\": \"TOGETHER_API_KEY\",\n      \"name\": \"Together AI\",\n      \"models\": [\n        \"MiniMaxAI/MiniMax-M2.5\",\n        \"MiniMaxAI/MiniMax-M2.7\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507-tput\",\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8\",\n        \"Qwen/Qwen3-Coder-Next-FP8\",\n        \"Qwen/Qwen3.5-397B-A17B\",\n        \"Qwen/Qwen3.6-Plus\",\n        \"deepseek-ai/DeepSeek-R1\",\n        \"deepseek-ai/DeepSeek-V3\",\n        \"deepseek-ai/DeepSeek-V3-1\",\n        \"deepseek-ai/DeepSeek-V4-Pro\",\n        \"essentialai/Rnj-1-Instruct\",\n        \"google/gemma-4-31B-it\",\n        \"meta-llama/Llama-3.3-70B-Instruct-Turbo\",\n        \"moonshotai/Kimi-K2.5\",\n        \"moonshotai/Kimi-K2.6\",\n        \"openai/gpt-oss-120b\",\n        \"zai-org/GLM-5.1\"\n      ],\n      \"docUrl\": \"https://docs.together.ai/docs/serverless-models\",\n      \"gateway\": \"models.dev\",\n      \"npm\": \"@ai-sdk/togetherai\"\n    },\n    \"stepfun-ai\": {\n      \"url\": \"https://api.stepfun.ai/step_plan/v1\",\n      \"apiKeyEnvVar\": \"STEPFUN_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"StepFun\",\n      \"models\": [\"step-3.5-flash\", \"step-3.5-flash-2603\"],\n      \"docUrl\": \"https://platform.stepfun.ai/docs/en/step-plan/integrations/open-code\",\n      \"gateway\": \"models.dev\"\n    },\n    \"inference\": {\n      \"url\": \"https://inference.net/v1\",\n      \"apiKeyEnvVar\": \"INFERENCE_API_KEY\",\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Inference\",\n      \"models\": [\n        \"google/gemma-3\",\n        \"meta/llama-3.1-8b-instruct\",\n        \"meta/llama-3.2-11b-vision-instruct\",\n        \"meta/llama-3.2-1b-instruct\",\n        \"meta/llama-3.2-3b-instruct\",\n        \"mistral/mistral-nemo-12b-instruct\",\n        \"osmosis/osmosis-structure-0.6b\",\n        \"qwen/qwen-2.5-7b-vision-instruct\",\n        \"qwen/qwen3-embedding-4b\"\n      ],\n      \"docUrl\": \"https://inference.net/models\",\n      \"gateway\": \"models.dev\"\n    },\n    \"netlify\": {\n      \"apiKeyEnvVar\": [\"NETLIFY_TOKEN\", \"NETLIFY_SITE_ID\"],\n      \"apiKeyHeader\": \"Authorization\",\n      \"name\": \"Netlify\",\n      \"gateway\": \"netlify\",\n      \"models\": [\n        \"anthropic/claude-haiku-4-5\",\n        \"anthropic/claude-haiku-4-5-20251001\",\n        \"anthropic/claude-opus-4-1-20250805\",\n        \"anthropic/claude-opus-4-20250514\",\n        \"anthropic/claude-opus-4-5\",\n        \"anthropic/claude-opus-4-5-20251101\",\n        \"anthropic/claude-opus-4-6\",\n        \"anthropic/claude-opus-4-7\",\n        \"anthropic/claude-sonnet-4-0\",\n        \"anthropic/claude-sonnet-4-20250514\",\n        \"anthropic/claude-sonnet-4-5\",\n        \"anthropic/claude-sonnet-4-5-20250929\",\n        \"anthropic/claude-sonnet-4-6\",\n        \"gemini/gemini-2.0-flash\",\n        \"gemini/gemini-2.0-flash-lite\",\n        \"gemini/gemini-2.5-flash\",\n        \"gemini/gemini-2.5-flash-image\",\n        \"gemini/gemini-2.5-flash-lite\",\n        \"gemini/gemini-2.5-pro\",\n        \"gemini/gemini-3-flash-preview\",\n        \"gemini/gemini-3-pro-image-preview\",\n        \"gemini/gemini-3.1-flash-image-preview\",\n        \"gemini/gemini-3.1-flash-lite\",\n        \"gemini/gemini-3.1-flash-lite-preview\",\n        \"gemini/gemini-3.1-pro-preview\",\n        \"gemini/gemini-3.1-pro-preview-customtools\",\n        \"gemini/gemini-3.5-flash\",\n        \"gemini/gemini-flash-latest\",\n        \"gemini/gemini-flash-lite-latest\",\n        \"openai/chat-latest\",\n        \"openai/gpt-4.1\",\n        \"openai/gpt-4.1-mini\",\n        \"openai/gpt-4.1-nano\",\n        \"openai/gpt-4o\",\n        \"openai/gpt-4o-mini\",\n        \"openai/gpt-5\",\n        \"openai/gpt-5-2025-08-07\",\n        \"openai/gpt-5-codex\",\n        \"openai/gpt-5-mini\",\n        \"openai/gpt-5-mini-2025-08-07\",\n        \"openai/gpt-5-nano\",\n        \"openai/gpt-5-pro\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.1-2025-11-13\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-max\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"openai/gpt-5.2\",\n        \"openai/gpt-5.2-2025-12-11\",\n        \"openai/gpt-5.2-codex\",\n        \"openai/gpt-5.2-pro\",\n        \"openai/gpt-5.2-pro-2025-12-11\",\n        \"openai/gpt-5.3-chat-latest\",\n        \"openai/gpt-5.3-codex\",\n        \"openai/gpt-5.4\",\n        \"openai/gpt-5.4-2026-03-05\",\n        \"openai/gpt-5.4-mini\",\n        \"openai/gpt-5.4-mini-2026-03-17\",\n        \"openai/gpt-5.4-nano\",\n        \"openai/gpt-5.4-nano-2026-03-17\",\n        \"openai/gpt-5.4-pro\",\n        \"openai/gpt-5.4-pro-2026-03-05\",\n        \"openai/gpt-5.5\",\n        \"openai/gpt-5.5-2026-04-23\",\n        \"openai/gpt-5.5-pro\",\n        \"openai/gpt-5.5-pro-2026-04-23\",\n        \"openai/o3\",\n        \"openai/o3-mini\",\n        \"openai/o4-mini\"\n      ],\n      \"docUrl\": \"https://docs.netlify.com/build/ai-gateway/overview/\"\n    }\n  },\n  \"models\": {\n    \"helicone\": [\n      \"chatgpt-4o-latest\",\n      \"claude-3-haiku-20240307\",\n      \"claude-3.5-haiku\",\n      \"claude-3.5-sonnet-v2\",\n      \"claude-3.7-sonnet\",\n      \"claude-4.5-haiku\",\n      \"claude-4.5-opus\",\n      \"claude-4.5-sonnet\",\n      \"claude-haiku-4-5-20251001\",\n      \"claude-opus-4\",\n      \"claude-opus-4-1\",\n      \"claude-opus-4-1-20250805\",\n      \"claude-sonnet-4\",\n      \"claude-sonnet-4-5-20250929\",\n      \"deepseek-r1-distill-llama-70b\",\n      \"deepseek-reasoner\",\n      \"deepseek-tng-r1t2-chimera\",\n      \"deepseek-v3\",\n      \"deepseek-v3.1-terminus\",\n      \"deepseek-v3.2\",\n      \"ernie-4.5-21b-a3b-thinking\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-flash-lite\",\n      \"gemini-2.5-pro\",\n      \"gemini-3-pro-preview\",\n      \"gemma-3-12b-it\",\n      \"gemma2-9b-it\",\n      \"glm-4.6\",\n      \"gpt-4.1\",\n      \"gpt-4.1-mini\",\n      \"gpt-4.1-mini-2025-04-14\",\n      \"gpt-4.1-nano\",\n      \"gpt-4o\",\n      \"gpt-4o-mini\",\n      \"gpt-5\",\n      \"gpt-5-chat-latest\",\n      \"gpt-5-codex\",\n      \"gpt-5-mini\",\n      \"gpt-5-nano\",\n      \"gpt-5-pro\",\n      \"gpt-5.1\",\n      \"gpt-5.1-chat-latest\",\n      \"gpt-5.1-codex\",\n      \"gpt-5.1-codex-mini\",\n      \"gpt-oss-120b\",\n      \"gpt-oss-20b\",\n      \"grok-3\",\n      \"grok-3-mini\",\n      \"grok-4\",\n      \"grok-4-1-fast-non-reasoning\",\n      \"grok-4-1-fast-reasoning\",\n      \"grok-4-fast-non-reasoning\",\n      \"grok-4-fast-reasoning\",\n      \"grok-code-fast-1\",\n      \"hermes-2-pro-llama-3-8b\",\n      \"kimi-k2-0711\",\n      \"kimi-k2-0905\",\n      \"kimi-k2-thinking\",\n      \"llama-3.1-8b-instant\",\n      \"llama-3.1-8b-instruct\",\n      \"llama-3.1-8b-instruct-turbo\",\n      \"llama-3.3-70b-instruct\",\n      \"llama-3.3-70b-versatile\",\n      \"llama-4-maverick\",\n      \"llama-4-scout\",\n      \"llama-guard-4\",\n      \"llama-prompt-guard-2-22m\",\n      \"llama-prompt-guard-2-86m\",\n      \"mistral-large-2411\",\n      \"mistral-nemo\",\n      \"mistral-small\",\n      \"o1\",\n      \"o1-mini\",\n      \"o3\",\n      \"o3-mini\",\n      \"o3-pro\",\n      \"o4-mini\",\n      \"qwen2.5-coder-7b-fast\",\n      \"qwen3-235b-a22b-thinking\",\n      \"qwen3-30b-a3b\",\n      \"qwen3-32b\",\n      \"qwen3-coder\",\n      \"qwen3-coder-30b-a3b-instruct\",\n      \"qwen3-next-80b-a3b-instruct\",\n      \"qwen3-vl-235b-a22b-instruct\",\n      \"sonar\",\n      \"sonar-deep-research\",\n      \"sonar-pro\",\n      \"sonar-reasoning\",\n      \"sonar-reasoning-pro\"\n    ],\n    \"auriko\": [\n      \"claude-opus-4-6\",\n      \"claude-opus-4-7\",\n      \"claude-sonnet-4-6\",\n      \"deepseek-v4-flash\",\n      \"deepseek-v4-pro\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-pro\",\n      \"gemini-3.1-pro-preview\",\n      \"glm-5.1\",\n      \"grok-4.3\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\",\n      \"minimax-m2-7\",\n      \"minimax-m2-7-highspeed\",\n      \"qwen-3.6-plus\"\n    ],\n    \"firepass\": [\"accounts/fireworks/routers/kimi-k2p6-turbo\"],\n    \"nano-gpt\": [\n      \"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B\",\n      \"Baichuan-M2\",\n      \"Baichuan4-Air\",\n      \"Baichuan4-Turbo\",\n      \"CrucibleLab/L3.3-70B-Loki-V2.0\",\n      \"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond\",\n      \"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0\",\n      \"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1\",\n      \"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2\",\n      \"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2\",\n      \"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B\",\n      \"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B\",\n      \"GLM-4.5-Air-Derestricted\",\n      \"GLM-4.5-Air-Derestricted-Iceblink\",\n      \"GLM-4.5-Air-Derestricted-Iceblink-ReExtract\",\n      \"GLM-4.5-Air-Derestricted-Iceblink-v2\",\n      \"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract\",\n      \"GLM-4.5-Air-Derestricted-Steam\",\n      \"GLM-4.5-Air-Derestricted-Steam-ReExtract\",\n      \"GLM-4.6-Derestricted-v5\",\n      \"GalrionSoftworks/MN-LooseCannon-12B-v1\",\n      \"Gemma-3-27B-ArliAI-RPMax-v3\",\n      \"Gemma-3-27B-Big-Tiger-v3\",\n      \"Gemma-3-27B-CardProjector-v4\",\n      \"Gemma-3-27B-Glitter\",\n      \"Gemma-3-27B-Nidum-Uncensored\",\n      \"Gemma-3-27B-it\",\n      \"Gemma-3-27B-it-Abliterated\",\n      \"Gryphe/MythoMax-L2-13b\",\n      \"Infermatic/MN-12B-Inferor-v0.0\",\n      \"KAT-Coder-Air-V1\",\n      \"KAT-Coder-Exp-72B-1010\",\n      \"KAT-Coder-Pro-V1\",\n      \"LLM360/K2-Think\",\n      \"LatitudeGames/Wayfarer-Large-70B-Llama-3.3\",\n      \"Llama-3.3+(3.1v3.3)-70B-Hanami-x1\",\n      \"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1\",\n      \"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter\",\n      \"Llama-3.3-70B-Anthrobomination\",\n      \"Llama-3.3-70B-Argunaut-1-SFT\",\n      \"Llama-3.3-70B-ArliAI-RPMax-v1.4\",\n      \"Llama-3.3-70B-ArliAI-RPMax-v2\",\n      \"Llama-3.3-70B-ArliAI-RPMax-v3\",\n      \"Llama-3.3-70B-Aurora-Borealis\",\n      \"Llama-3.3-70B-Bigger-Body\",\n      \"Llama-3.3-70B-Cirrus-x1\",\n      \"Llama-3.3-70B-Cu-Mai-R1\",\n      \"Llama-3.3-70B-Damascus-R1\",\n      \"Llama-3.3-70B-Dark-Ages-v0.1\",\n      \"Llama-3.3-70B-Electra-R1\",\n      \"Llama-3.3-70B-Electranova-v1.0\",\n      \"Llama-3.3-70B-Fallen-R1-v1\",\n      \"Llama-3.3-70B-Fallen-v1\",\n      \"Llama-3.3-70B-Forgotten-Abomination-v5.0\",\n      \"Llama-3.3-70B-Forgotten-Safeword-3.6\",\n      \"Llama-3.3-70B-GeneticLemonade-Opus\",\n      \"Llama-3.3-70B-GeneticLemonade-Unleashed-v3\",\n      \"Llama-3.3-70B-Ignition-v0.1\",\n      \"Llama-3.3-70B-Incandescent-Malevolence\",\n      \"Llama-3.3-70B-Legion-V2.1\",\n      \"Llama-3.3-70B-MS-Nevoria\",\n      \"Llama-3.3-70B-Magnum-v4-SE\",\n      \"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP\",\n      \"Llama-3.3-70B-Mhnnn-x1\",\n      \"Llama-3.3-70B-MiraiFanfare\",\n      \"Llama-3.3-70B-Mokume-Gane-R1\",\n      \"Llama-3.3-70B-Nova\",\n      \"Llama-3.3-70B-Predatorial-Extasy\",\n      \"Llama-3.3-70B-Progenitor-V3.3\",\n      \"Llama-3.3-70B-RAWMAW\",\n      \"Llama-3.3-70B-Sapphira-0.1\",\n      \"Llama-3.3-70B-Sapphira-0.2\",\n      \"Llama-3.3-70B-Shakudo\",\n      \"Llama-3.3-70B-StrawberryLemonade-v1.0\",\n      \"Llama-3.3-70B-Strawberrylemonade-v1.2\",\n      \"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0\",\n      \"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1\",\n      \"Llama-3.3-70B-Vulpecula-R1\",\n      \"Magistral-Small-2506\",\n      \"MarinaraSpaghetti/NemoMix-Unleashed-12B\",\n      \"Meta-Llama-3-1-8B-Instruct-FP8\",\n      \"MiniMax-M1\",\n      \"MiniMax-M2\",\n      \"MiniMaxAI/MiniMax-M1-80k\",\n      \"Mistral-Nemo-12B-Instruct-2407\",\n      \"NeverSleep/Llama-3-Lumimaid-70B-v0.1\",\n      \"NeverSleep/Lumimaid-v0.2-70B\",\n      \"NousResearch 2/DeepHermes-3-Mistral-24B-Preview\",\n      \"NousResearch 2/Hermes-4-70B:thinking\",\n      \"NousResearch 2/hermes-3-llama-3.1-70b\",\n      \"NousResearch 2/hermes-4-405b\",\n      \"NousResearch 2/hermes-4-405b:thinking\",\n      \"NousResearch 2/hermes-4-70b\",\n      \"QwQ-32B-ArliAI-RpR-v1\",\n      \"Qwen2.5-32B-EVA-v0.2\",\n      \"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0\",\n      \"ReadyArt/The-Omega-Abomination-L-70B-v1.0\",\n      \"Salesforce/Llama-xLAM-2-70b-fc-r\",\n      \"Sao10K/L3-8B-Stheno-v3.2\",\n      \"Sao10K/L3.1-70B-Euryale-v2.2\",\n      \"Sao10K/L3.1-70B-Hanami-x1\",\n      \"Sao10K/L3.3-70B-Euryale-v2.3\",\n      \"Steelskull/L3.3-Cu-Mai-R1-70b\",\n      \"Steelskull/L3.3-Electra-R1-70b\",\n      \"Steelskull/L3.3-MS-Evalebis-70b\",\n      \"Steelskull/L3.3-MS-Evayale-70B\",\n      \"Steelskull/L3.3-MS-Nevoria-70b\",\n      \"Steelskull/L3.3-Nevoria-R1-70b\",\n      \"TEE/deepseek-r1-0528\",\n      \"TEE/deepseek-v3.1\",\n      \"TEE/deepseek-v3.2\",\n      \"TEE/gemma-3-27b-it\",\n      \"TEE/glm-4.6\",\n      \"TEE/glm-4.7\",\n      \"TEE/glm-4.7-flash\",\n      \"TEE/glm-5\",\n      \"TEE/gpt-oss-120b\",\n      \"TEE/gpt-oss-20b\",\n      \"TEE/kimi-k2-thinking\",\n      \"TEE/kimi-k2.5\",\n      \"TEE/kimi-k2.5-thinking\",\n      \"TEE/llama3-3-70b\",\n      \"TEE/minimax-m2.1\",\n      \"TEE/qwen2.5-vl-72b-instruct\",\n      \"TEE/qwen3-30b-a3b-instruct-2507\",\n      \"TEE/qwen3-coder\",\n      \"TEE/qwen3.5-397b-a17b\",\n      \"THUDM/GLM-4-32B-0414\",\n      \"THUDM/GLM-4-9B-0414\",\n      \"THUDM/GLM-Z1-32B-0414\",\n      \"THUDM/GLM-Z1-9B-0414\",\n      \"THUDM/GLM-Z1-Rumination-32B-0414\",\n      \"TheDrummer 2/Anubis-70B-v1\",\n      \"TheDrummer 2/Anubis-70B-v1.1\",\n      \"TheDrummer 2/Cydonia-24B-v2\",\n      \"TheDrummer 2/Cydonia-24B-v4\",\n      \"TheDrummer 2/Cydonia-24B-v4.1\",\n      \"TheDrummer 2/Cydonia-24B-v4.3\",\n      \"TheDrummer 2/Magidonia-24B-v4.3\",\n      \"TheDrummer 2/Rocinante-12B-v1.1\",\n      \"TheDrummer 2/UnslopNemo-12B-v4.1\",\n      \"TheDrummer 2/skyfall-36b-v2\",\n      \"Tongyi-Zhiwen/QwenLong-L1-32B\",\n      \"VongolaChouko/Starcannon-Unleashed-12B-v1.0\",\n      \"abacusai/Dracarys-72B-Instruct\",\n      \"aion-labs/aion-1.0\",\n      \"aion-labs/aion-1.0-mini\",\n      \"aion-labs/aion-rp-llama-3.1-8b\",\n      \"alibaba/qwen3.6-flash\",\n      \"allenai/molmo-2-8b\",\n      \"allenai/olmo-3-32b-think\",\n      \"allenai/olmo-3.1-32b-instruct\",\n      \"allenai/olmo-3.1-32b-think\",\n      \"amazon/nova-2-lite-v1\",\n      \"amazon/nova-lite-v1\",\n      \"amazon/nova-micro-v1\",\n      \"amazon/nova-pro-v1\",\n      \"anthracite-org/magnum-v2-72b\",\n      \"anthracite-org/magnum-v4-72b\",\n      \"anthropic/claude-opus-4.6\",\n      \"anthropic/claude-opus-4.6:thinking\",\n      \"anthropic/claude-opus-4.6:thinking:low\",\n      \"anthropic/claude-opus-4.6:thinking:max\",\n      \"anthropic/claude-opus-4.6:thinking:medium\",\n      \"anthropic/claude-sonnet-4.6\",\n      \"anthropic/claude-sonnet-4.6:thinking\",\n      \"arcee-ai/trinity-large\",\n      \"arcee-ai/trinity-mini\",\n      \"asi1-mini\",\n      \"auto-model\",\n      \"auto-model-basic\",\n      \"auto-model-premium\",\n      \"auto-model-standard\",\n      \"azure-gpt-4-turbo\",\n      \"azure-gpt-4o\",\n      \"azure-gpt-4o-mini\",\n      \"azure-o1\",\n      \"azure-o3-mini\",\n      \"baidu/ernie-4.5-300b-a47b\",\n      \"baidu/ernie-4.5-vl-28b-a3b\",\n      \"baseten/Kimi-K2-Instruct-FP4\",\n      \"brave\",\n      \"brave-pro\",\n      \"brave-research\",\n      \"chroma\",\n      \"chutesai/Mistral-Small-3.2-24B-Instruct-2506\",\n      \"claude-3-5-haiku-20241022\",\n      \"claude-3-5-sonnet-20240620\",\n      \"claude-3-5-sonnet-20241022\",\n      \"claude-3-7-sonnet-20250219\",\n      \"claude-3-7-sonnet-reasoner\",\n      \"claude-3-7-sonnet-thinking\",\n      \"claude-3-7-sonnet-thinking:1024\",\n      \"claude-3-7-sonnet-thinking:128000\",\n      \"claude-3-7-sonnet-thinking:32768\",\n      \"claude-3-7-sonnet-thinking:8192\",\n      \"claude-haiku-4-5-20251001\",\n      \"claude-opus-4-1-20250805\",\n      \"claude-opus-4-1-thinking\",\n      \"claude-opus-4-1-thinking:1024\",\n      \"claude-opus-4-1-thinking:32000\",\n      \"claude-opus-4-1-thinking:32768\",\n      \"claude-opus-4-1-thinking:8192\",\n      \"claude-opus-4-20250514\",\n      \"claude-opus-4-5-20251101\",\n      \"claude-opus-4-5-20251101:thinking\",\n      \"claude-opus-4-thinking\",\n      \"claude-opus-4-thinking:1024\",\n      \"claude-opus-4-thinking:32000\",\n      \"claude-opus-4-thinking:32768\",\n      \"claude-opus-4-thinking:8192\",\n      \"claude-sonnet-4-20250514\",\n      \"claude-sonnet-4-5-20250929\",\n      \"claude-sonnet-4-5-20250929-thinking\",\n      \"claude-sonnet-4-thinking\",\n      \"claude-sonnet-4-thinking:1024\",\n      \"claude-sonnet-4-thinking:32768\",\n      \"claude-sonnet-4-thinking:64000\",\n      \"claude-sonnet-4-thinking:8192\",\n      \"cognitivecomputations/dolphin-2.9.2-qwen2-72b\",\n      \"cohere/command-r\",\n      \"cohere/command-r-plus-08-2024\",\n      \"command-a-reasoning-08-2025\",\n      \"deepclaude\",\n      \"deepcogito/cogito-v1-preview-qwen-32B\",\n      \"deepcogito/cogito-v2.1-671b\",\n      \"deepseek-ai/DeepSeek-R1-0528\",\n      \"deepseek-ai/DeepSeek-V3.1\",\n      \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n      \"deepseek-ai/DeepSeek-V3.1-Terminus:thinking\",\n      \"deepseek-ai/DeepSeek-V3.1:thinking\",\n      \"deepseek-ai/deepseek-v3.2-exp\",\n      \"deepseek-ai/deepseek-v3.2-exp-thinking\",\n      \"deepseek-chat\",\n      \"deepseek-chat-cheaper\",\n      \"deepseek-math-v2\",\n      \"deepseek-r1\",\n      \"deepseek-r1-sambanova\",\n      \"deepseek-reasoner\",\n      \"deepseek-reasoner-cheaper\",\n      \"deepseek-v3-0324\",\n      \"deepseek/deepseek-prover-v2-671b\",\n      \"deepseek/deepseek-v3.2\",\n      \"deepseek/deepseek-v3.2-speciale\",\n      \"deepseek/deepseek-v3.2:thinking\",\n      \"dmind/dmind-1\",\n      \"dmind/dmind-1-mini\",\n      \"doubao-1-5-thinking-pro-250415\",\n      \"doubao-1-5-thinking-pro-vision-250415\",\n      \"doubao-1-5-thinking-vision-pro-250428\",\n      \"doubao-1.5-pro-256k\",\n      \"doubao-1.5-pro-32k\",\n      \"doubao-1.5-vision-pro-32k\",\n      \"doubao-seed-1-6-250615\",\n      \"doubao-seed-1-6-flash-250615\",\n      \"doubao-seed-1-6-thinking-250615\",\n      \"doubao-seed-1-8-251215\",\n      \"doubao-seed-2-0-code-preview-260215\",\n      \"doubao-seed-2-0-lite-260215\",\n      \"doubao-seed-2-0-mini-260215\",\n      \"doubao-seed-2-0-pro-260215\",\n      \"doubao-seed-code-preview-latest\",\n      \"ernie-4.5-8k-preview\",\n      \"ernie-4.5-turbo-128k\",\n      \"ernie-4.5-turbo-vl-32k\",\n      \"ernie-5.0-thinking-latest\",\n      \"ernie-5.0-thinking-preview\",\n      \"ernie-x1-32k\",\n      \"ernie-x1-32k-preview\",\n      \"ernie-x1-turbo-32k\",\n      \"ernie-x1.1-preview\",\n      \"essentialai/rnj-1-instruct\",\n      \"exa-answer\",\n      \"exa-research\",\n      \"exa-research-pro\",\n      \"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5\",\n      \"fastgpt\",\n      \"featherless-ai/Qwerky-72B\",\n      \"gemini-2.0-flash-001\",\n      \"gemini-2.0-flash-exp-image-generation\",\n      \"gemini-2.0-flash-lite\",\n      \"gemini-2.0-flash-thinking-exp-01-21\",\n      \"gemini-2.0-flash-thinking-exp-1219\",\n      \"gemini-2.0-pro-exp-02-05\",\n      \"gemini-2.0-pro-reasoner\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-flash-lite\",\n      \"gemini-2.5-flash-lite-preview-06-17\",\n      \"gemini-2.5-flash-lite-preview-09-2025\",\n      \"gemini-2.5-flash-lite-preview-09-2025-thinking\",\n      \"gemini-2.5-flash-nothinking\",\n      \"gemini-2.5-flash-preview-04-17\",\n      \"gemini-2.5-flash-preview-04-17:thinking\",\n      \"gemini-2.5-flash-preview-05-20\",\n      \"gemini-2.5-flash-preview-05-20:thinking\",\n      \"gemini-2.5-flash-preview-09-2025\",\n      \"gemini-2.5-flash-preview-09-2025-thinking\",\n      \"gemini-2.5-pro\",\n      \"gemini-2.5-pro-exp-03-25\",\n      \"gemini-2.5-pro-preview-03-25\",\n      \"gemini-2.5-pro-preview-05-06\",\n      \"gemini-2.5-pro-preview-06-05\",\n      \"gemini-3-pro-image-preview\",\n      \"gemini-3-pro-preview\",\n      \"gemini-3-pro-preview-thinking\",\n      \"gemini-exp-1206\",\n      \"glm-4\",\n      \"glm-4-air\",\n      \"glm-4-air-0111\",\n      \"glm-4-airx\",\n      \"glm-4-flash\",\n      \"glm-4-long\",\n      \"glm-4-plus\",\n      \"glm-4-plus-0111\",\n      \"glm-4.1v-thinking-flash\",\n      \"glm-4.1v-thinking-flashx\",\n      \"glm-z1-air\",\n      \"glm-z1-airx\",\n      \"glm-zero-preview\",\n      \"google/gemini-3-flash-preview\",\n      \"google/gemini-3-flash-preview-thinking\",\n      \"google/gemini-flash-1.5\",\n      \"grok-3-beta\",\n      \"grok-3-fast-beta\",\n      \"grok-3-mini-beta\",\n      \"grok-3-mini-fast-beta\",\n      \"hidream\",\n      \"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated\",\n      \"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated\",\n      \"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated\",\n      \"huihui-ai/Llama-3.3-70B-Instruct-abliterated\",\n      \"huihui-ai/Qwen2.5-32B-Instruct-abliterated\",\n      \"hunyuan-t1-latest\",\n      \"hunyuan-turbos-20250226\",\n      \"inflatebot/MN-12B-Mag-Mell-R1\",\n      \"inflection/inflection-3-pi\",\n      \"inflection/inflection-3-productivity\",\n      \"jamba-large\",\n      \"jamba-large-1.6\",\n      \"jamba-large-1.7\",\n      \"jamba-mini\",\n      \"jamba-mini-1.6\",\n      \"jamba-mini-1.7\",\n      \"kimi-k2-instruct-fast\",\n      \"kimi-thinking-preview\",\n      \"learnlm-1.5-pro-experimental\",\n      \"meganova-ai/manta-flash-1.0\",\n      \"meganova-ai/manta-mini-1.0\",\n      \"meganova-ai/manta-pro-1.0\",\n      \"meituan-longcat/LongCat-Flash-Chat-FP8\",\n      \"meta-llama/llama-3.1-8b-instruct\",\n      \"meta-llama/llama-3.2-3b-instruct\",\n      \"meta-llama/llama-3.2-90b-vision-instruct\",\n      \"meta-llama/llama-3.3-70b-instruct\",\n      \"meta-llama/llama-4-maverick\",\n      \"meta-llama/llama-4-scout\",\n      \"microsoft/MAI-DS-R1-FP8\",\n      \"microsoft/wizardlm-2-8x22b\",\n      \"minimax/minimax-01\",\n      \"minimax/minimax-m2-her\",\n      \"minimax/minimax-m2.1\",\n      \"minimax/minimax-m2.5\",\n      \"minimax/minimax-m2.7\",\n      \"miromind-ai/mirothinker-v1.5-235b\",\n      \"mistral-small-31-24b-instruct\",\n      \"mistralai/Devstral-Small-2505\",\n      \"mistralai/Mistral-Nemo-Instruct-2407\",\n      \"mistralai/codestral-2508\",\n      \"mistralai/devstral-2-123b-instruct-2512\",\n      \"mistralai/ministral-14b-2512\",\n      \"mistralai/ministral-14b-instruct-2512\",\n      \"mistralai/ministral-3b-2512\",\n      \"mistralai/ministral-8b-2512\",\n      \"mistralai/mistral-7b-instruct\",\n      \"mistralai/mistral-large\",\n      \"mistralai/mistral-large-3-675b-instruct-2512\",\n      \"mistralai/mistral-medium-3\",\n      \"mistralai/mistral-medium-3.1\",\n      \"mistralai/mistral-saba\",\n      \"mistralai/mistral-small-creative\",\n      \"mistralai/mistral-tiny\",\n      \"mistralai/mixtral-8x22b-instruct-v0.1\",\n      \"mistralai/mixtral-8x7b-instruct-v0.1\",\n      \"mlabonne/NeuralDaredevil-8B-abliterated\",\n      \"moonshotai/Kimi-Dev-72B\",\n      \"moonshotai/Kimi-K2-Instruct-0905\",\n      \"moonshotai/kimi-k2-instruct\",\n      \"moonshotai/kimi-k2-instruct-0711\",\n      \"moonshotai/kimi-k2-thinking\",\n      \"moonshotai/kimi-k2-thinking-original\",\n      \"moonshotai/kimi-k2-thinking-turbo-original\",\n      \"moonshotai/kimi-k2.5\",\n      \"moonshotai/kimi-k2.5:thinking\",\n      \"moonshotai/kimi-k2.6\",\n      \"moonshotai/kimi-k2.6:thinking\",\n      \"nex-agi/deepseek-v3.1-nex-n1\",\n      \"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16\",\n      \"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF\",\n      \"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1\",\n      \"nvidia/Llama-3.3-Nemotron-Super-49B-v1\",\n      \"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5\",\n      \"nvidia/nemotron-3-nano-30b-a3b\",\n      \"nvidia/nvidia-nemotron-nano-9b-v2\",\n      \"openai/chatgpt-4o-latest\",\n      \"openai/gpt-3.5-turbo\",\n      \"openai/gpt-4-turbo\",\n      \"openai/gpt-4-turbo-preview\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4.1-nano\",\n      \"openai/gpt-4o\",\n      \"openai/gpt-4o-2024-08-06\",\n      \"openai/gpt-4o-2024-11-20\",\n      \"openai/gpt-4o-mini\",\n      \"openai/gpt-4o-mini-search-preview\",\n      \"openai/gpt-4o-search-preview\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-chat-latest\",\n      \"openai/gpt-5-codex\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-5-pro\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.1-2025-11-13\",\n      \"openai/gpt-5.1-chat\",\n      \"openai/gpt-5.1-chat-latest\",\n      \"openai/gpt-5.1-codex\",\n      \"openai/gpt-5.1-codex-max\",\n      \"openai/gpt-5.1-codex-mini\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.2-chat\",\n      \"openai/gpt-5.2-codex\",\n      \"openai/gpt-5.2-pro\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"openai/gpt-oss-safeguard-20b\",\n      \"openai/o1\",\n      \"openai/o1-preview\",\n      \"openai/o1-pro\",\n      \"openai/o3\",\n      \"openai/o3-deep-research\",\n      \"openai/o3-mini\",\n      \"openai/o3-mini-high\",\n      \"openai/o3-mini-low\",\n      \"openai/o3-pro-2025-06-10\",\n      \"openai/o4-mini\",\n      \"openai/o4-mini-deep-research\",\n      \"openai/o4-mini-high\",\n      \"pamanseau/OpenReasoning-Nemotron-32B\",\n      \"phi-4-mini-instruct\",\n      \"phi-4-multimodal-instruct\",\n      \"qvq-max\",\n      \"qwen-3.6-plus\",\n      \"qwen-image\",\n      \"qwen-long\",\n      \"qwen-max\",\n      \"qwen-plus\",\n      \"qwen-turbo\",\n      \"qwen/Qwen3.6-35B-A3B\",\n      \"qwen/Qwen3.6-35B-A3B:thinking\",\n      \"qwen/qwen3.5-397b-a17b\",\n      \"qwen25-vl-72b-instruct\",\n      \"qwen3-30b-a3b-instruct-2507\",\n      \"qwen3-coder-30b-a3b-instruct\",\n      \"qwen3-max-2026-01-23\",\n      \"qwen3-vl-235b-a22b-instruct-original\",\n      \"qwen3-vl-235b-a22b-thinking\",\n      \"qwen3.6-max-preview\",\n      \"qwq-32b\",\n      \"raifle/sorcererlm-8x22b\",\n      \"sarvan-medium\",\n      \"shisa-ai/shisa-v2-llama3.3-70b\",\n      \"shisa-ai/shisa-v2.1-llama3.3-70b\",\n      \"sonar\",\n      \"sonar-deep-research\",\n      \"sonar-pro\",\n      \"sonar-reasoning-pro\",\n      \"soob3123/GrayLine-Qwen3-8B\",\n      \"soob3123/Veiled-Calla-12B\",\n      \"soob3123/amoral-gemma3-27B-v2\",\n      \"step-2-16k-exp\",\n      \"step-2-mini\",\n      \"step-3\",\n      \"step-r1-v-mini\",\n      \"stepfun-ai/step-3.5-flash\",\n      \"stepfun-ai/step-3.5-flash:thinking\",\n      \"study_gpt-chatgpt-4o-latest\",\n      \"tencent/Hunyuan-MT-7B\",\n      \"tngtech/DeepSeek-TNG-R1T2-Chimera\",\n      \"tngtech/tng-r1t-chimera\",\n      \"undi95/remm-slerp-l2-13b\",\n      \"universal-summarizer\",\n      \"unsloth/gemma-3-12b-it\",\n      \"unsloth/gemma-3-1b-it\",\n      \"unsloth/gemma-3-27b-it\",\n      \"unsloth/gemma-3-4b-it\",\n      \"v0-1.0-md\",\n      \"v0-1.5-lg\",\n      \"v0-1.5-md\",\n      \"venice-uncensored\",\n      \"venice-uncensored:web\",\n      \"x-ai/grok-4-07-09\",\n      \"x-ai/grok-4-fast\",\n      \"x-ai/grok-4-fast:thinking\",\n      \"x-ai/grok-4.1-fast\",\n      \"x-ai/grok-4.1-fast-reasoning\",\n      \"x-ai/grok-code-fast-1\",\n      \"xiaomi/mimo-v2-flash\",\n      \"xiaomi/mimo-v2-flash-original\",\n      \"xiaomi/mimo-v2-flash-thinking\",\n      \"xiaomi/mimo-v2-flash-thinking-original\",\n      \"yi-large\",\n      \"yi-lightning\",\n      \"yi-medium-200k\",\n      \"z-ai/glm-4.5v\",\n      \"z-ai/glm-4.5v:thinking\",\n      \"z-ai/glm-4.6\",\n      \"z-ai/glm-4.6:thinking\",\n      \"z-image-turbo\",\n      \"zai-org/glm-4.7\",\n      \"zai-org/glm-4.7-flash\",\n      \"zai-org/glm-5\",\n      \"zai-org/glm-5.1\",\n      \"zai-org/glm-5.1:thinking\",\n      \"zai-org/glm-5:thinking\"\n    ],\n    \"io-net\": [\n      \"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar\",\n      \"Qwen/Qwen2.5-VL-32B-Instruct\",\n      \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n      \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n      \"deepseek-ai/DeepSeek-R1-0528\",\n      \"meta-llama/Llama-3.2-90B-Vision-Instruct\",\n      \"meta-llama/Llama-3.3-70B-Instruct\",\n      \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n      \"mistralai/Devstral-Small-2505\",\n      \"mistralai/Magistral-Small-2506\",\n      \"mistralai/Mistral-Large-Instruct-2411\",\n      \"mistralai/Mistral-Nemo-Instruct-2407\",\n      \"moonshotai/Kimi-K2-Instruct-0905\",\n      \"moonshotai/Kimi-K2-Thinking\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"zai-org/GLM-4.6\"\n    ],\n    \"inception\": [\"mercury-2\", \"mercury-edit-2\"],\n    \"submodel\": [\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n      \"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8\",\n      \"deepseek-ai/DeepSeek-R1-0528\",\n      \"deepseek-ai/DeepSeek-V3-0324\",\n      \"deepseek-ai/DeepSeek-V3.1\",\n      \"openai/gpt-oss-120b\",\n      \"zai-org/GLM-4.5-Air\",\n      \"zai-org/GLM-4.5-FP8\"\n    ],\n    \"requesty\": [\n      \"anthropic/claude-3-7-sonnet\",\n      \"anthropic/claude-haiku-4-5\",\n      \"anthropic/claude-opus-4\",\n      \"anthropic/claude-opus-4-1\",\n      \"anthropic/claude-opus-4-5\",\n      \"anthropic/claude-opus-4-6\",\n      \"anthropic/claude-sonnet-4\",\n      \"anthropic/claude-sonnet-4-5\",\n      \"anthropic/claude-sonnet-4-6\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-pro\",\n      \"google/gemini-3-flash-preview\",\n      \"google/gemini-3-pro-preview\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4o-mini\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-chat\",\n      \"openai/gpt-5-codex\",\n      \"openai/gpt-5-image\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-5-pro\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.1-chat\",\n      \"openai/gpt-5.1-codex\",\n      \"openai/gpt-5.1-codex-max\",\n      \"openai/gpt-5.1-codex-mini\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.2-chat\",\n      \"openai/gpt-5.2-codex\",\n      \"openai/gpt-5.2-pro\",\n      \"openai/gpt-5.3-codex\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.4-pro\",\n      \"openai/o4-mini\",\n      \"xai/grok-4\",\n      \"xai/grok-4-fast\"\n    ],\n    \"zai\": [\n      \"glm-4.5\",\n      \"glm-4.5-air\",\n      \"glm-4.5-flash\",\n      \"glm-4.5v\",\n      \"glm-4.6\",\n      \"glm-4.6v\",\n      \"glm-4.7\",\n      \"glm-4.7-flash\",\n      \"glm-4.7-flashx\",\n      \"glm-5\",\n      \"glm-5-turbo\",\n      \"glm-5.1\",\n      \"glm-5v-turbo\"\n    ],\n    \"zai-coding-plan\": [\"glm-4.5-air\", \"glm-4.7\", \"glm-5-turbo\", \"glm-5.1\", \"glm-5v-turbo\"],\n    \"deepinfra\": [\n      \"MiniMaxAI/MiniMax-M2\",\n      \"MiniMaxAI/MiniMax-M2.1\",\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n      \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\",\n      \"Qwen/Qwen3.5-35B-A3B\",\n      \"Qwen/Qwen3.5-397B-A17B\",\n      \"Qwen/Qwen3.6-35B-A3B\",\n      \"anthropic/claude-3-7-sonnet-latest\",\n      \"anthropic/claude-4-opus\",\n      \"deepseek-ai/DeepSeek-R1-0528\",\n      \"deepseek-ai/DeepSeek-V3.2\",\n      \"deepseek-ai/DeepSeek-V4-Flash\",\n      \"deepseek-ai/DeepSeek-V4-Pro\",\n      \"google/gemma-4-26B-A4B-it\",\n      \"google/gemma-4-31B-it\",\n      \"meta-llama/Llama-3.1-70B-Instruct\",\n      \"meta-llama/Llama-3.1-70B-Instruct-Turbo\",\n      \"meta-llama/Llama-3.1-8B-Instruct\",\n      \"meta-llama/Llama-3.1-8B-Instruct-Turbo\",\n      \"meta-llama/Llama-3.3-70B-Instruct-Turbo\",\n      \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n      \"meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n      \"moonshotai/Kimi-K2-Instruct\",\n      \"moonshotai/Kimi-K2-Instruct-0905\",\n      \"moonshotai/Kimi-K2-Thinking\",\n      \"moonshotai/Kimi-K2.5\",\n      \"moonshotai/Kimi-K2.6\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"xiaomi/mimo-v2.5\",\n      \"xiaomi/mimo-v2.5-pro\",\n      \"zai-org/GLM-4.6\",\n      \"zai-org/GLM-4.6V\",\n      \"zai-org/GLM-4.7\",\n      \"zai-org/GLM-4.7-Flash\",\n      \"zai-org/GLM-5\",\n      \"zai-org/GLM-5.1\"\n    ],\n    \"clarifai\": [\n      \"arcee_ai/AFM/models/trinity-mini\",\n      \"clarifai/main/models/mm-poly-8b\",\n      \"deepseek-ai/deepseek-ocr/models/DeepSeek-OCR\",\n      \"minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput\",\n      \"mistralai/completion/models/Ministral-3-14B-Reasoning-2512\",\n      \"mistralai/completion/models/Ministral-3-3B-Reasoning-2512\",\n      \"moonshotai/chat-completion/models/Kimi-K2_6\",\n      \"openai/chat-completion/models/gpt-oss-120b-high-throughput\",\n      \"openai/chat-completion/models/gpt-oss-20b\",\n      \"qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct\",\n      \"qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507\",\n      \"qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507\"\n    ],\n    \"moark\": [\"GLM-4.7\", \"MiniMax-M2.1\"],\n    \"frogbot\": [\n      \"claude-haiku-4-5\",\n      \"claude-opus-4-6\",\n      \"claude-opus-4-7\",\n      \"claude-sonnet-4-6\",\n      \"deepseek-v4-pro\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-pro\",\n      \"gemini-3-1-pro-preview\",\n      \"gemini-3-flash-preview\",\n      \"gpt-4o\",\n      \"gpt-5-3-codex\",\n      \"gpt-5-4-mini\",\n      \"gpt-5-4-nano\",\n      \"gpt-5-5\",\n      \"gpt-oss-120b\",\n      \"gpt-oss-20b\",\n      \"grok-4-1-fast-non-reasoning\",\n      \"grok-4-1-fast-reasoning\",\n      \"grok-4-3\",\n      \"grok-code-fast-1\",\n      \"kimi-k2-6\",\n      \"kimi-k2.5\",\n      \"minimax-m2-5\",\n      \"minimax-m2-7\",\n      \"qwen-3-6-plus\",\n      \"zai-glm-5-1\"\n    ],\n    \"wandb\": [\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"OpenPipe/Qwen3-14B-Instruct\",\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n      \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n      \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n      \"deepseek-ai/DeepSeek-V3.1\",\n      \"meta-llama/Llama-3.1-70B-Instruct\",\n      \"meta-llama/Llama-3.1-8B-Instruct\",\n      \"meta-llama/Llama-3.3-70B-Instruct\",\n      \"meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n      \"microsoft/Phi-4-mini-instruct\",\n      \"moonshotai/Kimi-K2.5\",\n      \"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"zai-org/GLM-5-FP8\",\n      \"zai-org/GLM-5.1\"\n    ],\n    \"gmicloud\": [\n      \"anthropic/claude-opus-4.6\",\n      \"anthropic/claude-opus-4.7\",\n      \"anthropic/claude-sonnet-4.6\",\n      \"deepseek-ai/DeepSeek-V4-Flash\",\n      \"deepseek-ai/DeepSeek-V4-Pro\",\n      \"moonshotai/Kimi-K2.6\",\n      \"zai-org/GLM-5-FP8\",\n      \"zai-org/GLM-5.1-FP8\"\n    ],\n    \"crof\": [\n      \"deepseek-v3.2\",\n      \"deepseek-v4-flash\",\n      \"deepseek-v4-pro\",\n      \"deepseek-v4-pro-precision\",\n      \"gemma-4-31b-it\",\n      \"glm-4.7\",\n      \"glm-4.7-flash\",\n      \"glm-5\",\n      \"glm-5.1\",\n      \"glm-5.1-precision\",\n      \"greg\",\n      \"kimi-k2.5\",\n      \"kimi-k2.5-lightning\",\n      \"kimi-k2.6\",\n      \"kimi-k2.6-precision\",\n      \"mimo-v2.5-pro\",\n      \"mimo-v2.5-pro-precision\",\n      \"minimax-m2.5\",\n      \"qwen3.5-397b-a17b\",\n      \"qwen3.5-9b\",\n      \"qwen3.6-27b\"\n    ],\n    \"ambient\": [\"moonshotai/kimi-k2.6\", \"zai-org/GLM-5.1-FP8\"],\n    \"routing-run\": [\n      \"route/deepseek-v3.2\",\n      \"route/deepseek-v4-flash\",\n      \"route/deepseek-v4-flash-6bit\",\n      \"route/deepseek-v4-pro\",\n      \"route/deepseek-v4-pro-6bit\",\n      \"route/gemma-4-31b-it\",\n      \"route/glm-5.1\",\n      \"route/glm-5.1-6bit\",\n      \"route/kimi-k2.5\",\n      \"route/kimi-k2.6\",\n      \"route/kimi-k2.6-6bit\",\n      \"route/mimo-v2.5-pro\",\n      \"route/mimo-v2.5-pro-6bit\",\n      \"route/minimax-m2.5\",\n      \"route/minimax-m2.5-highspeed\",\n      \"route/minimax-m2.7\",\n      \"route/minimax-m2.7-highspeed\",\n      \"route/mistral-large-3\",\n      \"route/mistral-medium-2505\",\n      \"route/mistral-small-2503\",\n      \"route/qwen3.6-27b\",\n      \"route/step-3.5-flash\",\n      \"route/step-3.5-flash-2603\",\n      \"route/stepfun-3.5-flash\"\n    ],\n    \"the-grid-ai\": [\n      \"agent-max\",\n      \"agent-prime\",\n      \"agent-standard\",\n      \"code-max\",\n      \"code-prime\",\n      \"code-standard\",\n      \"text-max\",\n      \"text-prime\",\n      \"text-standard\"\n    ],\n    \"fastrouter\": [\n      \"anthropic/claude-opus-4.1\",\n      \"anthropic/claude-sonnet-4\",\n      \"deepseek-ai/deepseek-r1-distill-llama-70b\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-pro\",\n      \"moonshotai/kimi-k2\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"qwen/qwen3-coder\",\n      \"x-ai/grok-4\",\n      \"z-ai/glm-5\"\n    ],\n    \"tencent-coding-plan\": [\n      \"glm-5\",\n      \"hunyuan-2.0-instruct\",\n      \"hunyuan-2.0-thinking\",\n      \"hunyuan-t1\",\n      \"hunyuan-turbos\",\n      \"kimi-k2.5\",\n      \"minimax-m2.5\",\n      \"tc-code-latest\"\n    ],\n    \"cortecs\": [\n      \"claude-4-5-sonnet\",\n      \"claude-4-6-sonnet\",\n      \"claude-haiku-4-5\",\n      \"claude-opus4-5\",\n      \"claude-opus4-6\",\n      \"claude-opus4-7\",\n      \"claude-sonnet-4\",\n      \"codestral-2508\",\n      \"deepseek-r1-0528\",\n      \"deepseek-v3-0324\",\n      \"deepseek-v3.2\",\n      \"deepseek-v4-flash\",\n      \"deepseek-v4-pro\",\n      \"devstral-2512\",\n      \"devstral-small-2512\",\n      \"gemini-2.5-pro\",\n      \"glm-4.5\",\n      \"glm-4.5-air\",\n      \"glm-4.7\",\n      \"glm-4.7-flash\",\n      \"glm-5\",\n      \"glm-5.1\",\n      \"gpt-4.1\",\n      \"gpt-oss-120b\",\n      \"hermes-4-70b\",\n      \"intellect-3\",\n      \"kimi-k2-instruct\",\n      \"kimi-k2-thinking\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\",\n      \"llama-3.1-405b-instruct\",\n      \"llama-3.3-70b-instruct\",\n      \"minimax-m2\",\n      \"minimax-m2.1\",\n      \"minimax-m2.5\",\n      \"minimax-m2.7\",\n      \"mistral-large-2512\",\n      \"mixtral-8x7B-instruct-v0.1\",\n      \"nemotron-3-super-120b-a12b\",\n      \"nova-pro-v1\",\n      \"qwen-2.5-72b-instruct\",\n      \"qwen3-235b-a22b-instruct-2507\",\n      \"qwen3-32b\",\n      \"qwen3-coder-30b-a3b-instruct\",\n      \"qwen3-coder-480b-a35b-instruct\",\n      \"qwen3-coder-next\",\n      \"qwen3-next-80b-a3b-thinking\",\n      \"qwen3.5-122b-a10b\",\n      \"qwen3.5-397b-a17b\"\n    ],\n    \"baseten\": [\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"deepseek-ai/DeepSeek-V3-0324\",\n      \"deepseek-ai/DeepSeek-V3.1\",\n      \"deepseek-ai/DeepSeek-V4-Pro\",\n      \"moonshotai/Kimi-K2.5\",\n      \"moonshotai/Kimi-K2.6\",\n      \"nvidia/Nemotron-120B-A12B\",\n      \"openai/gpt-oss-120b\",\n      \"zai-org/GLM-4.6\",\n      \"zai-org/GLM-4.7\",\n      \"zai-org/GLM-5\"\n    ],\n    \"llama\": [\n      \"cerebras-llama-4-maverick-17b-128e-instruct\",\n      \"cerebras-llama-4-scout-17b-16e-instruct\",\n      \"groq-llama-4-maverick-17b-128e-instruct\",\n      \"llama-3.3-70b-instruct\",\n      \"llama-3.3-8b-instruct\",\n      \"llama-4-maverick-17b-128e-instruct-fp8\",\n      \"llama-4-scout-17b-16e-instruct-fp8\"\n    ],\n    \"novita-ai\": [\n      \"baichuan/baichuan-m2-32b\",\n      \"baidu/ernie-4.5-21B-a3b\",\n      \"baidu/ernie-4.5-21B-a3b-thinking\",\n      \"baidu/ernie-4.5-300b-a47b-paddle\",\n      \"baidu/ernie-4.5-vl-28b-a3b\",\n      \"baidu/ernie-4.5-vl-28b-a3b-thinking\",\n      \"baidu/ernie-4.5-vl-424b-a47b\",\n      \"deepseek/deepseek-ocr\",\n      \"deepseek/deepseek-ocr-2\",\n      \"deepseek/deepseek-prover-v2-671b\",\n      \"deepseek/deepseek-r1-0528\",\n      \"deepseek/deepseek-r1-0528-qwen3-8b\",\n      \"deepseek/deepseek-r1-distill-llama-70b\",\n      \"deepseek/deepseek-r1-distill-qwen-14b\",\n      \"deepseek/deepseek-r1-distill-qwen-32b\",\n      \"deepseek/deepseek-r1-turbo\",\n      \"deepseek/deepseek-v3-0324\",\n      \"deepseek/deepseek-v3-turbo\",\n      \"deepseek/deepseek-v3.1\",\n      \"deepseek/deepseek-v3.1-terminus\",\n      \"deepseek/deepseek-v3.2\",\n      \"deepseek/deepseek-v3.2-exp\",\n      \"deepseek/deepseek-v4-flash\",\n      \"deepseek/deepseek-v4-pro\",\n      \"google/gemma-3-12b-it\",\n      \"google/gemma-3-27b-it\",\n      \"google/gemma-4-26b-a4b-it\",\n      \"google/gemma-4-31b-it\",\n      \"gryphe/mythomax-l2-13b\",\n      \"inclusionai/ling-2.6-1t\",\n      \"inclusionai/ling-2.6-flash\",\n      \"kwaipilot/kat-coder-pro\",\n      \"meta-llama/llama-3-70b-instruct\",\n      \"meta-llama/llama-3-8b-instruct\",\n      \"meta-llama/llama-3.1-8b-instruct\",\n      \"meta-llama/llama-3.2-3b-instruct\",\n      \"meta-llama/llama-3.3-70b-instruct\",\n      \"meta-llama/llama-4-maverick-17b-128e-instruct-fp8\",\n      \"meta-llama/llama-4-scout-17b-16e-instruct\",\n      \"microsoft/wizardlm-2-8x22b\",\n      \"minimax/minimax-m2\",\n      \"minimax/minimax-m2.1\",\n      \"minimax/minimax-m2.5\",\n      \"minimax/minimax-m2.5-highspeed\",\n      \"minimax/minimax-m2.7\",\n      \"minimaxai/minimax-m1-80k\",\n      \"mistralai/mistral-nemo\",\n      \"moonshotai/kimi-k2-0905\",\n      \"moonshotai/kimi-k2-instruct\",\n      \"moonshotai/kimi-k2-thinking\",\n      \"moonshotai/kimi-k2.5\",\n      \"moonshotai/kimi-k2.6\",\n      \"nousresearch/hermes-2-pro-llama-3-8b\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"paddlepaddle/paddleocr-vl\",\n      \"qwen/qwen-2.5-72b-instruct\",\n      \"qwen/qwen-mt-plus\",\n      \"qwen/qwen2.5-7b-instruct\",\n      \"qwen/qwen2.5-vl-72b-instruct\",\n      \"qwen/qwen3-235b-a22b-fp8\",\n      \"qwen/qwen3-235b-a22b-instruct-2507\",\n      \"qwen/qwen3-235b-a22b-thinking-2507\",\n      \"qwen/qwen3-30b-a3b-fp8\",\n      \"qwen/qwen3-32b-fp8\",\n      \"qwen/qwen3-4b-fp8\",\n      \"qwen/qwen3-8b-fp8\",\n      \"qwen/qwen3-coder-30b-a3b-instruct\",\n      \"qwen/qwen3-coder-480b-a35b-instruct\",\n      \"qwen/qwen3-coder-next\",\n      \"qwen/qwen3-max\",\n      \"qwen/qwen3-next-80b-a3b-instruct\",\n      \"qwen/qwen3-next-80b-a3b-thinking\",\n      \"qwen/qwen3-omni-30b-a3b-instruct\",\n      \"qwen/qwen3-omni-30b-a3b-thinking\",\n      \"qwen/qwen3-vl-235b-a22b-instruct\",\n      \"qwen/qwen3-vl-235b-a22b-thinking\",\n      \"qwen/qwen3-vl-30b-a3b-instruct\",\n      \"qwen/qwen3-vl-30b-a3b-thinking\",\n      \"qwen/qwen3-vl-8b-instruct\",\n      \"qwen/qwen3.5-122b-a10b\",\n      \"qwen/qwen3.5-27b\",\n      \"qwen/qwen3.5-35b-a3b\",\n      \"qwen/qwen3.5-397b-a17b\",\n      \"sao10K/L3-8B-stheno-v3.2\",\n      \"sao10K/l3-70b-euryale-v2.1\",\n      \"sao10K/l3-8b-lunaris\",\n      \"sao10K/l31-70b-euryale-v2.2\",\n      \"xiaomimimo/mimo-v2-flash\",\n      \"zai-org/autoglm-phone-9b-multilingual\",\n      \"zai-org/glm-4.5\",\n      \"zai-org/glm-4.5-air\",\n      \"zai-org/glm-4.5v\",\n      \"zai-org/glm-4.6\",\n      \"zai-org/glm-4.6v\",\n      \"zai-org/glm-4.7\",\n      \"zai-org/glm-4.7-flash\",\n      \"zai-org/glm-5\",\n      \"zai-org/glm-5.1\"\n    ],\n    \"digitalocean\": [\n      \"alibaba-qwen3-32b\",\n      \"all-mini-lm-l6-v2\",\n      \"anthropic-claude-4.1-opus\",\n      \"anthropic-claude-4.5-haiku\",\n      \"anthropic-claude-4.5-sonnet\",\n      \"anthropic-claude-4.6-sonnet\",\n      \"anthropic-claude-haiku-4.5\",\n      \"anthropic-claude-opus-4\",\n      \"anthropic-claude-opus-4.5\",\n      \"anthropic-claude-opus-4.6\",\n      \"anthropic-claude-opus-4.7\",\n      \"anthropic-claude-sonnet-4\",\n      \"arcee-trinity-large-thinking\",\n      \"bge-m3\",\n      \"bge-reranker-v2-m3\",\n      \"deepseek-3.2\",\n      \"deepseek-r1-distill-llama-70b\",\n      \"deepseek-v3\",\n      \"deepseek-v4-pro\",\n      \"e5-large-v2\",\n      \"fal-ai/elevenlabs/tts/multilingual-v2\",\n      \"fal-ai/fast-sdxl\",\n      \"fal-ai/flux/schnell\",\n      \"fal-ai/stable-audio-25/text-to-audio\",\n      \"gemma-4-31B-it\",\n      \"glm-5\",\n      \"gte-large-en-v1.5\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\",\n      \"llama-4-maverick\",\n      \"llama3-8b-instruct\",\n      \"llama3.3-70b-instruct\",\n      \"minimax-m2.5\",\n      \"ministral-3-8b-instruct-2512\",\n      \"mistral-3-14B\",\n      \"mistral-7b-instruct-v0.3\",\n      \"multi-qa-mpnet-base-dot-v1\",\n      \"nemotron-3-nano-30b\",\n      \"nemotron-3-nano-omni\",\n      \"nemotron-nano-12b-v2-vl\",\n      \"nvidia-nemotron-3-super-120b\",\n      \"openai-gpt-4.1\",\n      \"openai-gpt-4o\",\n      \"openai-gpt-4o-mini\",\n      \"openai-gpt-5\",\n      \"openai-gpt-5-mini\",\n      \"openai-gpt-5-nano\",\n      \"openai-gpt-5.1-codex-max\",\n      \"openai-gpt-5.2\",\n      \"openai-gpt-5.2-pro\",\n      \"openai-gpt-5.3-codex\",\n      \"openai-gpt-5.4\",\n      \"openai-gpt-5.4-mini\",\n      \"openai-gpt-5.4-nano\",\n      \"openai-gpt-5.4-pro\",\n      \"openai-gpt-5.5\",\n      \"openai-gpt-image-1\",\n      \"openai-gpt-image-1.5\",\n      \"openai-gpt-image-2\",\n      \"openai-gpt-oss-120b\",\n      \"openai-gpt-oss-20b\",\n      \"openai-o1\",\n      \"openai-o3\",\n      \"openai-o3-mini\",\n      \"qwen-2.5-14b-instruct\",\n      \"qwen3-coder-flash\",\n      \"qwen3-embedding-0.6b\",\n      \"qwen3-tts-voicedesign\",\n      \"qwen3.5-397b-a17b\",\n      \"stable-diffusion-3.5-large\",\n      \"wan2-2-t2v-a14b\"\n    ],\n    \"moonshotai\": [\n      \"kimi-k2-0711-preview\",\n      \"kimi-k2-0905-preview\",\n      \"kimi-k2-thinking\",\n      \"kimi-k2-thinking-turbo\",\n      \"kimi-k2-turbo-preview\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\"\n    ],\n    \"mistral\": [\n      \"codestral-latest\",\n      \"devstral-2512\",\n      \"devstral-medium-2507\",\n      \"devstral-medium-latest\",\n      \"devstral-small-2505\",\n      \"devstral-small-2507\",\n      \"labs-devstral-small-2512\",\n      \"magistral-medium-latest\",\n      \"magistral-small\",\n      \"ministral-3b-latest\",\n      \"ministral-8b-latest\",\n      \"mistral-embed\",\n      \"mistral-large-2411\",\n      \"mistral-large-2512\",\n      \"mistral-large-latest\",\n      \"mistral-medium-2505\",\n      \"mistral-medium-2508\",\n      \"mistral-medium-2604\",\n      \"mistral-medium-latest\",\n      \"mistral-nemo\",\n      \"mistral-small-2506\",\n      \"mistral-small-2603\",\n      \"mistral-small-latest\",\n      \"open-mistral-7b\",\n      \"open-mixtral-8x22b\",\n      \"open-mixtral-8x7b\",\n      \"pixtral-12b\",\n      \"pixtral-large-latest\"\n    ],\n    \"kilo\": [\n      \"ai21/jamba-large-1.7\",\n      \"aion-labs/aion-1.0\",\n      \"aion-labs/aion-1.0-mini\",\n      \"aion-labs/aion-2.0\",\n      \"aion-labs/aion-rp-llama-3.1-8b\",\n      \"alfredpros/codellama-7b-instruct-solidity\",\n      \"alibaba/tongyi-deepresearch-30b-a3b\",\n      \"allenai/olmo-3-32b-think\",\n      \"amazon/nova-2-lite-v1\",\n      \"amazon/nova-lite-v1\",\n      \"amazon/nova-micro-v1\",\n      \"amazon/nova-premier-v1\",\n      \"amazon/nova-pro-v1\",\n      \"anthracite-org/magnum-v4-72b\",\n      \"anthropic/claude-3-haiku\",\n      \"anthropic/claude-3.5-haiku\",\n      \"anthropic/claude-haiku-4.5\",\n      \"anthropic/claude-opus-4\",\n      \"anthropic/claude-opus-4.1\",\n      \"anthropic/claude-opus-4.5\",\n      \"anthropic/claude-opus-4.6\",\n      \"anthropic/claude-opus-4.6-fast\",\n      \"anthropic/claude-opus-4.7\",\n      \"anthropic/claude-opus-4.7-fast\",\n      \"anthropic/claude-sonnet-4\",\n      \"anthropic/claude-sonnet-4.5\",\n      \"anthropic/claude-sonnet-4.6\",\n      \"arcee-ai/coder-large\",\n      \"arcee-ai/maestro-reasoning\",\n      \"arcee-ai/spotlight\",\n      \"arcee-ai/trinity-large-preview\",\n      \"arcee-ai/trinity-large-thinking\",\n      \"arcee-ai/trinity-mini\",\n      \"arcee-ai/virtuoso-large\",\n      \"baidu/cobuddy:free\",\n      \"baidu/ernie-4.5-21b-a3b\",\n      \"baidu/ernie-4.5-21b-a3b-thinking\",\n      \"baidu/ernie-4.5-300b-a47b\",\n      \"baidu/ernie-4.5-vl-28b-a3b\",\n      \"baidu/ernie-4.5-vl-424b-a47b\",\n      \"baidu/qianfan-ocr-fast\",\n      \"bytedance-seed/seed-1.6\",\n      \"bytedance-seed/seed-1.6-flash\",\n      \"bytedance-seed/seed-2.0-lite\",\n      \"bytedance-seed/seed-2.0-mini\",\n      \"bytedance/ui-tars-1.5-7b\",\n      \"cohere/command-a\",\n      \"cohere/command-r-08-2024\",\n      \"cohere/command-r-plus-08-2024\",\n      \"cohere/command-r7b-12-2024\",\n      \"deepcogito/cogito-v2.1-671b\",\n      \"deepseek/deepseek-chat\",\n      \"deepseek/deepseek-chat-v3-0324\",\n      \"deepseek/deepseek-chat-v3.1\",\n      \"deepseek/deepseek-r1\",\n      \"deepseek/deepseek-r1-0528\",\n      \"deepseek/deepseek-r1-distill-llama-70b\",\n      \"deepseek/deepseek-r1-distill-qwen-32b\",\n      \"deepseek/deepseek-v3.1-terminus\",\n      \"deepseek/deepseek-v3.2\",\n      \"deepseek/deepseek-v3.2-exp\",\n      \"deepseek/deepseek-v3.2-speciale\",\n      \"deepseek/deepseek-v4-flash\",\n      \"deepseek/deepseek-v4-flash:free\",\n      \"deepseek/deepseek-v4-pro\",\n      \"essentialai/rnj-1-instruct\",\n      \"google/gemini-2.0-flash-001\",\n      \"google/gemini-2.0-flash-lite-001\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-flash-image\",\n      \"google/gemini-2.5-flash-lite\",\n      \"google/gemini-2.5-flash-lite-preview-09-2025\",\n      \"google/gemini-2.5-pro\",\n      \"google/gemini-2.5-pro-preview\",\n      \"google/gemini-2.5-pro-preview-05-06\",\n      \"google/gemini-3-flash-preview\",\n      \"google/gemini-3-pro-image-preview\",\n      \"google/gemini-3.1-flash-image-preview\",\n      \"google/gemini-3.1-flash-lite\",\n      \"google/gemini-3.1-flash-lite-preview\",\n      \"google/gemini-3.1-pro-preview\",\n      \"google/gemini-3.1-pro-preview-customtools\",\n      \"google/gemma-2-27b-it\",\n      \"google/gemma-3-12b-it\",\n      \"google/gemma-3-27b-it\",\n      \"google/gemma-3-4b-it\",\n      \"google/gemma-3n-e4b-it\",\n      \"google/gemma-4-26b-a4b-it\",\n      \"google/gemma-4-31b-it\",\n      \"google/lyria-3-clip-preview\",\n      \"google/lyria-3-pro-preview\",\n      \"gryphe/mythomax-l2-13b\",\n      \"ibm-granite/granite-4.0-h-micro\",\n      \"ibm-granite/granite-4.1-8b\",\n      \"inception/mercury-2\",\n      \"inclusionai/ling-2.6-1t\",\n      \"inclusionai/ling-2.6-flash\",\n      \"inclusionai/ring-2.6-1t\",\n      \"inflection/inflection-3-pi\",\n      \"inflection/inflection-3-productivity\",\n      \"kilo-auto/balanced\",\n      \"kilo-auto/free\",\n      \"kilo-auto/frontier\",\n      \"kilo-auto/small\",\n      \"kwaipilot/kat-coder-pro-v2\",\n      \"liquid/lfm-2-24b-a2b\",\n      \"mancer/weaver\",\n      \"meta-llama/llama-3-70b-instruct\",\n      \"meta-llama/llama-3-8b-instruct\",\n      \"meta-llama/llama-3.1-70b-instruct\",\n      \"meta-llama/llama-3.1-8b-instruct\",\n      \"meta-llama/llama-3.2-11b-vision-instruct\",\n      \"meta-llama/llama-3.2-1b-instruct\",\n      \"meta-llama/llama-3.2-3b-instruct\",\n      \"meta-llama/llama-3.3-70b-instruct\",\n      \"meta-llama/llama-4-maverick\",\n      \"meta-llama/llama-4-scout\",\n      \"meta-llama/llama-guard-3-8b\",\n      \"meta-llama/llama-guard-4-12b\",\n      \"microsoft/phi-4\",\n      \"microsoft/phi-4-mini-instruct\",\n      \"microsoft/wizardlm-2-8x22b\",\n      \"minimax/minimax-01\",\n      \"minimax/minimax-m1\",\n      \"minimax/minimax-m2\",\n      \"minimax/minimax-m2-her\",\n      \"minimax/minimax-m2.1\",\n      \"minimax/minimax-m2.5\",\n      \"minimax/minimax-m2.7\",\n      \"mistralai/codestral-2508\",\n      \"mistralai/devstral-2512\",\n      \"mistralai/devstral-medium\",\n      \"mistralai/devstral-small\",\n      \"mistralai/ministral-14b-2512\",\n      \"mistralai/ministral-3b-2512\",\n      \"mistralai/ministral-8b-2512\",\n      \"mistralai/mistral-7b-instruct-v0.1\",\n      \"mistralai/mistral-large\",\n      \"mistralai/mistral-large-2407\",\n      \"mistralai/mistral-large-2411\",\n      \"mistralai/mistral-large-2512\",\n      \"mistralai/mistral-medium-3\",\n      \"mistralai/mistral-medium-3-5\",\n      \"mistralai/mistral-medium-3.1\",\n      \"mistralai/mistral-nemo\",\n      \"mistralai/mistral-saba\",\n      \"mistralai/mistral-small-24b-instruct-2501\",\n      \"mistralai/mistral-small-2603\",\n      \"mistralai/mistral-small-3.1-24b-instruct\",\n      \"mistralai/mistral-small-3.2-24b-instruct\",\n      \"mistralai/mixtral-8x22b-instruct\",\n      \"mistralai/pixtral-large-2411\",\n      \"mistralai/voxtral-small-24b-2507\",\n      \"moonshotai/kimi-k2\",\n      \"moonshotai/kimi-k2-0905\",\n      \"moonshotai/kimi-k2-thinking\",\n      \"moonshotai/kimi-k2.5\",\n      \"moonshotai/kimi-k2.6\",\n      \"morph/morph-v3-fast\",\n      \"morph/morph-v3-large\",\n      \"nex-agi/deepseek-v3.1-nex-n1\",\n      \"nousresearch/hermes-2-pro-llama-3-8b\",\n      \"nousresearch/hermes-3-llama-3.1-405b\",\n      \"nousresearch/hermes-3-llama-3.1-70b\",\n      \"nousresearch/hermes-4-405b\",\n      \"nousresearch/hermes-4-70b\",\n      \"nvidia/llama-3.3-nemotron-super-49b-v1.5\",\n      \"nvidia/nemotron-3-nano-30b-a3b\",\n      \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free\",\n      \"nvidia/nemotron-3-super-120b-a12b\",\n      \"nvidia/nemotron-3-super-120b-a12b:free\",\n      \"nvidia/nemotron-nano-9b-v2\",\n      \"openai/gpt-3.5-turbo\",\n      \"openai/gpt-3.5-turbo-0613\",\n      \"openai/gpt-3.5-turbo-16k\",\n      \"openai/gpt-3.5-turbo-instruct\",\n      \"openai/gpt-4\",\n      \"openai/gpt-4-0314\",\n      \"openai/gpt-4-1106-preview\",\n      \"openai/gpt-4-turbo\",\n      \"openai/gpt-4-turbo-preview\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4.1-nano\",\n      \"openai/gpt-4o\",\n      \"openai/gpt-4o-2024-05-13\",\n      \"openai/gpt-4o-2024-08-06\",\n      \"openai/gpt-4o-2024-11-20\",\n      \"openai/gpt-4o-audio-preview\",\n      \"openai/gpt-4o-mini\",\n      \"openai/gpt-4o-mini-2024-07-18\",\n      \"openai/gpt-4o-mini-search-preview\",\n      \"openai/gpt-4o-search-preview\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-chat\",\n      \"openai/gpt-5-codex\",\n      \"openai/gpt-5-image\",\n      \"openai/gpt-5-image-mini\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-5-pro\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.1-chat\",\n      \"openai/gpt-5.1-codex\",\n      \"openai/gpt-5.1-codex-max\",\n      \"openai/gpt-5.1-codex-mini\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.2-chat\",\n      \"openai/gpt-5.2-codex\",\n      \"openai/gpt-5.2-pro\",\n      \"openai/gpt-5.3-chat\",\n      \"openai/gpt-5.3-codex\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.4-image-2\",\n      \"openai/gpt-5.4-mini\",\n      \"openai/gpt-5.4-nano\",\n      \"openai/gpt-5.4-pro\",\n      \"openai/gpt-5.5\",\n      \"openai/gpt-5.5-pro\",\n      \"openai/gpt-audio\",\n      \"openai/gpt-audio-mini\",\n      \"openai/gpt-chat-latest\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"openai/gpt-oss-safeguard-20b\",\n      \"openai/o1\",\n      \"openai/o1-pro\",\n      \"openai/o3\",\n      \"openai/o3-deep-research\",\n      \"openai/o3-mini\",\n      \"openai/o3-mini-high\",\n      \"openai/o3-pro\",\n      \"openai/o4-mini\",\n      \"openai/o4-mini-deep-research\",\n      \"openai/o4-mini-high\",\n      \"openrouter/auto\",\n      \"openrouter/bodybuilder\",\n      \"openrouter/free\",\n      \"openrouter/owl-alpha\",\n      \"openrouter/pareto-code\",\n      \"perceptron/perceptron-mk1\",\n      \"perplexity/sonar\",\n      \"perplexity/sonar-deep-research\",\n      \"perplexity/sonar-pro\",\n      \"perplexity/sonar-pro-search\",\n      \"perplexity/sonar-reasoning-pro\",\n      \"poolside/laguna-m.1:free\",\n      \"poolside/laguna-xs.2:free\",\n      \"prime-intellect/intellect-3\",\n      \"qwen/qwen-2.5-72b-instruct\",\n      \"qwen/qwen-2.5-7b-instruct\",\n      \"qwen/qwen-2.5-coder-32b-instruct\",\n      \"qwen/qwen-plus\",\n      \"qwen/qwen-plus-2025-07-28\",\n      \"qwen/qwen-plus-2025-07-28:thinking\",\n      \"qwen/qwen2.5-vl-72b-instruct\",\n      \"qwen/qwen3-14b\",\n      \"qwen/qwen3-235b-a22b\",\n      \"qwen/qwen3-235b-a22b-2507\",\n      \"qwen/qwen3-235b-a22b-thinking-2507\",\n      \"qwen/qwen3-30b-a3b\",\n      \"qwen/qwen3-30b-a3b-instruct-2507\",\n      \"qwen/qwen3-30b-a3b-thinking-2507\",\n      \"qwen/qwen3-32b\",\n      \"qwen/qwen3-8b\",\n      \"qwen/qwen3-coder\",\n      \"qwen/qwen3-coder-30b-a3b-instruct\",\n      \"qwen/qwen3-coder-flash\",\n      \"qwen/qwen3-coder-next\",\n      \"qwen/qwen3-coder-plus\",\n      \"qwen/qwen3-max\",\n      \"qwen/qwen3-max-thinking\",\n      \"qwen/qwen3-next-80b-a3b-instruct\",\n      \"qwen/qwen3-next-80b-a3b-thinking\",\n      \"qwen/qwen3-vl-235b-a22b-instruct\",\n      \"qwen/qwen3-vl-235b-a22b-thinking\",\n      \"qwen/qwen3-vl-30b-a3b-instruct\",\n      \"qwen/qwen3-vl-30b-a3b-thinking\",\n      \"qwen/qwen3-vl-32b-instruct\",\n      \"qwen/qwen3-vl-8b-instruct\",\n      \"qwen/qwen3-vl-8b-thinking\",\n      \"qwen/qwen3.5-122b-a10b\",\n      \"qwen/qwen3.5-27b\",\n      \"qwen/qwen3.5-35b-a3b\",\n      \"qwen/qwen3.5-397b-a17b\",\n      \"qwen/qwen3.5-9b\",\n      \"qwen/qwen3.5-flash-02-23\",\n      \"qwen/qwen3.5-plus-02-15\",\n      \"qwen/qwen3.5-plus-20260420\",\n      \"qwen/qwen3.6-27b\",\n      \"qwen/qwen3.6-35b-a3b\",\n      \"qwen/qwen3.6-flash\",\n      \"qwen/qwen3.6-max-preview\",\n      \"qwen/qwen3.6-plus\",\n      \"rekaai/reka-edge\",\n      \"rekaai/reka-flash-3\",\n      \"relace/relace-apply-3\",\n      \"relace/relace-search\",\n      \"sao10k/l3-euryale-70b\",\n      \"sao10k/l3-lunaris-8b\",\n      \"sao10k/l3.1-70b-hanami-x1\",\n      \"sao10k/l3.1-euryale-70b\",\n      \"sao10k/l3.3-euryale-70b\",\n      \"stepfun/step-3.5-flash\",\n      \"stepfun/step-3.5-flash:free\",\n      \"switchpoint/router\",\n      \"tencent/hunyuan-a13b-instruct\",\n      \"tencent/hy3-preview\",\n      \"thedrummer/cydonia-24b-v4.1\",\n      \"thedrummer/rocinante-12b\",\n      \"thedrummer/skyfall-36b-v2\",\n      \"thedrummer/unslopnemo-12b\",\n      \"undi95/remm-slerp-l2-13b\",\n      \"upstage/solar-pro-3\",\n      \"writer/palmyra-x5\",\n      \"x-ai/grok-4.20\",\n      \"x-ai/grok-4.20-multi-agent\",\n      \"x-ai/grok-4.3\",\n      \"x-ai/grok-code-fast-1:optimized:free\",\n      \"xiaomi/mimo-v2-flash\",\n      \"xiaomi/mimo-v2-omni\",\n      \"xiaomi/mimo-v2-pro\",\n      \"xiaomi/mimo-v2.5\",\n      \"xiaomi/mimo-v2.5-pro\",\n      \"z-ai/glm-4-32b\",\n      \"z-ai/glm-4.5\",\n      \"z-ai/glm-4.5-air\",\n      \"z-ai/glm-4.5v\",\n      \"z-ai/glm-4.6\",\n      \"z-ai/glm-4.6v\",\n      \"z-ai/glm-4.7\",\n      \"z-ai/glm-4.7-flash\",\n      \"z-ai/glm-5\",\n      \"z-ai/glm-5-turbo\",\n      \"z-ai/glm-5.1\",\n      \"z-ai/glm-5v-turbo\",\n      \"~anthropic/claude-haiku-latest\",\n      \"~anthropic/claude-opus-latest\",\n      \"~anthropic/claude-sonnet-latest\",\n      \"~google/gemini-flash-latest\",\n      \"~google/gemini-pro-latest\",\n      \"~moonshotai/kimi-latest\",\n      \"~openai/gpt-latest\",\n      \"~openai/gpt-mini-latest\"\n    ],\n    \"cloudflare-workers-ai\": [\n      \"@cf/aisingapore/gemma-sea-lion-v4-27b-it\",\n      \"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b\",\n      \"@cf/google/gemma-3-12b-it\",\n      \"@cf/google/gemma-4-26b-a4b-it\",\n      \"@cf/ibm-granite/granite-4.0-h-micro\",\n      \"@cf/meta/llama-2-7b-chat-fp16\",\n      \"@cf/meta/llama-3-8b-instruct\",\n      \"@cf/meta/llama-3-8b-instruct-awq\",\n      \"@cf/meta/llama-3.1-8b-instruct-awq\",\n      \"@cf/meta/llama-3.1-8b-instruct-fp8\",\n      \"@cf/meta/llama-3.2-11b-vision-instruct\",\n      \"@cf/meta/llama-3.2-1b-instruct\",\n      \"@cf/meta/llama-3.2-3b-instruct\",\n      \"@cf/meta/llama-3.3-70b-instruct-fp8-fast\",\n      \"@cf/meta/llama-4-scout-17b-16e-instruct\",\n      \"@cf/meta/llama-guard-3-8b\",\n      \"@cf/mistral/mistral-7b-instruct-v0.1\",\n      \"@cf/mistralai/mistral-small-3.1-24b-instruct\",\n      \"@cf/moonshotai/kimi-k2.5\",\n      \"@cf/moonshotai/kimi-k2.6\",\n      \"@cf/nvidia/nemotron-3-120b-a12b\",\n      \"@cf/openai/gpt-oss-120b\",\n      \"@cf/openai/gpt-oss-20b\",\n      \"@cf/qwen/qwen2.5-coder-32b-instruct\",\n      \"@cf/qwen/qwen3-30b-a3b-fp8\",\n      \"@cf/qwen/qwq-32b\",\n      \"@cf/zai-org/glm-4.7-flash\"\n    ],\n    \"lmstudio\": [\"openai/gpt-oss-20b\", \"qwen/qwen3-30b-a3b-2507\", \"qwen/qwen3-coder-30b\"],\n    \"xiaomi-token-plan-cn\": [\n      \"mimo-v2-flash\",\n      \"mimo-v2-omni\",\n      \"mimo-v2-pro\",\n      \"mimo-v2-tts\",\n      \"mimo-v2.5\",\n      \"mimo-v2.5-pro\"\n    ],\n    \"morph\": [\"auto\", \"morph-v3-fast\", \"morph-v3-large\"],\n    \"nearai\": [\n      \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n      \"Qwen/Qwen3-Embedding-0.6B\",\n      \"Qwen/Qwen3-Reranker-0.6B\",\n      \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n      \"Qwen/Qwen3.5-122B-A10B\",\n      \"anthropic/claude-haiku-4-5\",\n      \"anthropic/claude-opus-4-6\",\n      \"anthropic/claude-opus-4-7\",\n      \"anthropic/claude-sonnet-4-5\",\n      \"anthropic/claude-sonnet-4-6\",\n      \"black-forest-labs/FLUX.2-klein-4B\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-flash-lite\",\n      \"google/gemini-2.5-pro\",\n      \"google/gemini-3.1-flash-lite\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4.1-nano\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.4-mini\",\n      \"openai/gpt-5.4-nano\",\n      \"openai/gpt-5.5\",\n      \"openai/gpt-oss-120b\",\n      \"openai/o3\",\n      \"openai/o3-mini\",\n      \"openai/o4-mini\",\n      \"openai/whisper-large-v3\",\n      \"zai-org/GLM-5.1-FP8\"\n    ],\n    \"abacus\": [\n      \"Qwen/QwQ-32B\",\n      \"Qwen/Qwen2.5-72B-Instruct\",\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"Qwen/Qwen3-32B\",\n      \"Qwen/qwen3-coder-480b-a35b-instruct\",\n      \"claude-3-7-sonnet-20250219\",\n      \"claude-haiku-4-5-20251001\",\n      \"claude-opus-4-1-20250805\",\n      \"claude-opus-4-20250514\",\n      \"claude-opus-4-5-20251101\",\n      \"claude-opus-4-6\",\n      \"claude-sonnet-4-20250514\",\n      \"claude-sonnet-4-5-20250929\",\n      \"claude-sonnet-4-6\",\n      \"deepseek-ai/DeepSeek-R1\",\n      \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n      \"deepseek-ai/DeepSeek-V3.2\",\n      \"deepseek/deepseek-v3.1\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-pro\",\n      \"gemini-3-flash-preview\",\n      \"gemini-3.1-flash-lite-preview\",\n      \"gemini-3.1-pro-preview\",\n      \"gpt-4.1\",\n      \"gpt-4.1-mini\",\n      \"gpt-4.1-nano\",\n      \"gpt-4o-2024-11-20\",\n      \"gpt-4o-mini\",\n      \"gpt-5\",\n      \"gpt-5-codex\",\n      \"gpt-5-mini\",\n      \"gpt-5-nano\",\n      \"gpt-5.1\",\n      \"gpt-5.1-chat-latest\",\n      \"gpt-5.1-codex\",\n      \"gpt-5.1-codex-max\",\n      \"gpt-5.2\",\n      \"gpt-5.2-chat-latest\",\n      \"gpt-5.2-codex\",\n      \"gpt-5.3-chat-latest\",\n      \"gpt-5.3-codex\",\n      \"gpt-5.3-codex-xhigh\",\n      \"gpt-5.4\",\n      \"grok-4-0709\",\n      \"grok-4-1-fast-non-reasoning\",\n      \"grok-4-fast-non-reasoning\",\n      \"grok-code-fast-1\",\n      \"kimi-k2-turbo-preview\",\n      \"kimi-k2.5\",\n      \"llama-3.3-70b-versatile\",\n      \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n      \"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo\",\n      \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n      \"o3\",\n      \"o3-mini\",\n      \"o3-pro\",\n      \"o4-mini\",\n      \"openai/gpt-oss-120b\",\n      \"qwen-2.5-coder-32b\",\n      \"qwen3-max\",\n      \"route-llm\",\n      \"zai-org/glm-4.5\",\n      \"zai-org/glm-4.6\",\n      \"zai-org/glm-4.7\",\n      \"zai-org/glm-5\"\n    ],\n    \"privatemode-ai\": [\"gemma-3-27b\", \"gpt-oss-120b\", \"qwen3-coder-30b-a3b\", \"qwen3-embedding-4b\", \"whisper-large-v3\"],\n    \"minimax-cn-coding-plan\": [\n      \"MiniMax-M2\",\n      \"MiniMax-M2.1\",\n      \"MiniMax-M2.5\",\n      \"MiniMax-M2.5-highspeed\",\n      \"MiniMax-M2.7\",\n      \"MiniMax-M2.7-highspeed\"\n    ],\n    \"xiaomi-token-plan-ams\": [\n      \"mimo-v2-flash\",\n      \"mimo-v2-omni\",\n      \"mimo-v2-pro\",\n      \"mimo-v2-tts\",\n      \"mimo-v2.5\",\n      \"mimo-v2.5-pro\"\n    ],\n    \"cloudferro-sherlock\": [\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"meta-llama/Llama-3.3-70B-Instruct\",\n      \"openai/gpt-oss-120b\",\n      \"speakleash/Bielik-11B-v2.6-Instruct\",\n      \"speakleash/Bielik-11B-v3.0-Instruct\"\n    ],\n    \"openai\": [\n      \"chatgpt-image-latest\",\n      \"gpt-3.5-turbo\",\n      \"gpt-4\",\n      \"gpt-4-turbo\",\n      \"gpt-4.1\",\n      \"gpt-4.1-mini\",\n      \"gpt-4.1-nano\",\n      \"gpt-4o\",\n      \"gpt-4o-2024-05-13\",\n      \"gpt-4o-2024-08-06\",\n      \"gpt-4o-2024-11-20\",\n      \"gpt-4o-mini\",\n      \"gpt-5\",\n      \"gpt-5-chat-latest\",\n      \"gpt-5-codex\",\n      \"gpt-5-mini\",\n      \"gpt-5-nano\",\n      \"gpt-5-pro\",\n      \"gpt-5.1\",\n      \"gpt-5.1-chat-latest\",\n      \"gpt-5.1-codex\",\n      \"gpt-5.1-codex-max\",\n      \"gpt-5.1-codex-mini\",\n      \"gpt-5.2\",\n      \"gpt-5.2-chat-latest\",\n      \"gpt-5.2-codex\",\n      \"gpt-5.2-pro\",\n      \"gpt-5.3-chat-latest\",\n      \"gpt-5.3-codex\",\n      \"gpt-5.3-codex-spark\",\n      \"gpt-5.4\",\n      \"gpt-5.4-mini\",\n      \"gpt-5.4-nano\",\n      \"gpt-5.4-pro\",\n      \"gpt-5.5\",\n      \"gpt-5.5-pro\",\n      \"gpt-image-1\",\n      \"gpt-image-1-mini\",\n      \"gpt-image-1.5\",\n      \"o1\",\n      \"o1-mini\",\n      \"o1-preview\",\n      \"o1-pro\",\n      \"o3\",\n      \"o3-deep-research\",\n      \"o3-mini\",\n      \"o3-pro\",\n      \"o4-mini\",\n      \"o4-mini-deep-research\",\n      \"text-embedding-3-large\",\n      \"text-embedding-3-small\",\n      \"text-embedding-ada-002\"\n    ],\n    \"dinference\": [\"glm-4.7\", \"glm-5\", \"glm-5.1\", \"gpt-oss-120b\", \"minimax-m2.5\"],\n    \"vivgrid\": [\n      \"deepseek-v3.2\",\n      \"deepseek-v4-pro\",\n      \"gemini-3.1-flash-lite-preview\",\n      \"gemini-3.1-pro-preview\",\n      \"gpt-5-mini\",\n      \"gpt-5.1-codex\",\n      \"gpt-5.1-codex-max\",\n      \"gpt-5.2-codex\",\n      \"gpt-5.3-codex\",\n      \"gpt-5.4\",\n      \"gpt-5.4-mini\",\n      \"gpt-5.4-nano\",\n      \"gpt-5.5\"\n    ],\n    \"cerebras\": [\"gpt-oss-120b\", \"llama3.1-8b\", \"qwen-3-235b-a22b-instruct-2507\", \"zai-glm-4.7\"],\n    \"vultr\": [\"DeepSeek-V3.2\", \"GLM-5-FP8\", \"Kimi-K2.5\", \"MiniMax-M2.5\", \"gpt-oss-120b\"],\n    \"kuae-cloud-coding-plan\": [\"GLM-4.7\"],\n    \"modelscope\": [\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n      \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n      \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n      \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n      \"ZhipuAI/GLM-4.5\",\n      \"ZhipuAI/GLM-4.6\"\n    ],\n    \"kimi-for-coding\": [\"k2p5\", \"k2p6\", \"kimi-k2-thinking\"],\n    \"lucidquery\": [\"lucidnova-rf1-100b\", \"lucidquery-nexus-coder\"],\n    \"neuralwatt\": [\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"Qwen/Qwen3.5-397B-A17B-FP8\",\n      \"Qwen/Qwen3.6-35B-A3B\",\n      \"glm-5-fast\",\n      \"glm-5.1-fast\",\n      \"kimi-k2.5-fast\",\n      \"kimi-k2.6-fast\",\n      \"mistralai/Devstral-Small-2-24B-Instruct-2512\",\n      \"moonshotai/Kimi-K2.5\",\n      \"moonshotai/Kimi-K2.6\",\n      \"openai/gpt-oss-20b\",\n      \"qwen3.5-397b-fast\",\n      \"qwen3.6-35b-fast\",\n      \"zai-org/GLM-5.1-FP8\"\n    ],\n    \"jiekou\": [\n      \"baidu/ernie-4.5-300b-a47b-paddle\",\n      \"baidu/ernie-4.5-vl-424b-a47b\",\n      \"claude-haiku-4-5-20251001\",\n      \"claude-opus-4-1-20250805\",\n      \"claude-opus-4-20250514\",\n      \"claude-opus-4-5-20251101\",\n      \"claude-opus-4-6\",\n      \"claude-sonnet-4-20250514\",\n      \"claude-sonnet-4-5-20250929\",\n      \"deepseek/deepseek-r1-0528\",\n      \"deepseek/deepseek-v3-0324\",\n      \"deepseek/deepseek-v3.1\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-flash-lite\",\n      \"gemini-2.5-flash-lite-preview-06-17\",\n      \"gemini-2.5-flash-lite-preview-09-2025\",\n      \"gemini-2.5-flash-preview-05-20\",\n      \"gemini-2.5-pro\",\n      \"gemini-2.5-pro-preview-06-05\",\n      \"gemini-3-flash-preview\",\n      \"gemini-3-pro-preview\",\n      \"gpt-5-chat-latest\",\n      \"gpt-5-codex\",\n      \"gpt-5-mini\",\n      \"gpt-5-nano\",\n      \"gpt-5-pro\",\n      \"gpt-5.1\",\n      \"gpt-5.1-codex\",\n      \"gpt-5.1-codex-max\",\n      \"gpt-5.1-codex-mini\",\n      \"gpt-5.2\",\n      \"gpt-5.2-codex\",\n      \"gpt-5.2-pro\",\n      \"grok-4-0709\",\n      \"grok-4-1-fast-non-reasoning\",\n      \"grok-4-1-fast-reasoning\",\n      \"grok-4-fast-non-reasoning\",\n      \"grok-4-fast-reasoning\",\n      \"grok-code-fast-1\",\n      \"minimax/minimax-m2.1\",\n      \"minimaxai/minimax-m1-80k\",\n      \"moonshotai/kimi-k2-0905\",\n      \"moonshotai/kimi-k2-instruct\",\n      \"moonshotai/kimi-k2.5\",\n      \"o3\",\n      \"o3-mini\",\n      \"o4-mini\",\n      \"qwen/qwen3-235b-a22b-fp8\",\n      \"qwen/qwen3-235b-a22b-instruct-2507\",\n      \"qwen/qwen3-235b-a22b-thinking-2507\",\n      \"qwen/qwen3-30b-a3b-fp8\",\n      \"qwen/qwen3-32b-fp8\",\n      \"qwen/qwen3-coder-480b-a35b-instruct\",\n      \"qwen/qwen3-coder-next\",\n      \"qwen/qwen3-next-80b-a3b-instruct\",\n      \"qwen/qwen3-next-80b-a3b-thinking\",\n      \"xiaomimimo/mimo-v2-flash\",\n      \"zai-org/glm-4.5\",\n      \"zai-org/glm-4.5v\",\n      \"zai-org/glm-4.7\",\n      \"zai-org/glm-4.7-flash\"\n    ],\n    \"ovhcloud\": [\n      \"gpt-oss-120b\",\n      \"gpt-oss-20b\",\n      \"llama-3.1-8b-instruct\",\n      \"meta-llama-3_3-70b-instruct\",\n      \"mistral-7b-instruct-v0.3\",\n      \"mistral-nemo-instruct-2407\",\n      \"mistral-small-3.2-24b-instruct-2506\",\n      \"qwen2.5-vl-72b-instruct\",\n      \"qwen3-32b\",\n      \"qwen3-coder-30b-a3b-instruct\",\n      \"qwen3.5-9b\"\n    ],\n    \"friendli\": [\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"meta-llama/Llama-3.1-8B-Instruct\",\n      \"meta-llama/Llama-3.3-70B-Instruct\",\n      \"zai-org/GLM-5\",\n      \"zai-org/GLM-5.1\"\n    ],\n    \"openrouter\": [\n      \"ai21/jamba-large-1.7\",\n      \"aion-labs/aion-1.0\",\n      \"aion-labs/aion-1.0-mini\",\n      \"aion-labs/aion-2.0\",\n      \"aion-labs/aion-rp-llama-3.1-8b\",\n      \"alfredpros/codellama-7b-instruct-solidity\",\n      \"alibaba/tongyi-deepresearch-30b-a3b\",\n      \"allenai/olmo-3-32b-think\",\n      \"amazon/nova-2-lite-v1\",\n      \"amazon/nova-lite-v1\",\n      \"amazon/nova-micro-v1\",\n      \"amazon/nova-premier-v1\",\n      \"amazon/nova-pro-v1\",\n      \"anthracite-org/magnum-v4-72b\",\n      \"anthropic/claude-3-haiku\",\n      \"anthropic/claude-3.5-haiku\",\n      \"anthropic/claude-haiku-4.5\",\n      \"anthropic/claude-opus-4\",\n      \"anthropic/claude-opus-4.1\",\n      \"anthropic/claude-opus-4.5\",\n      \"anthropic/claude-opus-4.6\",\n      \"anthropic/claude-opus-4.6-fast\",\n      \"anthropic/claude-opus-4.7\",\n      \"anthropic/claude-opus-4.7-fast\",\n      \"anthropic/claude-sonnet-4\",\n      \"anthropic/claude-sonnet-4.5\",\n      \"anthropic/claude-sonnet-4.6\",\n      \"arcee-ai/coder-large\",\n      \"arcee-ai/maestro-reasoning\",\n      \"arcee-ai/spotlight\",\n      \"arcee-ai/trinity-large-thinking\",\n      \"arcee-ai/trinity-large-thinking:free\",\n      \"arcee-ai/trinity-mini\",\n      \"arcee-ai/virtuoso-large\",\n      \"baidu/cobuddy:free\",\n      \"baidu/ernie-4.5-21b-a3b\",\n      \"baidu/ernie-4.5-21b-a3b-thinking\",\n      \"baidu/ernie-4.5-300b-a47b\",\n      \"baidu/ernie-4.5-vl-28b-a3b\",\n      \"baidu/ernie-4.5-vl-424b-a47b\",\n      \"baidu/qianfan-ocr-fast\",\n      \"bytedance-seed/seed-1.6\",\n      \"bytedance-seed/seed-1.6-flash\",\n      \"bytedance-seed/seed-2.0-lite\",\n      \"bytedance-seed/seed-2.0-mini\",\n      \"bytedance/ui-tars-1.5-7b\",\n      \"cognitivecomputations/dolphin-mistral-24b-venice-edition:free\",\n      \"cohere/command-a\",\n      \"cohere/command-r-08-2024\",\n      \"cohere/command-r-plus-08-2024\",\n      \"cohere/command-r7b-12-2024\",\n      \"deepcogito/cogito-v2.1-671b\",\n      \"deepseek/deepseek-chat\",\n      \"deepseek/deepseek-chat-v3-0324\",\n      \"deepseek/deepseek-chat-v3.1\",\n      \"deepseek/deepseek-r1\",\n      \"deepseek/deepseek-r1-0528\",\n      \"deepseek/deepseek-r1-distill-llama-70b\",\n      \"deepseek/deepseek-r1-distill-qwen-32b\",\n      \"deepseek/deepseek-v3.1-terminus\",\n      \"deepseek/deepseek-v3.2\",\n      \"deepseek/deepseek-v3.2-exp\",\n      \"deepseek/deepseek-v3.2-speciale\",\n      \"deepseek/deepseek-v4-flash\",\n      \"deepseek/deepseek-v4-flash:free\",\n      \"deepseek/deepseek-v4-pro\",\n      \"essentialai/rnj-1-instruct\",\n      \"google/gemini-2.0-flash-001\",\n      \"google/gemini-2.0-flash-lite-001\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-flash-image\",\n      \"google/gemini-2.5-flash-lite\",\n      \"google/gemini-2.5-flash-lite-preview-09-2025\",\n      \"google/gemini-2.5-pro\",\n      \"google/gemini-2.5-pro-preview\",\n      \"google/gemini-2.5-pro-preview-05-06\",\n      \"google/gemini-3-flash-preview\",\n      \"google/gemini-3-pro-image-preview\",\n      \"google/gemini-3.1-flash-image-preview\",\n      \"google/gemini-3.1-flash-lite\",\n      \"google/gemini-3.1-flash-lite-preview\",\n      \"google/gemini-3.1-pro-preview\",\n      \"google/gemini-3.1-pro-preview-customtools\",\n      \"google/gemini-3.5-flash\",\n      \"google/gemma-2-27b-it\",\n      \"google/gemma-3-12b-it\",\n      \"google/gemma-3-27b-it\",\n      \"google/gemma-3-4b-it\",\n      \"google/gemma-3n-e4b-it\",\n      \"google/gemma-4-26b-a4b-it\",\n      \"google/gemma-4-26b-a4b-it:free\",\n      \"google/gemma-4-31b-it\",\n      \"google/gemma-4-31b-it:free\",\n      \"google/lyria-3-clip-preview\",\n      \"google/lyria-3-pro-preview\",\n      \"gryphe/mythomax-l2-13b\",\n      \"ibm-granite/granite-4.0-h-micro\",\n      \"ibm-granite/granite-4.1-8b\",\n      \"inception/mercury-2\",\n      \"inclusionai/ling-2.6-1t\",\n      \"inclusionai/ling-2.6-flash\",\n      \"inclusionai/ring-2.6-1t\",\n      \"inflection/inflection-3-pi\",\n      \"inflection/inflection-3-productivity\",\n      \"kwaipilot/kat-coder-pro-v2\",\n      \"liquid/lfm-2-24b-a2b\",\n      \"liquid/lfm-2.5-1.2b-instruct:free\",\n      \"liquid/lfm-2.5-1.2b-thinking:free\",\n      \"mancer/weaver\",\n      \"meta-llama/llama-3-70b-instruct\",\n      \"meta-llama/llama-3-8b-instruct\",\n      \"meta-llama/llama-3.1-70b-instruct\",\n      \"meta-llama/llama-3.1-8b-instruct\",\n      \"meta-llama/llama-3.2-11b-vision-instruct\",\n      \"meta-llama/llama-3.2-1b-instruct\",\n      \"meta-llama/llama-3.2-3b-instruct\",\n      \"meta-llama/llama-3.2-3b-instruct:free\",\n      \"meta-llama/llama-3.3-70b-instruct\",\n      \"meta-llama/llama-3.3-70b-instruct:free\",\n      \"meta-llama/llama-4-maverick\",\n      \"meta-llama/llama-4-scout\",\n      \"meta-llama/llama-guard-3-8b\",\n      \"meta-llama/llama-guard-4-12b\",\n      \"microsoft/phi-4\",\n      \"microsoft/phi-4-mini-instruct\",\n      \"microsoft/wizardlm-2-8x22b\",\n      \"minimax/minimax-01\",\n      \"minimax/minimax-m1\",\n      \"minimax/minimax-m2\",\n      \"minimax/minimax-m2-her\",\n      \"minimax/minimax-m2.1\",\n      \"minimax/minimax-m2.5\",\n      \"minimax/minimax-m2.5:free\",\n      \"minimax/minimax-m2.7\",\n      \"mistralai/codestral-2508\",\n      \"mistralai/devstral-2512\",\n      \"mistralai/devstral-medium\",\n      \"mistralai/devstral-small\",\n      \"mistralai/ministral-14b-2512\",\n      \"mistralai/ministral-3b-2512\",\n      \"mistralai/ministral-8b-2512\",\n      \"mistralai/mistral-7b-instruct-v0.1\",\n      \"mistralai/mistral-large\",\n      \"mistralai/mistral-large-2407\",\n      \"mistralai/mistral-large-2411\",\n      \"mistralai/mistral-large-2512\",\n      \"mistralai/mistral-medium-3\",\n      \"mistralai/mistral-medium-3-5\",\n      \"mistralai/mistral-medium-3.1\",\n      \"mistralai/mistral-nemo\",\n      \"mistralai/mistral-saba\",\n      \"mistralai/mistral-small-24b-instruct-2501\",\n      \"mistralai/mistral-small-2603\",\n      \"mistralai/mistral-small-3.1-24b-instruct\",\n      \"mistralai/mistral-small-3.2-24b-instruct\",\n      \"mistralai/mixtral-8x22b-instruct\",\n      \"mistralai/pixtral-large-2411\",\n      \"mistralai/voxtral-small-24b-2507\",\n      \"moonshotai/kimi-k2\",\n      \"moonshotai/kimi-k2-0905\",\n      \"moonshotai/kimi-k2-thinking\",\n      \"moonshotai/kimi-k2.5\",\n      \"moonshotai/kimi-k2.6\",\n      \"morph/morph-v3-fast\",\n      \"morph/morph-v3-large\",\n      \"nex-agi/deepseek-v3.1-nex-n1\",\n      \"nousresearch/hermes-2-pro-llama-3-8b\",\n      \"nousresearch/hermes-3-llama-3.1-405b\",\n      \"nousresearch/hermes-3-llama-3.1-405b:free\",\n      \"nousresearch/hermes-3-llama-3.1-70b\",\n      \"nousresearch/hermes-4-405b\",\n      \"nousresearch/hermes-4-70b\",\n      \"nvidia/llama-3.3-nemotron-super-49b-v1.5\",\n      \"nvidia/nemotron-3-nano-30b-a3b\",\n      \"nvidia/nemotron-3-nano-30b-a3b:free\",\n      \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free\",\n      \"nvidia/nemotron-3-super-120b-a12b\",\n      \"nvidia/nemotron-3-super-120b-a12b:free\",\n      \"nvidia/nemotron-nano-12b-v2-vl:free\",\n      \"nvidia/nemotron-nano-9b-v2\",\n      \"nvidia/nemotron-nano-9b-v2:free\",\n      \"openai/gpt-3.5-turbo\",\n      \"openai/gpt-3.5-turbo-0613\",\n      \"openai/gpt-3.5-turbo-16k\",\n      \"openai/gpt-3.5-turbo-instruct\",\n      \"openai/gpt-4\",\n      \"openai/gpt-4-0314\",\n      \"openai/gpt-4-1106-preview\",\n      \"openai/gpt-4-turbo\",\n      \"openai/gpt-4-turbo-preview\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4.1-nano\",\n      \"openai/gpt-4o\",\n      \"openai/gpt-4o-2024-05-13\",\n      \"openai/gpt-4o-2024-08-06\",\n      \"openai/gpt-4o-2024-11-20\",\n      \"openai/gpt-4o-audio-preview\",\n      \"openai/gpt-4o-mini\",\n      \"openai/gpt-4o-mini-2024-07-18\",\n      \"openai/gpt-4o-mini-search-preview\",\n      \"openai/gpt-4o-search-preview\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-chat\",\n      \"openai/gpt-5-codex\",\n      \"openai/gpt-5-image\",\n      \"openai/gpt-5-image-mini\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-5-pro\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.1-chat\",\n      \"openai/gpt-5.1-codex\",\n      \"openai/gpt-5.1-codex-max\",\n      \"openai/gpt-5.1-codex-mini\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.2-chat\",\n      \"openai/gpt-5.2-codex\",\n      \"openai/gpt-5.2-pro\",\n      \"openai/gpt-5.3-chat\",\n      \"openai/gpt-5.3-codex\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.4-image-2\",\n      \"openai/gpt-5.4-mini\",\n      \"openai/gpt-5.4-nano\",\n      \"openai/gpt-5.4-pro\",\n      \"openai/gpt-5.5\",\n      \"openai/gpt-5.5-pro\",\n      \"openai/gpt-audio\",\n      \"openai/gpt-audio-mini\",\n      \"openai/gpt-chat-latest\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-120b:free\",\n      \"openai/gpt-oss-20b\",\n      \"openai/gpt-oss-20b:free\",\n      \"openai/gpt-oss-safeguard-20b\",\n      \"openai/o1\",\n      \"openai/o1-pro\",\n      \"openai/o3\",\n      \"openai/o3-deep-research\",\n      \"openai/o3-mini\",\n      \"openai/o3-mini-high\",\n      \"openai/o3-pro\",\n      \"openai/o4-mini\",\n      \"openai/o4-mini-deep-research\",\n      \"openai/o4-mini-high\",\n      \"openrouter/auto\",\n      \"openrouter/bodybuilder\",\n      \"openrouter/free\",\n      \"openrouter/owl-alpha\",\n      \"openrouter/pareto-code\",\n      \"perceptron/perceptron-mk1\",\n      \"perplexity/sonar\",\n      \"perplexity/sonar-deep-research\",\n      \"perplexity/sonar-pro\",\n      \"perplexity/sonar-pro-search\",\n      \"perplexity/sonar-reasoning-pro\",\n      \"poolside/laguna-m.1:free\",\n      \"poolside/laguna-xs.2:free\",\n      \"prime-intellect/intellect-3\",\n      \"qwen/qwen-2.5-72b-instruct\",\n      \"qwen/qwen-2.5-7b-instruct\",\n      \"qwen/qwen-2.5-coder-32b-instruct\",\n      \"qwen/qwen-plus\",\n      \"qwen/qwen-plus-2025-07-28\",\n      \"qwen/qwen-plus-2025-07-28:thinking\",\n      \"qwen/qwen2.5-vl-72b-instruct\",\n      \"qwen/qwen3-14b\",\n      \"qwen/qwen3-235b-a22b\",\n      \"qwen/qwen3-235b-a22b-2507\",\n      \"qwen/qwen3-235b-a22b-thinking-2507\",\n      \"qwen/qwen3-30b-a3b\",\n      \"qwen/qwen3-30b-a3b-instruct-2507\",\n      \"qwen/qwen3-30b-a3b-thinking-2507\",\n      \"qwen/qwen3-32b\",\n      \"qwen/qwen3-8b\",\n      \"qwen/qwen3-coder\",\n      \"qwen/qwen3-coder-30b-a3b-instruct\",\n      \"qwen/qwen3-coder-flash\",\n      \"qwen/qwen3-coder-next\",\n      \"qwen/qwen3-coder-plus\",\n      \"qwen/qwen3-coder:free\",\n      \"qwen/qwen3-max\",\n      \"qwen/qwen3-max-thinking\",\n      \"qwen/qwen3-next-80b-a3b-instruct\",\n      \"qwen/qwen3-next-80b-a3b-instruct:free\",\n      \"qwen/qwen3-next-80b-a3b-thinking\",\n      \"qwen/qwen3-vl-235b-a22b-instruct\",\n      \"qwen/qwen3-vl-235b-a22b-thinking\",\n      \"qwen/qwen3-vl-30b-a3b-instruct\",\n      \"qwen/qwen3-vl-30b-a3b-thinking\",\n      \"qwen/qwen3-vl-32b-instruct\",\n      \"qwen/qwen3-vl-8b-instruct\",\n      \"qwen/qwen3-vl-8b-thinking\",\n      \"qwen/qwen3.5-122b-a10b\",\n      \"qwen/qwen3.5-27b\",\n      \"qwen/qwen3.5-35b-a3b\",\n      \"qwen/qwen3.5-397b-a17b\",\n      \"qwen/qwen3.5-9b\",\n      \"qwen/qwen3.5-flash-02-23\",\n      \"qwen/qwen3.5-plus-02-15\",\n      \"qwen/qwen3.5-plus-20260420\",\n      \"qwen/qwen3.6-27b\",\n      \"qwen/qwen3.6-35b-a3b\",\n      \"qwen/qwen3.6-flash\",\n      \"qwen/qwen3.6-max-preview\",\n      \"qwen/qwen3.6-plus\",\n      \"qwen/qwen3.7-max\",\n      \"rekaai/reka-edge\",\n      \"rekaai/reka-flash-3\",\n      \"relace/relace-apply-3\",\n      \"relace/relace-search\",\n      \"sao10k/l3-euryale-70b\",\n      \"sao10k/l3-lunaris-8b\",\n      \"sao10k/l3.1-70b-hanami-x1\",\n      \"sao10k/l3.1-euryale-70b\",\n      \"sao10k/l3.3-euryale-70b\",\n      \"stepfun/step-3.5-flash\",\n      \"switchpoint/router\",\n      \"tencent/hunyuan-a13b-instruct\",\n      \"tencent/hy3-preview\",\n      \"thedrummer/cydonia-24b-v4.1\",\n      \"thedrummer/rocinante-12b\",\n      \"thedrummer/skyfall-36b-v2\",\n      \"thedrummer/unslopnemo-12b\",\n      \"undi95/remm-slerp-l2-13b\",\n      \"upstage/solar-pro-3\",\n      \"writer/palmyra-x5\",\n      \"x-ai/grok-4.20\",\n      \"x-ai/grok-4.20-multi-agent\",\n      \"x-ai/grok-4.3\",\n      \"x-ai/grok-build-0.1\",\n      \"xiaomi/mimo-v2-flash\",\n      \"xiaomi/mimo-v2-omni\",\n      \"xiaomi/mimo-v2-pro\",\n      \"xiaomi/mimo-v2.5\",\n      \"xiaomi/mimo-v2.5-pro\",\n      \"z-ai/glm-4-32b\",\n      \"z-ai/glm-4.5\",\n      \"z-ai/glm-4.5-air\",\n      \"z-ai/glm-4.5-air:free\",\n      \"z-ai/glm-4.5v\",\n      \"z-ai/glm-4.6\",\n      \"z-ai/glm-4.6v\",\n      \"z-ai/glm-4.7\",\n      \"z-ai/glm-4.7-flash\",\n      \"z-ai/glm-5\",\n      \"z-ai/glm-5-turbo\",\n      \"z-ai/glm-5.1\",\n      \"z-ai/glm-5v-turbo\",\n      \"~anthropic/claude-haiku-latest\",\n      \"~anthropic/claude-opus-latest\",\n      \"~anthropic/claude-sonnet-latest\",\n      \"~google/gemini-flash-latest\",\n      \"~google/gemini-pro-latest\",\n      \"~moonshotai/kimi-latest\",\n      \"~openai/gpt-latest\",\n      \"~openai/gpt-mini-latest\"\n    ],\n    \"regolo-ai\": [\n      \"gpt-oss-120b\",\n      \"gpt-oss-20b\",\n      \"llama-3.1-8b-instruct\",\n      \"llama-3.3-70b-instruct\",\n      \"minimax-m2.5\",\n      \"mistral-small-4-119b\",\n      \"mistral-small3.2\",\n      \"qwen-image\",\n      \"qwen3-coder-next\",\n      \"qwen3-embedding-8b\",\n      \"qwen3-reranker-4b\",\n      \"qwen3.5-122b\",\n      \"qwen3.5-9b\"\n    ],\n    \"claudinio\": [\"claudinio\"],\n    \"orcarouter\": [\n      \"anthropic/claude-haiku-4.5\",\n      \"anthropic/claude-opus-4\",\n      \"anthropic/claude-opus-4.1\",\n      \"anthropic/claude-opus-4.5\",\n      \"anthropic/claude-opus-4.6\",\n      \"anthropic/claude-opus-4.7\",\n      \"anthropic/claude-sonnet-4\",\n      \"anthropic/claude-sonnet-4.5\",\n      \"anthropic/claude-sonnet-4.6\",\n      \"deepseek/deepseek-chat\",\n      \"deepseek/deepseek-reasoner\",\n      \"deepseek/deepseek-v4-flash\",\n      \"deepseek/deepseek-v4-pro\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-flash-lite\",\n      \"google/gemini-2.5-pro\",\n      \"google/gemini-3-flash-preview\",\n      \"google/gemini-3-pro-preview\",\n      \"google/gemini-3.1-flash-lite-preview\",\n      \"google/gemini-3.1-pro-preview\",\n      \"google/gemini-3.1-pro-preview-customtools\",\n      \"google/gemini-flash-latest\",\n      \"google/gemini-flash-lite-latest\",\n      \"google/gemma-4-26b-a4b-it\",\n      \"google/gemma-4-31b-it\",\n      \"grok/grok-4.3\",\n      \"kimi/kimi-k2.5\",\n      \"kimi/kimi-k2.6\",\n      \"minimax/minimax-m2.5\",\n      \"minimax/minimax-m2.5-highspeed\",\n      \"minimax/minimax-m2.7\",\n      \"minimax/minimax-m2.7-highspeed\",\n      \"openai/gpt-3.5-turbo\",\n      \"openai/gpt-4\",\n      \"openai/gpt-4-turbo\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4.1-nano\",\n      \"openai/gpt-4o\",\n      \"openai/gpt-4o-2024-05-13\",\n      \"openai/gpt-4o-2024-08-06\",\n      \"openai/gpt-4o-2024-11-20\",\n      \"openai/gpt-4o-mini\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-chat-latest\",\n      \"openai/gpt-5-codex\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-5-pro\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.1-chat-latest\",\n      \"openai/gpt-5.1-codex\",\n      \"openai/gpt-5.1-codex-max\",\n      \"openai/gpt-5.1-codex-mini\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.2-chat-latest\",\n      \"openai/gpt-5.2-codex\",\n      \"openai/gpt-5.2-pro\",\n      \"openai/gpt-5.3-chat-latest\",\n      \"openai/gpt-5.3-codex\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.4-mini\",\n      \"openai/gpt-5.4-nano\",\n      \"openai/gpt-5.4-pro\",\n      \"openai/gpt-5.5\",\n      \"openai/gpt-5.5-pro\",\n      \"orcarouter/auto\",\n      \"qwen/qwen3-max\",\n      \"qwen/qwen3.5-122b-a10b\",\n      \"qwen/qwen3.5-27b\",\n      \"qwen/qwen3.5-35b-a3b\",\n      \"qwen/qwen3.5-397b-a17b\",\n      \"qwen/qwen3.5-plus\",\n      \"qwen/qwen3.6-35b-a3b\",\n      \"qwen/qwen3.6-plus\",\n      \"z-ai/glm-4.5\",\n      \"z-ai/glm-4.5-air\",\n      \"z-ai/glm-4.6\",\n      \"z-ai/glm-4.7\",\n      \"z-ai/glm-5\",\n      \"z-ai/glm-5.1\"\n    ],\n    \"opencode-go\": [\n      \"deepseek-v4-flash\",\n      \"deepseek-v4-pro\",\n      \"glm-5\",\n      \"glm-5.1\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\",\n      \"mimo-v2.5\",\n      \"mimo-v2.5-pro\",\n      \"minimax-m2.5\",\n      \"minimax-m2.7\",\n      \"qwen3.5-plus\",\n      \"qwen3.6-plus\"\n    ],\n    \"llmgateway\": [\n      \"auto\",\n      \"claude-3-5-sonnet-20241022\",\n      \"claude-3-7-sonnet\",\n      \"claude-3-7-sonnet-20250219\",\n      \"claude-3-opus\",\n      \"claude-haiku-4-5\",\n      \"claude-haiku-4-5-20251001\",\n      \"claude-opus-4-1-20250805\",\n      \"claude-opus-4-20250514\",\n      \"claude-opus-4-5-20251101\",\n      \"claude-opus-4-6\",\n      \"claude-opus-4-7\",\n      \"claude-sonnet-4-20250514\",\n      \"claude-sonnet-4-5\",\n      \"claude-sonnet-4-5-20250929\",\n      \"claude-sonnet-4-6\",\n      \"codestral-2508\",\n      \"custom\",\n      \"deepseek-r1-0528\",\n      \"deepseek-v3.1\",\n      \"deepseek-v3.2\",\n      \"deepseek-v4-flash\",\n      \"deepseek-v4-pro\",\n      \"devstral-2512\",\n      \"devstral-small-2507\",\n      \"gemini-2.0-flash\",\n      \"gemini-2.0-flash-lite\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-flash-lite\",\n      \"gemini-2.5-pro\",\n      \"gemini-3-flash-preview\",\n      \"gemini-3.1-flash-lite\",\n      \"gemini-3.1-flash-lite-preview\",\n      \"gemini-3.1-pro-preview\",\n      \"gemini-3.5-flash\",\n      \"gemini-pro-latest\",\n      \"gemma-2-27b-it-together\",\n      \"gemma-3-1b-it\",\n      \"gemma-3-27b\",\n      \"glm-4-32b-0414-128k\",\n      \"glm-4.5\",\n      \"glm-4.5-air\",\n      \"glm-4.5-airx\",\n      \"glm-4.5-flash\",\n      \"glm-4.5-x\",\n      \"glm-4.5v\",\n      \"glm-4.6\",\n      \"glm-4.6v\",\n      \"glm-4.6v-flash\",\n      \"glm-4.6v-flashx\",\n      \"glm-4.7\",\n      \"glm-4.7-flash\",\n      \"glm-4.7-flashx\",\n      \"glm-5\",\n      \"glm-5.1\",\n      \"gpt-3.5-turbo\",\n      \"gpt-4\",\n      \"gpt-4-turbo\",\n      \"gpt-4.1\",\n      \"gpt-4.1-mini\",\n      \"gpt-4.1-nano\",\n      \"gpt-4o\",\n      \"gpt-4o-mini\",\n      \"gpt-4o-mini-search-preview\",\n      \"gpt-4o-search-preview\",\n      \"gpt-5\",\n      \"gpt-5-chat-latest\",\n      \"gpt-5-mini\",\n      \"gpt-5-nano\",\n      \"gpt-5-pro\",\n      \"gpt-5.1\",\n      \"gpt-5.1-codex\",\n      \"gpt-5.1-codex-mini\",\n      \"gpt-5.2\",\n      \"gpt-5.2-chat-latest\",\n      \"gpt-5.2-codex\",\n      \"gpt-5.2-pro\",\n      \"gpt-5.3-chat-latest\",\n      \"gpt-5.3-codex\",\n      \"gpt-5.4\",\n      \"gpt-5.4-mini\",\n      \"gpt-5.4-nano\",\n      \"gpt-5.4-pro\",\n      \"gpt-5.5\",\n      \"gpt-5.5-pro\",\n      \"gpt-oss-120b\",\n      \"gpt-oss-20b\",\n      \"grok-4-0709\",\n      \"grok-4-1-fast-reasoning\",\n      \"grok-4-20-beta-0309-non-reasoning\",\n      \"grok-4-20-beta-0309-reasoning\",\n      \"grok-4-20-non-reasoning\",\n      \"grok-4-20-reasoning\",\n      \"grok-4-3\",\n      \"grok-4-fast-reasoning\",\n      \"hermes-2-pro-llama-3-8b\",\n      \"kimi-k2\",\n      \"kimi-k2-thinking\",\n      \"kimi-k2-thinking-turbo\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\",\n      \"llama-3-70b-instruct\",\n      \"llama-3-8b-instruct\",\n      \"llama-3.1-70b-instruct\",\n      \"llama-3.1-8b-instruct\",\n      \"llama-3.1-nemotron-ultra-253b\",\n      \"llama-3.2-11b-instruct\",\n      \"llama-3.2-3b-instruct\",\n      \"llama-3.3-70b-instruct\",\n      \"llama-4-maverick-17b-instruct\",\n      \"llama-4-scout\",\n      \"llama-4-scout-17b-instruct\",\n      \"mimo-v2-flash\",\n      \"mimo-v2-omni\",\n      \"mimo-v2-pro\",\n      \"mimo-v2.5\",\n      \"mimo-v2.5-pro\",\n      \"minimax-m2\",\n      \"minimax-m2.1\",\n      \"minimax-m2.1-lightning\",\n      \"minimax-m2.5\",\n      \"minimax-m2.5-highspeed\",\n      \"minimax-m2.7\",\n      \"minimax-m2.7-highspeed\",\n      \"minimax-text-01\",\n      \"ministral-14b-2512\",\n      \"ministral-3b-2512\",\n      \"ministral-8b-2512\",\n      \"mistral-large-2512\",\n      \"mistral-large-latest\",\n      \"mistral-small-2506\",\n      \"o1\",\n      \"o3\",\n      \"o3-mini\",\n      \"o4-mini\",\n      \"pixtral-large-latest\",\n      \"qwen-coder-plus\",\n      \"qwen-flash\",\n      \"qwen-max\",\n      \"qwen-max-latest\",\n      \"qwen-omni-turbo\",\n      \"qwen-plus\",\n      \"qwen-plus-latest\",\n      \"qwen-turbo\",\n      \"qwen-vl-max\",\n      \"qwen-vl-plus\",\n      \"qwen2-5-vl-32b-instruct\",\n      \"qwen2-5-vl-72b-instruct\",\n      \"qwen25-coder-7b\",\n      \"qwen3-235b-a22b-fp8\",\n      \"qwen3-235b-a22b-instruct-2507\",\n      \"qwen3-235b-a22b-thinking-2507\",\n      \"qwen3-30b-a3b-fp8\",\n      \"qwen3-30b-a3b-instruct-2507\",\n      \"qwen3-30b-a3b-thinking-2507\",\n      \"qwen3-32b\",\n      \"qwen3-32b-fp8\",\n      \"qwen3-4b-fp8\",\n      \"qwen3-coder-30b-a3b-instruct\",\n      \"qwen3-coder-480b-a35b-instruct\",\n      \"qwen3-coder-flash\",\n      \"qwen3-coder-next\",\n      \"qwen3-coder-plus\",\n      \"qwen3-max\",\n      \"qwen3-max-2026-01-23\",\n      \"qwen3-next-80b-a3b-instruct\",\n      \"qwen3-next-80b-a3b-thinking\",\n      \"qwen3-vl-235b-a22b-instruct\",\n      \"qwen3-vl-235b-a22b-thinking\",\n      \"qwen3-vl-30b-a3b-instruct\",\n      \"qwen3-vl-30b-a3b-thinking\",\n      \"qwen3-vl-8b-instruct\",\n      \"qwen3-vl-flash\",\n      \"qwen3-vl-plus\",\n      \"qwen3.6-35b-a3b\",\n      \"qwen3.6-max-preview\",\n      \"qwen3.6-plus\",\n      \"qwen35-397b-a17b\",\n      \"qwen37-max\",\n      \"qwq-plus\",\n      \"seed-1-6-250615\",\n      \"seed-1-6-250915\",\n      \"seed-1-6-flash-250715\",\n      \"seed-1-8-251228\",\n      \"sonar\",\n      \"sonar-pro\",\n      \"sonar-reasoning-pro\"\n    ],\n    \"poe\": [\n      \"anthropic/claude-haiku-3\",\n      \"anthropic/claude-haiku-3.5\",\n      \"anthropic/claude-haiku-4.5\",\n      \"anthropic/claude-opus-4\",\n      \"anthropic/claude-opus-4.1\",\n      \"anthropic/claude-opus-4.5\",\n      \"anthropic/claude-opus-4.6\",\n      \"anthropic/claude-opus-4.7\",\n      \"anthropic/claude-sonnet-3.7\",\n      \"anthropic/claude-sonnet-4\",\n      \"anthropic/claude-sonnet-4.5\",\n      \"anthropic/claude-sonnet-4.6\",\n      \"cerebras/gpt-oss-120b-cs\",\n      \"cerebras/llama-3.1-8b-cs\",\n      \"elevenlabs/elevenlabs-music\",\n      \"elevenlabs/elevenlabs-v2.5-turbo\",\n      \"elevenlabs/elevenlabs-v3\",\n      \"empiriolabs/deepseek-v4-flash-el\",\n      \"empiriolabs/deepseek-v4-pro-el\",\n      \"fireworks-ai/kimi-k2.5-fw\",\n      \"google/gemini-2.0-flash\",\n      \"google/gemini-2.0-flash-lite\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-flash-lite\",\n      \"google/gemini-2.5-pro\",\n      \"google/gemini-3-flash\",\n      \"google/gemini-3.1-flash-lite\",\n      \"google/gemini-3.1-pro\",\n      \"google/gemini-3.5-flash\",\n      \"google/gemma-4-31b\",\n      \"google/imagen-3\",\n      \"google/imagen-3-fast\",\n      \"google/imagen-4\",\n      \"google/imagen-4-fast\",\n      \"google/imagen-4-ultra\",\n      \"google/lyria\",\n      \"google/nano-banana\",\n      \"google/nano-banana-pro\",\n      \"google/veo-2\",\n      \"google/veo-3\",\n      \"google/veo-3-fast\",\n      \"google/veo-3.1\",\n      \"google/veo-3.1-fast\",\n      \"ideogramai/ideogram\",\n      \"ideogramai/ideogram-v2\",\n      \"ideogramai/ideogram-v2a\",\n      \"ideogramai/ideogram-v2a-turbo\",\n      \"lumalabs/ray2\",\n      \"novita/deepseek-v3.2\",\n      \"novita/glm-4.6\",\n      \"novita/glm-4.6v\",\n      \"novita/glm-4.7-flash\",\n      \"novita/glm-4.7-n\",\n      \"novita/glm-5\",\n      \"novita/kimi-k2-thinking\",\n      \"novita/kimi-k2.5\",\n      \"novita/kimi-k2.6\",\n      \"novita/minimax-m2.1\",\n      \"openai/dall-e-3\",\n      \"openai/gpt-3.5-turbo\",\n      \"openai/gpt-3.5-turbo-instruct\",\n      \"openai/gpt-3.5-turbo-raw\",\n      \"openai/gpt-4-turbo\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4.1-nano\",\n      \"openai/gpt-4o\",\n      \"openai/gpt-4o-aug\",\n      \"openai/gpt-4o-mini\",\n      \"openai/gpt-4o-mini-search\",\n      \"openai/gpt-4o-search\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-chat\",\n      \"openai/gpt-5-codex\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-5-pro\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.1-codex\",\n      \"openai/gpt-5.1-codex-max\",\n      \"openai/gpt-5.1-codex-mini\",\n      \"openai/gpt-5.1-instant\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.2-codex\",\n      \"openai/gpt-5.2-instant\",\n      \"openai/gpt-5.2-pro\",\n      \"openai/gpt-5.3-codex\",\n      \"openai/gpt-5.3-codex-spark\",\n      \"openai/gpt-5.3-instant\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.4-mini\",\n      \"openai/gpt-5.4-nano\",\n      \"openai/gpt-5.4-pro\",\n      \"openai/gpt-5.5\",\n      \"openai/gpt-5.5-pro\",\n      \"openai/gpt-image-1\",\n      \"openai/gpt-image-1-mini\",\n      \"openai/gpt-image-1.5\",\n      \"openai/gpt-image-2\",\n      \"openai/o1\",\n      \"openai/o1-pro\",\n      \"openai/o3\",\n      \"openai/o3-deep-research\",\n      \"openai/o3-mini\",\n      \"openai/o3-mini-high\",\n      \"openai/o3-pro\",\n      \"openai/o4-mini\",\n      \"openai/o4-mini-deep-research\",\n      \"openai/sora-2\",\n      \"openai/sora-2-pro\",\n      \"poetools/claude-code\",\n      \"runwayml/runway\",\n      \"runwayml/runway-gen-4-turbo\",\n      \"stabilityai/stablediffusionxl\",\n      \"topazlabs-co/topazlabs\",\n      \"trytako/tako\",\n      \"xai/grok-3\",\n      \"xai/grok-3-mini\",\n      \"xai/grok-4\",\n      \"xai/grok-4-fast-non-reasoning\",\n      \"xai/grok-4-fast-reasoning\",\n      \"xai/grok-4.1-fast-non-reasoning\",\n      \"xai/grok-4.1-fast-reasoning\",\n      \"xai/grok-4.20-multi-agent\",\n      \"xai/grok-code-fast-1\"\n    ],\n    \"minimax\": [\n      \"MiniMax-M2\",\n      \"MiniMax-M2.1\",\n      \"MiniMax-M2.5\",\n      \"MiniMax-M2.5-highspeed\",\n      \"MiniMax-M2.7\",\n      \"MiniMax-M2.7-highspeed\"\n    ],\n    \"groq\": [\n      \"allam-2-7b\",\n      \"canopylabs/orpheus-arabic-saudi\",\n      \"canopylabs/orpheus-v1-english\",\n      \"groq/compound\",\n      \"groq/compound-mini\",\n      \"llama-3.1-8b-instant\",\n      \"llama-3.3-70b-versatile\",\n      \"meta-llama/llama-4-scout-17b-16e-instruct\",\n      \"meta-llama/llama-prompt-guard-2-22m\",\n      \"meta-llama/llama-prompt-guard-2-86m\",\n      \"moonshotai/kimi-k2-instruct-0905\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"openai/gpt-oss-safeguard-20b\",\n      \"qwen/qwen3-32b\",\n      \"whisper-large-v3\",\n      \"whisper-large-v3-turbo\"\n    ],\n    \"xiaomi-token-plan-sgp\": [\n      \"mimo-v2-flash\",\n      \"mimo-v2-omni\",\n      \"mimo-v2-pro\",\n      \"mimo-v2-tts\",\n      \"mimo-v2.5\",\n      \"mimo-v2.5-pro\"\n    ],\n    \"siliconflow\": [\n      \"ByteDance-Seed/Seed-OSS-36B-Instruct\",\n      \"MiniMaxAI/MiniMax-M2.1\",\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"Qwen/QwQ-32B\",\n      \"Qwen/Qwen2.5-14B-Instruct\",\n      \"Qwen/Qwen2.5-32B-Instruct\",\n      \"Qwen/Qwen2.5-72B-Instruct\",\n      \"Qwen/Qwen2.5-72B-Instruct-128K\",\n      \"Qwen/Qwen2.5-7B-Instruct\",\n      \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n      \"Qwen/Qwen2.5-VL-32B-Instruct\",\n      \"Qwen/Qwen2.5-VL-72B-Instruct\",\n      \"Qwen/Qwen2.5-VL-7B-Instruct\",\n      \"Qwen/Qwen3-14B\",\n      \"Qwen/Qwen3-235B-A22B\",\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n      \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n      \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n      \"Qwen/Qwen3-32B\",\n      \"Qwen/Qwen3-8B\",\n      \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n      \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n      \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n      \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n      \"Qwen/Qwen3-Omni-30B-A3B-Captioner\",\n      \"Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n      \"Qwen/Qwen3-Omni-30B-A3B-Thinking\",\n      \"Qwen/Qwen3-VL-235B-A22B-Instruct\",\n      \"Qwen/Qwen3-VL-235B-A22B-Thinking\",\n      \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n      \"Qwen/Qwen3-VL-30B-A3B-Thinking\",\n      \"Qwen/Qwen3-VL-32B-Instruct\",\n      \"Qwen/Qwen3-VL-32B-Thinking\",\n      \"Qwen/Qwen3-VL-8B-Instruct\",\n      \"Qwen/Qwen3-VL-8B-Thinking\",\n      \"THUDM/GLM-4-32B-0414\",\n      \"THUDM/GLM-4-9B-0414\",\n      \"THUDM/GLM-Z1-32B-0414\",\n      \"THUDM/GLM-Z1-9B-0414\",\n      \"baidu/ERNIE-4.5-300B-A47B\",\n      \"deepseek-ai/DeepSeek-R1\",\n      \"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B\",\n      \"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B\",\n      \"deepseek-ai/DeepSeek-V3\",\n      \"deepseek-ai/DeepSeek-V3.1\",\n      \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n      \"deepseek-ai/DeepSeek-V3.2\",\n      \"deepseek-ai/DeepSeek-V3.2-Exp\",\n      \"deepseek-ai/deepseek-v4-flash\",\n      \"deepseek-ai/deepseek-v4-pro\",\n      \"deepseek-ai/deepseek-vl2\",\n      \"inclusionAI/Ling-flash-2.0\",\n      \"inclusionAI/Ling-mini-2.0\",\n      \"inclusionAI/Ring-flash-2.0\",\n      \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n      \"moonshotai/Kimi-K2-Instruct\",\n      \"moonshotai/Kimi-K2-Instruct-0905\",\n      \"moonshotai/Kimi-K2-Thinking\",\n      \"moonshotai/Kimi-K2.5\",\n      \"moonshotai/Kimi-K2.6\",\n      \"nex-agi/DeepSeek-V3.1-Nex-N1\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"stepfun-ai/Step-3.5-Flash\",\n      \"tencent/Hunyuan-A13B-Instruct\",\n      \"tencent/Hunyuan-MT-7B\",\n      \"zai-org/GLM-4.5\",\n      \"zai-org/GLM-4.5-Air\",\n      \"zai-org/GLM-4.5V\",\n      \"zai-org/GLM-4.6\",\n      \"zai-org/GLM-4.6V\",\n      \"zai-org/GLM-4.7\",\n      \"zai-org/GLM-5\",\n      \"zai-org/GLM-5.1\",\n      \"zai-org/GLM-5V-Turbo\"\n    ],\n    \"ollama-cloud\": [\n      \"cogito-2.1:671b\",\n      \"deepseek-v3.1:671b\",\n      \"deepseek-v3.2\",\n      \"deepseek-v4-flash\",\n      \"deepseek-v4-pro\",\n      \"devstral-2:123b\",\n      \"devstral-small-2:24b\",\n      \"gemini-3-flash-preview\",\n      \"gemma3:12b\",\n      \"gemma3:27b\",\n      \"gemma3:4b\",\n      \"gemma4:31b\",\n      \"glm-4.6\",\n      \"glm-4.7\",\n      \"glm-5\",\n      \"glm-5.1\",\n      \"gpt-oss:120b\",\n      \"gpt-oss:20b\",\n      \"kimi-k2-thinking\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\",\n      \"kimi-k2:1t\",\n      \"minimax-m2\",\n      \"minimax-m2.1\",\n      \"minimax-m2.5\",\n      \"minimax-m2.7\",\n      \"ministral-3:14b\",\n      \"ministral-3:3b\",\n      \"ministral-3:8b\",\n      \"mistral-large-3:675b\",\n      \"nemotron-3-nano:30b\",\n      \"nemotron-3-super\",\n      \"qwen3-coder-next\",\n      \"qwen3-coder:480b\",\n      \"qwen3-next:80b\",\n      \"qwen3-vl:235b\",\n      \"qwen3-vl:235b-instruct\",\n      \"qwen3.5:397b\",\n      \"rnj-1:8b\"\n    ],\n    \"databricks\": [\n      \"databricks-claude-haiku-4-5\",\n      \"databricks-claude-opus-4-1\",\n      \"databricks-claude-opus-4-5\",\n      \"databricks-claude-opus-4-6\",\n      \"databricks-claude-opus-4-7\",\n      \"databricks-claude-sonnet-4\",\n      \"databricks-claude-sonnet-4-5\",\n      \"databricks-claude-sonnet-4-6\",\n      \"databricks-gemini-2-5-flash\",\n      \"databricks-gemini-2-5-pro\",\n      \"databricks-gemini-3-1-flash-lite\",\n      \"databricks-gemini-3-1-pro\",\n      \"databricks-gemini-3-flash\",\n      \"databricks-gemini-3-pro\",\n      \"databricks-gpt-5\",\n      \"databricks-gpt-5-1\",\n      \"databricks-gpt-5-2\",\n      \"databricks-gpt-5-4\",\n      \"databricks-gpt-5-4-mini\",\n      \"databricks-gpt-5-4-nano\",\n      \"databricks-gpt-5-5\",\n      \"databricks-gpt-5-mini\",\n      \"databricks-gpt-5-nano\",\n      \"databricks-gpt-oss-120b\",\n      \"databricks-gpt-oss-20b\"\n    ],\n    \"berget\": [\n      \"google/gemma-4-31B-it\",\n      \"meta-llama/Llama-3.3-70B-Instruct\",\n      \"mistralai/Mistral-Medium-3.5-128B\",\n      \"mistralai/Mistral-Small-3.2-24B-Instruct-2506\",\n      \"moonshotai/Kimi-K2.6\",\n      \"openai/gpt-oss-120b\",\n      \"zai-org/GLM-4.7\"\n    ],\n    \"moonshotai-cn\": [\n      \"kimi-k2-0711-preview\",\n      \"kimi-k2-0905-preview\",\n      \"kimi-k2-thinking\",\n      \"kimi-k2-thinking-turbo\",\n      \"kimi-k2-turbo-preview\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\"\n    ],\n    \"alibaba-coding-plan-cn\": [\n      \"MiniMax-M2.5\",\n      \"glm-4.7\",\n      \"glm-5\",\n      \"kimi-k2.5\",\n      \"qwen3-coder-next\",\n      \"qwen3-coder-plus\",\n      \"qwen3-max-2026-01-23\",\n      \"qwen3.5-plus\",\n      \"qwen3.6-plus\"\n    ],\n    \"minimax-cn\": [\n      \"MiniMax-M2\",\n      \"MiniMax-M2.1\",\n      \"MiniMax-M2.5\",\n      \"MiniMax-M2.5-highspeed\",\n      \"MiniMax-M2.7\",\n      \"MiniMax-M2.7-highspeed\"\n    ],\n    \"chutes\": [\n      \"MiniMaxAI/MiniMax-M2.5-TEE\",\n      \"NousResearch/DeepHermes-3-Mistral-24B-Preview\",\n      \"NousResearch/Hermes-4-14B\",\n      \"Qwen/Qwen2.5-72B-Instruct\",\n      \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n      \"Qwen/Qwen2.5-VL-32B-Instruct\",\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE\",\n      \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n      \"Qwen/Qwen3-30B-A3B\",\n      \"Qwen/Qwen3-32B-TEE\",\n      \"Qwen/Qwen3-Coder-Next-TEE\",\n      \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n      \"Qwen/Qwen3.5-397B-A17B-TEE\",\n      \"Qwen/Qwen3.6-27B-TEE\",\n      \"Qwen/Qwen3Guard-Gen-0.6B\",\n      \"XiaomiMiMo/MiMo-V2-Flash-TEE\",\n      \"deepseek-ai/DeepSeek-R1-0528-TEE\",\n      \"deepseek-ai/DeepSeek-R1-Distill-Llama-70B\",\n      \"deepseek-ai/DeepSeek-V3-0324-TEE\",\n      \"deepseek-ai/DeepSeek-V3.1-TEE\",\n      \"deepseek-ai/DeepSeek-V3.2-TEE\",\n      \"google/gemma-4-31B-turbo-TEE\",\n      \"moonshotai/Kimi-K2.5-TEE\",\n      \"moonshotai/Kimi-K2.6-TEE\",\n      \"openai/gpt-oss-120b-TEE\",\n      \"rednote-hilab/dots.ocr\",\n      \"tngtech/DeepSeek-TNG-R1T2-Chimera-TEE\",\n      \"unsloth/Llama-3.2-1B-Instruct\",\n      \"unsloth/Llama-3.2-3B-Instruct\",\n      \"unsloth/Mistral-Nemo-Instruct-2407\",\n      \"unsloth/gemma-3-12b-it\",\n      \"unsloth/gemma-3-27b-it\",\n      \"unsloth/gemma-3-4b-it\",\n      \"zai-org/GLM-4.6V\",\n      \"zai-org/GLM-4.7-FP8\",\n      \"zai-org/GLM-4.7-TEE\",\n      \"zai-org/GLM-5-TEE\",\n      \"zai-org/GLM-5-Turbo\",\n      \"zai-org/GLM-5.1-TEE\"\n    ],\n    \"siliconflow-cn\": [\n      \"ByteDance-Seed/Seed-OSS-36B-Instruct\",\n      \"Kwaipilot/KAT-Dev\",\n      \"PaddlePaddle/PaddleOCR-VL\",\n      \"PaddlePaddle/PaddleOCR-VL-1.5\",\n      \"Pro/MiniMaxAI/MiniMax-M2.1\",\n      \"Pro/MiniMaxAI/MiniMax-M2.5\",\n      \"Pro/deepseek-ai/DeepSeek-R1\",\n      \"Pro/deepseek-ai/DeepSeek-V3\",\n      \"Pro/deepseek-ai/DeepSeek-V3.1-Terminus\",\n      \"Pro/deepseek-ai/DeepSeek-V3.2\",\n      \"Pro/moonshotai/Kimi-K2-Instruct-0905\",\n      \"Pro/moonshotai/Kimi-K2-Thinking\",\n      \"Pro/moonshotai/Kimi-K2.5\",\n      \"Pro/moonshotai/Kimi-K2.6\",\n      \"Pro/zai-org/GLM-4.7\",\n      \"Pro/zai-org/GLM-5\",\n      \"Pro/zai-org/GLM-5.1\",\n      \"Qwen/QwQ-32B\",\n      \"Qwen/Qwen2.5-14B-Instruct\",\n      \"Qwen/Qwen2.5-32B-Instruct\",\n      \"Qwen/Qwen2.5-72B-Instruct\",\n      \"Qwen/Qwen2.5-72B-Instruct-128K\",\n      \"Qwen/Qwen2.5-7B-Instruct\",\n      \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n      \"Qwen/Qwen2.5-VL-32B-Instruct\",\n      \"Qwen/Qwen2.5-VL-72B-Instruct\",\n      \"Qwen/Qwen3-14B\",\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n      \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n      \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n      \"Qwen/Qwen3-32B\",\n      \"Qwen/Qwen3-8B\",\n      \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n      \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n      \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n      \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n      \"Qwen/Qwen3-Omni-30B-A3B-Captioner\",\n      \"Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n      \"Qwen/Qwen3-Omni-30B-A3B-Thinking\",\n      \"Qwen/Qwen3-VL-235B-A22B-Instruct\",\n      \"Qwen/Qwen3-VL-235B-A22B-Thinking\",\n      \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n      \"Qwen/Qwen3-VL-30B-A3B-Thinking\",\n      \"Qwen/Qwen3-VL-32B-Instruct\",\n      \"Qwen/Qwen3-VL-32B-Thinking\",\n      \"Qwen/Qwen3-VL-8B-Instruct\",\n      \"Qwen/Qwen3-VL-8B-Thinking\",\n      \"Qwen/Qwen3.5-122B-A10B\",\n      \"Qwen/Qwen3.5-27B\",\n      \"Qwen/Qwen3.5-35B-A3B\",\n      \"Qwen/Qwen3.5-397B-A17B\",\n      \"Qwen/Qwen3.5-4B\",\n      \"Qwen/Qwen3.5-9B\",\n      \"Qwen/Qwen3.6-35B-A3B\",\n      \"THUDM/GLM-4-32B-0414\",\n      \"THUDM/GLM-4-9B-0414\",\n      \"THUDM/GLM-Z1-32B-0414\",\n      \"THUDM/GLM-Z1-9B-0414\",\n      \"ascend-tribe/pangu-pro-moe\",\n      \"baidu/ERNIE-4.5-300B-A47B\",\n      \"deepseek-ai/DeepSeek-OCR\",\n      \"deepseek-ai/DeepSeek-R1\",\n      \"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B\",\n      \"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B\",\n      \"deepseek-ai/DeepSeek-V3\",\n      \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n      \"deepseek-ai/DeepSeek-V3.2\",\n      \"deepseek-ai/deepseek-vl2\",\n      \"inclusionAI/Ling-flash-2.0\",\n      \"inclusionAI/Ling-mini-2.0\",\n      \"inclusionAI/Ring-flash-2.0\",\n      \"moonshotai/Kimi-K2-Instruct-0905\",\n      \"moonshotai/Kimi-K2-Thinking\",\n      \"stepfun-ai/Step-3.5-Flash\",\n      \"tencent/Hunyuan-A13B-Instruct\",\n      \"tencent/Hunyuan-MT-7B\",\n      \"zai-org/GLM-4.5-Air\",\n      \"zai-org/GLM-4.5V\",\n      \"zai-org/GLM-4.6\",\n      \"zai-org/GLM-4.6V\"\n    ],\n    \"nvidia\": [\n      \"abacusai/dracarys-llama-3_1-70b-instruct\",\n      \"baai/bge-m3\",\n      \"black-forest-labs/flux.1-dev\",\n      \"black-forest-labs/flux_1-kontext-dev\",\n      \"black-forest-labs/flux_1-schnell\",\n      \"black-forest-labs/flux_2-klein-4b\",\n      \"bytedance/seed-oss-36b-instruct\",\n      \"deepseek-ai/deepseek-v3.1-terminus\",\n      \"deepseek-ai/deepseek-v3.2\",\n      \"deepseek-ai/deepseek-v4-flash\",\n      \"deepseek-ai/deepseek-v4-pro\",\n      \"google/gemma-2-2b-it\",\n      \"google/gemma-3-27b-it\",\n      \"google/gemma-3n-e2b-it\",\n      \"google/gemma-3n-e4b-it\",\n      \"google/gemma-4-31b-it\",\n      \"google/google-paligemma\",\n      \"meta/esm2-650m\",\n      \"meta/esmfold\",\n      \"meta/llama-3.1-70b-instruct\",\n      \"meta/llama-3.1-8b-instruct\",\n      \"meta/llama-3.2-11b-vision-instruct\",\n      \"meta/llama-3.2-1b-instruct\",\n      \"meta/llama-3.2-3b-instruct\",\n      \"meta/llama-3.2-90b-vision-instruct\",\n      \"meta/llama-3.3-70b-instruct\",\n      \"meta/llama-4-maverick-17b-128e-instruct\",\n      \"meta/llama-guard-4-12b\",\n      \"microsoft/phi-4-mini-instruct\",\n      \"microsoft/phi-4-multimodal-instruct\",\n      \"minimaxai/minimax-m2.5\",\n      \"minimaxai/minimax-m2.7\",\n      \"mistralai/devstral-2-123b-instruct-2512\",\n      \"mistralai/magistral-small-2506\",\n      \"mistralai/mistral-7b-instruct-v03\",\n      \"mistralai/mistral-large-3-675b-instruct-2512\",\n      \"mistralai/mistral-medium-3-instruct\",\n      \"mistralai/mistral-nemotron\",\n      \"mistralai/mistral-small-4-119b-2603\",\n      \"mistralai/mixtral-8x22b-instruct\",\n      \"mistralai/mixtral-8x7b-instruct\",\n      \"moonshotai/kimi-k2-instruct\",\n      \"moonshotai/kimi-k2-instruct-0905\",\n      \"moonshotai/kimi-k2-thinking\",\n      \"moonshotai/kimi-k2.6\",\n      \"nvidia/active-speaker-detection\",\n      \"nvidia/bevformer\",\n      \"nvidia/cosmos-predict1-5b\",\n      \"nvidia/cosmos-transfer1-7b\",\n      \"nvidia/cosmos-transfer2_5-2b\",\n      \"nvidia/gliner-pii\",\n      \"nvidia/llama-3_1-nemotron-safety-guard-8b-v3\",\n      \"nvidia/llama-3_2-nemoretriever-300m-embed-v1\",\n      \"nvidia/llama-3_3-nemotron-super-49b-v1\",\n      \"nvidia/llama-3_3-nemotron-super-49b-v1_5\",\n      \"nvidia/llama-nemotron-embed-vl-1b-v2\",\n      \"nvidia/llama-nemotron-rerank-vl-1b-v2\",\n      \"nvidia/magpie-tts-zeroshot\",\n      \"nvidia/nemotron-3-content-safety\",\n      \"nvidia/nemotron-3-nano-30b-a3b\",\n      \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\",\n      \"nvidia/nemotron-3-super-120b-a12b\",\n      \"nvidia/nemotron-content-safety-reasoning-4b\",\n      \"nvidia/nemotron-mini-4b-instruct\",\n      \"nvidia/nemotron-voicechat\",\n      \"nvidia/nv-embed-v1\",\n      \"nvidia/nv-embedcode-7b-v1\",\n      \"nvidia/nvidia-nemotron-nano-9b-v2\",\n      \"nvidia/rerank-qa-mistral-4b\",\n      \"nvidia/riva-translate-4b-instruct-v1_1\",\n      \"nvidia/sparsedrive\",\n      \"nvidia/streampetr\",\n      \"nvidia/studiovoice\",\n      \"nvidia/synthetic-video-detector\",\n      \"nvidia/usdcode\",\n      \"nvidia/usdvalidate\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"openai/whisper-large-v3\",\n      \"qwen/qwen-image\",\n      \"qwen/qwen-image-edit\",\n      \"qwen/qwen2.5-coder-32b-instruct\",\n      \"qwen/qwen3-coder-480b-a35b-instruct\",\n      \"qwen/qwen3-next-80b-a3b-instruct\",\n      \"qwen/qwen3-next-80b-a3b-thinking\",\n      \"qwen/qwen3.5-122b-a10b\",\n      \"qwen/qwen3.5-397b-a17b\",\n      \"sarvamai/sarvam-m\",\n      \"stepfun-ai/step-3.5-flash\",\n      \"upstage/solar-10_7b-instruct\",\n      \"z-ai/glm-5.1\",\n      \"z-ai/glm4.7\"\n    ],\n    \"anthropic\": [\n      \"claude-3-5-haiku-20241022\",\n      \"claude-3-5-haiku-latest\",\n      \"claude-3-5-sonnet-20240620\",\n      \"claude-3-5-sonnet-20241022\",\n      \"claude-3-7-sonnet-20250219\",\n      \"claude-3-haiku-20240307\",\n      \"claude-3-opus-20240229\",\n      \"claude-3-sonnet-20240229\",\n      \"claude-haiku-4-5\",\n      \"claude-haiku-4-5-20251001\",\n      \"claude-opus-4-0\",\n      \"claude-opus-4-1\",\n      \"claude-opus-4-1-20250805\",\n      \"claude-opus-4-20250514\",\n      \"claude-opus-4-5\",\n      \"claude-opus-4-5-20251101\",\n      \"claude-opus-4-6\",\n      \"claude-opus-4-7\",\n      \"claude-sonnet-4-0\",\n      \"claude-sonnet-4-20250514\",\n      \"claude-sonnet-4-5\",\n      \"claude-sonnet-4-5-20250929\",\n      \"claude-sonnet-4-6\"\n    ],\n    \"zhipuai-coding-plan\": [\"glm-4.5-air\", \"glm-4.7\", \"glm-5-turbo\", \"glm-5.1\", \"glm-5v-turbo\"],\n    \"atomic-chat\": [\n      \"Meta-Llama-3_1-8B-Instruct-GGUF\",\n      \"Qwen3_5-9B-MLX-4bit\",\n      \"Qwen3_5-9B-Q4_K_M\",\n      \"gemma-4-E4B-it-IQ4_XS\",\n      \"gemma-4-E4B-it-MLX-4bit\"\n    ],\n    \"github-models\": [\n      \"ai21-labs/ai21-jamba-1.5-large\",\n      \"ai21-labs/ai21-jamba-1.5-mini\",\n      \"cohere/cohere-command-a\",\n      \"cohere/cohere-command-r\",\n      \"cohere/cohere-command-r-08-2024\",\n      \"cohere/cohere-command-r-plus\",\n      \"cohere/cohere-command-r-plus-08-2024\",\n      \"core42/jais-30b-chat\",\n      \"deepseek/deepseek-r1\",\n      \"deepseek/deepseek-r1-0528\",\n      \"deepseek/deepseek-v3-0324\",\n      \"meta/llama-3.2-11b-vision-instruct\",\n      \"meta/llama-3.2-90b-vision-instruct\",\n      \"meta/llama-3.3-70b-instruct\",\n      \"meta/llama-4-maverick-17b-128e-instruct-fp8\",\n      \"meta/llama-4-scout-17b-16e-instruct\",\n      \"meta/meta-llama-3-70b-instruct\",\n      \"meta/meta-llama-3-8b-instruct\",\n      \"meta/meta-llama-3.1-405b-instruct\",\n      \"meta/meta-llama-3.1-70b-instruct\",\n      \"meta/meta-llama-3.1-8b-instruct\",\n      \"microsoft/mai-ds-r1\",\n      \"microsoft/phi-3-medium-128k-instruct\",\n      \"microsoft/phi-3-medium-4k-instruct\",\n      \"microsoft/phi-3-mini-128k-instruct\",\n      \"microsoft/phi-3-mini-4k-instruct\",\n      \"microsoft/phi-3-small-128k-instruct\",\n      \"microsoft/phi-3-small-8k-instruct\",\n      \"microsoft/phi-3.5-mini-instruct\",\n      \"microsoft/phi-3.5-moe-instruct\",\n      \"microsoft/phi-3.5-vision-instruct\",\n      \"microsoft/phi-4\",\n      \"microsoft/phi-4-mini-instruct\",\n      \"microsoft/phi-4-mini-reasoning\",\n      \"microsoft/phi-4-multimodal-instruct\",\n      \"microsoft/phi-4-reasoning\",\n      \"mistral-ai/codestral-2501\",\n      \"mistral-ai/ministral-3b\",\n      \"mistral-ai/mistral-large-2411\",\n      \"mistral-ai/mistral-medium-2505\",\n      \"mistral-ai/mistral-nemo\",\n      \"mistral-ai/mistral-small-2503\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4.1-nano\",\n      \"openai/gpt-4o\",\n      \"openai/gpt-4o-mini\",\n      \"openai/o1\",\n      \"openai/o1-mini\",\n      \"openai/o1-preview\",\n      \"openai/o3\",\n      \"openai/o3-mini\",\n      \"openai/o4-mini\",\n      \"xai/grok-3\",\n      \"xai/grok-3-mini\"\n    ],\n    \"qiniu-ai\": [\n      \"MiniMax-M1\",\n      \"claude-3.5-haiku\",\n      \"claude-3.5-sonnet\",\n      \"claude-3.7-sonnet\",\n      \"claude-4.0-opus\",\n      \"claude-4.0-sonnet\",\n      \"claude-4.1-opus\",\n      \"claude-4.5-haiku\",\n      \"claude-4.5-opus\",\n      \"claude-4.5-sonnet\",\n      \"deepseek-r1\",\n      \"deepseek-r1-0528\",\n      \"deepseek-v3\",\n      \"deepseek-v3-0324\",\n      \"deepseek-v3.1\",\n      \"deepseek/deepseek-math-v2\",\n      \"deepseek/deepseek-v3.1-terminus\",\n      \"deepseek/deepseek-v3.1-terminus-thinking\",\n      \"deepseek/deepseek-v3.2-251201\",\n      \"deepseek/deepseek-v3.2-exp\",\n      \"deepseek/deepseek-v3.2-exp-thinking\",\n      \"doubao-1.5-pro-32k\",\n      \"doubao-1.5-thinking-pro\",\n      \"doubao-1.5-vision-pro\",\n      \"doubao-seed-1.6\",\n      \"doubao-seed-1.6-flash\",\n      \"doubao-seed-1.6-thinking\",\n      \"doubao-seed-2.0-code\",\n      \"doubao-seed-2.0-lite\",\n      \"doubao-seed-2.0-mini\",\n      \"doubao-seed-2.0-pro\",\n      \"gemini-2.0-flash\",\n      \"gemini-2.0-flash-lite\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-flash-image\",\n      \"gemini-2.5-flash-lite\",\n      \"gemini-2.5-pro\",\n      \"gemini-3.0-flash-preview\",\n      \"gemini-3.0-pro-image-preview\",\n      \"gemini-3.0-pro-preview\",\n      \"glm-4.5\",\n      \"glm-4.5-air\",\n      \"gpt-oss-120b\",\n      \"gpt-oss-20b\",\n      \"kimi-k2\",\n      \"kling-v2-6\",\n      \"meituan/longcat-flash-chat\",\n      \"meituan/longcat-flash-lite\",\n      \"mimo-v2-flash\",\n      \"minimax/minimax-m2\",\n      \"minimax/minimax-m2.1\",\n      \"minimax/minimax-m2.5\",\n      \"minimax/minimax-m2.5-highspeed\",\n      \"moonshotai/kimi-k2-0905\",\n      \"moonshotai/kimi-k2-thinking\",\n      \"moonshotai/kimi-k2.5\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5.2\",\n      \"qwen-max-2025-01-25\",\n      \"qwen-turbo\",\n      \"qwen-vl-max-2025-01-25\",\n      \"qwen2.5-vl-72b-instruct\",\n      \"qwen2.5-vl-7b-instruct\",\n      \"qwen3-235b-a22b\",\n      \"qwen3-235b-a22b-instruct-2507\",\n      \"qwen3-235b-a22b-thinking-2507\",\n      \"qwen3-30b-a3b\",\n      \"qwen3-30b-a3b-instruct-2507\",\n      \"qwen3-30b-a3b-thinking-2507\",\n      \"qwen3-32b\",\n      \"qwen3-coder-480b-a35b-instruct\",\n      \"qwen3-max\",\n      \"qwen3-max-preview\",\n      \"qwen3-next-80b-a3b-instruct\",\n      \"qwen3-next-80b-a3b-thinking\",\n      \"qwen3-vl-30b-a3b-thinking\",\n      \"qwen3.5-397b-a17b\",\n      \"stepfun-ai/gelab-zero-4b-preview\",\n      \"stepfun/step-3.5-flash\",\n      \"x-ai/grok-4-fast\",\n      \"x-ai/grok-4-fast-non-reasoning\",\n      \"x-ai/grok-4-fast-reasoning\",\n      \"x-ai/grok-4.1-fast\",\n      \"x-ai/grok-4.1-fast-non-reasoning\",\n      \"x-ai/grok-4.1-fast-reasoning\",\n      \"x-ai/grok-code-fast-1\",\n      \"xiaomi/mimo-v2-flash\",\n      \"z-ai/autoglm-phone-9b\",\n      \"z-ai/glm-4.6\",\n      \"z-ai/glm-4.7\",\n      \"z-ai/glm-5\"\n    ],\n    \"google\": [\n      \"gemini-2.0-flash\",\n      \"gemini-2.0-flash-lite\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-flash-image\",\n      \"gemini-2.5-flash-lite\",\n      \"gemini-2.5-flash-preview-tts\",\n      \"gemini-2.5-pro\",\n      \"gemini-2.5-pro-preview-tts\",\n      \"gemini-3-flash-preview\",\n      \"gemini-3-pro-preview\",\n      \"gemini-3.1-flash-image-preview\",\n      \"gemini-3.1-flash-lite\",\n      \"gemini-3.1-flash-lite-preview\",\n      \"gemini-3.1-pro-preview\",\n      \"gemini-3.1-pro-preview-customtools\",\n      \"gemini-3.5-flash\",\n      \"gemini-embedding-001\",\n      \"gemini-flash-latest\",\n      \"gemini-flash-lite-latest\",\n      \"gemma-4-26b-a4b-it\",\n      \"gemma-4-31b-it\"\n    ],\n    \"scaleway\": [\n      \"bge-multilingual-gemma2\",\n      \"deepseek-r1-distill-llama-70b\",\n      \"devstral-2-123b-instruct-2512\",\n      \"gemma-3-27b-it\",\n      \"gpt-oss-120b\",\n      \"llama-3.1-8b-instruct\",\n      \"llama-3.3-70b-instruct\",\n      \"mistral-medium-3.5-128b\",\n      \"mistral-nemo-instruct-2407\",\n      \"mistral-small-3.2-24b-instruct-2506\",\n      \"pixtral-12b-2409\",\n      \"qwen3-235b-a22b-instruct-2507\",\n      \"qwen3-coder-30b-a3b-instruct\",\n      \"qwen3-embedding-8b\",\n      \"qwen3.5-397b-a17b\",\n      \"voxtral-small-24b-2507\",\n      \"whisper-large-v3\"\n    ],\n    \"opencode\": [\n      \"big-pickle\",\n      \"claude-haiku-4-5\",\n      \"claude-opus-4-1\",\n      \"claude-opus-4-5\",\n      \"claude-opus-4-6\",\n      \"claude-opus-4-7\",\n      \"claude-sonnet-4\",\n      \"claude-sonnet-4-5\",\n      \"claude-sonnet-4-6\",\n      \"deepseek-v4-flash-free\",\n      \"gemini-3-flash\",\n      \"gemini-3.1-pro\",\n      \"gemini-3.5-flash\",\n      \"glm-5\",\n      \"glm-5.1\",\n      \"gpt-5\",\n      \"gpt-5-codex\",\n      \"gpt-5-nano\",\n      \"gpt-5.1\",\n      \"gpt-5.1-codex\",\n      \"gpt-5.1-codex-max\",\n      \"gpt-5.1-codex-mini\",\n      \"gpt-5.2\",\n      \"gpt-5.2-codex\",\n      \"gpt-5.3-codex\",\n      \"gpt-5.3-codex-spark\",\n      \"gpt-5.4\",\n      \"gpt-5.4-mini\",\n      \"gpt-5.4-nano\",\n      \"gpt-5.4-pro\",\n      \"gpt-5.5\",\n      \"gpt-5.5-pro\",\n      \"grok-build-0.1\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\",\n      \"minimax-m2.5\",\n      \"minimax-m2.7\",\n      \"nemotron-3-super-free\",\n      \"qwen3.5-plus\",\n      \"qwen3.6-plus\"\n    ],\n    \"mixlayer\": [\n      \"qwen/qwen3.5-122b-a10b\",\n      \"qwen/qwen3.5-27b\",\n      \"qwen/qwen3.5-35b-a3b\",\n      \"qwen/qwen3.5-397b-a17b\",\n      \"qwen/qwen3.5-9b\"\n    ],\n    \"zenmux\": [\n      \"anthropic/claude-3.5-haiku\",\n      \"anthropic/claude-3.7-sonnet\",\n      \"anthropic/claude-haiku-4.5\",\n      \"anthropic/claude-opus-4\",\n      \"anthropic/claude-opus-4.1\",\n      \"anthropic/claude-opus-4.5\",\n      \"anthropic/claude-opus-4.6\",\n      \"anthropic/claude-opus-4.7\",\n      \"anthropic/claude-sonnet-4\",\n      \"anthropic/claude-sonnet-4.5\",\n      \"anthropic/claude-sonnet-4.6\",\n      \"baidu/ernie-5.0-thinking-preview\",\n      \"deepseek/deepseek-chat\",\n      \"deepseek/deepseek-v3.2\",\n      \"deepseek/deepseek-v3.2-exp\",\n      \"deepseek/deepseek-v4-flash\",\n      \"deepseek/deepseek-v4-pro\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-flash-lite\",\n      \"google/gemini-2.5-pro\",\n      \"google/gemini-3-flash-preview\",\n      \"google/gemini-3.1-flash-lite-preview\",\n      \"google/gemini-3.1-pro-preview\",\n      \"inclusionai/ling-1t\",\n      \"inclusionai/ring-1t\",\n      \"kuaishou/kat-coder-pro-v2\",\n      \"minimax/minimax-m2\",\n      \"minimax/minimax-m2.1\",\n      \"minimax/minimax-m2.5\",\n      \"minimax/minimax-m2.5-lightning\",\n      \"minimax/minimax-m2.7\",\n      \"minimax/minimax-m2.7-highspeed\",\n      \"moonshotai/kimi-k2-0905\",\n      \"moonshotai/kimi-k2-thinking\",\n      \"moonshotai/kimi-k2-thinking-turbo\",\n      \"moonshotai/kimi-k2.5\",\n      \"moonshotai/kimi-k2.6\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-codex\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.1-chat\",\n      \"openai/gpt-5.1-codex\",\n      \"openai/gpt-5.1-codex-mini\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.2-codex\",\n      \"openai/gpt-5.2-pro\",\n      \"openai/gpt-5.3-chat\",\n      \"openai/gpt-5.3-codex\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.4-mini\",\n      \"openai/gpt-5.4-nano\",\n      \"openai/gpt-5.4-pro\",\n      \"openai/gpt-5.5\",\n      \"openai/gpt-5.5-pro\",\n      \"qwen/qwen3-coder-plus\",\n      \"qwen/qwen3-max\",\n      \"qwen/qwen3.5-flash\",\n      \"qwen/qwen3.5-plus\",\n      \"qwen/qwen3.6-plus\",\n      \"sapiens-ai/agnes-1.5-lite\",\n      \"sapiens-ai/agnes-1.5-pro\",\n      \"stepfun/step-3\",\n      \"stepfun/step-3.5-flash\",\n      \"stepfun/step-3.5-flash-free\",\n      \"tencent/hy3-preview\",\n      \"volcengine/doubao-seed-1.8\",\n      \"volcengine/doubao-seed-2.0-code\",\n      \"volcengine/doubao-seed-2.0-lite\",\n      \"volcengine/doubao-seed-2.0-mini\",\n      \"volcengine/doubao-seed-2.0-pro\",\n      \"volcengine/doubao-seed-code\",\n      \"x-ai/grok-4\",\n      \"x-ai/grok-4-fast\",\n      \"x-ai/grok-4.1-fast\",\n      \"x-ai/grok-4.1-fast-non-reasoning\",\n      \"x-ai/grok-4.2-fast\",\n      \"x-ai/grok-4.2-fast-non-reasoning\",\n      \"x-ai/grok-code-fast-1\",\n      \"xiaomi/mimo-v2-flash\",\n      \"xiaomi/mimo-v2-omni\",\n      \"xiaomi/mimo-v2-pro\",\n      \"xiaomi/mimo-v2.5\",\n      \"xiaomi/mimo-v2.5-pro\",\n      \"z-ai/glm-4.5\",\n      \"z-ai/glm-4.5-air\",\n      \"z-ai/glm-4.6\",\n      \"z-ai/glm-4.6v\",\n      \"z-ai/glm-4.6v-flash\",\n      \"z-ai/glm-4.6v-flash-free\",\n      \"z-ai/glm-4.7\",\n      \"z-ai/glm-4.7-flash-free\",\n      \"z-ai/glm-4.7-flashx\",\n      \"z-ai/glm-5\",\n      \"z-ai/glm-5-turbo\",\n      \"z-ai/glm-5.1\",\n      \"z-ai/glm-5v-turbo\"\n    ],\n    \"perplexity-agent\": [\n      \"anthropic/claude-haiku-4-5\",\n      \"anthropic/claude-opus-4-5\",\n      \"anthropic/claude-opus-4-6\",\n      \"anthropic/claude-opus-4-7\",\n      \"anthropic/claude-sonnet-4-5\",\n      \"anthropic/claude-sonnet-4-6\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-pro\",\n      \"google/gemini-3-flash-preview\",\n      \"google/gemini-3.1-pro-preview\",\n      \"nvidia/nemotron-3-super-120b-a12b\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.5\",\n      \"perplexity/sonar\",\n      \"xai/grok-4-1-fast-non-reasoning\"\n    ],\n    \"alibaba-coding-plan\": [\n      \"MiniMax-M2.5\",\n      \"glm-4.7\",\n      \"glm-5\",\n      \"kimi-k2.5\",\n      \"qwen3-coder-next\",\n      \"qwen3-coder-plus\",\n      \"qwen3-max-2026-01-23\",\n      \"qwen3.5-plus\",\n      \"qwen3.6-plus\"\n    ],\n    \"meganova\": [\n      \"MiniMaxAI/MiniMax-M2.1\",\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"Qwen/Qwen2.5-VL-32B-Instruct\",\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"Qwen/Qwen3.5-Plus\",\n      \"XiaomiMiMo/MiMo-V2-Flash\",\n      \"deepseek-ai/DeepSeek-R1-0528\",\n      \"deepseek-ai/DeepSeek-V3-0324\",\n      \"deepseek-ai/DeepSeek-V3.1\",\n      \"deepseek-ai/DeepSeek-V3.2\",\n      \"deepseek-ai/DeepSeek-V3.2-Exp\",\n      \"meta-llama/Llama-3.3-70B-Instruct\",\n      \"mistralai/Mistral-Nemo-Instruct-2407\",\n      \"mistralai/Mistral-Small-3.2-24B-Instruct-2506\",\n      \"moonshotai/Kimi-K2-Thinking\",\n      \"moonshotai/Kimi-K2.5\",\n      \"zai-org/GLM-4.6\",\n      \"zai-org/GLM-4.7\",\n      \"zai-org/GLM-5\"\n    ],\n    \"synthetic\": [\n      \"hf:MiniMaxAI/MiniMax-M2\",\n      \"hf:MiniMaxAI/MiniMax-M2.1\",\n      \"hf:MiniMaxAI/MiniMax-M2.5\",\n      \"hf:Qwen/Qwen2.5-Coder-32B-Instruct\",\n      \"hf:Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"hf:Qwen/Qwen3-235B-A22B-Thinking-2507\",\n      \"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n      \"hf:Qwen/Qwen3.5-397B-A17B\",\n      \"hf:deepseek-ai/DeepSeek-R1\",\n      \"hf:deepseek-ai/DeepSeek-R1-0528\",\n      \"hf:deepseek-ai/DeepSeek-V3\",\n      \"hf:deepseek-ai/DeepSeek-V3-0324\",\n      \"hf:deepseek-ai/DeepSeek-V3.1\",\n      \"hf:deepseek-ai/DeepSeek-V3.1-Terminus\",\n      \"hf:deepseek-ai/DeepSeek-V3.2\",\n      \"hf:meta-llama/Llama-3.1-405B-Instruct\",\n      \"hf:meta-llama/Llama-3.1-70B-Instruct\",\n      \"hf:meta-llama/Llama-3.1-8B-Instruct\",\n      \"hf:meta-llama/Llama-3.3-70B-Instruct\",\n      \"hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n      \"hf:meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n      \"hf:moonshotai/Kimi-K2-Instruct-0905\",\n      \"hf:moonshotai/Kimi-K2-Thinking\",\n      \"hf:moonshotai/Kimi-K2.5\",\n      \"hf:moonshotai/Kimi-K2.6\",\n      \"hf:nvidia/Kimi-K2.5-NVFP4\",\n      \"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4\",\n      \"hf:openai/gpt-oss-120b\",\n      \"hf:zai-org/GLM-4.6\",\n      \"hf:zai-org/GLM-4.7\",\n      \"hf:zai-org/GLM-4.7-Flash\",\n      \"hf:zai-org/GLM-5\",\n      \"hf:zai-org/GLM-5.1\"\n    ],\n    \"inceptron\": [\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"moonshotai/Kimi-K2.6\",\n      \"nvidia/llama-3.3-70b-instruct-fp8\",\n      \"zai-org/GLM-5.1-FP8\"\n    ],\n    \"minimax-coding-plan\": [\n      \"MiniMax-M2\",\n      \"MiniMax-M2.1\",\n      \"MiniMax-M2.5\",\n      \"MiniMax-M2.5-highspeed\",\n      \"MiniMax-M2.7\",\n      \"MiniMax-M2.7-highspeed\"\n    ],\n    \"upstage\": [\"solar-mini\", \"solar-pro2\", \"solar-pro3\"],\n    \"vercel\": [\n      \"alibaba/qwen-3-14b\",\n      \"alibaba/qwen-3-235b\",\n      \"alibaba/qwen-3-30b\",\n      \"alibaba/qwen-3-32b\",\n      \"alibaba/qwen-3.6-max-preview\",\n      \"alibaba/qwen3-235b-a22b-thinking\",\n      \"alibaba/qwen3-coder\",\n      \"alibaba/qwen3-coder-30b-a3b\",\n      \"alibaba/qwen3-coder-next\",\n      \"alibaba/qwen3-coder-plus\",\n      \"alibaba/qwen3-embedding-0.6b\",\n      \"alibaba/qwen3-embedding-4b\",\n      \"alibaba/qwen3-embedding-8b\",\n      \"alibaba/qwen3-max\",\n      \"alibaba/qwen3-max-preview\",\n      \"alibaba/qwen3-max-thinking\",\n      \"alibaba/qwen3-next-80b-a3b-instruct\",\n      \"alibaba/qwen3-next-80b-a3b-thinking\",\n      \"alibaba/qwen3-vl-235b-a22b-instruct\",\n      \"alibaba/qwen3-vl-instruct\",\n      \"alibaba/qwen3-vl-thinking\",\n      \"alibaba/qwen3.5-flash\",\n      \"alibaba/qwen3.5-plus\",\n      \"alibaba/qwen3.6-27b\",\n      \"alibaba/qwen3.6-plus\",\n      \"alibaba/qwen3.7-max\",\n      \"amazon/nova-2-lite\",\n      \"amazon/nova-lite\",\n      \"amazon/nova-micro\",\n      \"amazon/nova-pro\",\n      \"amazon/titan-embed-text-v2\",\n      \"anthropic/claude-3-haiku\",\n      \"anthropic/claude-3-opus\",\n      \"anthropic/claude-3.5-haiku\",\n      \"anthropic/claude-3.5-sonnet\",\n      \"anthropic/claude-3.5-sonnet-20240620\",\n      \"anthropic/claude-3.7-sonnet\",\n      \"anthropic/claude-haiku-4.5\",\n      \"anthropic/claude-opus-4\",\n      \"anthropic/claude-opus-4.1\",\n      \"anthropic/claude-opus-4.5\",\n      \"anthropic/claude-opus-4.6\",\n      \"anthropic/claude-opus-4.7\",\n      \"anthropic/claude-sonnet-4\",\n      \"anthropic/claude-sonnet-4.5\",\n      \"anthropic/claude-sonnet-4.6\",\n      \"arcee-ai/trinity-large-preview\",\n      \"arcee-ai/trinity-large-thinking\",\n      \"arcee-ai/trinity-mini\",\n      \"bfl/flux-kontext-max\",\n      \"bfl/flux-kontext-pro\",\n      \"bfl/flux-pro-1.0-fill\",\n      \"bfl/flux-pro-1.1\",\n      \"bfl/flux-pro-1.1-ultra\",\n      \"bytedance/seed-1.6\",\n      \"bytedance/seed-1.8\",\n      \"cohere/command-a\",\n      \"cohere/embed-v4.0\",\n      \"deepseek/deepseek-r1\",\n      \"deepseek/deepseek-v3\",\n      \"deepseek/deepseek-v3.1\",\n      \"deepseek/deepseek-v3.1-terminus\",\n      \"deepseek/deepseek-v3.2\",\n      \"deepseek/deepseek-v3.2-exp\",\n      \"deepseek/deepseek-v3.2-thinking\",\n      \"deepseek/deepseek-v4-flash\",\n      \"deepseek/deepseek-v4-pro\",\n      \"google/gemini-2.0-flash\",\n      \"google/gemini-2.0-flash-lite\",\n      \"google/gemini-2.5-flash\",\n      \"google/gemini-2.5-flash-image\",\n      \"google/gemini-2.5-flash-image-preview\",\n      \"google/gemini-2.5-flash-lite\",\n      \"google/gemini-2.5-flash-lite-preview-09-2025\",\n      \"google/gemini-2.5-flash-preview-09-2025\",\n      \"google/gemini-2.5-pro\",\n      \"google/gemini-3-flash\",\n      \"google/gemini-3-pro-image\",\n      \"google/gemini-3-pro-preview\",\n      \"google/gemini-3.1-flash-image-preview\",\n      \"google/gemini-3.1-flash-lite\",\n      \"google/gemini-3.1-flash-lite-preview\",\n      \"google/gemini-3.1-pro-preview\",\n      \"google/gemini-3.5-flash\",\n      \"google/gemini-embedding-001\",\n      \"google/gemini-embedding-2\",\n      \"google/gemma-4-26b-a4b-it\",\n      \"google/gemma-4-31b-it\",\n      \"google/imagen-4.0-fast-generate-001\",\n      \"google/imagen-4.0-generate-001\",\n      \"google/imagen-4.0-ultra-generate-001\",\n      \"google/text-embedding-005\",\n      \"google/text-multilingual-embedding-002\",\n      \"inception/mercury-2\",\n      \"inception/mercury-coder-small\",\n      \"inception/mercury-edit-2\",\n      \"interfaze/interfaze-beta\",\n      \"kwaipilot/kat-coder-pro-v1\",\n      \"kwaipilot/kat-coder-pro-v2\",\n      \"meituan/longcat-flash-chat\",\n      \"meituan/longcat-flash-thinking\",\n      \"meituan/longcat-flash-thinking-2601\",\n      \"meta/llama-3.1-70b\",\n      \"meta/llama-3.1-8b\",\n      \"meta/llama-3.2-11b\",\n      \"meta/llama-3.2-1b\",\n      \"meta/llama-3.2-3b\",\n      \"meta/llama-3.2-90b\",\n      \"meta/llama-3.3-70b\",\n      \"meta/llama-4-maverick\",\n      \"meta/llama-4-scout\",\n      \"minimax/minimax-m2\",\n      \"minimax/minimax-m2.1\",\n      \"minimax/minimax-m2.1-lightning\",\n      \"minimax/minimax-m2.5\",\n      \"minimax/minimax-m2.5-highspeed\",\n      \"minimax/minimax-m2.7\",\n      \"minimax/minimax-m2.7-highspeed\",\n      \"mistral/codestral\",\n      \"mistral/codestral-embed\",\n      \"mistral/devstral-2\",\n      \"mistral/devstral-small\",\n      \"mistral/devstral-small-2\",\n      \"mistral/magistral-medium\",\n      \"mistral/magistral-small\",\n      \"mistral/ministral-14b\",\n      \"mistral/ministral-3b\",\n      \"mistral/ministral-8b\",\n      \"mistral/mistral-embed\",\n      \"mistral/mistral-large-3\",\n      \"mistral/mistral-medium\",\n      \"mistral/mistral-medium-3.5\",\n      \"mistral/mistral-nemo\",\n      \"mistral/mistral-small\",\n      \"mistral/mixtral-8x22b-instruct\",\n      \"mistral/pixtral-12b\",\n      \"mistral/pixtral-large\",\n      \"moonshotai/kimi-k2-0905\",\n      \"moonshotai/kimi-k2-thinking\",\n      \"moonshotai/kimi-k2-thinking-turbo\",\n      \"moonshotai/kimi-k2-turbo\",\n      \"moonshotai/kimi-k2.5\",\n      \"moonshotai/kimi-k2.6\",\n      \"morph/morph-v3-fast\",\n      \"morph/morph-v3-large\",\n      \"nvidia/nemotron-3-nano-30b-a3b\",\n      \"nvidia/nemotron-3-super-120b-a12b\",\n      \"nvidia/nemotron-nano-12b-v2-vl\",\n      \"nvidia/nemotron-nano-9b-v2\",\n      \"openai/codex-mini\",\n      \"openai/gpt-3.5-turbo\",\n      \"openai/gpt-3.5-turbo-instruct\",\n      \"openai/gpt-4-turbo\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4.1-nano\",\n      \"openai/gpt-4o\",\n      \"openai/gpt-4o-mini\",\n      \"openai/gpt-4o-mini-search-preview\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-chat\",\n      \"openai/gpt-5-codex\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-5-pro\",\n      \"openai/gpt-5.1-codex\",\n      \"openai/gpt-5.1-codex-max\",\n      \"openai/gpt-5.1-codex-mini\",\n      \"openai/gpt-5.1-instant\",\n      \"openai/gpt-5.1-thinking\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.2-chat\",\n      \"openai/gpt-5.2-codex\",\n      \"openai/gpt-5.2-pro\",\n      \"openai/gpt-5.3-chat\",\n      \"openai/gpt-5.3-codex\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.4-mini\",\n      \"openai/gpt-5.4-nano\",\n      \"openai/gpt-5.4-pro\",\n      \"openai/gpt-5.5\",\n      \"openai/gpt-5.5-pro\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-20b\",\n      \"openai/gpt-oss-safeguard-20b\",\n      \"openai/o1\",\n      \"openai/o3\",\n      \"openai/o3-deep-research\",\n      \"openai/o3-mini\",\n      \"openai/o3-pro\",\n      \"openai/o4-mini\",\n      \"openai/text-embedding-3-large\",\n      \"openai/text-embedding-3-small\",\n      \"openai/text-embedding-ada-002\",\n      \"perplexity/sonar\",\n      \"perplexity/sonar-pro\",\n      \"perplexity/sonar-reasoning\",\n      \"perplexity/sonar-reasoning-pro\",\n      \"prime-intellect/intellect-3\",\n      \"recraft/recraft-v2\",\n      \"recraft/recraft-v3\",\n      \"vercel/v0-1.0-md\",\n      \"vercel/v0-1.5-md\",\n      \"voyage/voyage-3-large\",\n      \"voyage/voyage-3.5\",\n      \"voyage/voyage-3.5-lite\",\n      \"voyage/voyage-4\",\n      \"voyage/voyage-4-large\",\n      \"voyage/voyage-4-lite\",\n      \"voyage/voyage-code-2\",\n      \"voyage/voyage-code-3\",\n      \"voyage/voyage-finance-2\",\n      \"voyage/voyage-law-2\",\n      \"xai/grok-4-fast-reasoning\",\n      \"xai/grok-4.1-fast-non-reasoning\",\n      \"xai/grok-4.1-fast-reasoning\",\n      \"xai/grok-4.20-multi-agent\",\n      \"xai/grok-4.20-multi-agent-beta\",\n      \"xai/grok-4.20-non-reasoning\",\n      \"xai/grok-4.20-non-reasoning-beta\",\n      \"xai/grok-4.20-reasoning\",\n      \"xai/grok-4.20-reasoning-beta\",\n      \"xai/grok-4.3\",\n      \"xai/grok-build-0.1\",\n      \"xai/grok-imagine-image\",\n      \"xai/grok-imagine-image-pro\",\n      \"xiaomi/mimo-v2-flash\",\n      \"xiaomi/mimo-v2-pro\",\n      \"xiaomi/mimo-v2.5\",\n      \"xiaomi/mimo-v2.5-pro\",\n      \"zai/glm-4.5\",\n      \"zai/glm-4.5-air\",\n      \"zai/glm-4.5v\",\n      \"zai/glm-4.6\",\n      \"zai/glm-4.6v\",\n      \"zai/glm-4.6v-flash\",\n      \"zai/glm-4.7\",\n      \"zai/glm-4.7-flash\",\n      \"zai/glm-4.7-flashx\",\n      \"zai/glm-5\",\n      \"zai/glm-5-turbo\",\n      \"zai/glm-5.1\",\n      \"zai/glm-5v-turbo\"\n    ],\n    \"abliteration-ai\": [\"abliterated-model\"],\n    \"deepseek\": [\"deepseek-chat\", \"deepseek-reasoner\", \"deepseek-v4-flash\", \"deepseek-v4-pro\"],\n    \"perplexity\": [\"sonar\", \"sonar-deep-research\", \"sonar-pro\", \"sonar-reasoning-pro\"],\n    \"iflowcn\": [\n      \"deepseek-r1\",\n      \"deepseek-v3\",\n      \"deepseek-v3.2\",\n      \"glm-4.6\",\n      \"kimi-k2\",\n      \"kimi-k2-0905\",\n      \"qwen3-235b\",\n      \"qwen3-235b-a22b-instruct\",\n      \"qwen3-235b-a22b-thinking-2507\",\n      \"qwen3-32b\",\n      \"qwen3-coder-plus\",\n      \"qwen3-max\",\n      \"qwen3-max-preview\",\n      \"qwen3-vl-plus\"\n    ],\n    \"stackit\": [\n      \"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8\",\n      \"Qwen/Qwen3-VL-Embedding-8B\",\n      \"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic\",\n      \"google/gemma-3-27b-it\",\n      \"intfloat/e5-mistral-7b-instruct\",\n      \"neuralmagic/Meta-Llama-3.1-8B-Instruct-FP8\",\n      \"neuralmagic/Mistral-Nemo-Instruct-2407-FP8\",\n      \"openai/gpt-oss-120b\"\n    ],\n    \"wafer.ai\": [\"GLM-5.1\", \"Qwen3.5-397B-A17B\"],\n    \"evroc\": [\n      \"KBLab/kb-whisper-large\",\n      \"Qwen/Qwen3-30B-A3B-Instruct-2507-FP8\",\n      \"Qwen/Qwen3-Embedding-8B\",\n      \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n      \"intfloat/multilingual-e5-large-instruct\",\n      \"microsoft/Phi-4-multimodal-instruct\",\n      \"mistralai/Magistral-Small-2509\",\n      \"mistralai/Voxtral-Small-24B-2507\",\n      \"mistralai/devstral-small-2-24b-instruct-2512\",\n      \"moonshotai/Kimi-K2.5\",\n      \"nvidia/Llama-3.3-70B-Instruct-FP8\",\n      \"openai/gpt-oss-120b\",\n      \"openai/whisper-large-v3\"\n    ],\n    \"nova\": [\"nova-2-lite-v1\", \"nova-2-pro-v1\"],\n    \"fireworks-ai\": [\n      \"accounts/fireworks/models/deepseek-v3p1\",\n      \"accounts/fireworks/models/deepseek-v3p2\",\n      \"accounts/fireworks/models/deepseek-v4-flash\",\n      \"accounts/fireworks/models/deepseek-v4-pro\",\n      \"accounts/fireworks/models/glm-4p5\",\n      \"accounts/fireworks/models/glm-4p5-air\",\n      \"accounts/fireworks/models/glm-4p7\",\n      \"accounts/fireworks/models/glm-5\",\n      \"accounts/fireworks/models/glm-5p1\",\n      \"accounts/fireworks/models/gpt-oss-120b\",\n      \"accounts/fireworks/models/gpt-oss-20b\",\n      \"accounts/fireworks/models/kimi-k2-instruct\",\n      \"accounts/fireworks/models/kimi-k2-thinking\",\n      \"accounts/fireworks/models/kimi-k2p5\",\n      \"accounts/fireworks/models/kimi-k2p6\",\n      \"accounts/fireworks/models/minimax-m2p1\",\n      \"accounts/fireworks/models/minimax-m2p5\",\n      \"accounts/fireworks/models/minimax-m2p7\",\n      \"accounts/fireworks/models/qwen3p6-plus\",\n      \"accounts/fireworks/routers/kimi-k2p5-turbo\"\n    ],\n    \"alibaba\": [\n      \"qvq-max\",\n      \"qwen-flash\",\n      \"qwen-max\",\n      \"qwen-mt-plus\",\n      \"qwen-mt-turbo\",\n      \"qwen-omni-turbo\",\n      \"qwen-omni-turbo-realtime\",\n      \"qwen-plus\",\n      \"qwen-plus-character-ja\",\n      \"qwen-turbo\",\n      \"qwen-vl-max\",\n      \"qwen-vl-ocr\",\n      \"qwen-vl-plus\",\n      \"qwen2-5-14b-instruct\",\n      \"qwen2-5-32b-instruct\",\n      \"qwen2-5-72b-instruct\",\n      \"qwen2-5-7b-instruct\",\n      \"qwen2-5-omni-7b\",\n      \"qwen2-5-vl-72b-instruct\",\n      \"qwen2-5-vl-7b-instruct\",\n      \"qwen3-14b\",\n      \"qwen3-235b-a22b\",\n      \"qwen3-32b\",\n      \"qwen3-8b\",\n      \"qwen3-asr-flash\",\n      \"qwen3-coder-30b-a3b-instruct\",\n      \"qwen3-coder-480b-a35b-instruct\",\n      \"qwen3-coder-flash\",\n      \"qwen3-coder-plus\",\n      \"qwen3-livetranslate-flash-realtime\",\n      \"qwen3-max\",\n      \"qwen3-next-80b-a3b-instruct\",\n      \"qwen3-next-80b-a3b-thinking\",\n      \"qwen3-omni-flash\",\n      \"qwen3-omni-flash-realtime\",\n      \"qwen3-vl-235b-a22b\",\n      \"qwen3-vl-30b-a3b\",\n      \"qwen3-vl-plus\",\n      \"qwen3.5-122b-a10b\",\n      \"qwen3.5-27b\",\n      \"qwen3.5-35b-a3b\",\n      \"qwen3.5-397b-a17b\",\n      \"qwen3.5-plus\",\n      \"qwen3.6-27b\",\n      \"qwen3.6-35b-a3b\",\n      \"qwen3.6-max-preview\",\n      \"qwen3.6-plus\",\n      \"qwen3.7-max\",\n      \"qwq-plus\"\n    ],\n    \"302ai\": [\n      \"MiniMax-M1\",\n      \"MiniMax-M2\",\n      \"MiniMax-M2.1\",\n      \"MiniMax-M2.7\",\n      \"MiniMax-M2.7-highspeed\",\n      \"chatgpt-4o-latest\",\n      \"claude-3-5-haiku-20241022\",\n      \"claude-3-5-haiku-latest\",\n      \"claude-haiku-4-5\",\n      \"claude-haiku-4-5-20251001\",\n      \"claude-opus-4-1-20250805\",\n      \"claude-opus-4-1-20250805-thinking\",\n      \"claude-opus-4-20250514\",\n      \"claude-opus-4-5\",\n      \"claude-opus-4-5-20251101\",\n      \"claude-opus-4-5-20251101-thinking\",\n      \"claude-opus-4-6\",\n      \"claude-opus-4-6-thinking\",\n      \"claude-opus-4-7\",\n      \"claude-sonnet-4-20250514\",\n      \"claude-sonnet-4-5\",\n      \"claude-sonnet-4-5-20250929\",\n      \"claude-sonnet-4-5-20250929-thinking\",\n      \"claude-sonnet-4-6\",\n      \"claude-sonnet-4-6-thinking\",\n      \"deepseek-chat\",\n      \"deepseek-reasoner\",\n      \"deepseek-v3.2\",\n      \"deepseek-v3.2-thinking\",\n      \"doubao-seed-1-6-thinking-250715\",\n      \"doubao-seed-1-6-vision-250815\",\n      \"doubao-seed-1-8-251215\",\n      \"doubao-seed-code-preview-251028\",\n      \"gemini-2.0-flash-lite\",\n      \"gemini-2.5-flash\",\n      \"gemini-2.5-flash-image\",\n      \"gemini-2.5-flash-lite-preview-09-2025\",\n      \"gemini-2.5-flash-nothink\",\n      \"gemini-2.5-flash-preview-09-2025\",\n      \"gemini-2.5-pro\",\n      \"gemini-3-flash-preview\",\n      \"gemini-3-pro-image-preview\",\n      \"gemini-3-pro-preview\",\n      \"gemini-3.1-flash-image-preview\",\n      \"glm-4.5\",\n      \"glm-4.5-air\",\n      \"glm-4.5-airx\",\n      \"glm-4.5-x\",\n      \"glm-4.5v\",\n      \"glm-4.6\",\n      \"glm-4.6v\",\n      \"glm-4.7\",\n      \"glm-4.7-flashx\",\n      \"glm-5\",\n      \"glm-5-turbo\",\n      \"glm-5.1\",\n      \"glm-5v-turbo\",\n      \"glm-for-coding\",\n      \"gpt-4.1\",\n      \"gpt-4.1-mini\",\n      \"gpt-4.1-nano\",\n      \"gpt-4o\",\n      \"gpt-5\",\n      \"gpt-5-mini\",\n      \"gpt-5-pro\",\n      \"gpt-5-thinking\",\n      \"gpt-5.1\",\n      \"gpt-5.1-chat-latest\",\n      \"gpt-5.2\",\n      \"gpt-5.2-chat-latest\",\n      \"gpt-5.4\",\n      \"gpt-5.4-mini\",\n      \"gpt-5.4-mini-2026-03-17\",\n      \"gpt-5.4-nano\",\n      \"gpt-5.4-nano-2026-03-17\",\n      \"gpt-5.4-pro\",\n      \"grok-4-1-fast-non-reasoning\",\n      \"grok-4-1-fast-reasoning\",\n      \"grok-4-fast-non-reasoning\",\n      \"grok-4-fast-reasoning\",\n      \"grok-4.1\",\n      \"grok-4.20-beta-0309-non-reasoning\",\n      \"grok-4.20-beta-0309-reasoning\",\n      \"grok-4.20-multi-agent-beta-0309\",\n      \"kimi-k2-0905-preview\",\n      \"kimi-k2-thinking\",\n      \"kimi-k2-thinking-turbo\",\n      \"ministral-14b-2512\",\n      \"mistral-large-2512\",\n      \"qwen-flash\",\n      \"qwen-max-latest\",\n      \"qwen-plus\",\n      \"qwen3-235b-a22b\",\n      \"qwen3-235b-a22b-instruct-2507\",\n      \"qwen3-30b-a3b\",\n      \"qwen3-coder-480b-a35b-instruct\",\n      \"qwen3-max-2025-09-23\"\n    ],\n    \"xpersona\": [\"xpersona-frieren-coder\"],\n    \"stepfun\": [\"step-1-32k\", \"step-2-16k\", \"step-3.5-flash\", \"step-3.5-flash-2603\"],\n    \"xai\": [\n      \"grok-4.20-0309-non-reasoning\",\n      \"grok-4.20-0309-reasoning\",\n      \"grok-4.20-multi-agent-0309\",\n      \"grok-4.3\",\n      \"grok-build-0.1\",\n      \"grok-imagine-image\",\n      \"grok-imagine-image-quality\",\n      \"grok-imagine-video\"\n    ],\n    \"sarvam\": [\"sarvam-105b\", \"sarvam-30b\"],\n    \"zhipuai\": [\n      \"glm-4.5\",\n      \"glm-4.5-air\",\n      \"glm-4.5-flash\",\n      \"glm-4.5v\",\n      \"glm-4.6\",\n      \"glm-4.6v\",\n      \"glm-4.7\",\n      \"glm-4.7-flash\",\n      \"glm-4.7-flashx\",\n      \"glm-5\",\n      \"glm-5.1\",\n      \"glm-5v-turbo\"\n    ],\n    \"bailing\": [\"Ling-1T\", \"Ring-1T\"],\n    \"qihang-ai\": [\n      \"claude-haiku-4-5-20251001\",\n      \"claude-opus-4-5-20251101\",\n      \"claude-sonnet-4-5-20250929\",\n      \"gemini-2.5-flash\",\n      \"gemini-3-flash-preview\",\n      \"gemini-3-pro-preview\",\n      \"gpt-5-mini\",\n      \"gpt-5.2\",\n      \"gpt-5.2-codex\"\n    ],\n    \"lilac\": [\"google/gemma-4-31b-it\", \"minimaxai/minimax-m2.7\", \"moonshotai/kimi-k2.6\", \"zai-org/glm-5.1\"],\n    \"alibaba-cn\": [\n      \"MiniMax-M2.5\",\n      \"MiniMax/MiniMax-M2.7\",\n      \"deepseek-r1\",\n      \"deepseek-r1-0528\",\n      \"deepseek-r1-distill-llama-70b\",\n      \"deepseek-r1-distill-llama-8b\",\n      \"deepseek-r1-distill-qwen-1-5b\",\n      \"deepseek-r1-distill-qwen-14b\",\n      \"deepseek-r1-distill-qwen-32b\",\n      \"deepseek-r1-distill-qwen-7b\",\n      \"deepseek-v3\",\n      \"deepseek-v3-1\",\n      \"deepseek-v3-2-exp\",\n      \"deepseek-v4-flash\",\n      \"deepseek-v4-pro\",\n      \"glm-5\",\n      \"glm-5.1\",\n      \"kimi-k2-thinking\",\n      \"kimi-k2.5\",\n      \"kimi-k2.6\",\n      \"kimi/kimi-k2.5\",\n      \"moonshot-kimi-k2-instruct\",\n      \"qvq-max\",\n      \"qwen-deep-research\",\n      \"qwen-doc-turbo\",\n      \"qwen-flash\",\n      \"qwen-long\",\n      \"qwen-math-plus\",\n      \"qwen-math-turbo\",\n      \"qwen-max\",\n      \"qwen-mt-plus\",\n      \"qwen-mt-turbo\",\n      \"qwen-omni-turbo\",\n      \"qwen-omni-turbo-realtime\",\n      \"qwen-plus\",\n      \"qwen-plus-character\",\n      \"qwen-turbo\",\n      \"qwen-vl-max\",\n      \"qwen-vl-ocr\",\n      \"qwen-vl-plus\",\n      \"qwen2-5-14b-instruct\",\n      \"qwen2-5-32b-instruct\",\n      \"qwen2-5-72b-instruct\",\n      \"qwen2-5-7b-instruct\",\n      \"qwen2-5-coder-32b-instruct\",\n      \"qwen2-5-coder-7b-instruct\",\n      \"qwen2-5-math-72b-instruct\",\n      \"qwen2-5-math-7b-instruct\",\n      \"qwen2-5-omni-7b\",\n      \"qwen2-5-vl-72b-instruct\",\n      \"qwen2-5-vl-7b-instruct\",\n      \"qwen3-14b\",\n      \"qwen3-235b-a22b\",\n      \"qwen3-32b\",\n      \"qwen3-8b\",\n      \"qwen3-asr-flash\",\n      \"qwen3-coder-30b-a3b-instruct\",\n      \"qwen3-coder-480b-a35b-instruct\",\n      \"qwen3-coder-flash\",\n      \"qwen3-coder-plus\",\n      \"qwen3-max\",\n      \"qwen3-next-80b-a3b-instruct\",\n      \"qwen3-next-80b-a3b-thinking\",\n      \"qwen3-omni-flash\",\n      \"qwen3-omni-flash-realtime\",\n      \"qwen3-vl-235b-a22b\",\n      \"qwen3-vl-30b-a3b\",\n      \"qwen3-vl-plus\",\n      \"qwen3.5-397b-a17b\",\n      \"qwen3.5-flash\",\n      \"qwen3.5-plus\",\n      \"qwen3.6-max-preview\",\n      \"qwen3.6-plus\",\n      \"qwq-32b\",\n      \"qwq-plus\",\n      \"siliconflow/deepseek-r1-0528\",\n      \"siliconflow/deepseek-v3-0324\",\n      \"siliconflow/deepseek-v3.1-terminus\",\n      \"siliconflow/deepseek-v3.2\",\n      \"tongyi-intent-detect-v3\"\n    ],\n    \"drun\": [\"public/deepseek-r1\", \"public/deepseek-v3\", \"public/minimax-m25\"],\n    \"huggingface\": [\n      \"MiniMaxAI/MiniMax-M2.1\",\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"MiniMaxAI/MiniMax-M2.7\",\n      \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n      \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n      \"Qwen/Qwen3-Coder-Next\",\n      \"Qwen/Qwen3-Embedding-4B\",\n      \"Qwen/Qwen3-Embedding-8B\",\n      \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n      \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n      \"Qwen/Qwen3.5-397B-A17B\",\n      \"XiaomiMiMo/MiMo-V2-Flash\",\n      \"deepseek-ai/DeepSeek-R1-0528\",\n      \"deepseek-ai/DeepSeek-V3.2\",\n      \"deepseek-ai/DeepSeek-V4-Pro\",\n      \"moonshotai/Kimi-K2-Instruct\",\n      \"moonshotai/Kimi-K2-Instruct-0905\",\n      \"moonshotai/Kimi-K2-Thinking\",\n      \"moonshotai/Kimi-K2.5\",\n      \"moonshotai/Kimi-K2.6\",\n      \"zai-org/GLM-4.7\",\n      \"zai-org/GLM-4.7-Flash\",\n      \"zai-org/GLM-5\",\n      \"zai-org/GLM-5.1\"\n    ],\n    \"umans-ai-coding-plan\": [\"umans-coder\", \"umans-flash\", \"umans-glm-5.1\", \"umans-kimi-k2.6\", \"umans-qwen3.6-35b-a3b\"],\n    \"tencent-tokenhub\": [\"hy3-preview\"],\n    \"nebius\": [\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"MiniMaxAI/MiniMax-M2.5-fast\",\n      \"NousResearch/Hermes-4-405B\",\n      \"NousResearch/Hermes-4-70B\",\n      \"PrimeIntellect/INTELLECT-3\",\n      \"Qwen/Qwen2.5-VL-72B-Instruct\",\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n      \"Qwen/Qwen3-235B-A22B-Thinking-2507-fast\",\n      \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n      \"Qwen/Qwen3-32B\",\n      \"Qwen/Qwen3-Embedding-8B\",\n      \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n      \"Qwen/Qwen3-Next-80B-A3B-Thinking-fast\",\n      \"Qwen/Qwen3.5-397B-A17B\",\n      \"Qwen/Qwen3.5-397B-A17B-fast\",\n      \"deepseek-ai/DeepSeek-V3.2\",\n      \"deepseek-ai/DeepSeek-V3.2-fast\",\n      \"deepseek-ai/DeepSeek-V4-Pro\",\n      \"google/gemma-2-2b-it\",\n      \"google/gemma-3-27b-it\",\n      \"meta-llama/Llama-3.3-70B-Instruct\",\n      \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n      \"moonshotai/Kimi-K2.5\",\n      \"moonshotai/Kimi-K2.5-fast\",\n      \"nvidia/Llama-3_1-Nemotron-Ultra-253B-v1\",\n      \"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B\",\n      \"nvidia/Nemotron-3-Nano-Omni\",\n      \"nvidia/nemotron-3-super-120b-a12b\",\n      \"openai/gpt-oss-120b\",\n      \"openai/gpt-oss-120b-fast\",\n      \"zai-org/GLM-5\"\n    ],\n    \"hpc-ai\": [\"minimax/minimax-m2.5\", \"moonshotai/kimi-k2.5\", \"zai-org/glm-5.1\"],\n    \"xiaomi\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n    \"togetherai\": [\n      \"MiniMaxAI/MiniMax-M2.5\",\n      \"MiniMaxAI/MiniMax-M2.7\",\n      \"Qwen/Qwen3-235B-A22B-Instruct-2507-tput\",\n      \"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8\",\n      \"Qwen/Qwen3-Coder-Next-FP8\",\n      \"Qwen/Qwen3.5-397B-A17B\",\n      \"Qwen/Qwen3.6-Plus\",\n      \"deepseek-ai/DeepSeek-R1\",\n      \"deepseek-ai/DeepSeek-V3\",\n      \"deepseek-ai/DeepSeek-V3-1\",\n      \"deepseek-ai/DeepSeek-V4-Pro\",\n      \"essentialai/Rnj-1-Instruct\",\n      \"google/gemma-4-31B-it\",\n      \"meta-llama/Llama-3.3-70B-Instruct-Turbo\",\n      \"moonshotai/Kimi-K2.5\",\n      \"moonshotai/Kimi-K2.6\",\n      \"openai/gpt-oss-120b\",\n      \"zai-org/GLM-5.1\"\n    ],\n    \"stepfun-ai\": [\"step-3.5-flash\", \"step-3.5-flash-2603\"],\n    \"inference\": [\n      \"google/gemma-3\",\n      \"meta/llama-3.1-8b-instruct\",\n      \"meta/llama-3.2-11b-vision-instruct\",\n      \"meta/llama-3.2-1b-instruct\",\n      \"meta/llama-3.2-3b-instruct\",\n      \"mistral/mistral-nemo-12b-instruct\",\n      \"osmosis/osmosis-structure-0.6b\",\n      \"qwen/qwen-2.5-7b-vision-instruct\",\n      \"qwen/qwen3-embedding-4b\"\n    ],\n    \"netlify\": [\n      \"anthropic/claude-haiku-4-5\",\n      \"anthropic/claude-haiku-4-5-20251001\",\n      \"anthropic/claude-opus-4-1-20250805\",\n      \"anthropic/claude-opus-4-20250514\",\n      \"anthropic/claude-opus-4-5\",\n      \"anthropic/claude-opus-4-5-20251101\",\n      \"anthropic/claude-opus-4-6\",\n      \"anthropic/claude-opus-4-7\",\n      \"anthropic/claude-sonnet-4-0\",\n      \"anthropic/claude-sonnet-4-20250514\",\n      \"anthropic/claude-sonnet-4-5\",\n      \"anthropic/claude-sonnet-4-5-20250929\",\n      \"anthropic/claude-sonnet-4-6\",\n      \"gemini/gemini-2.0-flash\",\n      \"gemini/gemini-2.0-flash-lite\",\n      \"gemini/gemini-2.5-flash\",\n      \"gemini/gemini-2.5-flash-image\",\n      \"gemini/gemini-2.5-flash-lite\",\n      \"gemini/gemini-2.5-pro\",\n      \"gemini/gemini-3-flash-preview\",\n      \"gemini/gemini-3-pro-image-preview\",\n      \"gemini/gemini-3.1-flash-image-preview\",\n      \"gemini/gemini-3.1-flash-lite\",\n      \"gemini/gemini-3.1-flash-lite-preview\",\n      \"gemini/gemini-3.1-pro-preview\",\n      \"gemini/gemini-3.1-pro-preview-customtools\",\n      \"gemini/gemini-3.5-flash\",\n      \"gemini/gemini-flash-latest\",\n      \"gemini/gemini-flash-lite-latest\",\n      \"openai/chat-latest\",\n      \"openai/gpt-4.1\",\n      \"openai/gpt-4.1-mini\",\n      \"openai/gpt-4.1-nano\",\n      \"openai/gpt-4o\",\n      \"openai/gpt-4o-mini\",\n      \"openai/gpt-5\",\n      \"openai/gpt-5-2025-08-07\",\n      \"openai/gpt-5-codex\",\n      \"openai/gpt-5-mini\",\n      \"openai/gpt-5-mini-2025-08-07\",\n      \"openai/gpt-5-nano\",\n      \"openai/gpt-5-pro\",\n      \"openai/gpt-5.1\",\n      \"openai/gpt-5.1-2025-11-13\",\n      \"openai/gpt-5.1-codex\",\n      \"openai/gpt-5.1-codex-max\",\n      \"openai/gpt-5.1-codex-mini\",\n      \"openai/gpt-5.2\",\n      \"openai/gpt-5.2-2025-12-11\",\n      \"openai/gpt-5.2-codex\",\n      \"openai/gpt-5.2-pro\",\n      \"openai/gpt-5.2-pro-2025-12-11\",\n      \"openai/gpt-5.3-chat-latest\",\n      \"openai/gpt-5.3-codex\",\n      \"openai/gpt-5.4\",\n      \"openai/gpt-5.4-2026-03-05\",\n      \"openai/gpt-5.4-mini\",\n      \"openai/gpt-5.4-mini-2026-03-17\",\n      \"openai/gpt-5.4-nano\",\n      \"openai/gpt-5.4-nano-2026-03-17\",\n      \"openai/gpt-5.4-pro\",\n      \"openai/gpt-5.4-pro-2026-03-05\",\n      \"openai/gpt-5.5\",\n      \"openai/gpt-5.5-2026-04-23\",\n      \"openai/gpt-5.5-pro\",\n      \"openai/gpt-5.5-pro-2026-04-23\",\n      \"openai/o3\",\n      \"openai/o3-mini\",\n      \"openai/o4-mini\"\n    ]\n  },\n  \"version\": \"1.0.0\"\n}\n","/**\n * Runtime provider registry loader\n * Loads provider data from JSON file and exports typed interfaces\n */\n\nimport fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport os from 'node:os';\nimport path from 'node:path';\nimport type { ProviderConfig, MastraModelGatewayInterface } from './gateways/base.js';\nimport { getGatewayId, shouldEnableGateway } from './gateways/index.js';\nimport { MastraGateway } from './gateways/mastra.js';\nimport { ModelsDevGateway } from './gateways/models-dev.js';\nimport { NetlifyGateway } from './gateways/netlify.js';\nimport staticRegistry from './provider-registry.json';\nimport type { Provider, ModelForProvider, ModelRouterModelId, ProviderModels } from './provider-types.generated.js';\n\n// Re-export types for convenience\nexport type { Provider, ModelForProvider, ModelRouterModelId, ProviderModels };\nexport type { AttachmentCapabilities } from './gateways/base.js';\n\ninterface RegistryData {\n  providers: Record<string, ProviderConfig>;\n  models: Record<string, string[]>;\n  version: string;\n}\n\n/**\n * Check if running in offline/air-gapped mode.\n * When MASTRA_OFFLINE is set to 'true' or '1', all network fetches for provider data are skipped.\n */\nexport function isOfflineMode(): boolean {\n  const value = process.env.MASTRA_OFFLINE;\n  return value === 'true' || value === '1';\n}\n\nfunction getEnabledGatewayIds(gateways: MastraModelGatewayInterface[]): Set<string> {\n  const enabledGatewayIds = new Set<string>();\n\n  for (const gateway of gateways) {\n    const enabled = shouldEnableGateway(gateway);\n    if (enabled) {\n      enabledGatewayIds.add(getGatewayId(gateway));\n    }\n  }\n\n  return enabledGatewayIds;\n}\n\nfunction sanitizeRegistryDataForRuntime(data: RegistryData, enabledGatewayIds: Set<string>): RegistryData {\n  const providers = Object.fromEntries(\n    Object.entries(data.providers).filter(([, config]) => enabledGatewayIds.has(config.gateway)),\n  );\n\n  const models = Object.fromEntries(Object.entries(data.models).filter(([providerId]) => providerId in providers));\n\n  return {\n    ...data,\n    providers,\n    models,\n  };\n}\n\n// In-memory cache for dynamic loading mode\nlet registryData: RegistryData | null = null;\n\n// Cache file helpers (dev mode only)\n// Use functions so we don't call os.homedir() at top level, which\n// causes an error in sandboxed environments when you merely\n// import @mastra/core. In those sandboxes, if you just don't use these\n// functions then you don't hit these errors.\nconst CACHE_DIR = () => path.join(os.homedir(), '.cache', 'mastra');\nconst CACHE_FILE = () => path.join(CACHE_DIR(), 'gateway-refresh-time');\nconst GLOBAL_PROVIDER_REGISTRY_JSON = () => path.join(CACHE_DIR(), 'provider-registry.json');\nconst GLOBAL_PROVIDER_TYPES_DTS = () => path.join(CACHE_DIR(), 'provider-types.generated.d.ts');\nconst GLOBAL_CAPABILITIES_DIR = () => path.join(CACHE_DIR(), 'capabilities');\n\nlet modelRouterCacheFailed = false;\n\n/**\n * Write a file atomically using the write-to-temp-then-rename pattern (synchronous version).\n * This prevents file corruption when multiple processes write to the same file concurrently.\n *\n * @param filePath - The target file path\n * @param content - The content to write\n * @param encoding - The encoding to use (default: 'utf-8')\n */\nfunction atomicWriteFileSync(filePath: string, content: string, encoding: BufferEncoding = 'utf-8'): void {\n  // Use random suffix to avoid collisions between concurrent writes\n  const randomSuffix = Math.random().toString(36).substring(2, 15);\n  const tempPath = `${filePath}.${process.pid}.${Date.now()}.${randomSuffix}.tmp`;\n\n  try {\n    fs.writeFileSync(tempPath, content, encoding);\n    fs.renameSync(tempPath, filePath);\n  } catch (error) {\n    try {\n      fs.unlinkSync(tempPath);\n    } catch {\n      // Ignore cleanup errors\n    }\n    throw error;\n  }\n}\n\n/**\n * Syncs provider files from global cache to local dist/ directory if needed.\n * Compares file contents to determine if copy is necessary.\n * Validates JSON before copying to prevent propagating corrupted files.\n */\nfunction syncGlobalCacheToLocal(): void {\n  try {\n    // Check if global cache files exist\n    const globalJsonExists = fs.existsSync(GLOBAL_PROVIDER_REGISTRY_JSON());\n    const globalDtsExists = fs.existsSync(GLOBAL_PROVIDER_TYPES_DTS());\n\n    if (!globalJsonExists && !globalDtsExists) {\n      // No global cache, nothing to sync\n      return;\n    }\n\n    // Use getPackageRoot() to find the correct location in node_modules or local dev\n    const packageRoot = getPackageRoot();\n    const localJsonPath = path.join(packageRoot, 'dist', 'provider-registry.json');\n    const localDtsPath = path.join(packageRoot, 'dist', 'llm', 'model', 'provider-types.generated.d.ts');\n\n    // Ensure local dist directory exists\n    fs.mkdirSync(path.dirname(localJsonPath), { recursive: true });\n    fs.mkdirSync(path.dirname(localDtsPath), { recursive: true });\n\n    // Sync JSON file if global exists and differs from local\n    if (globalJsonExists) {\n      const globalJsonContent = fs.readFileSync(GLOBAL_PROVIDER_REGISTRY_JSON(), 'utf-8');\n\n      // Validate JSON before copying to prevent propagating corrupted files.\n      // Silently delete on corruption — the next gateway sync will rewrite a\n      // valid file, so logging here just creates noise when an older mastra\n      // version (without the digit-quoting fix) shares the global cache.\n      try {\n        JSON.parse(globalJsonContent);\n      } catch {\n        try {\n          fs.unlinkSync(GLOBAL_PROVIDER_REGISTRY_JSON());\n        } catch {\n          // Ignore deletion errors\n        }\n        return;\n      }\n\n      let shouldCopyJson = true;\n\n      if (fs.existsSync(localJsonPath)) {\n        const localJsonContent = fs.readFileSync(localJsonPath, 'utf-8');\n        shouldCopyJson = globalJsonContent !== localJsonContent;\n      }\n\n      if (shouldCopyJson) {\n        // Use atomic write to prevent corruption from concurrent writes\n        atomicWriteFileSync(localJsonPath, globalJsonContent, 'utf-8');\n      }\n    }\n\n    // Capabilities are loaded lazily per-provider by loadProviderAttachmentModels().\n    // The global cache dir is included in findCapabilitiesDirs() so no bulk sync is needed.\n\n    // Sync .d.ts file if global exists and differs from local\n    if (globalDtsExists) {\n      const globalDtsContent = fs.readFileSync(GLOBAL_PROVIDER_TYPES_DTS(), 'utf-8');\n\n      // Validate .d.ts content: check for unquoted provider names that start with a digit\n      // (e.g. \"readonly 302ai:\" instead of \"readonly '302ai':\"), which produces invalid TypeScript.\n      // This can happen if the global cache was written by an older version without the quoting fix.\n      // Silently delete on corruption — the next gateway sync will rewrite a valid file.\n      if (/readonly\\s+\\d/.test(globalDtsContent)) {\n        try {\n          fs.unlinkSync(GLOBAL_PROVIDER_TYPES_DTS());\n        } catch {\n          // Ignore deletion errors\n        }\n        // Don't sync corrupted .d.ts file; fall through to keep existing local file\n      } else {\n        let shouldCopyDts = true;\n\n        if (fs.existsSync(localDtsPath)) {\n          const localDtsContent = fs.readFileSync(localDtsPath, 'utf-8');\n          shouldCopyDts = globalDtsContent !== localDtsContent;\n        }\n\n        if (shouldCopyDts) {\n          // Use atomic write to prevent corruption from concurrent writes\n          atomicWriteFileSync(localDtsPath, globalDtsContent, 'utf-8');\n        }\n      }\n    }\n  } catch {\n    // Silent fail - fall back to existing files. Sync errors are recoverable\n    // on the next call and don't need to be surfaced to users.\n  }\n}\n\nfunction getLastRefreshTimeFromDisk(): Date | null {\n  try {\n    if (!fs.existsSync(CACHE_FILE())) {\n      return null;\n    }\n    const timestamp = fs.readFileSync(CACHE_FILE(), 'utf-8').trim();\n    return new Date(parseInt(timestamp, 10));\n  } catch (err) {\n    console.warn('[GatewayRegistry] Failed to read cache file:', err);\n    modelRouterCacheFailed = true;\n    return null;\n  }\n}\n\nfunction saveLastRefreshTimeToDisk(date: Date): void {\n  try {\n    if (!fs.existsSync(CACHE_DIR())) {\n      fs.mkdirSync(CACHE_DIR(), { recursive: true });\n    }\n    fs.writeFileSync(CACHE_FILE(), date.getTime().toString(), 'utf-8');\n  } catch (err) {\n    modelRouterCacheFailed = true;\n    console.warn('[GatewayRegistry] Failed to write cache file:', err);\n  }\n}\n\nfunction getPackageRoot(): string {\n  try {\n    // Use require.resolve to find the package root reliably\n    const require = createRequire(import.meta.url || 'file://');\n    const packageJsonPath = require.resolve('@mastra/core/package.json');\n    return path.dirname(packageJsonPath);\n  } catch {\n    // Fallback to cwd if we can't resolve the package\n    return process.cwd();\n  }\n}\n\nfunction loadRegistry(useDynamicLoading: boolean, customGateways: MastraModelGatewayInterface[] = []): RegistryData {\n  const enabledGatewayIds = getEnabledGatewayIds([\n    new ModelsDevGateway({}),\n    new NetlifyGateway(),\n    new MastraGateway(),\n    ...customGateways,\n  ]);\n\n  // Production: use static import (bundled at build time)\n  if (!useDynamicLoading) {\n    return sanitizeRegistryDataForRuntime(staticRegistry, enabledGatewayIds);\n  }\n\n  // Dynamic loading mode: sync global cache to local before loading\n  syncGlobalCacheToLocal();\n\n  // Dynamic loading mode: check in-memory cache first\n  if (registryData) {\n    return registryData;\n  }\n\n  // Dynamic loading mode: load from file system for live updates\n  const packageRoot = getPackageRoot();\n  const possiblePaths: string[] = [\n    // Built: in dist/ relative to package root (first priority - what gets distributed)\n    path.join(packageRoot, 'dist', 'provider-registry.json'),\n    // Development: in src/ relative to package root\n    path.join(packageRoot, 'src', 'llm', 'model', 'provider-registry.json'),\n    // Fallback: relative to cwd (for monorepo setups)\n    path.join(process.cwd(), 'packages/core/src/llm/model/provider-registry.json'),\n    path.join(process.cwd(), 'src/llm/model/provider-registry.json'),\n  ];\n\n  const errors: string[] = [];\n\n  for (const jsonPath of possiblePaths) {\n    try {\n      const content = fs.readFileSync(jsonPath, 'utf-8');\n      const parsed = JSON.parse(content) as RegistryData;\n      registryData = sanitizeRegistryDataForRuntime(parsed, enabledGatewayIds);\n      return registryData!;\n    } catch (err) {\n      const errorMessage = err instanceof Error ? err.message : String(err);\n      errors.push(`${jsonPath}: ${errorMessage}`);\n\n      // If the file exists but has corrupted JSON (not ENOENT), delete it and fall back to static registry\n      // This handles cases where concurrent writes corrupted the file before the atomic write fix\n      const isFileNotFound = err instanceof Error && 'code' in err && (err as NodeJS.ErrnoException).code === 'ENOENT';\n      const isJsonParseError = err instanceof SyntaxError;\n\n      if (!isFileNotFound && isJsonParseError) {\n        console.warn(\n          `[GatewayRegistry] Detected corrupted provider-registry.json at ${jsonPath}. ` +\n            `Deleting corrupted file and falling back to static registry.`,\n        );\n        try {\n          fs.unlinkSync(jsonPath);\n        } catch {\n          // Ignore deletion errors\n        }\n        // Fall back to static registry (bundled at build time)\n        registryData = sanitizeRegistryDataForRuntime(staticRegistry, enabledGatewayIds);\n        return registryData;\n      }\n\n      continue;\n    }\n  }\n\n  // If all paths failed, fall back to static registry instead of throwing\n  // This provides a more graceful degradation\n  console.warn(\n    `[GatewayRegistry] Could not load provider registry from any path. Falling back to static registry.\\n` +\n      `Tried paths:\\n${errors.join('\\n')}`,\n  );\n  registryData = sanitizeRegistryDataForRuntime(staticRegistry, enabledGatewayIds);\n  return registryData;\n}\n\n// Export registry data via Proxy for lazy loading\nexport const PROVIDER_REGISTRY = new Proxy({} as Record<string, ProviderConfig>, {\n  get(_target, prop: string) {\n    const registry = GatewayRegistry.getInstance();\n    const providers = registry.getProviders();\n    return providers[prop];\n  },\n  ownKeys() {\n    const registry = GatewayRegistry.getInstance();\n    const providers = registry.getProviders();\n    return Object.keys(providers);\n  },\n  has(_target, prop: string) {\n    const registry = GatewayRegistry.getInstance();\n    const providers = registry.getProviders();\n    return prop in providers;\n  },\n  getOwnPropertyDescriptor(_target, prop) {\n    const registry = GatewayRegistry.getInstance();\n    const providers = registry.getProviders();\n    if (prop in providers) {\n      return {\n        enumerable: true,\n        configurable: true,\n      };\n    }\n    return undefined;\n  },\n}) as Record<Provider, ProviderConfig>;\n\nexport const PROVIDER_MODELS = new Proxy({} as ProviderModels, {\n  get(_target, prop: string) {\n    const registry = GatewayRegistry.getInstance();\n    const models = registry.getModels();\n    return models[prop];\n  },\n  ownKeys() {\n    const registry = GatewayRegistry.getInstance();\n    const models = registry.getModels();\n    return Object.keys(models);\n  },\n  has(_target, prop: string) {\n    const registry = GatewayRegistry.getInstance();\n    const models = registry.getModels();\n    return prop in models;\n  },\n  getOwnPropertyDescriptor(_target, prop) {\n    const registry = GatewayRegistry.getInstance();\n    const models = registry.getModels();\n    if (prop in models) {\n      return {\n        enumerable: true,\n        configurable: true,\n      };\n    }\n    return undefined;\n  },\n});\n\n/**\n * Parse a model string to extract provider and model ID\n * Examples:\n *   \"openai/gpt-4o\" -> { provider: \"openai\", modelId: \"gpt-4o\" }\n *   \"fireworks/accounts/etc/model\" -> { provider: \"fireworks\", modelId: \"accounts/etc/model\" }\n *   \"gpt-4o\" -> { provider: null, modelId: \"gpt-4o\" }\n */\nexport function parseModelString(modelString: string): { provider: string | null; modelId: string } {\n  const firstSlashIndex = modelString.indexOf('/');\n\n  if (firstSlashIndex !== -1) {\n    // Has at least one slash - extract everything before first slash as provider\n    const provider = modelString.substring(0, firstSlashIndex);\n    const modelId = modelString.substring(firstSlashIndex + 1);\n\n    if (provider && modelId) {\n      return {\n        provider,\n        modelId,\n      };\n    }\n  }\n\n  // No slash or invalid format\n  return {\n    provider: null,\n    modelId: modelString,\n  };\n}\n\n/**\n * Get provider configuration by provider ID\n */\nexport function getProviderConfig(providerId: string): ProviderConfig | undefined {\n  const registry = GatewayRegistry.getInstance();\n  return registry.getProviderConfig(providerId);\n}\n\n/**\n * Check if a provider is registered\n */\nexport function isProviderRegistered(providerId: string): boolean {\n  const registry = GatewayRegistry.getInstance();\n  return registry.isProviderRegistered(providerId);\n}\n\n/**\n * Get all registered provider IDs\n */\nexport function getRegisteredProviders(): string[] {\n  const registry = GatewayRegistry.getInstance();\n  const providers = registry.getProviders();\n  return Object.keys(providers);\n}\n\n// ---------------------------------------------------------------------------\n// Provider capabilities (per-model attachment / modality metadata)\n// ---------------------------------------------------------------------------\n\ninterface ProviderCapabilityFile {\n  attachment: string[];\n}\n\nconst providerCapCache = new Map<string, string[] | null>();\n\nfunction isDirectory(dir: string): boolean {\n  try {\n    return fs.existsSync(dir) && fs.statSync(dir).isDirectory();\n  } catch {\n    return false;\n  }\n}\n\nfunction findCapabilitiesDirs(useDynamicLoading: boolean): string[] {\n  const packageRoot = getPackageRoot();\n  const distCapabilitiesDir = path.join(packageRoot, 'dist', 'capabilities');\n  const sourceCapabilitiesDir = path.join(packageRoot, 'src', 'llm', 'model', 'capabilities');\n  const workspaceSourceCapabilitiesDir = path.join(process.cwd(), 'packages/core/src/llm/model/capabilities');\n\n  const dirs: string[] = [];\n\n  // In dynamic mode, prefer the global cache so fresher gateway-synced data wins.\n  if (useDynamicLoading) {\n    const globalCapDir = GLOBAL_CAPABILITIES_DIR();\n    if (isDirectory(globalCapDir)) dirs.push(globalCapDir);\n  }\n\n  if (isDirectory(distCapabilitiesDir)) dirs.push(distCapabilitiesDir);\n\n  // Published packages only include dist/. Source fallbacks are for local workspace/dev\n  // runs where @mastra/core may resolve through a stale partial dist while checked-in\n  // source capability files are available.\n  if (isDirectory(sourceCapabilitiesDir)) dirs.push(sourceCapabilitiesDir);\n  if (workspaceSourceCapabilitiesDir !== sourceCapabilitiesDir && isDirectory(workspaceSourceCapabilitiesDir)) {\n    dirs.push(workspaceSourceCapabilitiesDir);\n  }\n\n  return dirs;\n}\n\nlet capabilitiesDirCache: string[] | undefined;\n\nfunction loadProviderAttachmentModels(provider: string, useDynamicLoading: boolean): string[] | null {\n  if (providerCapCache.has(provider)) return providerCapCache.get(provider)!;\n\n  if (capabilitiesDirCache === undefined) {\n    capabilitiesDirCache = findCapabilitiesDirs(useDynamicLoading);\n  }\n\n  for (const capabilitiesDir of capabilitiesDirCache) {\n    const filePath = path.join(capabilitiesDir, `${provider}.json`);\n    try {\n      const content = fs.readFileSync(filePath, 'utf-8');\n      const data = JSON.parse(content) as ProviderCapabilityFile;\n      providerCapCache.set(provider, data.attachment);\n      return data.attachment;\n    } catch {\n      continue;\n    }\n  }\n\n  providerCapCache.set(provider, null);\n  return null;\n}\n\n/**\n * Check whether a model supports image/file attachments.\n * Reads only the per-provider capability file for the given model's provider.\n * Returns `true` if the model is listed, `false` if the provider is known but\n * the model isn't listed, or `undefined` when no data exists for the provider.\n */\nfunction getProviderAttachmentSupport(\n  provider: string,\n  modelId: string,\n  useDynamicLoading: boolean,\n): boolean | undefined {\n  const models = loadProviderAttachmentModels(provider, useDynamicLoading);\n  if (!models) return undefined;\n  return models.includes(modelId);\n}\n\nexport function modelSupportsAttachments(modelRouterId: string): boolean | undefined {\n  const { provider, modelId } = parseModelString(modelRouterId);\n  if (!provider) return undefined;\n\n  const registry = GatewayRegistry.getInstance();\n  const useDynamicLoading = registry['useDynamicLoading'];\n  const directSupport = getProviderAttachmentSupport(provider, modelId, useDynamicLoading);\n  if (directSupport !== undefined) return directSupport;\n\n  const nestedProviderDelimiter = modelId.indexOf('/');\n  if (nestedProviderDelimiter !== -1) {\n    const nestedProvider = modelId.substring(0, nestedProviderDelimiter);\n    const nestedModelId = modelId.substring(nestedProviderDelimiter + 1);\n    if (nestedProvider && nestedModelId) {\n      const nestedSupport = getProviderAttachmentSupport(nestedProvider, nestedModelId, useDynamicLoading);\n      if (nestedSupport !== undefined) return nestedSupport;\n    }\n  }\n\n  return directSupport;\n}\n\n/**\n * Type guard to check if a string is a valid OpenAI-compatible model ID\n */\nexport function isValidModelId(modelId: string): modelId is ModelRouterModelId {\n  const { provider } = parseModelString(modelId);\n  return provider !== null && isProviderRegistered(provider);\n}\n\nexport interface GatewayRegistryOptions {\n  /**\n   * Enable dynamic loading from file system instead of using static bundled registry.\n   * Required for syncGateways() and auto-refresh to work.\n   * Defaults to true when MASTRA_DEV=true, false otherwise.\n   */\n  useDynamicLoading?: boolean;\n}\n\n/**\n * GatewayRegistry - Manages dynamic loading and refreshing of provider data from gateways\n * Singleton class that handles runtime updates to the provider registry\n */\nexport class GatewayRegistry {\n  private static instance: GatewayRegistry | null = null;\n  private lastRefreshTime: Date | null = null;\n  private refreshInterval: NodeJS.Timeout | null = null;\n  private isRefreshing = false;\n  private useDynamicLoading: boolean;\n  private customGateways: MastraModelGatewayInterface[] = [];\n\n  private constructor(options: GatewayRegistryOptions = {}) {\n    const isDev = process.env.MASTRA_DEV === 'true' || process.env.MASTRA_DEV === '1';\n    this.useDynamicLoading = options.useDynamicLoading ?? isDev;\n  }\n\n  /**\n   * Get the singleton instance\n   */\n  static getInstance(options?: GatewayRegistryOptions): GatewayRegistry {\n    if (!GatewayRegistry.instance) {\n      GatewayRegistry.instance = new GatewayRegistry(options);\n      return GatewayRegistry.instance;\n    }\n\n    if (options?.useDynamicLoading === true) {\n      GatewayRegistry.instance.useDynamicLoading = true;\n    }\n\n    return GatewayRegistry.instance;\n  }\n\n  /**\n   * Register custom gateways for type generation\n   * @param gateways - Array of custom gateway instances\n   */\n  registerCustomGateways(gateways: MastraModelGatewayInterface[]): void {\n    this.customGateways = gateways;\n  }\n\n  /**\n   * Get all registered custom gateways\n   */\n  getCustomGateways(): MastraModelGatewayInterface[] {\n    return this.customGateways;\n  }\n\n  /**\n   * Sync providers from all gateways\n   * Requires dynamic loading to be enabled (useDynamicLoading=true).\n   * @param forceRefresh - Force refresh even if recently synced\n   * @param writeToSrc - Write to src/ directory in addition to dist/ (useful for manual generation in repo)\n   */\n  async syncGateways(forceRefresh = false, writeToSrc = false): Promise<void> {\n    // Only allow sync when dynamic loading is enabled or when explicitly writing to src (build script)\n    if (!this.useDynamicLoading && !writeToSrc) {\n      // console.debug('[GatewayRegistry] Skipping sync (dynamic loading disabled, registry is static)');\n      return;\n    }\n\n    // Skip all network fetches when running in offline/air-gapped mode\n    if (isOfflineMode()) {\n      return;\n    }\n\n    if (this.isRefreshing && !forceRefresh) {\n      // console.debug('[GatewayRegistry] Sync already in progress, skipping...');\n      return;\n    }\n\n    this.isRefreshing = true;\n\n    try {\n      // console.debug('[GatewayRegistry] Starting gateway sync...');\n\n      // Import gateway classes and generation functions\n      const { ModelsDevGateway } = await import('./gateways/models-dev.js');\n      const { NetlifyGateway } = await import('./gateways/netlify.js');\n      const { MastraGateway } = await import('./gateways/mastra.js');\n      const { fetchProvidersFromGateways, writeRegistryFiles } = await import('./registry-generator.js');\n\n      // Initialize default gateways. Mastra Gateway is dynamic-only and should not be written into checked-in static artifacts.\n      const defaultGateways = [\n        new ModelsDevGateway({}),\n        new NetlifyGateway(),\n        ...(writeToSrc ? [] : [new MastraGateway()]),\n      ];\n\n      // Combine default and custom gateways\n      const gateways = [...defaultGateways, ...this.customGateways];\n\n      // Fetch provider data\n      const { providers, models, attachmentCapabilities } = await fetchProvidersFromGateways(gateways);\n\n      // Get package root for file paths\n      const packageRoot = getPackageRoot();\n\n      // Write to global cache first (so all projects can benefit)\n      try {\n        fs.mkdirSync(CACHE_DIR(), { recursive: true });\n        await writeRegistryFiles(\n          GLOBAL_PROVIDER_REGISTRY_JSON(),\n          GLOBAL_PROVIDER_TYPES_DTS(),\n          providers,\n          models,\n          attachmentCapabilities,\n        );\n        // console.debug(`[GatewayRegistry] ✅ Updated global cache at ${CACHE_DIR()}`);\n      } catch (error) {\n        console.warn('[GatewayRegistry] Failed to write to global cache:', error);\n      }\n\n      // Write to dist/ (the bundled location that gets distributed)\n      const distJsonPath = path.join(packageRoot, 'dist', 'provider-registry.json');\n      const distTypesPath = path.join(packageRoot, 'dist', 'llm', 'model', 'provider-types.generated.d.ts');\n\n      await writeRegistryFiles(distJsonPath, distTypesPath, providers, models, attachmentCapabilities);\n      // console.debug(`[GatewayRegistry] ✅ Updated registry files in dist/`);\n\n      // Copy to src/ only when explicitly requested (e.g., running the generation script)\n      const shouldWriteToSrc = writeToSrc;\n      if (shouldWriteToSrc) {\n        const srcJsonPath = path.join(packageRoot, 'src', 'llm', 'model', 'provider-registry.json');\n        const srcTypesPath = path.join(packageRoot, 'src', 'llm', 'model', 'provider-types.generated.d.ts');\n\n        // Copy the already-generated files\n        await fs.promises.copyFile(distJsonPath, srcJsonPath);\n        await fs.promises.copyFile(distTypesPath, srcTypesPath);\n\n        const distCapDir = path.join(packageRoot, 'dist', 'capabilities');\n        const srcCapDir = path.join(packageRoot, 'src', 'llm', 'model', 'capabilities');\n        if (fs.existsSync(distCapDir)) {\n          await fs.promises.mkdir(srcCapDir, { recursive: true });\n          const capFiles = fs.readdirSync(distCapDir).filter(f => f.endsWith('.json'));\n          for (const file of capFiles) {\n            await fs.promises.copyFile(path.join(distCapDir, file), path.join(srcCapDir, file));\n          }\n        }\n        // console.debug(`[GatewayRegistry] ✅ Copied registry files to src/ (${writeToSrc ? 'manual' : 'dynamic loading'})`);\n      }\n\n      // Clear the in-memory cache to force reload (dynamic loading only)\n      if (this.useDynamicLoading) {\n        registryData = null;\n        providerCapCache.clear();\n        capabilitiesDirCache = undefined;\n      }\n\n      this.lastRefreshTime = new Date();\n      saveLastRefreshTimeToDisk(this.lastRefreshTime);\n      // console.debug(`[GatewayRegistry] ✅ Gateway sync completed at ${this.lastRefreshTime.toISOString()}`);\n    } catch {\n      // Silently ignore — the bundled registry already contains all\n      // model data so a failed sync is non-critical.\n    } finally {\n      this.isRefreshing = false;\n    }\n  }\n\n  /**\n   * Get the last refresh time (from memory or disk cache)\n   */\n  getLastRefreshTime(): Date | null {\n    return this.lastRefreshTime || getLastRefreshTimeFromDisk();\n  }\n\n  /**\n   * Start auto-refresh on an interval\n   * Requires dynamic loading to be enabled (useDynamicLoading=true).\n   * @param intervalMs - Interval in milliseconds (default: 1 hour)\n   */\n  startAutoRefresh(intervalMs = 60 * 60 * 1000): void {\n    // Only allow auto-refresh when dynamic loading is enabled\n    if (!this.useDynamicLoading) {\n      // console.debug('[GatewayRegistry] Skipping auto-refresh (dynamic loading disabled, registry is static)');\n      return;\n    }\n\n    // Skip auto-refresh when running in offline/air-gapped mode\n    if (isOfflineMode()) {\n      return;\n    }\n\n    if (this.refreshInterval) {\n      // console.debug('[GatewayRegistry] Auto-refresh already running');\n      return;\n    }\n\n    // console.debug(`[GatewayRegistry] Starting auto-refresh (interval: ${intervalMs}ms)`);\n\n    // Check if we need to run an immediate sync\n    const lastRefresh = getLastRefreshTimeFromDisk();\n    const now = Date.now();\n    const shouldRefresh = !modelRouterCacheFailed && (!lastRefresh || now - lastRefresh.getTime() > intervalMs);\n\n    if (shouldRefresh) {\n      this.syncGateways().catch(() => {});\n    }\n\n    this.refreshInterval = setInterval(() => {\n      if (modelRouterCacheFailed && this.refreshInterval) {\n        clearInterval(this.refreshInterval);\n        this.refreshInterval = null;\n        return;\n      }\n      this.syncGateways().catch(() => {});\n    }, intervalMs);\n\n    // Prevent the interval from keeping the process alive\n    if (this.refreshInterval.unref) {\n      this.refreshInterval.unref();\n    }\n  }\n\n  /**\n   * Stop auto-refresh\n   */\n  stopAutoRefresh(): void {\n    if (this.refreshInterval) {\n      clearInterval(this.refreshInterval);\n      this.refreshInterval = null;\n      // console.debug('[GatewayRegistry] Auto-refresh stopped');\n    }\n  }\n\n  /**\n   * Get provider configuration by ID\n   */\n  getProviderConfig(providerId: string): ProviderConfig | undefined {\n    const data = loadRegistry(this.useDynamicLoading, this.customGateways);\n    return data.providers[providerId];\n  }\n\n  /**\n   * Check if a provider is registered\n   */\n  isProviderRegistered(providerId: string): boolean {\n    const data = loadRegistry(this.useDynamicLoading, this.customGateways);\n    return providerId in data.providers;\n  }\n\n  /**\n   * Get all registered providers\n   */\n  getProviders(): Record<string, ProviderConfig> {\n    const data = loadRegistry(this.useDynamicLoading, this.customGateways);\n    return data.providers;\n  }\n\n  /**\n   * Get all models\n   */\n  getModels(): Record<string, string[]> {\n    return loadRegistry(this.useDynamicLoading, this.customGateways).models;\n  }\n}\n\n// Auto-start refresh if enabled\n// Defaults to enabled when MASTRA_DEV=true (which enables dynamic loading by default)\n// Disabled entirely when MASTRA_OFFLINE is set (air-gapped/offline environments)\nconst isDev = process.env.MASTRA_DEV === 'true' || process.env.MASTRA_DEV === '1';\nconst autoRefreshEnabled =\n  !isOfflineMode() &&\n  (process.env.MASTRA_AUTO_REFRESH_PROVIDERS === 'true' ||\n    (process.env.MASTRA_AUTO_REFRESH_PROVIDERS !== 'false' && isDev));\n\nif (autoRefreshEnabled) {\n  // console.debug('[GatewayRegistry] Auto-refresh enabled');\n  GatewayRegistry.getInstance({ useDynamicLoading: isDev }).startAutoRefresh();\n}\n"]}