{"version":3,"sources":["../../src/providers/anthropic.ts","../../src/config.ts","../../src/middleware.ts","../../src/models/metadata.ts","../../src/models/anthropic-models.ts","../../src/models/google-models.ts","../../src/models/openai-models.ts","../../src/models/catalog.ts"],"sourcesContent":["import { createAnthropic } from '@ai-sdk/anthropic';\nimport type { wrapLanguageModel } from 'ai';\nimport { NoSuchModelError } from 'ai';\nimport { resolveFoundryConfig } from '../config.js';\nimport { wrapFoundryLanguageModel } from '../middleware.js';\nimport type { AnthropicModelId } from '../models/anthropic-models.js';\nimport { resolveModelTarget } from '../models/catalog.js';\nimport type { FoundryConfig } from '../types.js';\n\ntype FoundryLanguageModel = Parameters<typeof wrapLanguageModel>[0]['model'];\n\nexport interface FoundryAnthropicProvider {\n  (modelId: AnthropicModelId): FoundryLanguageModel;\n  specificationVersion: 'v3';\n  languageModel(modelId: AnthropicModelId): FoundryLanguageModel;\n  chat(modelId: AnthropicModelId): FoundryLanguageModel;\n  messages(modelId: AnthropicModelId): FoundryLanguageModel;\n  embeddingModel(modelId: string): never;\n  imageModel(modelId: string): never;\n}\n\nexport function createFoundryAnthropic(config: FoundryConfig): FoundryAnthropicProvider {\n  const providerId = 'foundry-anthropic';\n  const resolvedConfig = resolveFoundryConfig(config, 'createFoundryAnthropic');\n  const baseProvider = createAnthropic({\n    authToken: resolvedConfig.token,\n    baseURL: `${resolvedConfig.foundryUrl}/api/v2/llm/proxy/anthropic/v1`,\n    headers: resolvedConfig.attributionRid\n      ? { attribution: resolvedConfig.attributionRid }\n      : undefined,\n    name: providerId,\n  });\n\n  const createLanguageModel = (modelId: AnthropicModelId): FoundryLanguageModel => {\n    const resolvedModel = resolveModelTarget(modelId);\n\n    return wrapFoundryLanguageModel(baseProvider(resolvedModel.rid), {\n      modelId,\n      providerId,\n    });\n  };\n\n  function provider(modelId: AnthropicModelId): FoundryLanguageModel {\n    return createLanguageModel(modelId);\n  }\n\n  const callableProvider = provider as FoundryAnthropicProvider;\n\n  callableProvider.specificationVersion = 'v3';\n  callableProvider.languageModel = createLanguageModel;\n  callableProvider.chat = createLanguageModel;\n  callableProvider.messages = createLanguageModel;\n  callableProvider.embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n  };\n  callableProvider.imageModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n  };\n\n  return callableProvider;\n}\n","import type { FoundryConfig } from './types.js';\n\nconst FOUNDRY_URL_ENV = 'FOUNDRY_URL';\nconst FOUNDRY_TOKEN_ENV = 'FOUNDRY_TOKEN';\nconst FOUNDRY_ATTRIBUTION_RID_ENV = 'FOUNDRY_ATTRIBUTION_RID';\n\nexport function loadFoundryConfig(env: NodeJS.ProcessEnv = process.env): FoundryConfig {\n  return normalizeResolvedFoundryConfig({\n    foundryUrl: requireEnv(env, FOUNDRY_URL_ENV),\n    token: requireEnv(env, FOUNDRY_TOKEN_ENV),\n    attributionRid: optionalEnv(env, FOUNDRY_ATTRIBUTION_RID_ENV),\n  });\n}\n\nexport function normalizeFoundryUrl(foundryUrl: string): string {\n  return foundryUrl.trim().replace(/\\/+$/, '');\n}\n\nexport function resolveFoundryConfig(config: FoundryConfig, callerName: string): FoundryConfig {\n  const normalizedConfig = normalizeResolvedFoundryConfig({\n    foundryUrl: typeof config.foundryUrl === 'string' ? config.foundryUrl : '',\n    token: typeof config.token === 'string' ? config.token : '',\n    attributionRid: typeof config.attributionRid === 'string' ? config.attributionRid : undefined,\n  });\n\n  if (normalizedConfig.foundryUrl.length === 0) {\n    throw new Error(`${callerName} requires config.foundryUrl to be a non-empty string.`);\n  }\n\n  if (normalizedConfig.token.length === 0) {\n    throw new Error(`${callerName} requires config.token to be a non-empty string.`);\n  }\n\n  return normalizedConfig;\n}\n\nfunction requireEnv(env: NodeJS.ProcessEnv, name: string): string {\n  const value = optionalEnv(env, name);\n\n  if (value == null) {\n    throw new Error(`Missing required environment variable: ${name}`);\n  }\n\n  return value;\n}\n\nfunction optionalEnv(env: NodeJS.ProcessEnv, name: string): string | undefined {\n  const value = env[name]?.trim();\n\n  return value ? value : undefined;\n}\n\nfunction normalizeResolvedFoundryConfig(config: {\n  foundryUrl: string;\n  token: string;\n  attributionRid?: string;\n}): FoundryConfig {\n  const attributionRid = config.attributionRid?.trim();\n\n  return {\n    foundryUrl: normalizeFoundryUrl(config.foundryUrl),\n    token: config.token.trim(),\n    attributionRid: attributionRid || undefined,\n  };\n}\n","import { wrapLanguageModel } from 'ai';\n\ntype FoundryLanguageModel = Parameters<typeof wrapLanguageModel>[0]['model'];\ntype FoundryCallOptions = Parameters<FoundryLanguageModel['doGenerate']>[0];\n\nexport function wrapFoundryLanguageModel(\n  model: FoundryLanguageModel,\n  options: {\n    modelId: string;\n    providerId: string;\n    transformParams?: (params: FoundryCallOptions) => FoundryCallOptions;\n  },\n): FoundryLanguageModel {\n  return wrapLanguageModel({\n    model,\n    middleware: {\n      specificationVersion: 'v3',\n      transformParams: async ({ params }) => {\n        return options.transformParams?.(params) ?? params;\n      },\n    },\n    modelId: options.modelId,\n    providerId: options.providerId,\n  });\n}\n","import type { ModelDefinition, ModelInputType, ModelMetadata, ModelProvider } from '../types.js';\n\nconst VISION_INPUT_TYPES = new Set<ModelInputType>([\n  'GENERIC_VISION_COMPLETION',\n  'GPT_WITH_VISION_COMPLETION',\n]);\n\nexport function createProviderModelCatalog<const T extends Record<string, ModelDefinition>>(\n  provider: ModelProvider,\n  definitions: T,\n): { readonly [K in keyof T]: ModelMetadata } {\n  return Object.freeze(\n    Object.fromEntries(\n      Object.entries(definitions).map(([modelId, definition]) => [\n        modelId,\n        createModelMetadata(provider, definition),\n      ]),\n    ),\n  ) as { readonly [K in keyof T]: ModelMetadata };\n}\n\nexport function modelSupportsInputType(\n  metadata: Pick<ModelMetadata, 'inputTypes'>,\n  inputType: ModelInputType,\n): boolean {\n  return metadata.inputTypes.includes(inputType);\n}\n\nfunction createModelMetadata(provider: ModelProvider, definition: ModelDefinition): ModelMetadata {\n  return {\n    ...definition,\n    provider,\n    supportsResponses: definition.inputTypes.includes('OPEN_AI_RESPONSES'),\n    supportsVision: definition.inputTypes.some((inputType) => VISION_INPUT_TYPES.has(inputType)),\n  };\n}\n","import type { ModelDefinition } from '../types.js';\nimport { createProviderModelCatalog } from './metadata.js';\n\nconst ANTHROPIC_MODEL_DEFINITIONS = {\n  'claude-3.5-haiku': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-3-5-haiku',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_35_HAIKU',\n    displayName: 'Claude 3.5 Haiku',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2024-07-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://aws.amazon.com/bedrock/claude/',\n  },\n  'claude-3.7-sonnet': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-3-7-sonnet',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_37_SONNET',\n    displayName: 'Claude 3.7 Sonnet',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2024-11-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://aws.amazon.com/bedrock/claude/',\n  },\n  'claude-haiku-4.5': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-4-5-haiku',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_45_HAIKU',\n    displayName: 'Claude Haiku 4.5',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2025-07-01T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://www.anthropic.com/news/claude-haiku-4-5',\n  },\n  'claude-opus-4': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-4-opus',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_4_OPUS',\n    displayName: 'Claude Opus 4',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2025-03-01T00:00:00Z',\n    performance: {\n      cost: 'HIGH',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://www.anthropic.com/news/claude-4',\n  },\n  'claude-opus-4.1': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-4-1-opus',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_41_OPUS',\n    displayName: 'Claude Opus 4.1',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2025-08-01T00:00:00Z',\n    performance: {\n      cost: 'HIGH',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://www.anthropic.com/news/claude-opus-4-1',\n  },\n  'claude-opus-4.5': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-4-5-opus',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_45_OPUS',\n    displayName: 'Claude Opus 4.5',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2025-08-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://www.anthropic.com/news/claude-opus-4-5',\n  },\n  'claude-opus-4.6': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-4-6-opus',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_46_OPUS',\n    displayName: 'Claude Opus 4.6',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2025-08-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://www.anthropic.com/news/claude-opus-4-6',\n  },\n  'claude-sonnet-4': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-4-sonnet',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_4_SONNET',\n    displayName: 'Claude Sonnet 4',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2025-03-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://www.anthropic.com/news/claude-4',\n  },\n  'claude-sonnet-4.5': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-4-5-sonnet',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_45_SONNET',\n    displayName: 'Claude Sonnet 4.5',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2025-07-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://www.anthropic.com/news/claude-sonnet-4-5',\n  },\n  'claude-sonnet-4.6': {\n    rid: 'ri.language-model-service..language-model.anthropic-claude-4-6-sonnet',\n    modelIdentifier: 'ANTHROPIC_CLAUDE_46_SONNET',\n    displayName: 'Claude Sonnet 4.6',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'CLAUDE_CHAT',\n    ],\n    trainingCutoffDate: '2025-08-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://www.anthropic.com/news/claude-sonnet-4-6',\n  },\n} as const satisfies Record<string, ModelDefinition>;\n\nexport const ANTHROPIC_MODELS = createProviderModelCatalog(\n  'anthropic',\n  ANTHROPIC_MODEL_DEFINITIONS,\n);\n\nexport type KnownAnthropicModelId = keyof typeof ANTHROPIC_MODELS;\nexport type AnthropicModelId = KnownAnthropicModelId | (string & {});\n\nexport const ANTHROPIC_MODEL_IDS = Object.freeze(\n  Object.keys(ANTHROPIC_MODELS),\n) as readonly KnownAnthropicModelId[];\n","import type { ModelDefinition } from '../types.js';\nimport { createProviderModelCatalog } from './metadata.js';\n\nconst GOOGLE_MODEL_DEFINITIONS = {\n  'gemini-2.5-pro': {\n    rid: 'ri.language-model-service..language-model.gemini-2-5-pro',\n    modelIdentifier: 'GEMINI_2_5_PRO',\n    displayName: 'Gemini 2.5 Pro',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GEMINI_CHAT',\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n    ],\n    trainingCutoffDate: '2025-01-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'REASONING',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-pro',\n  },\n  'gemini-2.5-flash': {\n    rid: 'ri.language-model-service..language-model.gemini-2-5-flash',\n    modelIdentifier: 'GEMINI_2_5_FLASH',\n    displayName: 'Gemini 2.5 Flash',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GEMINI_CHAT',\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n    ],\n    trainingCutoffDate: '2025-01-01T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'REASONING',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash',\n  },\n  'gemini-2.5-flash-lite': {\n    rid: 'ri.language-model-service..language-model.gemini-2-5-flash-lite',\n    modelIdentifier: 'GEMINI_2_5_FLASH_LITE',\n    displayName: 'Gemini 2.5 Flash Lite',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GEMINI_CHAT',\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n    ],\n    trainingCutoffDate: '2025-01-01T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl:\n      'https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash-lite',\n  },\n  'gemini-3-flash': {\n    rid: 'ri.language-model-service..language-model.gemini-3-flash',\n    modelIdentifier: 'GEMINI_3_FLASH',\n    displayName: 'Gemini 3 Flash (Preview)',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GEMINI_CHAT',\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n    ],\n    trainingCutoffDate: '2025-01-01T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-flash',\n  },\n  'gemini-3.1-pro': {\n    rid: 'ri.language-model-service..language-model.gemini-3-1-pro',\n    modelIdentifier: 'GEMINI_3_1_PRO',\n    displayName: 'Gemini 3.1 Pro (Preview)',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GEMINI_CHAT',\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n    ],\n    trainingCutoffDate: '2025-01-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'REASONING',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-pro',\n  },\n  'gemini-3.1-flash-lite': {\n    rid: 'ri.language-model-service..language-model.gemini-3-1-flash-lite',\n    modelIdentifier: 'GEMINI_3_1_FLASH_LITE',\n    displayName: 'Gemini 3.1 Flash Lite (Preview)',\n    lifecycle: 'experimental',\n    inputTypes: [\n      'GEMINI_CHAT',\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n    ],\n    trainingCutoffDate: '2025-01-01T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://deepmind.google/models/model-cards/gemini-3-1-flash-lite/',\n  },\n} as const satisfies Record<string, ModelDefinition>;\n\nexport const GOOGLE_MODELS = createProviderModelCatalog('google', GOOGLE_MODEL_DEFINITIONS);\n\nexport type KnownGoogleModelId = keyof typeof GOOGLE_MODELS;\nexport type GoogleModelId = KnownGoogleModelId | (string & {});\n\nexport const GOOGLE_MODEL_IDS = Object.freeze(\n  Object.keys(GOOGLE_MODELS),\n) as readonly KnownGoogleModelId[];\n","import type { ModelDefinition } from '../types.js';\nimport { createProviderModelCatalog, modelSupportsInputType } from './metadata.js';\n\nconst OPENAI_MODEL_DEFINITIONS = {\n  'gpt-4.1': {\n    rid: 'ri.language-model-service..language-model.gpt-4-1',\n    modelIdentifier: 'GPT_4_1',\n    displayName: 'GPT-4.1',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-05-31T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-4.1',\n  },\n  'gpt-4.1-mini': {\n    rid: 'ri.language-model-service..language-model.gpt-4-1-mini',\n    modelIdentifier: 'GPT_4_1_MINI',\n    displayName: 'GPT-4.1 mini',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-05-31T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-4.1-mini',\n  },\n  'gpt-4.1-nano': {\n    rid: 'ri.language-model-service..language-model.gpt-4-1-nano',\n    modelIdentifier: 'GPT_4_1_NANO',\n    displayName: 'GPT-4.1 nano',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-05-31T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-4.1-nano',\n  },\n  'gpt-4o': {\n    rid: 'ri.language-model-service..language-model.gpt-4-o',\n    modelIdentifier: 'GPT_4_O',\n    displayName: 'GPT-4o',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2023-10-01T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-4o',\n  },\n  'gpt-5': {\n    rid: 'ri.language-model-service..language-model.gpt-5',\n    modelIdentifier: 'GPT_5',\n    displayName: 'GPT-5',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_REASONING',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-09-30T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5',\n  },\n  'gpt-5-codex': {\n    rid: 'ri.language-model-service..language-model.gpt-5-codex',\n    modelIdentifier: 'GPT_5_CODEX',\n    displayName: 'GPT-5 Codex',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-09-29T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'REASONING',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5-codex',\n  },\n  'gpt-5-mini': {\n    rid: 'ri.language-model-service..language-model.gpt-5-mini',\n    modelIdentifier: 'GPT_5_MINI',\n    displayName: 'GPT-5 mini',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_REASONING',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-05-30T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5-mini',\n  },\n  'gpt-5-nano': {\n    rid: 'ri.language-model-service..language-model.gpt-5-nano',\n    modelIdentifier: 'GPT_5_NANO',\n    displayName: 'GPT-5 nano',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_REASONING',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-05-30T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5-nano',\n  },\n  'gpt-5.1': {\n    rid: 'ri.language-model-service..language-model.gpt-5-1',\n    modelIdentifier: 'GPT_5_1',\n    displayName: 'GPT-5.1',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-09-30T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5.1',\n  },\n  'gpt-5.1-codex': {\n    rid: 'ri.language-model-service..language-model.gpt-5-1-codex',\n    modelIdentifier: 'GPT_5_1_CODEX',\n    displayName: 'GPT-5.1 Codex',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-09-30T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'REASONING',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5.1-codex',\n  },\n  'gpt-5.1-codex-mini': {\n    rid: 'ri.language-model-service..language-model.gpt-5-1-codex-mini',\n    modelIdentifier: 'GPT_5_1_CODEX_MINI',\n    displayName: 'GPT-5.1 Codex mini',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-09-30T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5.1-codex-mini',\n  },\n  'gpt-5.2': {\n    rid: 'ri.language-model-service..language-model.gpt-5-2',\n    modelIdentifier: 'GPT_5_2',\n    displayName: 'GPT-5.2',\n    lifecycle: 'experimental',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_REASONING',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2025-08-31T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5.2',\n  },\n  'gpt-5.4': {\n    rid: 'ri.language-model-service..language-model.gpt-5-4',\n    modelIdentifier: 'GPT_5_4',\n    displayName: 'GPT-5.4',\n    lifecycle: 'experimental',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_REASONING',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2025-08-31T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'HEAVYWEIGHT',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5.4',\n  },\n  'gpt-5.4-mini': {\n    rid: 'ri.language-model-service..language-model.gpt-5-4-mini',\n    modelIdentifier: 'GPT_5_4_MINI',\n    displayName: 'GPT-5.4 mini',\n    lifecycle: 'experimental',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_REASONING',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2025-08-31T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5.4-mini',\n  },\n  'gpt-5.4-nano': {\n    rid: 'ri.language-model-service..language-model.gpt-5-4-nano',\n    modelIdentifier: 'GPT_5_4_NANO',\n    displayName: 'GPT-5.4 nano',\n    lifecycle: 'experimental',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'GPT_CHAT_COMPLETION',\n      'GPT_WITH_VISION_COMPLETION',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_REASONING',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2025-08-31T00:00:00Z',\n    performance: {\n      cost: 'LOW',\n      modelClass: 'LIGHTWEIGHT',\n      speed: 'HIGH',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/gpt-5.4-nano',\n  },\n  o3: {\n    rid: 'ri.language-model-service..language-model.o-3',\n    modelIdentifier: 'O_3',\n    displayName: 'o3',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'OPEN_AI_REASONING',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-05-31T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'REASONING',\n      speed: 'LOW',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/o3',\n  },\n  'o4-mini': {\n    rid: 'ri.language-model-service..language-model.o-4-mini',\n    modelIdentifier: 'O_4_MINI',\n    displayName: 'o4-mini',\n    lifecycle: 'ga',\n    inputTypes: [\n      'GENERIC_COMPLETION',\n      'GENERIC_CHAT_COMPLETION',\n      'OPEN_AI_REASONING',\n      'GENERIC_VISION_COMPLETION',\n      'OPEN_AI_RESPONSES',\n    ],\n    trainingCutoffDate: '2024-05-31T00:00:00Z',\n    performance: {\n      cost: 'MEDIUM',\n      modelClass: 'REASONING',\n      speed: 'MEDIUM',\n    },\n    externalUrl: 'https://platform.openai.com/docs/models/o4-mini',\n  },\n} as const satisfies Record<string, ModelDefinition>;\n\nexport const OPENAI_MODELS = createProviderModelCatalog('openai', OPENAI_MODEL_DEFINITIONS);\n\nexport type KnownOpenAIModelId = keyof typeof OPENAI_MODELS;\nexport type OpenAIModelId = KnownOpenAIModelId | (string & {});\n\nexport const OPENAI_MODEL_IDS = Object.freeze(\n  Object.keys(OPENAI_MODELS),\n) as readonly KnownOpenAIModelId[];\n\nconst OPENAI_REASONING_MODEL_TARGETS = new Set(\n  Object.entries(OPENAI_MODELS)\n    .filter(([, metadata]) => modelSupportsInputType(metadata, 'OPEN_AI_REASONING'))\n    .flatMap(([modelId, metadata]) => [modelId, metadata.rid]),\n);\n\nexport function isKnownOpenAIReasoningTarget(modelId: string): boolean {\n  return OPENAI_REASONING_MODEL_TARGETS.has(modelId);\n}\n","import { FoundryModelNotFoundError } from '../errors.js';\nimport type { ModelMetadata, ModelProvider, ResolvedModelTarget } from '../types.js';\nimport type { KnownAnthropicModelId } from './anthropic-models.js';\nimport { ANTHROPIC_MODELS } from './anthropic-models.js';\nimport type { KnownGoogleModelId } from './google-models.js';\nimport { GOOGLE_MODELS } from './google-models.js';\nimport type { KnownOpenAIModelId } from './openai-models.js';\nimport { OPENAI_MODELS } from './openai-models.js';\n\nexport type KnownModelId = KnownOpenAIModelId | KnownAnthropicModelId | KnownGoogleModelId;\n\nexport const MODEL_CATALOG = {\n  ...OPENAI_MODELS,\n  ...ANTHROPIC_MODELS,\n  ...GOOGLE_MODELS,\n} as const satisfies Record<KnownModelId, ModelMetadata>;\nexport const MODEL_CATALOG_BY_RID = Object.fromEntries(\n  Object.values(MODEL_CATALOG).map((metadata) => [metadata.rid, metadata]),\n) as Record<string, ModelMetadata>;\n\nexport function getModelMetadata(modelId: string): ModelMetadata | undefined {\n  return MODEL_CATALOG[modelId as KnownModelId];\n}\n\nexport function hasKnownModel(modelId: string): modelId is KnownModelId {\n  return getModelMetadata(modelId) != null;\n}\n\nexport function resolveModelTarget(modelId: string): ResolvedModelTarget {\n  const metadata = getModelMetadata(modelId) ?? getModelMetadataByRid(modelId);\n\n  return {\n    rid: metadata?.rid ?? modelId,\n    metadata,\n  };\n}\n\nexport function resolveKnownModelMetadata(modelId: string): ModelMetadata {\n  const metadata = getModelMetadata(modelId);\n\n  if (metadata == null) {\n    throw new FoundryModelNotFoundError(modelId);\n  }\n\n  return metadata;\n}\n\nexport function resolveModelRid(modelId: string): string {\n  return resolveKnownModelMetadata(modelId).rid;\n}\n\nexport function resolveModelProvider(modelId: string): ModelProvider {\n  return resolveKnownModelMetadata(modelId).provider;\n}\n\nfunction getModelMetadataByRid(modelRid: string): ModelMetadata | undefined {\n  return MODEL_CATALOG_BY_RID[modelRid];\n}\n"],"mappings":"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","names":["import_ai"]}