( value: unknown, env: NodeJS.ProcessEnv = process.env, )
| 189 | return normalized; |
| 190 | } |
| 191 | |
| 192 | export function resolveRuntimeConfig( |
| 193 | value: unknown, |
| 194 | env: NodeJS.ProcessEnv = process.env, |
| 195 | ): DataConfig { |
| 196 | const normalized = normalizeDataConfig(value); |
| 197 | let { apiKey = "", provider = "openai", baseUrl = "" } = normalized; |
| 198 | let { apiProtocol, reasoning, modelId } = normalized; |
| 199 | |
| 200 | if (!apiKey) { |
| 201 | if (env.OPENAI_API_KEY) { |
| 202 | apiKey = env.OPENAI_API_KEY; |
| 203 | provider = "openai"; |
| 204 | } else if (env.ANTHROPIC_API_KEY) { |
| 205 | apiKey = env.ANTHROPIC_API_KEY; |
| 206 | provider = "anthropic"; |
| 207 | } else if (env.GOOGLE_API_KEY) { |
| 208 | apiKey = env.GOOGLE_API_KEY; |
| 209 | provider = "google"; |
| 210 | } |
| 211 | } |
| 212 | |
| 213 | if (hasEnvOverride(env, SKILLPACK_RUNTIME_ENV.apiKey)) { |
| 214 | apiKey = env[SKILLPACK_RUNTIME_ENV.apiKey] ?? ""; |
| 215 | } |
| 216 | |
| 217 | if (hasEnvOverride(env, SKILLPACK_RUNTIME_ENV.provider)) { |
| 218 | const providerOverride = normalizeOptionalString(env[SKILLPACK_RUNTIME_ENV.provider]); |
| 219 | if (providerOverride) { |
| 220 | provider = providerOverride; |
| 221 | } |
| 222 | } |
| 223 | |
| 224 | if (hasEnvOverride(env, SKILLPACK_RUNTIME_ENV.baseUrl)) { |
| 225 | baseUrl = env[SKILLPACK_RUNTIME_ENV.baseUrl] ?? ""; |
| 226 | } |
| 227 | |
| 228 | if (hasEnvOverride(env, SKILLPACK_RUNTIME_ENV.modelId)) { |
| 229 | modelId = normalizeOptionalString(env[SKILLPACK_RUNTIME_ENV.modelId]); |
| 230 | } |
| 231 | |
| 232 | if (hasEnvOverride(env, SKILLPACK_RUNTIME_ENV.apiProtocol)) { |
| 233 | const apiProtocolOverride = env[SKILLPACK_RUNTIME_ENV.apiProtocol]; |
| 234 | if ( |
| 235 | apiProtocolOverride === "openai-responses" || |
| 236 | apiProtocolOverride === "openai-completions" |
| 237 | ) { |
| 238 | apiProtocol = apiProtocolOverride; |
| 239 | } else if ((apiProtocolOverride ?? "").trim() === "") { |
| 240 | apiProtocol = undefined; |
| 241 | } |
| 242 | } |
| 243 | |
| 244 | if (hasEnvOverride(env, SKILLPACK_RUNTIME_ENV.reasoning)) { |
| 245 | const reasoningOverride = parseBooleanEnv(env[SKILLPACK_RUNTIME_ENV.reasoning]); |
| 246 | if (reasoningOverride !== undefined) { |
| 247 | reasoning = reasoningOverride; |
| 248 | } |
no test coverage detected