{"version":3,"file":"model-resolver.mjs","sources":["webpack://@tarko/model-provider/./src/model-resolver.ts"],"sourcesContent":["/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AgentModel, ModelProviderName, BaseModelProviderName } from './types';\nimport { HIGH_LEVEL_MODEL_PROVIDER_CONFIGS } from './constants';\nimport { addClaudeHeadersIfNeeded } from './claude-headers';\nimport { addAzureClaudeParamsIfNeeded } from './azure-claude-params';\n\n/**\n * Get the actual provider implementation name\n */\nfunction getActualProvider(providerName: ModelProviderName): BaseModelProviderName {\n  const config = HIGH_LEVEL_MODEL_PROVIDER_CONFIGS.find((c) => c.name === providerName);\n  return (config?.extends || providerName) as BaseModelProviderName;\n}\n\n/**\n * Get default configuration for a provider\n */\nfunction getDefaultConfig(providerName: ModelProviderName) {\n  return HIGH_LEVEL_MODEL_PROVIDER_CONFIGS.find((c) => c.name === providerName);\n}\n\n/**\n * Resolves the model configuration based on run options and defaults\n * FIXME: Remove `runModel`.\n *\n * @param agentModel - Default model configuration from agent options\n * @param runModel - Model specified in run options (optional)\n * @param runProvider - Provider specified in run options (optional)\n * @returns Resolved model configuration\n */\nexport function resolveModel(\n  agentModel?: AgentModel,\n  runModel?: string,\n  runProvider?: ModelProviderName,\n): AgentModel {\n  // Start with runtime parameters, fall back to agent model configuration\n  const provider = runProvider || agentModel?.provider || 'openai';\n  const model = runModel || agentModel?.id || 'gpt-4o';\n\n  let baseURL = agentModel?.baseURL;\n  let apiKey = agentModel?.apiKey;\n  const displayName = agentModel?.displayName;\n\n  // Apply default configuration from constants if missing\n  const defaultConfig = getDefaultConfig(provider);\n  if (defaultConfig) {\n    baseURL = baseURL || defaultConfig.baseURL;\n    apiKey = apiKey || defaultConfig.apiKey;\n  }\n\n  // Automatically add Claude headers if it's a Claude model\n  const headers = addClaudeHeadersIfNeeded(model, agentModel?.headers);\n\n  // Automatically add Azure Claude params if needed\n  const params = addAzureClaudeParamsIfNeeded(model, provider, agentModel?.params);\n\n  return {\n    provider,\n    id: model,\n    displayName,\n    baseURL,\n    apiKey,\n    headers,\n    params,\n    baseProvider: getActualProvider(provider),\n  };\n}\n"],"names":["getActualProvider","providerName","config","HIGH_LEVEL_MODEL_PROVIDER_CONFIGS","c","getDefaultConfig","resolveModel","agentModel","runModel","runProvider","provider","model","baseURL","apiKey","displayName","defaultConfig","headers","addClaudeHeadersIfNeeded","params","addAzureClaudeParamsIfNeeded"],"mappings":";;;;;;;AAaA,SAASA,kBAAkBC,YAA+B;IACxD,MAAMC,SAASC,kCAAkC,IAAI,CAAC,CAACC,IAAMA,EAAE,IAAI,KAAKH;IACxE,OAAQC,AAAAA,CAAAA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,OAAO,AAAD,KAAKD;AAC7B;AAKA,SAASI,iBAAiBJ,YAA+B;IACvD,OAAOE,kCAAkC,IAAI,CAAC,CAACC,IAAMA,EAAE,IAAI,KAAKH;AAClE;AAWO,SAASK,aACdC,UAAuB,EACvBC,QAAiB,EACjBC,WAA+B;IAG/B,MAAMC,WAAWD,eAAeF,CAAAA,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,QAAQ,AAAD,KAAK;IACxD,MAAMI,QAAQH,YAAYD,CAAAA,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,EAAE,AAAD,KAAK;IAE5C,IAAIK,UAAUL,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,OAAO;IACjC,IAAIM,SAASN,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,MAAM;IAC/B,MAAMO,cAAcP,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,WAAW;IAG3C,MAAMQ,gBAAgBV,iBAAiBK;IACvC,IAAIK,eAAe;QACjBH,UAAUA,WAAWG,cAAc,OAAO;QAC1CF,SAASA,UAAUE,cAAc,MAAM;IACzC;IAGA,MAAMC,UAAUC,yBAAyBN,OAAOJ,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,OAAO;IAGnE,MAAMW,SAASC,6BAA6BR,OAAOD,UAAUH,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,MAAM;IAE/E,OAAO;QACLG;QACA,IAAIC;QACJG;QACAF;QACAC;QACAG;QACAE;QACA,cAAclB,kBAAkBU;IAClC;AACF"}