@code-yeongyu/senpi-ai 2026.9.18-2 → 2026.9.18-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -58,6 +58,7 @@ Unified LLM API with provider collections, automatic auth resolution, token and
58
58
  ## Supported Providers
59
59
 
60
60
  - **OpenAI**
61
+ - **B.AI** (credential-scoped multi-provider catalog)
61
62
  - **Ant Ling**
62
63
  - **Azure OpenAI (Responses)**
63
64
  - **OpenAI Codex** (ChatGPT Plus/Pro subscription, requires OAuth, see below)
@@ -329,6 +330,13 @@ const fresh = models.getModel('llamacpp', 'qwen3-30b');
329
330
 
330
331
  Static built-in providers are no-ops for `refresh()`. See [createProvider()](#createprovider) for building a dynamic provider.
331
332
 
333
+ B.AI is dynamic: `GET https://api.b.ai/v1/models` returns the model IDs available to the current credential,
334
+ while the shipped catalog supplies B.AI's documented capabilities and standard reference pricing. B.AI serves
335
+ one key over three protocols and documents several models on more than one of them, so Senpi pins the endpoint
336
+ per model rather than treating it as a B.AI property: GPT and DeepSeek use OpenAI Responses, Claude uses
337
+ Anthropic Messages, and the remaining chat families use OpenAI Chat Completions. Image-only IDs such as
338
+ `gpt-image-2` are not exposed through the chat catalog.
339
+
332
340
  ## Auth
333
341
 
334
342
  Every provider owns its auth: how API keys resolve (stored credentials, environment variables, ambient sources like AWS profiles or gcloud ADC) and, where supported, OAuth login/refresh flows.
@@ -421,6 +429,7 @@ Built-in providers resolve these env vars (Node.js; in browsers pass `apiKey` ex
421
429
  | Provider | Environment Variable(s) |
422
430
  |----------|------------------------|
423
431
  | OpenAI | `OPENAI_API_KEY` |
432
+ | B.AI | `BAI_API_KEY` |
424
433
  | Ollama Cloud | `OLLAMA_API_KEY` |
425
434
  | Ant Ling | `ANT_LING_API_KEY` |
426
435
  | Azure OpenAI | `AZURE_OPENAI_API_KEY` + `AZURE_OPENAI_BASE_URL` (e.g. `https://{resource}.ai.azure.com`) or `AZURE_OPENAI_RESOURCE_NAME`. Supports `*.openai.azure.com`, `*.cognitiveservices.azure.com` and `*.ai.azure.com`; root endpoints auto-normalize to `/openai/v1`. Optional: `AZURE_OPENAI_API_VERSION` (default `v1`), `AZURE_OPENAI_DEPLOYMENT_NAME_MAP`. |
@@ -1 +1 @@
1
- {"version":3,"file":"env-api-keys.d.ts","sourceRoot":"","sources":["../src/env-api-keys.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG7D,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAqCzD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAwDhF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AAC9F,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AASvF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAC7F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"env-api-keys.d.ts","sourceRoot":"","sources":["../src/env-api-keys.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG7D,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAqCzD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAyDhF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AAC9F,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AASvF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAC7F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC"}
@@ -106,6 +106,7 @@ export function getApiKeyEnvVars(provider) {
106
106
  fireworks: "FIREWORKS_API_KEY",
107
107
  together: "TOGETHER_API_KEY",
108
108
  baseten: "BASETEN_API_KEY",
109
+ bai: "BAI_API_KEY",
109
110
  opencode: "OPENCODE_API_KEY",
110
111
  "opencode-go": "OPENCODE_API_KEY",
111
112
  "kimi-coding": "KIMI_API_KEY",
@@ -1 +1 @@
1
- {"version":3,"file":"env-api-keys.js","sourceRoot":"","sources":["../src/env-api-keys.ts"],"names":[],"mappings":"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","sourcesContent":["// NEVER convert to top-level imports - breaks browser/Vite builds\nlet _existsSync: typeof import(\"node:fs\").existsSync | null = null;\nlet _homedir: typeof import(\"node:os\").homedir | null = null;\nlet _join: typeof import(\"node:path\").join | null = null;\n\ntype DynamicImport = (specifier: string) => Promise<unknown>;\n\nconst dynamicImport: DynamicImport = (specifier) => import(specifier);\nconst NODE_FS_SPECIFIER = \"node:\" + \"fs\";\nconst NODE_OS_SPECIFIER = \"node:\" + \"os\";\nconst NODE_PATH_SPECIFIER = \"node:\" + \"path\";\n\n// Eagerly load in Node.js/Bun environment only\nif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\tdynamicImport(NODE_FS_SPECIFIER).then((m) => {\n\t\t_existsSync = (m as typeof import(\"node:fs\")).existsSync;\n\t});\n\tdynamicImport(NODE_OS_SPECIFIER).then((m) => {\n\t\t_homedir = (m as typeof import(\"node:os\")).homedir;\n\t});\n\tdynamicImport(NODE_PATH_SPECIFIER).then((m) => {\n\t\t_join = (m as typeof import(\"node:path\")).join;\n\t});\n}\n\nimport type { KnownProvider, ProviderEnv } from \"./types.ts\";\nimport { getProviderEnvValue } from \"./utils/provider-env.ts\";\n\nexport const ANTHROPIC_AUTH_TOKEN_ENV = \"ANTHROPIC_AUTH_TOKEN\";\nexport const ANTHROPIC_OAUTH_TOKEN_ENV = \"ANTHROPIC_OAUTH_TOKEN\";\nexport const ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\n\nlet cachedVertexAdcCredentialsExists: boolean | null = null;\n\nfunction hasVertexAdcCredentials(env?: ProviderEnv): boolean {\n\tconst explicitCredentialsPath = env?.GOOGLE_APPLICATION_CREDENTIALS;\n\tif (explicitCredentialsPath) {\n\t\treturn _existsSync ? _existsSync(explicitCredentialsPath) : false;\n\t}\n\n\tif (cachedVertexAdcCredentialsExists === null) {\n\t\t// If node modules haven't loaded yet (async import race at startup),\n\t\t// return false WITHOUT caching so the next call retries once they're ready.\n\t\t// Only cache false permanently in a browser environment where fs is never available.\n\t\tif (!_existsSync || !_homedir || !_join) {\n\t\t\tconst isNode = typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun);\n\t\t\tif (!isNode) {\n\t\t\t\t// Definitively in a browser — safe to cache false permanently\n\t\t\t\tcachedVertexAdcCredentialsExists = false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check GOOGLE_APPLICATION_CREDENTIALS env var first (standard way)\n\t\tconst gacPath = getProviderEnvValue(\"GOOGLE_APPLICATION_CREDENTIALS\", env);\n\t\tif (gacPath) {\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(gacPath);\n\t\t} else {\n\t\t\t// Fall back to default ADC path (lazy evaluation)\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(\n\t\t\t\t_join(_homedir(), \".config\", \"gcloud\", \"application_default_credentials.json\"),\n\t\t\t);\n\t\t}\n\t}\n\treturn cachedVertexAdcCredentialsExists;\n}\n\n/**\n * The canonical provider-id to API-key env-var mapping. Exported so numbered\n * env credential slots (`OPENAI_API_KEY_2`, ...) can generalize over the same\n * source of truth instead of duplicating it.\n */\nexport function getApiKeyEnvVars(provider: string): readonly string[] | undefined {\n\tif (provider === \"github-copilot\") {\n\t\treturn [\"COPILOT_GITHUB_TOKEN\"];\n\t}\n\n\t// ANTHROPIC_AUTH_TOKEN participates in env discovery/status, but\n\t// getEnvApiKey() skips it because requests must pass it as Authorization: Bearer.\n\tif (provider === \"anthropic\") {\n\t\treturn [ANTHROPIC_AUTH_TOKEN_ENV, ANTHROPIC_OAUTH_TOKEN_ENV, ANTHROPIC_API_KEY_ENV];\n\t}\n\n\tconst envMap: Record<string, string> = {\n\t\t\"alibaba-token-plan\": \"ALIBABA_TOKEN_PLAN_API_KEY\",\n\t\t\"ant-ling\": \"ANT_LING_API_KEY\",\n\t\t\"qwen-token-plan\": \"QWEN_TOKEN_PLAN_API_KEY\",\n\t\t\"qwen-token-plan-cn\": \"QWEN_TOKEN_PLAN_CN_API_KEY\",\n\t\t\"qwen-token-plan-individual\": \"QWEN_TOKEN_PLAN_API_KEY\",\n\t\topenai: \"OPENAI_API_KEY\",\n\t\tollama: \"OLLAMA_API_KEY\",\n\t\t\"azure-openai-responses\": \"AZURE_OPENAI_API_KEY\",\n\t\tnvidia: \"NVIDIA_API_KEY\",\n\t\tdeepseek: \"DEEPSEEK_API_KEY\",\n\t\tgoogle: \"GEMINI_API_KEY\",\n\t\t\"google-vertex\": \"GOOGLE_CLOUD_API_KEY\",\n\t\tgroq: \"GROQ_API_KEY\",\n\t\tcerebras: \"CEREBRAS_API_KEY\",\n\t\tvenice: \"VENICE_API_KEY\",\n\t\txai: \"XAI_API_KEY\",\n\t\tradius: \"RADIUS_API_KEY\",\n\t\topenrouter: \"OPENROUTER_API_KEY\",\n\t\t\"vercel-ai-gateway\": \"AI_GATEWAY_API_KEY\",\n\t\topengateway: \"OPENGATEWAY_API_KEY\",\n\t\tzai: \"ZAI_API_KEY\",\n\t\t\"zai-coding-cn\": \"ZAI_CODING_CN_API_KEY\",\n\t\tmistral: \"MISTRAL_API_KEY\",\n\t\tminimax: \"MINIMAX_API_KEY\",\n\t\t\"minimax-cn\": \"MINIMAX_CN_API_KEY\",\n\t\tmoonshotai: \"MOONSHOT_API_KEY\",\n\t\t\"moonshotai-cn\": \"MOONSHOT_API_KEY\",\n\t\thuggingface: \"HF_TOKEN\",\n\t\tfireworks: \"FIREWORKS_API_KEY\",\n\t\ttogether: \"TOGETHER_API_KEY\",\n\t\tbaseten: \"BASETEN_API_KEY\",\n\t\topencode: \"OPENCODE_API_KEY\",\n\t\t\"opencode-go\": \"OPENCODE_API_KEY\",\n\t\t\"kimi-coding\": \"KIMI_API_KEY\",\n\t\t\"cloudflare-workers-ai\": \"CLOUDFLARE_API_KEY\",\n\t\t\"cloudflare-ai-gateway\": \"CLOUDFLARE_API_KEY\",\n\t\txiaomi: \"XIAOMI_API_KEY\",\n\t\t\"xiaomi-token-plan-cn\": \"XIAOMI_TOKEN_PLAN_CN_API_KEY\",\n\t\t\"xiaomi-token-plan-ams\": \"XIAOMI_TOKEN_PLAN_AMS_API_KEY\",\n\t\t\"xiaomi-token-plan-sgp\": \"XIAOMI_TOKEN_PLAN_SGP_API_KEY\",\n\t};\n\n\tconst envVar = envMap[provider];\n\treturn envVar ? [envVar] : undefined;\n}\n\n/**\n * Find configured environment variables that can provide an API key for a provider.\n *\n * This only reports actual API key variables. It intentionally excludes ambient\n * credential sources such as AWS profiles, AWS IAM credentials, and Google\n * Application Default Credentials.\n */\nexport function findEnvKeys(provider: KnownProvider, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined {\n\tconst envVars = getApiKeyEnvVars(provider);\n\tif (!envVars) return undefined;\n\n\tconst found = envVars.filter((envVar) => !!getProviderEnvValue(envVar, env));\n\treturn found.length > 0 ? found : undefined;\n}\n\n/**\n * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.\n *\n * Will not return API keys for providers that require OAuth tokens.\n */\nexport function getEnvApiKey(provider: KnownProvider, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined {\n\tconst envKeys = findEnvKeys(provider, env);\n\tif (envKeys?.[0]) {\n\t\tconst apiKeyEnv = provider === \"anthropic\" ? envKeys.find((key) => key !== ANTHROPIC_AUTH_TOKEN_ENV) : envKeys[0];\n\t\tif (apiKeyEnv) return getProviderEnvValue(apiKeyEnv, env);\n\t}\n\n\t// Vertex AI supports either an explicit API key or Application Default Credentials.\n\t// Auth is configured via `gcloud auth application-default login`.\n\tif (provider === \"google-vertex\") {\n\t\tconst hasCredentials = hasVertexAdcCredentials(env);\n\t\tconst hasProject = !!(\n\t\t\tgetProviderEnvValue(\"GOOGLE_CLOUD_PROJECT\", env) || getProviderEnvValue(\"GCLOUD_PROJECT\", env)\n\t\t);\n\t\tconst hasLocation = !!getProviderEnvValue(\"GOOGLE_CLOUD_LOCATION\", env);\n\n\t\tif (hasCredentials && hasProject && hasLocation) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\tif (provider === \"amazon-bedrock\") {\n\t\t// Amazon Bedrock supports multiple credential sources:\n\t\t// 1. AWS_PROFILE - named profile from ~/.aws/credentials\n\t\t// 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY - standard IAM keys\n\t\t// 3. AWS_BEARER_TOKEN_BEDROCK - Bedrock bearer token\n\t\t// 4. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI - ECS task roles\n\t\t// 5. AWS_CONTAINER_CREDENTIALS_FULL_URI - ECS task roles (full URI)\n\t\t// 6. AWS_WEB_IDENTITY_TOKEN_FILE - IRSA (IAM Roles for Service Accounts)\n\t\tif (\n\t\t\tgetProviderEnvValue(\"AWS_PROFILE\", env) ||\n\t\t\t(getProviderEnvValue(\"AWS_ACCESS_KEY_ID\", env) && getProviderEnvValue(\"AWS_SECRET_ACCESS_KEY\", env)) ||\n\t\t\tgetProviderEnvValue(\"AWS_BEARER_TOKEN_BEDROCK\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_FULL_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_WEB_IDENTITY_TOKEN_FILE\", env)\n\t\t) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\treturn undefined;\n}\n"]}
1
+ {"version":3,"file":"env-api-keys.js","sourceRoot":"","sources":["../src/env-api-keys.ts"],"names":[],"mappings":"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","sourcesContent":["// NEVER convert to top-level imports - breaks browser/Vite builds\nlet _existsSync: typeof import(\"node:fs\").existsSync | null = null;\nlet _homedir: typeof import(\"node:os\").homedir | null = null;\nlet _join: typeof import(\"node:path\").join | null = null;\n\ntype DynamicImport = (specifier: string) => Promise<unknown>;\n\nconst dynamicImport: DynamicImport = (specifier) => import(specifier);\nconst NODE_FS_SPECIFIER = \"node:\" + \"fs\";\nconst NODE_OS_SPECIFIER = \"node:\" + \"os\";\nconst NODE_PATH_SPECIFIER = \"node:\" + \"path\";\n\n// Eagerly load in Node.js/Bun environment only\nif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\tdynamicImport(NODE_FS_SPECIFIER).then((m) => {\n\t\t_existsSync = (m as typeof import(\"node:fs\")).existsSync;\n\t});\n\tdynamicImport(NODE_OS_SPECIFIER).then((m) => {\n\t\t_homedir = (m as typeof import(\"node:os\")).homedir;\n\t});\n\tdynamicImport(NODE_PATH_SPECIFIER).then((m) => {\n\t\t_join = (m as typeof import(\"node:path\")).join;\n\t});\n}\n\nimport type { KnownProvider, ProviderEnv } from \"./types.ts\";\nimport { getProviderEnvValue } from \"./utils/provider-env.ts\";\n\nexport const ANTHROPIC_AUTH_TOKEN_ENV = \"ANTHROPIC_AUTH_TOKEN\";\nexport const ANTHROPIC_OAUTH_TOKEN_ENV = \"ANTHROPIC_OAUTH_TOKEN\";\nexport const ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\n\nlet cachedVertexAdcCredentialsExists: boolean | null = null;\n\nfunction hasVertexAdcCredentials(env?: ProviderEnv): boolean {\n\tconst explicitCredentialsPath = env?.GOOGLE_APPLICATION_CREDENTIALS;\n\tif (explicitCredentialsPath) {\n\t\treturn _existsSync ? _existsSync(explicitCredentialsPath) : false;\n\t}\n\n\tif (cachedVertexAdcCredentialsExists === null) {\n\t\t// If node modules haven't loaded yet (async import race at startup),\n\t\t// return false WITHOUT caching so the next call retries once they're ready.\n\t\t// Only cache false permanently in a browser environment where fs is never available.\n\t\tif (!_existsSync || !_homedir || !_join) {\n\t\t\tconst isNode = typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun);\n\t\t\tif (!isNode) {\n\t\t\t\t// Definitively in a browser — safe to cache false permanently\n\t\t\t\tcachedVertexAdcCredentialsExists = false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check GOOGLE_APPLICATION_CREDENTIALS env var first (standard way)\n\t\tconst gacPath = getProviderEnvValue(\"GOOGLE_APPLICATION_CREDENTIALS\", env);\n\t\tif (gacPath) {\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(gacPath);\n\t\t} else {\n\t\t\t// Fall back to default ADC path (lazy evaluation)\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(\n\t\t\t\t_join(_homedir(), \".config\", \"gcloud\", \"application_default_credentials.json\"),\n\t\t\t);\n\t\t}\n\t}\n\treturn cachedVertexAdcCredentialsExists;\n}\n\n/**\n * The canonical provider-id to API-key env-var mapping. Exported so numbered\n * env credential slots (`OPENAI_API_KEY_2`, ...) can generalize over the same\n * source of truth instead of duplicating it.\n */\nexport function getApiKeyEnvVars(provider: string): readonly string[] | undefined {\n\tif (provider === \"github-copilot\") {\n\t\treturn [\"COPILOT_GITHUB_TOKEN\"];\n\t}\n\n\t// ANTHROPIC_AUTH_TOKEN participates in env discovery/status, but\n\t// getEnvApiKey() skips it because requests must pass it as Authorization: Bearer.\n\tif (provider === \"anthropic\") {\n\t\treturn [ANTHROPIC_AUTH_TOKEN_ENV, ANTHROPIC_OAUTH_TOKEN_ENV, ANTHROPIC_API_KEY_ENV];\n\t}\n\n\tconst envMap: Record<string, string> = {\n\t\t\"alibaba-token-plan\": \"ALIBABA_TOKEN_PLAN_API_KEY\",\n\t\t\"ant-ling\": \"ANT_LING_API_KEY\",\n\t\t\"qwen-token-plan\": \"QWEN_TOKEN_PLAN_API_KEY\",\n\t\t\"qwen-token-plan-cn\": \"QWEN_TOKEN_PLAN_CN_API_KEY\",\n\t\t\"qwen-token-plan-individual\": \"QWEN_TOKEN_PLAN_API_KEY\",\n\t\topenai: \"OPENAI_API_KEY\",\n\t\tollama: \"OLLAMA_API_KEY\",\n\t\t\"azure-openai-responses\": \"AZURE_OPENAI_API_KEY\",\n\t\tnvidia: \"NVIDIA_API_KEY\",\n\t\tdeepseek: \"DEEPSEEK_API_KEY\",\n\t\tgoogle: \"GEMINI_API_KEY\",\n\t\t\"google-vertex\": \"GOOGLE_CLOUD_API_KEY\",\n\t\tgroq: \"GROQ_API_KEY\",\n\t\tcerebras: \"CEREBRAS_API_KEY\",\n\t\tvenice: \"VENICE_API_KEY\",\n\t\txai: \"XAI_API_KEY\",\n\t\tradius: \"RADIUS_API_KEY\",\n\t\topenrouter: \"OPENROUTER_API_KEY\",\n\t\t\"vercel-ai-gateway\": \"AI_GATEWAY_API_KEY\",\n\t\topengateway: \"OPENGATEWAY_API_KEY\",\n\t\tzai: \"ZAI_API_KEY\",\n\t\t\"zai-coding-cn\": \"ZAI_CODING_CN_API_KEY\",\n\t\tmistral: \"MISTRAL_API_KEY\",\n\t\tminimax: \"MINIMAX_API_KEY\",\n\t\t\"minimax-cn\": \"MINIMAX_CN_API_KEY\",\n\t\tmoonshotai: \"MOONSHOT_API_KEY\",\n\t\t\"moonshotai-cn\": \"MOONSHOT_API_KEY\",\n\t\thuggingface: \"HF_TOKEN\",\n\t\tfireworks: \"FIREWORKS_API_KEY\",\n\t\ttogether: \"TOGETHER_API_KEY\",\n\t\tbaseten: \"BASETEN_API_KEY\",\n\t\tbai: \"BAI_API_KEY\",\n\t\topencode: \"OPENCODE_API_KEY\",\n\t\t\"opencode-go\": \"OPENCODE_API_KEY\",\n\t\t\"kimi-coding\": \"KIMI_API_KEY\",\n\t\t\"cloudflare-workers-ai\": \"CLOUDFLARE_API_KEY\",\n\t\t\"cloudflare-ai-gateway\": \"CLOUDFLARE_API_KEY\",\n\t\txiaomi: \"XIAOMI_API_KEY\",\n\t\t\"xiaomi-token-plan-cn\": \"XIAOMI_TOKEN_PLAN_CN_API_KEY\",\n\t\t\"xiaomi-token-plan-ams\": \"XIAOMI_TOKEN_PLAN_AMS_API_KEY\",\n\t\t\"xiaomi-token-plan-sgp\": \"XIAOMI_TOKEN_PLAN_SGP_API_KEY\",\n\t};\n\n\tconst envVar = envMap[provider];\n\treturn envVar ? [envVar] : undefined;\n}\n\n/**\n * Find configured environment variables that can provide an API key for a provider.\n *\n * This only reports actual API key variables. It intentionally excludes ambient\n * credential sources such as AWS profiles, AWS IAM credentials, and Google\n * Application Default Credentials.\n */\nexport function findEnvKeys(provider: KnownProvider, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined {\n\tconst envVars = getApiKeyEnvVars(provider);\n\tif (!envVars) return undefined;\n\n\tconst found = envVars.filter((envVar) => !!getProviderEnvValue(envVar, env));\n\treturn found.length > 0 ? found : undefined;\n}\n\n/**\n * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.\n *\n * Will not return API keys for providers that require OAuth tokens.\n */\nexport function getEnvApiKey(provider: KnownProvider, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined {\n\tconst envKeys = findEnvKeys(provider, env);\n\tif (envKeys?.[0]) {\n\t\tconst apiKeyEnv = provider === \"anthropic\" ? envKeys.find((key) => key !== ANTHROPIC_AUTH_TOKEN_ENV) : envKeys[0];\n\t\tif (apiKeyEnv) return getProviderEnvValue(apiKeyEnv, env);\n\t}\n\n\t// Vertex AI supports either an explicit API key or Application Default Credentials.\n\t// Auth is configured via `gcloud auth application-default login`.\n\tif (provider === \"google-vertex\") {\n\t\tconst hasCredentials = hasVertexAdcCredentials(env);\n\t\tconst hasProject = !!(\n\t\t\tgetProviderEnvValue(\"GOOGLE_CLOUD_PROJECT\", env) || getProviderEnvValue(\"GCLOUD_PROJECT\", env)\n\t\t);\n\t\tconst hasLocation = !!getProviderEnvValue(\"GOOGLE_CLOUD_LOCATION\", env);\n\n\t\tif (hasCredentials && hasProject && hasLocation) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\tif (provider === \"amazon-bedrock\") {\n\t\t// Amazon Bedrock supports multiple credential sources:\n\t\t// 1. AWS_PROFILE - named profile from ~/.aws/credentials\n\t\t// 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY - standard IAM keys\n\t\t// 3. AWS_BEARER_TOKEN_BEDROCK - Bedrock bearer token\n\t\t// 4. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI - ECS task roles\n\t\t// 5. AWS_CONTAINER_CREDENTIALS_FULL_URI - ECS task roles (full URI)\n\t\t// 6. AWS_WEB_IDENTITY_TOKEN_FILE - IRSA (IAM Roles for Service Accounts)\n\t\tif (\n\t\t\tgetProviderEnvValue(\"AWS_PROFILE\", env) ||\n\t\t\t(getProviderEnvValue(\"AWS_ACCESS_KEY_ID\", env) && getProviderEnvValue(\"AWS_SECRET_ACCESS_KEY\", env)) ||\n\t\t\tgetProviderEnvValue(\"AWS_BEARER_TOKEN_BEDROCK\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_FULL_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_WEB_IDENTITY_TOKEN_FILE\", env)\n\t\t) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\treturn undefined;\n}\n"]}
@@ -3,6 +3,7 @@ import { AMAZON_BEDROCK_MODELS } from "./providers/amazon-bedrock.models.ts";
3
3
  import { ANT_LING_MODELS } from "./providers/ant-ling.models.ts";
4
4
  import { ANTHROPIC_MODELS } from "./providers/anthropic.models.ts";
5
5
  import { AZURE_OPENAI_RESPONSES_MODELS } from "./providers/azure-openai-responses.models.ts";
6
+ import { BAI_MODELS } from "./providers/bai.models.ts";
6
7
  import { BASETEN_MODELS } from "./providers/baseten.models.ts";
7
8
  import { CEREBRAS_MODELS } from "./providers/cerebras.models.ts";
8
9
  import { CLOUDFLARE_AI_GATEWAY_MODELS } from "./providers/cloudflare-ai-gateway.models.ts";
@@ -46,6 +47,7 @@ export declare const MODELS: {
46
47
  readonly "ant-ling": typeof ANT_LING_MODELS;
47
48
  readonly "anthropic": typeof ANTHROPIC_MODELS;
48
49
  readonly "azure-openai-responses": typeof AZURE_OPENAI_RESPONSES_MODELS;
50
+ readonly "bai": typeof BAI_MODELS;
49
51
  readonly "baseten": typeof BASETEN_MODELS;
50
52
  readonly "cerebras": typeof CEREBRAS_MODELS;
51
53
  readonly "cloudflare-ai-gateway": typeof CLOUDFLARE_AI_GATEWAY_MODELS;
@@ -1 +1 @@
1
- {"version":3,"file":"models.generated.d.ts","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.generated.d.ts","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { AMAZON_BEDROCK_MODELS } from "./providers/amazon-bedrock.models.js";
5
5
  import { ANT_LING_MODELS } from "./providers/ant-ling.models.js";
6
6
  import { ANTHROPIC_MODELS } from "./providers/anthropic.models.js";
7
7
  import { AZURE_OPENAI_RESPONSES_MODELS } from "./providers/azure-openai-responses.models.js";
8
+ import { BAI_MODELS } from "./providers/bai.models.js";
8
9
  import { BASETEN_MODELS } from "./providers/baseten.models.js";
9
10
  import { CEREBRAS_MODELS } from "./providers/cerebras.models.js";
10
11
  import { CLOUDFLARE_AI_GATEWAY_MODELS } from "./providers/cloudflare-ai-gateway.models.js";
@@ -48,6 +49,7 @@ export const MODELS = {
48
49
  "ant-ling": ANT_LING_MODELS,
49
50
  "anthropic": ANTHROPIC_MODELS,
50
51
  "azure-openai-responses": AZURE_OPENAI_RESPONSES_MODELS,
52
+ "bai": BAI_MODELS,
51
53
  "baseten": BASETEN_MODELS,
52
54
  "cerebras": CEREBRAS_MODELS,
53
55
  "cloudflare-ai-gateway": CLOUDFLARE_AI_GATEWAY_MODELS,
@@ -1 +1 @@
1
- {"version":3,"file":"models.generated.js","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"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","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport { ALIBABA_TOKEN_PLAN_MODELS } from \"./providers/alibaba-token-plan.models.ts\";\nimport { AMAZON_BEDROCK_MODELS } from \"./providers/amazon-bedrock.models.ts\";\nimport { ANT_LING_MODELS } from \"./providers/ant-ling.models.ts\";\nimport { ANTHROPIC_MODELS } from \"./providers/anthropic.models.ts\";\nimport { AZURE_OPENAI_RESPONSES_MODELS } from \"./providers/azure-openai-responses.models.ts\";\nimport { BASETEN_MODELS } from \"./providers/baseten.models.ts\";\nimport { CEREBRAS_MODELS } from \"./providers/cerebras.models.ts\";\nimport { CLOUDFLARE_AI_GATEWAY_MODELS } from \"./providers/cloudflare-ai-gateway.models.ts\";\nimport { CLOUDFLARE_WORKERS_AI_MODELS } from \"./providers/cloudflare-workers-ai.models.ts\";\nimport { DEEPSEEK_MODELS } from \"./providers/deepseek.models.ts\";\nimport { FIREWORKS_MODELS } from \"./providers/fireworks.models.ts\";\nimport { GITHUB_COPILOT_MODELS } from \"./providers/github-copilot.models.ts\";\nimport { GOOGLE_MODELS } from \"./providers/google.models.ts\";\nimport { GOOGLE_VERTEX_MODELS } from \"./providers/google-vertex.models.ts\";\nimport { GROQ_MODELS } from \"./providers/groq.models.ts\";\nimport { HUGGINGFACE_MODELS } from \"./providers/huggingface.models.ts\";\nimport { KIMI_CODING_MODELS } from \"./providers/kimi-coding.models.ts\";\nimport { MINIMAX_MODELS } from \"./providers/minimax.models.ts\";\nimport { MINIMAX_CN_MODELS } from \"./providers/minimax-cn.models.ts\";\nimport { MISTRAL_MODELS } from \"./providers/mistral.models.ts\";\nimport { MOONSHOTAI_MODELS } from \"./providers/moonshotai.models.ts\";\nimport { MOONSHOTAI_CN_MODELS } from \"./providers/moonshotai-cn.models.ts\";\nimport { NVIDIA_MODELS } from \"./providers/nvidia.models.ts\";\nimport { OPENAI_MODELS } from \"./providers/openai.models.ts\";\nimport { OPENAI_CODEX_MODELS } from \"./providers/openai-codex.models.ts\";\nimport { OPENCODE_MODELS } from \"./providers/opencode.models.ts\";\nimport { OPENCODE_GO_MODELS } from \"./providers/opencode-go.models.ts\";\nimport { OPENGATEWAY_MODELS } from \"./providers/opengateway.models.ts\";\nimport { OPENROUTER_MODELS } from \"./providers/openrouter.models.ts\";\nimport { QWEN_TOKEN_PLAN_MODELS } from \"./providers/qwen-token-plan.models.ts\";\nimport { QWEN_TOKEN_PLAN_CN_MODELS } from \"./providers/qwen-token-plan-cn.models.ts\";\nimport { QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS } from \"./providers/qwen-token-plan-individual.models.ts\";\nimport { TOGETHER_MODELS } from \"./providers/together.models.ts\";\nimport { VENICE_MODELS } from \"./providers/venice.models.ts\";\nimport { VERCEL_AI_GATEWAY_MODELS } from \"./providers/vercel-ai-gateway.models.ts\";\nimport { XAI_MODELS } from \"./providers/xai.models.ts\";\nimport { XIAOMI_MODELS } from \"./providers/xiaomi.models.ts\";\nimport { XIAOMI_TOKEN_PLAN_AMS_MODELS } from \"./providers/xiaomi-token-plan-ams.models.ts\";\nimport { XIAOMI_TOKEN_PLAN_CN_MODELS } from \"./providers/xiaomi-token-plan-cn.models.ts\";\nimport { XIAOMI_TOKEN_PLAN_SGP_MODELS } from \"./providers/xiaomi-token-plan-sgp.models.ts\";\nimport { ZAI_MODELS } from \"./providers/zai.models.ts\";\nimport { ZAI_CODING_CN_MODELS } from \"./providers/zai-coding-cn.models.ts\";\n\nexport const MODELS: {\n\treadonly \"alibaba-token-plan\": typeof ALIBABA_TOKEN_PLAN_MODELS;\n\treadonly \"amazon-bedrock\": typeof AMAZON_BEDROCK_MODELS;\n\treadonly \"ant-ling\": typeof ANT_LING_MODELS;\n\treadonly \"anthropic\": typeof ANTHROPIC_MODELS;\n\treadonly \"azure-openai-responses\": typeof AZURE_OPENAI_RESPONSES_MODELS;\n\treadonly \"baseten\": typeof BASETEN_MODELS;\n\treadonly \"cerebras\": typeof CEREBRAS_MODELS;\n\treadonly \"cloudflare-ai-gateway\": typeof CLOUDFLARE_AI_GATEWAY_MODELS;\n\treadonly \"cloudflare-workers-ai\": typeof CLOUDFLARE_WORKERS_AI_MODELS;\n\treadonly \"deepseek\": typeof DEEPSEEK_MODELS;\n\treadonly \"fireworks\": typeof FIREWORKS_MODELS;\n\treadonly \"github-copilot\": typeof GITHUB_COPILOT_MODELS;\n\treadonly \"google\": typeof GOOGLE_MODELS;\n\treadonly \"google-vertex\": typeof GOOGLE_VERTEX_MODELS;\n\treadonly \"groq\": typeof GROQ_MODELS;\n\treadonly \"huggingface\": typeof HUGGINGFACE_MODELS;\n\treadonly \"kimi-coding\": typeof KIMI_CODING_MODELS;\n\treadonly \"minimax\": typeof MINIMAX_MODELS;\n\treadonly \"minimax-cn\": typeof MINIMAX_CN_MODELS;\n\treadonly \"mistral\": typeof MISTRAL_MODELS;\n\treadonly \"moonshotai\": typeof MOONSHOTAI_MODELS;\n\treadonly \"moonshotai-cn\": typeof MOONSHOTAI_CN_MODELS;\n\treadonly \"nvidia\": typeof NVIDIA_MODELS;\n\treadonly \"openai\": typeof OPENAI_MODELS;\n\treadonly \"openai-codex\": typeof OPENAI_CODEX_MODELS;\n\treadonly \"opencode\": typeof OPENCODE_MODELS;\n\treadonly \"opencode-go\": typeof OPENCODE_GO_MODELS;\n\treadonly \"opengateway\": typeof OPENGATEWAY_MODELS;\n\treadonly \"openrouter\": typeof OPENROUTER_MODELS;\n\treadonly \"qwen-token-plan\": typeof QWEN_TOKEN_PLAN_MODELS;\n\treadonly \"qwen-token-plan-cn\": typeof QWEN_TOKEN_PLAN_CN_MODELS;\n\treadonly \"qwen-token-plan-individual\": typeof QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS;\n\treadonly \"together\": typeof TOGETHER_MODELS;\n\treadonly \"venice\": typeof VENICE_MODELS;\n\treadonly \"vercel-ai-gateway\": typeof VERCEL_AI_GATEWAY_MODELS;\n\treadonly \"xai\": typeof XAI_MODELS;\n\treadonly \"xiaomi\": typeof XIAOMI_MODELS;\n\treadonly \"xiaomi-token-plan-ams\": typeof XIAOMI_TOKEN_PLAN_AMS_MODELS;\n\treadonly \"xiaomi-token-plan-cn\": typeof XIAOMI_TOKEN_PLAN_CN_MODELS;\n\treadonly \"xiaomi-token-plan-sgp\": typeof XIAOMI_TOKEN_PLAN_SGP_MODELS;\n\treadonly \"zai\": typeof ZAI_MODELS;\n\treadonly \"zai-coding-cn\": typeof ZAI_CODING_CN_MODELS;\n} = {\n\t\"alibaba-token-plan\": ALIBABA_TOKEN_PLAN_MODELS,\n\t\"amazon-bedrock\": AMAZON_BEDROCK_MODELS,\n\t\"ant-ling\": ANT_LING_MODELS,\n\t\"anthropic\": ANTHROPIC_MODELS,\n\t\"azure-openai-responses\": AZURE_OPENAI_RESPONSES_MODELS,\n\t\"baseten\": BASETEN_MODELS,\n\t\"cerebras\": CEREBRAS_MODELS,\n\t\"cloudflare-ai-gateway\": CLOUDFLARE_AI_GATEWAY_MODELS,\n\t\"cloudflare-workers-ai\": CLOUDFLARE_WORKERS_AI_MODELS,\n\t\"deepseek\": DEEPSEEK_MODELS,\n\t\"fireworks\": FIREWORKS_MODELS,\n\t\"github-copilot\": GITHUB_COPILOT_MODELS,\n\t\"google\": GOOGLE_MODELS,\n\t\"google-vertex\": GOOGLE_VERTEX_MODELS,\n\t\"groq\": GROQ_MODELS,\n\t\"huggingface\": HUGGINGFACE_MODELS,\n\t\"kimi-coding\": KIMI_CODING_MODELS,\n\t\"minimax\": MINIMAX_MODELS,\n\t\"minimax-cn\": MINIMAX_CN_MODELS,\n\t\"mistral\": MISTRAL_MODELS,\n\t\"moonshotai\": MOONSHOTAI_MODELS,\n\t\"moonshotai-cn\": MOONSHOTAI_CN_MODELS,\n\t\"nvidia\": NVIDIA_MODELS,\n\t\"openai\": OPENAI_MODELS,\n\t\"openai-codex\": OPENAI_CODEX_MODELS,\n\t\"opencode\": OPENCODE_MODELS,\n\t\"opencode-go\": OPENCODE_GO_MODELS,\n\t\"opengateway\": OPENGATEWAY_MODELS,\n\t\"openrouter\": OPENROUTER_MODELS,\n\t\"qwen-token-plan\": QWEN_TOKEN_PLAN_MODELS,\n\t\"qwen-token-plan-cn\": QWEN_TOKEN_PLAN_CN_MODELS,\n\t\"qwen-token-plan-individual\": QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS,\n\t\"together\": TOGETHER_MODELS,\n\t\"venice\": VENICE_MODELS,\n\t\"vercel-ai-gateway\": VERCEL_AI_GATEWAY_MODELS,\n\t\"xai\": XAI_MODELS,\n\t\"xiaomi\": XIAOMI_MODELS,\n\t\"xiaomi-token-plan-ams\": XIAOMI_TOKEN_PLAN_AMS_MODELS,\n\t\"xiaomi-token-plan-cn\": XIAOMI_TOKEN_PLAN_CN_MODELS,\n\t\"xiaomi-token-plan-sgp\": XIAOMI_TOKEN_PLAN_SGP_MODELS,\n\t\"zai\": ZAI_MODELS,\n\t\"zai-coding-cn\": ZAI_CODING_CN_MODELS,\n};\n"]}
1
+ {"version":3,"file":"models.generated.js","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"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","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport { ALIBABA_TOKEN_PLAN_MODELS } from \"./providers/alibaba-token-plan.models.ts\";\nimport { AMAZON_BEDROCK_MODELS } from \"./providers/amazon-bedrock.models.ts\";\nimport { ANT_LING_MODELS } from \"./providers/ant-ling.models.ts\";\nimport { ANTHROPIC_MODELS } from \"./providers/anthropic.models.ts\";\nimport { AZURE_OPENAI_RESPONSES_MODELS } from \"./providers/azure-openai-responses.models.ts\";\nimport { BAI_MODELS } from \"./providers/bai.models.ts\";\nimport { BASETEN_MODELS } from \"./providers/baseten.models.ts\";\nimport { CEREBRAS_MODELS } from \"./providers/cerebras.models.ts\";\nimport { CLOUDFLARE_AI_GATEWAY_MODELS } from \"./providers/cloudflare-ai-gateway.models.ts\";\nimport { CLOUDFLARE_WORKERS_AI_MODELS } from \"./providers/cloudflare-workers-ai.models.ts\";\nimport { DEEPSEEK_MODELS } from \"./providers/deepseek.models.ts\";\nimport { FIREWORKS_MODELS } from \"./providers/fireworks.models.ts\";\nimport { GITHUB_COPILOT_MODELS } from \"./providers/github-copilot.models.ts\";\nimport { GOOGLE_MODELS } from \"./providers/google.models.ts\";\nimport { GOOGLE_VERTEX_MODELS } from \"./providers/google-vertex.models.ts\";\nimport { GROQ_MODELS } from \"./providers/groq.models.ts\";\nimport { HUGGINGFACE_MODELS } from \"./providers/huggingface.models.ts\";\nimport { KIMI_CODING_MODELS } from \"./providers/kimi-coding.models.ts\";\nimport { MINIMAX_MODELS } from \"./providers/minimax.models.ts\";\nimport { MINIMAX_CN_MODELS } from \"./providers/minimax-cn.models.ts\";\nimport { MISTRAL_MODELS } from \"./providers/mistral.models.ts\";\nimport { MOONSHOTAI_MODELS } from \"./providers/moonshotai.models.ts\";\nimport { MOONSHOTAI_CN_MODELS } from \"./providers/moonshotai-cn.models.ts\";\nimport { NVIDIA_MODELS } from \"./providers/nvidia.models.ts\";\nimport { OPENAI_MODELS } from \"./providers/openai.models.ts\";\nimport { OPENAI_CODEX_MODELS } from \"./providers/openai-codex.models.ts\";\nimport { OPENCODE_MODELS } from \"./providers/opencode.models.ts\";\nimport { OPENCODE_GO_MODELS } from \"./providers/opencode-go.models.ts\";\nimport { OPENGATEWAY_MODELS } from \"./providers/opengateway.models.ts\";\nimport { OPENROUTER_MODELS } from \"./providers/openrouter.models.ts\";\nimport { QWEN_TOKEN_PLAN_MODELS } from \"./providers/qwen-token-plan.models.ts\";\nimport { QWEN_TOKEN_PLAN_CN_MODELS } from \"./providers/qwen-token-plan-cn.models.ts\";\nimport { QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS } from \"./providers/qwen-token-plan-individual.models.ts\";\nimport { TOGETHER_MODELS } from \"./providers/together.models.ts\";\nimport { VENICE_MODELS } from \"./providers/venice.models.ts\";\nimport { VERCEL_AI_GATEWAY_MODELS } from \"./providers/vercel-ai-gateway.models.ts\";\nimport { XAI_MODELS } from \"./providers/xai.models.ts\";\nimport { XIAOMI_MODELS } from \"./providers/xiaomi.models.ts\";\nimport { XIAOMI_TOKEN_PLAN_AMS_MODELS } from \"./providers/xiaomi-token-plan-ams.models.ts\";\nimport { XIAOMI_TOKEN_PLAN_CN_MODELS } from \"./providers/xiaomi-token-plan-cn.models.ts\";\nimport { XIAOMI_TOKEN_PLAN_SGP_MODELS } from \"./providers/xiaomi-token-plan-sgp.models.ts\";\nimport { ZAI_MODELS } from \"./providers/zai.models.ts\";\nimport { ZAI_CODING_CN_MODELS } from \"./providers/zai-coding-cn.models.ts\";\n\nexport const MODELS: {\n\treadonly \"alibaba-token-plan\": typeof ALIBABA_TOKEN_PLAN_MODELS;\n\treadonly \"amazon-bedrock\": typeof AMAZON_BEDROCK_MODELS;\n\treadonly \"ant-ling\": typeof ANT_LING_MODELS;\n\treadonly \"anthropic\": typeof ANTHROPIC_MODELS;\n\treadonly \"azure-openai-responses\": typeof AZURE_OPENAI_RESPONSES_MODELS;\n\treadonly \"bai\": typeof BAI_MODELS;\n\treadonly \"baseten\": typeof BASETEN_MODELS;\n\treadonly \"cerebras\": typeof CEREBRAS_MODELS;\n\treadonly \"cloudflare-ai-gateway\": typeof CLOUDFLARE_AI_GATEWAY_MODELS;\n\treadonly \"cloudflare-workers-ai\": typeof CLOUDFLARE_WORKERS_AI_MODELS;\n\treadonly \"deepseek\": typeof DEEPSEEK_MODELS;\n\treadonly \"fireworks\": typeof FIREWORKS_MODELS;\n\treadonly \"github-copilot\": typeof GITHUB_COPILOT_MODELS;\n\treadonly \"google\": typeof GOOGLE_MODELS;\n\treadonly \"google-vertex\": typeof GOOGLE_VERTEX_MODELS;\n\treadonly \"groq\": typeof GROQ_MODELS;\n\treadonly \"huggingface\": typeof HUGGINGFACE_MODELS;\n\treadonly \"kimi-coding\": typeof KIMI_CODING_MODELS;\n\treadonly \"minimax\": typeof MINIMAX_MODELS;\n\treadonly \"minimax-cn\": typeof MINIMAX_CN_MODELS;\n\treadonly \"mistral\": typeof MISTRAL_MODELS;\n\treadonly \"moonshotai\": typeof MOONSHOTAI_MODELS;\n\treadonly \"moonshotai-cn\": typeof MOONSHOTAI_CN_MODELS;\n\treadonly \"nvidia\": typeof NVIDIA_MODELS;\n\treadonly \"openai\": typeof OPENAI_MODELS;\n\treadonly \"openai-codex\": typeof OPENAI_CODEX_MODELS;\n\treadonly \"opencode\": typeof OPENCODE_MODELS;\n\treadonly \"opencode-go\": typeof OPENCODE_GO_MODELS;\n\treadonly \"opengateway\": typeof OPENGATEWAY_MODELS;\n\treadonly \"openrouter\": typeof OPENROUTER_MODELS;\n\treadonly \"qwen-token-plan\": typeof QWEN_TOKEN_PLAN_MODELS;\n\treadonly \"qwen-token-plan-cn\": typeof QWEN_TOKEN_PLAN_CN_MODELS;\n\treadonly \"qwen-token-plan-individual\": typeof QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS;\n\treadonly \"together\": typeof TOGETHER_MODELS;\n\treadonly \"venice\": typeof VENICE_MODELS;\n\treadonly \"vercel-ai-gateway\": typeof VERCEL_AI_GATEWAY_MODELS;\n\treadonly \"xai\": typeof XAI_MODELS;\n\treadonly \"xiaomi\": typeof XIAOMI_MODELS;\n\treadonly \"xiaomi-token-plan-ams\": typeof XIAOMI_TOKEN_PLAN_AMS_MODELS;\n\treadonly \"xiaomi-token-plan-cn\": typeof XIAOMI_TOKEN_PLAN_CN_MODELS;\n\treadonly \"xiaomi-token-plan-sgp\": typeof XIAOMI_TOKEN_PLAN_SGP_MODELS;\n\treadonly \"zai\": typeof ZAI_MODELS;\n\treadonly \"zai-coding-cn\": typeof ZAI_CODING_CN_MODELS;\n} = {\n\t\"alibaba-token-plan\": ALIBABA_TOKEN_PLAN_MODELS,\n\t\"amazon-bedrock\": AMAZON_BEDROCK_MODELS,\n\t\"ant-ling\": ANT_LING_MODELS,\n\t\"anthropic\": ANTHROPIC_MODELS,\n\t\"azure-openai-responses\": AZURE_OPENAI_RESPONSES_MODELS,\n\t\"bai\": BAI_MODELS,\n\t\"baseten\": BASETEN_MODELS,\n\t\"cerebras\": CEREBRAS_MODELS,\n\t\"cloudflare-ai-gateway\": CLOUDFLARE_AI_GATEWAY_MODELS,\n\t\"cloudflare-workers-ai\": CLOUDFLARE_WORKERS_AI_MODELS,\n\t\"deepseek\": DEEPSEEK_MODELS,\n\t\"fireworks\": FIREWORKS_MODELS,\n\t\"github-copilot\": GITHUB_COPILOT_MODELS,\n\t\"google\": GOOGLE_MODELS,\n\t\"google-vertex\": GOOGLE_VERTEX_MODELS,\n\t\"groq\": GROQ_MODELS,\n\t\"huggingface\": HUGGINGFACE_MODELS,\n\t\"kimi-coding\": KIMI_CODING_MODELS,\n\t\"minimax\": MINIMAX_MODELS,\n\t\"minimax-cn\": MINIMAX_CN_MODELS,\n\t\"mistral\": MISTRAL_MODELS,\n\t\"moonshotai\": MOONSHOTAI_MODELS,\n\t\"moonshotai-cn\": MOONSHOTAI_CN_MODELS,\n\t\"nvidia\": NVIDIA_MODELS,\n\t\"openai\": OPENAI_MODELS,\n\t\"openai-codex\": OPENAI_CODEX_MODELS,\n\t\"opencode\": OPENCODE_MODELS,\n\t\"opencode-go\": OPENCODE_GO_MODELS,\n\t\"opengateway\": OPENGATEWAY_MODELS,\n\t\"openrouter\": OPENROUTER_MODELS,\n\t\"qwen-token-plan\": QWEN_TOKEN_PLAN_MODELS,\n\t\"qwen-token-plan-cn\": QWEN_TOKEN_PLAN_CN_MODELS,\n\t\"qwen-token-plan-individual\": QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS,\n\t\"together\": TOGETHER_MODELS,\n\t\"venice\": VENICE_MODELS,\n\t\"vercel-ai-gateway\": VERCEL_AI_GATEWAY_MODELS,\n\t\"xai\": XAI_MODELS,\n\t\"xiaomi\": XIAOMI_MODELS,\n\t\"xiaomi-token-plan-ams\": XIAOMI_TOKEN_PLAN_AMS_MODELS,\n\t\"xiaomi-token-plan-cn\": XIAOMI_TOKEN_PLAN_CN_MODELS,\n\t\"xiaomi-token-plan-sgp\": XIAOMI_TOKEN_PLAN_SGP_MODELS,\n\t\"zai\": ZAI_MODELS,\n\t\"zai-coding-cn\": ZAI_CODING_CN_MODELS,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../src/providers/all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,mBAAmB,EAAgB,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AACzG,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA2B9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAY7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAY7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAE1C;;oBAEoB;AACpB,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,MAAM,CAAC;AAElD,KAAK,eAAe,CACnB,SAAS,SAAS,eAAe,EACjC,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,IAC9C,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAqCjH,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,SAAS,SAAS,eAAe,EAAE,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,EACnH,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,QAAQ,GACf,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAG7C;AAED,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAEvD;AAED,qEAAqE;AACrE,wBAAgB,8BAA8B,IAAI,MAAM,GAAG,SAAS,CAGnE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,eAAe,EACjE,QAAQ,EAAE,SAAS,GACjB,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CASvE;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,IAAI,QAAQ,EAAE,CAiD7C;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAM1E;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,IAAI,cAAc,EAAE,CAEzD;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAMtF"}
1
+ {"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../src/providers/all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,mBAAmB,EAAgB,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AACzG,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA4B9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAY7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAY7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAE1C;;oBAEoB;AACpB,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,MAAM,CAAC;AAElD,KAAK,eAAe,CACnB,SAAS,SAAS,eAAe,EACjC,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,IAC9C,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAqCjH,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,SAAS,SAAS,eAAe,EAAE,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,EACnH,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,QAAQ,GACf,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAG7C;AAED,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAEvD;AAED,qEAAqE;AACrE,wBAAgB,8BAA8B,IAAI,MAAM,GAAG,SAAS,CAGnE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,eAAe,EACjE,QAAQ,EAAE,SAAS,GACjB,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CASvE;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,IAAI,QAAQ,EAAE,CAkD7C;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAM1E;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,IAAI,cAAc,EAAE,CAEzD;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAMtF"}
@@ -6,6 +6,7 @@ import { amazonBedrockProvider } from "./amazon-bedrock.js";
6
6
  import { antLingProvider } from "./ant-ling.js";
7
7
  import { anthropicProvider } from "./anthropic.js";
8
8
  import { azureOpenAIResponsesProvider } from "./azure-openai-responses.js";
9
+ import { baiProvider } from "./bai.js";
9
10
  import { basetenProvider } from "./baseten.js";
10
11
  import { cerebrasProvider } from "./cerebras.js";
11
12
  import { cloudflareAIGatewayProvider } from "./cloudflare-ai-gateway.js";
@@ -111,6 +112,7 @@ export function builtinProviders() {
111
112
  antLingProvider(),
112
113
  anthropicProvider(),
113
114
  azureOpenAIResponsesProvider(),
115
+ baiProvider(),
114
116
  basetenProvider(),
115
117
  cerebrasProvider(),
116
118
  cloudflareAIGatewayProvider(),
@@ -1 +1 @@
1
- {"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/providers/all.ts"],"names":[],"mappings":"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","sourcesContent":["import { createImagesModels, type ImagesProvider, type MutableImagesModels } from \"../images-models.ts\";\nimport { MODELS } from \"../models.generated.ts\";\nimport { type CreateModelsOptions, createModels, type MutableModels, type Provider } from \"../models.ts\";\nimport type { Api, Model } from \"../types.ts\";\nimport { alibabaTokenPlanProvider } from \"./alibaba-token-plan.ts\";\nimport { amazonBedrockProvider } from \"./amazon-bedrock.ts\";\nimport { antLingProvider } from \"./ant-ling.ts\";\nimport { anthropicProvider } from \"./anthropic.ts\";\nimport { azureOpenAIResponsesProvider } from \"./azure-openai-responses.ts\";\nimport { basetenProvider } from \"./baseten.ts\";\nimport { cerebrasProvider } from \"./cerebras.ts\";\nimport { cloudflareAIGatewayProvider } from \"./cloudflare-ai-gateway.ts\";\nimport { cloudflareWorkersAIProvider } from \"./cloudflare-workers-ai.ts\";\nimport { cursorProvider } from \"./cursor.ts\";\nimport modelDataManifest from \"./data/.manifest.json\" with { type: \"json\" };\nimport { deepseekProvider } from \"./deepseek.ts\";\nimport { devinProvider } from \"./devin.ts\";\nimport { fireworksProvider } from \"./fireworks.ts\";\nimport { githubCopilotProvider } from \"./github-copilot.ts\";\nimport { googleProvider } from \"./google.ts\";\nimport { googleVertexProvider } from \"./google-vertex.ts\";\nimport { groqProvider } from \"./groq.ts\";\nimport { huggingfaceProvider } from \"./huggingface.ts\";\nimport { kimiCodingProvider } from \"./kimi-coding.ts\";\nimport { minimaxProvider } from \"./minimax.ts\";\nimport { minimaxCnProvider } from \"./minimax-cn.ts\";\nimport { mistralProvider } from \"./mistral.ts\";\nimport { moonshotaiProvider } from \"./moonshotai.ts\";\nimport { moonshotaiCnProvider } from \"./moonshotai-cn.ts\";\nimport { nvidiaProvider } from \"./nvidia.ts\";\nimport { ollamaProvider } from \"./ollama.ts\";\nimport { openaiProvider } from \"./openai.ts\";\nimport { openaiCodexProvider } from \"./openai-codex.ts\";\nimport { openaiImagesProvider } from \"./openai-images.ts\";\nimport { opencodeProvider } from \"./opencode.ts\";\nimport { opencodeGoProvider } from \"./opencode-go.ts\";\nimport { opengatewayProvider } from \"./opengateway.ts\";\nimport { openrouterProvider } from \"./openrouter.ts\";\nimport { openrouterImagesProvider } from \"./openrouter-images.ts\";\nimport { qwenTokenPlanProvider } from \"./qwen-token-plan.ts\";\nimport { qwenTokenPlanCnProvider } from \"./qwen-token-plan-cn.ts\";\nimport { qwenTokenPlanIndividualProvider } from \"./qwen-token-plan-individual.ts\";\nimport { radiusProvider } from \"./radius.ts\";\nimport { togetherProvider } from \"./together.ts\";\nimport { veniceProvider } from \"./venice.ts\";\nimport { vercelAIGatewayProvider } from \"./vercel-ai-gateway.ts\";\nimport { xaiProvider } from \"./xai.ts\";\nimport { xiaomiProvider } from \"./xiaomi.ts\";\nimport { xiaomiTokenPlanAmsProvider } from \"./xiaomi-token-plan-ams.ts\";\nimport { xiaomiTokenPlanCnProvider } from \"./xiaomi-token-plan-cn.ts\";\nimport { xiaomiTokenPlanSgpProvider } from \"./xiaomi-token-plan-sgp.ts\";\nimport { zaiProvider } from \"./zai.ts\";\nimport { zaiCodingCnProvider } from \"./zai-coding-cn.ts\";\n\nexport { ollamaProvider, radiusProvider };\n\n/** Providers present in the generated catalog. `KnownProvider` additionally\n * includes purely dynamic providers (e.g. \"radius\") that have no static\n * catalog entry. */\nexport type BuiltinProvider = keyof typeof MODELS;\n\ntype BuiltinModelApi<\n\tTProvider extends BuiltinProvider,\n\tTModelId extends keyof (typeof MODELS)[TProvider],\n> = (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi } ? (TApi extends Api ? TApi : never) : never;\n\nconst XIAOMI_MIMO_PROVIDERS = new Set([\n\t\"xiaomi\",\n\t\"xiaomi-token-plan-cn\",\n\t\"xiaomi-token-plan-ams\",\n\t\"xiaomi-token-plan-sgp\",\n]);\n\nfunction normalizeBuiltinModel<TApi extends Api>(model: Model<TApi> | undefined): Model<TApi> | undefined {\n\tif (!model) return undefined;\n\n\tif (XIAOMI_MIMO_PROVIDERS.has(model.provider) && model.id === \"mimo-v2.5-pro\") {\n\t\treturn {\n\t\t\t...model,\n\t\t\tcompat: {\n\t\t\t\t...model.compat,\n\t\t\t\trequiresReasoningContentOnAssistantMessages: true,\n\t\t\t\tthinkingFormat: \"deepseek\",\n\t\t\t\tsupportsDisabledThinking: false,\n\t\t\t},\n\t\t} as Model<TApi>;\n\t}\n\n\tif (model.provider === \"anthropic\" && model.id === \"claude-opus-4-8\") {\n\t\treturn {\n\t\t\t...model,\n\t\t\tthinkingLevelMap: {\n\t\t\t\t...model.thinkingLevelMap,\n\t\t\t\tmax: \"max\",\n\t\t\t},\n\t\t};\n\t}\n\n\treturn model;\n}\n\n/** Typed read of the generated built-in catalog. */\nexport function getBuiltinModel<TProvider extends BuiltinProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(\n\tprovider: TProvider,\n\tmodelId: TModelId,\n): Model<BuiltinModelApi<TProvider, TModelId>> {\n\tconst models = MODELS[provider] as Record<string, Model<Api>> | undefined;\n\treturn normalizeBuiltinModel(models?.[modelId as string]) as Model<BuiltinModelApi<TProvider, TModelId>>;\n}\n\nexport function getBuiltinProviders(): BuiltinProvider[] {\n\treturn Object.keys(MODELS) as BuiltinProvider[];\n}\n\n/** Generation timestamp shared by all built-in provider catalogs. */\nexport function getBuiltinModelDataGeneratedAt(): number | undefined {\n\tconst generatedAt = Date.parse(modelDataManifest.generatedAt);\n\treturn Number.isNaN(generatedAt) ? undefined : generatedAt;\n}\n\nexport function getBuiltinModels<TProvider extends BuiltinProvider>(\n\tprovider: TProvider,\n): Model<BuiltinModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[] {\n\tconst models = MODELS[provider] as Record<string, Model<Api>> | undefined;\n\treturn models\n\t\t? (Object.values(models)\n\t\t\t\t.map((model) => normalizeBuiltinModel(model))\n\t\t\t\t.filter((model): model is Model<Api> => model !== undefined) as Model<\n\t\t\t\tBuiltinModelApi<TProvider, keyof (typeof MODELS)[TProvider]>\n\t\t\t>[])\n\t\t: [];\n}\n\n/** All built-in providers, freshly constructed. */\nexport function builtinProviders(): Provider[] {\n\treturn [\n\t\talibabaTokenPlanProvider(),\n\t\tamazonBedrockProvider(),\n\t\tantLingProvider(),\n\t\tanthropicProvider(),\n\t\tazureOpenAIResponsesProvider(),\n\t\tbasetenProvider(),\n\t\tcerebrasProvider(),\n\t\tcloudflareAIGatewayProvider(),\n\t\tcloudflareWorkersAIProvider(),\n\t\tcursorProvider(),\n\t\tdevinProvider(),\n\t\tdeepseekProvider(),\n\t\tfireworksProvider(),\n\t\tgithubCopilotProvider(),\n\t\tgoogleProvider(),\n\t\tgoogleVertexProvider(),\n\t\tgroqProvider(),\n\t\thuggingfaceProvider(),\n\t\tkimiCodingProvider(),\n\t\tminimaxProvider(),\n\t\tminimaxCnProvider(),\n\t\tmistralProvider(),\n\t\tmoonshotaiProvider(),\n\t\tmoonshotaiCnProvider(),\n\t\tnvidiaProvider(),\n\t\topenaiProvider(),\n\t\topenaiCodexProvider(),\n\t\tollamaProvider(),\n\t\topencodeProvider(),\n\t\topencodeGoProvider(),\n\t\topengatewayProvider(),\n\t\topenrouterProvider(),\n\t\tqwenTokenPlanProvider(),\n\t\tqwenTokenPlanCnProvider(),\n\t\tqwenTokenPlanIndividualProvider(),\n\t\tradiusProvider(),\n\t\ttogetherProvider(),\n\t\tveniceProvider(),\n\t\tvercelAIGatewayProvider(),\n\t\txaiProvider(),\n\t\txiaomiProvider(),\n\t\txiaomiTokenPlanAmsProvider(),\n\t\txiaomiTokenPlanCnProvider(),\n\t\txiaomiTokenPlanSgpProvider(),\n\t\tzaiProvider(),\n\t\tzaiCodingCnProvider(),\n\t];\n}\n\n/** A `Models` collection with every built-in provider registered. */\nexport function builtinModels(options?: CreateModelsOptions): MutableModels {\n\tconst models = createModels(options);\n\tfor (const provider of builtinProviders()) {\n\t\tmodels.setProvider(provider);\n\t}\n\treturn models;\n}\n\n/** All built-in image-generation providers, freshly constructed. */\nexport function builtinImagesProviders(): ImagesProvider[] {\n\treturn [openrouterImagesProvider(), openaiImagesProvider()];\n}\n\n/** An `ImagesModels` collection with every built-in image-generation provider registered. */\nexport function builtinImagesModels(options?: CreateModelsOptions): MutableImagesModels {\n\tconst models = createImagesModels(options);\n\tfor (const provider of builtinImagesProviders()) {\n\t\tmodels.setProvider(provider);\n\t}\n\treturn models;\n}\n"]}
1
+ {"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/providers/all.ts"],"names":[],"mappings":"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","sourcesContent":["import { createImagesModels, type ImagesProvider, type MutableImagesModels } from \"../images-models.ts\";\nimport { MODELS } from \"../models.generated.ts\";\nimport { type CreateModelsOptions, createModels, type MutableModels, type Provider } from \"../models.ts\";\nimport type { Api, Model } from \"../types.ts\";\nimport { alibabaTokenPlanProvider } from \"./alibaba-token-plan.ts\";\nimport { amazonBedrockProvider } from \"./amazon-bedrock.ts\";\nimport { antLingProvider } from \"./ant-ling.ts\";\nimport { anthropicProvider } from \"./anthropic.ts\";\nimport { azureOpenAIResponsesProvider } from \"./azure-openai-responses.ts\";\nimport { baiProvider } from \"./bai.ts\";\nimport { basetenProvider } from \"./baseten.ts\";\nimport { cerebrasProvider } from \"./cerebras.ts\";\nimport { cloudflareAIGatewayProvider } from \"./cloudflare-ai-gateway.ts\";\nimport { cloudflareWorkersAIProvider } from \"./cloudflare-workers-ai.ts\";\nimport { cursorProvider } from \"./cursor.ts\";\nimport modelDataManifest from \"./data/.manifest.json\" with { type: \"json\" };\nimport { deepseekProvider } from \"./deepseek.ts\";\nimport { devinProvider } from \"./devin.ts\";\nimport { fireworksProvider } from \"./fireworks.ts\";\nimport { githubCopilotProvider } from \"./github-copilot.ts\";\nimport { googleProvider } from \"./google.ts\";\nimport { googleVertexProvider } from \"./google-vertex.ts\";\nimport { groqProvider } from \"./groq.ts\";\nimport { huggingfaceProvider } from \"./huggingface.ts\";\nimport { kimiCodingProvider } from \"./kimi-coding.ts\";\nimport { minimaxProvider } from \"./minimax.ts\";\nimport { minimaxCnProvider } from \"./minimax-cn.ts\";\nimport { mistralProvider } from \"./mistral.ts\";\nimport { moonshotaiProvider } from \"./moonshotai.ts\";\nimport { moonshotaiCnProvider } from \"./moonshotai-cn.ts\";\nimport { nvidiaProvider } from \"./nvidia.ts\";\nimport { ollamaProvider } from \"./ollama.ts\";\nimport { openaiProvider } from \"./openai.ts\";\nimport { openaiCodexProvider } from \"./openai-codex.ts\";\nimport { openaiImagesProvider } from \"./openai-images.ts\";\nimport { opencodeProvider } from \"./opencode.ts\";\nimport { opencodeGoProvider } from \"./opencode-go.ts\";\nimport { opengatewayProvider } from \"./opengateway.ts\";\nimport { openrouterProvider } from \"./openrouter.ts\";\nimport { openrouterImagesProvider } from \"./openrouter-images.ts\";\nimport { qwenTokenPlanProvider } from \"./qwen-token-plan.ts\";\nimport { qwenTokenPlanCnProvider } from \"./qwen-token-plan-cn.ts\";\nimport { qwenTokenPlanIndividualProvider } from \"./qwen-token-plan-individual.ts\";\nimport { radiusProvider } from \"./radius.ts\";\nimport { togetherProvider } from \"./together.ts\";\nimport { veniceProvider } from \"./venice.ts\";\nimport { vercelAIGatewayProvider } from \"./vercel-ai-gateway.ts\";\nimport { xaiProvider } from \"./xai.ts\";\nimport { xiaomiProvider } from \"./xiaomi.ts\";\nimport { xiaomiTokenPlanAmsProvider } from \"./xiaomi-token-plan-ams.ts\";\nimport { xiaomiTokenPlanCnProvider } from \"./xiaomi-token-plan-cn.ts\";\nimport { xiaomiTokenPlanSgpProvider } from \"./xiaomi-token-plan-sgp.ts\";\nimport { zaiProvider } from \"./zai.ts\";\nimport { zaiCodingCnProvider } from \"./zai-coding-cn.ts\";\n\nexport { ollamaProvider, radiusProvider };\n\n/** Providers present in the generated catalog. `KnownProvider` additionally\n * includes purely dynamic providers (e.g. \"radius\") that have no static\n * catalog entry. */\nexport type BuiltinProvider = keyof typeof MODELS;\n\ntype BuiltinModelApi<\n\tTProvider extends BuiltinProvider,\n\tTModelId extends keyof (typeof MODELS)[TProvider],\n> = (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi } ? (TApi extends Api ? TApi : never) : never;\n\nconst XIAOMI_MIMO_PROVIDERS = new Set([\n\t\"xiaomi\",\n\t\"xiaomi-token-plan-cn\",\n\t\"xiaomi-token-plan-ams\",\n\t\"xiaomi-token-plan-sgp\",\n]);\n\nfunction normalizeBuiltinModel<TApi extends Api>(model: Model<TApi> | undefined): Model<TApi> | undefined {\n\tif (!model) return undefined;\n\n\tif (XIAOMI_MIMO_PROVIDERS.has(model.provider) && model.id === \"mimo-v2.5-pro\") {\n\t\treturn {\n\t\t\t...model,\n\t\t\tcompat: {\n\t\t\t\t...model.compat,\n\t\t\t\trequiresReasoningContentOnAssistantMessages: true,\n\t\t\t\tthinkingFormat: \"deepseek\",\n\t\t\t\tsupportsDisabledThinking: false,\n\t\t\t},\n\t\t} as Model<TApi>;\n\t}\n\n\tif (model.provider === \"anthropic\" && model.id === \"claude-opus-4-8\") {\n\t\treturn {\n\t\t\t...model,\n\t\t\tthinkingLevelMap: {\n\t\t\t\t...model.thinkingLevelMap,\n\t\t\t\tmax: \"max\",\n\t\t\t},\n\t\t};\n\t}\n\n\treturn model;\n}\n\n/** Typed read of the generated built-in catalog. */\nexport function getBuiltinModel<TProvider extends BuiltinProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(\n\tprovider: TProvider,\n\tmodelId: TModelId,\n): Model<BuiltinModelApi<TProvider, TModelId>> {\n\tconst models = MODELS[provider] as Record<string, Model<Api>> | undefined;\n\treturn normalizeBuiltinModel(models?.[modelId as string]) as Model<BuiltinModelApi<TProvider, TModelId>>;\n}\n\nexport function getBuiltinProviders(): BuiltinProvider[] {\n\treturn Object.keys(MODELS) as BuiltinProvider[];\n}\n\n/** Generation timestamp shared by all built-in provider catalogs. */\nexport function getBuiltinModelDataGeneratedAt(): number | undefined {\n\tconst generatedAt = Date.parse(modelDataManifest.generatedAt);\n\treturn Number.isNaN(generatedAt) ? undefined : generatedAt;\n}\n\nexport function getBuiltinModels<TProvider extends BuiltinProvider>(\n\tprovider: TProvider,\n): Model<BuiltinModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[] {\n\tconst models = MODELS[provider] as Record<string, Model<Api>> | undefined;\n\treturn models\n\t\t? (Object.values(models)\n\t\t\t\t.map((model) => normalizeBuiltinModel(model))\n\t\t\t\t.filter((model): model is Model<Api> => model !== undefined) as Model<\n\t\t\t\tBuiltinModelApi<TProvider, keyof (typeof MODELS)[TProvider]>\n\t\t\t>[])\n\t\t: [];\n}\n\n/** All built-in providers, freshly constructed. */\nexport function builtinProviders(): Provider[] {\n\treturn [\n\t\talibabaTokenPlanProvider(),\n\t\tamazonBedrockProvider(),\n\t\tantLingProvider(),\n\t\tanthropicProvider(),\n\t\tazureOpenAIResponsesProvider(),\n\t\tbaiProvider(),\n\t\tbasetenProvider(),\n\t\tcerebrasProvider(),\n\t\tcloudflareAIGatewayProvider(),\n\t\tcloudflareWorkersAIProvider(),\n\t\tcursorProvider(),\n\t\tdevinProvider(),\n\t\tdeepseekProvider(),\n\t\tfireworksProvider(),\n\t\tgithubCopilotProvider(),\n\t\tgoogleProvider(),\n\t\tgoogleVertexProvider(),\n\t\tgroqProvider(),\n\t\thuggingfaceProvider(),\n\t\tkimiCodingProvider(),\n\t\tminimaxProvider(),\n\t\tminimaxCnProvider(),\n\t\tmistralProvider(),\n\t\tmoonshotaiProvider(),\n\t\tmoonshotaiCnProvider(),\n\t\tnvidiaProvider(),\n\t\topenaiProvider(),\n\t\topenaiCodexProvider(),\n\t\tollamaProvider(),\n\t\topencodeProvider(),\n\t\topencodeGoProvider(),\n\t\topengatewayProvider(),\n\t\topenrouterProvider(),\n\t\tqwenTokenPlanProvider(),\n\t\tqwenTokenPlanCnProvider(),\n\t\tqwenTokenPlanIndividualProvider(),\n\t\tradiusProvider(),\n\t\ttogetherProvider(),\n\t\tveniceProvider(),\n\t\tvercelAIGatewayProvider(),\n\t\txaiProvider(),\n\t\txiaomiProvider(),\n\t\txiaomiTokenPlanAmsProvider(),\n\t\txiaomiTokenPlanCnProvider(),\n\t\txiaomiTokenPlanSgpProvider(),\n\t\tzaiProvider(),\n\t\tzaiCodingCnProvider(),\n\t];\n}\n\n/** A `Models` collection with every built-in provider registered. */\nexport function builtinModels(options?: CreateModelsOptions): MutableModels {\n\tconst models = createModels(options);\n\tfor (const provider of builtinProviders()) {\n\t\tmodels.setProvider(provider);\n\t}\n\treturn models;\n}\n\n/** All built-in image-generation providers, freshly constructed. */\nexport function builtinImagesProviders(): ImagesProvider[] {\n\treturn [openrouterImagesProvider(), openaiImagesProvider()];\n}\n\n/** An `ImagesModels` collection with every built-in image-generation provider registered. */\nexport function builtinImagesModels(options?: CreateModelsOptions): MutableImagesModels {\n\tconst models = createImagesModels(options);\n\tfor (const provider of builtinImagesProviders()) {\n\t\tmodels.setProvider(provider);\n\t}\n\treturn models;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { ProviderStreams } from "../types.ts";
2
+ /**
3
+ * The OpenAI Responses tool builder forwards `tool.parameters` unchanged
4
+ * (`api/openai-responses-shared.ts` via `getJsonSchemaToolParameters()`), so a
5
+ * union-root tool such as `workpool` reaches B.AI unrepaired. The other two
6
+ * B.AI wire APIs already normalize their own roots and need no transform:
7
+ * `api/openai-completions.ts` re-runs `normalizeToolParametersForOpenAICompat()`
8
+ * after `onPayload`, and `api/anthropic-messages.ts` builds `input_schema`
9
+ * through `resolveRootObjectSchema()`.
10
+ */
11
+ export declare function normalizeBaiResponsesPayload(payload: unknown): unknown;
12
+ export declare function baiResponsesStreams(streams: ProviderStreams): ProviderStreams;
13
+ //# sourceMappingURL=bai-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bai-stream.d.ts","sourceRoot":"","sources":["../../src/providers/bai-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsC,MAAM,aAAa,CAAC;AAuBvF;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAKtE;AAaD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAM7E"}
@@ -0,0 +1,55 @@
1
+ import { normalizeToolParametersForOpenAICompat } from "../utils/tool-schema-compat.js";
2
+ function isJsonObject(value) {
3
+ return value !== null && typeof value === "object" && !Array.isArray(value);
4
+ }
5
+ /**
6
+ * Repair a function tool whose root parameters schema declares no `type`.
7
+ *
8
+ * B.AI rejects a union-root schema with `tools.function.parameters.type is
9
+ * required and must be "object"`. Adding a bare `type: "object"` in front of
10
+ * the `anyOf` would satisfy that validator and still leave the root without
11
+ * `properties`/`required`, which describes the tool to the model as taking no
12
+ * arguments at all; `normalizeToolParametersForOpenAICompat()` instead merges
13
+ * the union branches into one object schema, so the parameters survive.
14
+ */
15
+ function normalizeResponsesFunctionTool(tool) {
16
+ if (!isJsonObject(tool) || tool.type !== "function")
17
+ return tool;
18
+ if (!isJsonObject(tool.parameters) || tool.parameters.type !== undefined)
19
+ return tool;
20
+ return { ...tool, parameters: normalizeToolParametersForOpenAICompat(tool.parameters) };
21
+ }
22
+ /**
23
+ * The OpenAI Responses tool builder forwards `tool.parameters` unchanged
24
+ * (`api/openai-responses-shared.ts` via `getJsonSchemaToolParameters()`), so a
25
+ * union-root tool such as `workpool` reaches B.AI unrepaired. The other two
26
+ * B.AI wire APIs already normalize their own roots and need no transform:
27
+ * `api/openai-completions.ts` re-runs `normalizeToolParametersForOpenAICompat()`
28
+ * after `onPayload`, and `api/anthropic-messages.ts` builds `input_schema`
29
+ * through `resolveRootObjectSchema()`.
30
+ */
31
+ export function normalizeBaiResponsesPayload(payload) {
32
+ if (!isJsonObject(payload) || !Array.isArray(payload.tools))
33
+ return payload;
34
+ const sourceTools = payload.tools;
35
+ const tools = sourceTools.map((tool) => normalizeResponsesFunctionTool(tool));
36
+ return tools.some((tool, index) => tool !== sourceTools[index]) ? { ...payload, tools } : payload;
37
+ }
38
+ function withBaiResponsesPayload(options) {
39
+ const upstreamTransform = options?.onPayload;
40
+ return {
41
+ ...options,
42
+ onPayload: async (payload, model, request) => {
43
+ const transformed = await upstreamTransform?.(payload, model, request);
44
+ return normalizeBaiResponsesPayload(transformed ?? payload);
45
+ },
46
+ };
47
+ }
48
+ export function baiResponsesStreams(streams) {
49
+ return {
50
+ ...streams,
51
+ stream: (model, context, options) => streams.stream(model, context, withBaiResponsesPayload(options)),
52
+ streamSimple: (model, context, options) => streams.streamSimple(model, context, withBaiResponsesPayload(options)),
53
+ };
54
+ }
55
+ //# sourceMappingURL=bai-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bai-stream.js","sourceRoot":"","sources":["../../src/providers/bai-stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sCAAsC,EAAE,MAAM,gCAAgC,CAAC;AAExF,SAAS,YAAY,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,8BAA8B,CAAC,IAAa;IACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACtF,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,sCAAsC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACzF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC5D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAClC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACnG,CAAC;AAED,SAAS,uBAAuB,CAAgD,OAAsB;IACrG,MAAM,iBAAiB,GAAG,OAAO,EAAE,SAAS,CAAC;IAC7C,OAAO;QACN,GAAG,OAAO;QACV,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,MAAM,iBAAiB,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACvE,OAAO,4BAA4B,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC;QAC7D,CAAC;KACI,CAAC;AACR,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAwB;IAC3D,OAAO;QACN,GAAG,OAAO;QACV,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACrG,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;KACjH,CAAC;AACH,CAAC","sourcesContent":["import type { ProviderStreams, SimpleStreamOptions, StreamOptions } from \"../types.ts\";\nimport { normalizeToolParametersForOpenAICompat } from \"../utils/tool-schema-compat.ts\";\n\nfunction isJsonObject(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\n/**\n * Repair a function tool whose root parameters schema declares no `type`.\n *\n * B.AI rejects a union-root schema with `tools.function.parameters.type is\n * required and must be \"object\"`. Adding a bare `type: \"object\"` in front of\n * the `anyOf` would satisfy that validator and still leave the root without\n * `properties`/`required`, which describes the tool to the model as taking no\n * arguments at all; `normalizeToolParametersForOpenAICompat()` instead merges\n * the union branches into one object schema, so the parameters survive.\n */\nfunction normalizeResponsesFunctionTool(tool: unknown): unknown {\n\tif (!isJsonObject(tool) || tool.type !== \"function\") return tool;\n\tif (!isJsonObject(tool.parameters) || tool.parameters.type !== undefined) return tool;\n\treturn { ...tool, parameters: normalizeToolParametersForOpenAICompat(tool.parameters) };\n}\n\n/**\n * The OpenAI Responses tool builder forwards `tool.parameters` unchanged\n * (`api/openai-responses-shared.ts` via `getJsonSchemaToolParameters()`), so a\n * union-root tool such as `workpool` reaches B.AI unrepaired. The other two\n * B.AI wire APIs already normalize their own roots and need no transform:\n * `api/openai-completions.ts` re-runs `normalizeToolParametersForOpenAICompat()`\n * after `onPayload`, and `api/anthropic-messages.ts` builds `input_schema`\n * through `resolveRootObjectSchema()`.\n */\nexport function normalizeBaiResponsesPayload(payload: unknown): unknown {\n\tif (!isJsonObject(payload) || !Array.isArray(payload.tools)) return payload;\n\tconst sourceTools = payload.tools;\n\tconst tools = sourceTools.map((tool) => normalizeResponsesFunctionTool(tool));\n\treturn tools.some((tool, index) => tool !== sourceTools[index]) ? { ...payload, tools } : payload;\n}\n\nfunction withBaiResponsesPayload<T extends StreamOptions | SimpleStreamOptions>(options: T | undefined): T {\n\tconst upstreamTransform = options?.onPayload;\n\treturn {\n\t\t...options,\n\t\tonPayload: async (payload, model, request) => {\n\t\t\tconst transformed = await upstreamTransform?.(payload, model, request);\n\t\t\treturn normalizeBaiResponsesPayload(transformed ?? payload);\n\t\t},\n\t} as T;\n}\n\nexport function baiResponsesStreams(streams: ProviderStreams): ProviderStreams {\n\treturn {\n\t\t...streams,\n\t\tstream: (model, context, options) => streams.stream(model, context, withBaiResponsesPayload(options)),\n\t\tstreamSimple: (model, context, options) => streams.streamSimple(model, context, withBaiResponsesPayload(options)),\n\t};\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { type Provider } from "../models.ts";
2
+ import type { Model } from "../types.ts";
3
+ export declare const BAI_BASE_URL = "https://api.b.ai/v1";
4
+ export type BaiApi = "openai-responses" | "openai-completions" | "anthropic-messages";
5
+ export interface BaiProviderOptions {
6
+ baseUrl?: string;
7
+ models?: readonly Model<BaiApi>[];
8
+ fetch?: typeof fetch;
9
+ }
10
+ export declare function baiProvider(options?: BaiProviderOptions): Provider<BaiApi>;
11
+ //# sourceMappingURL=bai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bai.d.ts","sourceRoot":"","sources":["../../src/providers/bai.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,QAAQ,EAA6B,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAI9C,eAAO,MAAM,YAAY,wBAAwB,CAAC;AAElD,MAAM,MAAM,MAAM,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACrB;AAiFD,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,CA0B9E"}
@@ -0,0 +1,94 @@
1
+ import { anthropicMessagesApi } from "../api/anthropic-messages.lazy.js";
2
+ import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
3
+ import { openAIResponsesApi } from "../api/openai-responses.lazy.js";
4
+ import { envApiKeyAuth } from "../auth/helpers.js";
5
+ import { createProvider } from "../models.js";
6
+ import { BAI_MODELS } from "./bai.models.js";
7
+ import { baiResponsesStreams } from "./bai-stream.js";
8
+ export const BAI_BASE_URL = "https://api.b.ai/v1";
9
+ function normalizeBaseUrl(baseUrl) {
10
+ return baseUrl.replace(/\/+$/u, "");
11
+ }
12
+ /**
13
+ * B.AI documents dot-version model IDs on most model pages (`gpt-5.6-sol`,
14
+ * `gemini-3.5-flash-lite`) but hyphenated ones for Claude (`claude-fable-5-1`),
15
+ * and its Claude Code guide states that "both hyphenated aliases and
16
+ * dot-version aliases are accepted". Which spelling `GET /v1/models` returns is
17
+ * therefore not fixed, so the catalog is indexed under both to keep discovery
18
+ * from silently dropping an entitled model.
19
+ */
20
+ function modelIdAliases(id) {
21
+ const dashed = id.replaceAll(".", "-");
22
+ return dashed === id ? [id] : [id, dashed];
23
+ }
24
+ function indexCatalog(catalog) {
25
+ const index = new Map();
26
+ for (const model of catalog) {
27
+ for (const alias of modelIdAliases(model.id)) {
28
+ if (!index.has(alias))
29
+ index.set(alias, model);
30
+ }
31
+ }
32
+ return index;
33
+ }
34
+ function remapBaiModels(models, catalogById) {
35
+ return models.flatMap((model) => {
36
+ const current = catalogById.get(model.id);
37
+ return current ? [current] : [];
38
+ });
39
+ }
40
+ async function fetchBaiModels(baseUrl, catalogById, fetchImpl, context) {
41
+ const apiKey = context.credential?.type === "api_key" ? context.credential.key?.trim() : undefined;
42
+ if (!apiKey)
43
+ return [];
44
+ const response = await fetchImpl(`${baseUrl}/models`, {
45
+ headers: {
46
+ accept: "application/json",
47
+ authorization: `Bearer ${apiKey}`,
48
+ },
49
+ signal: context.signal,
50
+ });
51
+ if (!response.ok) {
52
+ throw new Error(`Could not load B.AI model catalog: ${response.status}`);
53
+ }
54
+ const payload = (await response.json());
55
+ if (payload.success === false) {
56
+ throw new Error(`Could not load B.AI model catalog: ${payload.message?.trim() || "request rejected"}`);
57
+ }
58
+ if (!Array.isArray(payload.data)) {
59
+ throw new Error("Invalid B.AI model catalog response");
60
+ }
61
+ const discovered = payload.data.flatMap((entry) => {
62
+ const id = entry.id?.trim();
63
+ const model = id ? catalogById.get(id) : undefined;
64
+ return model ? [model] : [];
65
+ });
66
+ return [...new Map(discovered.map((model) => [model.id, model])).values()];
67
+ }
68
+ export function baiProvider(options = {}) {
69
+ const baseUrl = normalizeBaseUrl(options.baseUrl ?? BAI_BASE_URL);
70
+ const anthropicBaseUrl = baseUrl.replace(/\/v1$/u, "");
71
+ const catalog = [...(options.models ?? Object.values(BAI_MODELS))].map((model) => ({
72
+ ...model,
73
+ baseUrl: model.api === "anthropic-messages" ? anthropicBaseUrl : baseUrl,
74
+ }));
75
+ const catalogById = indexCatalog(catalog);
76
+ const fetchImpl = options.fetch ?? fetch;
77
+ return createProvider({
78
+ id: "bai",
79
+ name: "B.AI",
80
+ baseUrl,
81
+ auth: { apiKey: envApiKeyAuth("B.AI API key", ["BAI_API_KEY"]) },
82
+ models: [],
83
+ restoreModels: (models) => remapBaiModels(models, catalogById),
84
+ fetchModels: (context) => fetchBaiModels(baseUrl, catalogById, fetchImpl, context),
85
+ api: {
86
+ // Only the Responses tool builder forwards a union-root schema unrepaired;
87
+ // see the contract note in ./bai-stream.ts.
88
+ "openai-responses": baiResponsesStreams(openAIResponsesApi()),
89
+ "openai-completions": openAICompletionsApi(),
90
+ "anthropic-messages": anthropicMessagesApi(),
91
+ },
92
+ });
93
+ }
94
+ //# sourceMappingURL=bai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bai.js","sourceRoot":"","sources":["../../src/providers/bai.ts"],"names":[],"mappings":"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","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider, type RefreshModelsContext } from \"../models.ts\";\nimport type { Api, Model } from \"../types.ts\";\nimport { BAI_MODELS } from \"./bai.models.ts\";\nimport { baiResponsesStreams } from \"./bai-stream.ts\";\n\nexport const BAI_BASE_URL = \"https://api.b.ai/v1\";\n\nexport type BaiApi = \"openai-responses\" | \"openai-completions\" | \"anthropic-messages\";\n\nexport interface BaiProviderOptions {\n\tbaseUrl?: string;\n\tmodels?: readonly Model<BaiApi>[];\n\tfetch?: typeof fetch;\n}\n\ntype BaiModelsResponse = {\n\tsuccess?: boolean;\n\tmessage?: string;\n\tdata?: Array<{ id?: string }>;\n};\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n\treturn baseUrl.replace(/\\/+$/u, \"\");\n}\n\n/**\n * B.AI documents dot-version model IDs on most model pages (`gpt-5.6-sol`,\n * `gemini-3.5-flash-lite`) but hyphenated ones for Claude (`claude-fable-5-1`),\n * and its Claude Code guide states that \"both hyphenated aliases and\n * dot-version aliases are accepted\". Which spelling `GET /v1/models` returns is\n * therefore not fixed, so the catalog is indexed under both to keep discovery\n * from silently dropping an entitled model.\n */\nfunction modelIdAliases(id: string): string[] {\n\tconst dashed = id.replaceAll(\".\", \"-\");\n\treturn dashed === id ? [id] : [id, dashed];\n}\n\nfunction indexCatalog(catalog: readonly Model<BaiApi>[]): Map<string, Model<BaiApi>> {\n\tconst index = new Map<string, Model<BaiApi>>();\n\tfor (const model of catalog) {\n\t\tfor (const alias of modelIdAliases(model.id)) {\n\t\t\tif (!index.has(alias)) index.set(alias, model);\n\t\t}\n\t}\n\treturn index;\n}\n\nfunction remapBaiModels(\n\tmodels: readonly Model<Api>[],\n\tcatalogById: ReadonlyMap<string, Model<BaiApi>>,\n): Model<BaiApi>[] {\n\treturn models.flatMap((model) => {\n\t\tconst current = catalogById.get(model.id);\n\t\treturn current ? [current] : [];\n\t});\n}\n\nasync function fetchBaiModels(\n\tbaseUrl: string,\n\tcatalogById: ReadonlyMap<string, Model<BaiApi>>,\n\tfetchImpl: typeof fetch,\n\tcontext: RefreshModelsContext,\n): Promise<Model<BaiApi>[]> {\n\tconst apiKey = context.credential?.type === \"api_key\" ? context.credential.key?.trim() : undefined;\n\tif (!apiKey) return [];\n\n\tconst response = await fetchImpl(`${baseUrl}/models`, {\n\t\theaders: {\n\t\t\taccept: \"application/json\",\n\t\t\tauthorization: `Bearer ${apiKey}`,\n\t\t},\n\t\tsignal: context.signal,\n\t});\n\tif (!response.ok) {\n\t\tthrow new Error(`Could not load B.AI model catalog: ${response.status}`);\n\t}\n\n\tconst payload = (await response.json()) as BaiModelsResponse;\n\tif (payload.success === false) {\n\t\tthrow new Error(`Could not load B.AI model catalog: ${payload.message?.trim() || \"request rejected\"}`);\n\t}\n\tif (!Array.isArray(payload.data)) {\n\t\tthrow new Error(\"Invalid B.AI model catalog response\");\n\t}\n\n\tconst discovered = payload.data.flatMap((entry) => {\n\t\tconst id = entry.id?.trim();\n\t\tconst model = id ? catalogById.get(id) : undefined;\n\t\treturn model ? [model] : [];\n\t});\n\treturn [...new Map(discovered.map((model) => [model.id, model])).values()];\n}\n\nexport function baiProvider(options: BaiProviderOptions = {}): Provider<BaiApi> {\n\tconst baseUrl = normalizeBaseUrl(options.baseUrl ?? BAI_BASE_URL);\n\tconst anthropicBaseUrl = baseUrl.replace(/\\/v1$/u, \"\");\n\tconst catalog = [...(options.models ?? Object.values(BAI_MODELS))].map((model) => ({\n\t\t...model,\n\t\tbaseUrl: model.api === \"anthropic-messages\" ? anthropicBaseUrl : baseUrl,\n\t}));\n\tconst catalogById = indexCatalog(catalog);\n\tconst fetchImpl = options.fetch ?? fetch;\n\n\treturn createProvider<BaiApi>({\n\t\tid: \"bai\",\n\t\tname: \"B.AI\",\n\t\tbaseUrl,\n\t\tauth: { apiKey: envApiKeyAuth(\"B.AI API key\", [\"BAI_API_KEY\"]) },\n\t\tmodels: [],\n\t\trestoreModels: (models) => remapBaiModels(models, catalogById),\n\t\tfetchModels: (context) => fetchBaiModels(baseUrl, catalogById, fetchImpl, context),\n\t\tapi: {\n\t\t\t// Only the Responses tool builder forwards a union-root schema unrepaired;\n\t\t\t// see the contract note in ./bai-stream.ts.\n\t\t\t\"openai-responses\": baiResponsesStreams(openAIResponsesApi()),\n\t\t\t\"openai-completions\": openAICompletionsApi(),\n\t\t\t\"anthropic-messages\": anthropicMessagesApi(),\n\t\t},\n\t});\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import values from "./data/bai.json";
2
+ import { type ModelCatalog } from "../model-catalog.ts";
3
+ export declare const BAI_MODELS: ModelCatalog<typeof values, "bai">;
4
+ //# sourceMappingURL=bai.models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bai.models.d.ts","sourceRoot":"","sources":["../../src/providers/bai.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,iBAAiB,CAAuB;AAC3D,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,KAAK,CACvB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // This file is auto-generated by scripts/generate-models.ts
2
+ // Do not edit manually - run 'npm run generate-models' to update
3
+ import values from "./data/bai.json" with { type: "json" };
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const BAI_MODELS = flattenModelCatalog("bai", values);
6
+ //# sourceMappingURL=bai.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bai.models.js","sourceRoot":"","sources":["../../src/providers/bai.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,UAAU,GACtB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/bai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const BAI_MODELS: ModelCatalog<typeof values, \"bai\"> =\n\tflattenModelCatalog(\"bai\", values);\n"]}
@@ -1 +1 @@
1
- {"schemaVersion":3,"generatedAt":"2026-09-18T01:56:49.593Z","structureHash":"3be8396f195327f05ac970bc0382c6bc078ad46d28b39236c5fed64a0ff7327c","files":{"alibaba-token-plan.json":"3a9c1be76d47459371e9fa2feeffc31e7edbbfec65fa9cc41236988efc4cf6d9","amazon-bedrock.json":"d82a76308591b1777c351a22f1bd3e4f332a50464743dfc3610b250e265e531d","ant-ling.json":"4979fe79d99ed97382d7ce40170c6132e932e77906de1eb54464c042e7d63633","anthropic.json":"e9d883ee35d94dba963320b5496bd7dd368d226cbafcf134bfec66a0a24b3b7f","azure-openai-responses.json":"9d2137c68fbf7012872296a02a13a138f7d5246dc09f2ca79e34e6a875b11488","baseten.json":"d155c434294b5167244cffb6dea6793f9669e91e8ab65b564f9510d81b330e37","cerebras.json":"9eaa554e1b02f3665f8f63e6432d253bf81351af7c72001054dd8108aa528a52","cloudflare-ai-gateway.json":"b62b46dbb24c9a5cd0c10ba5adb58aedc2a1c0616459f36b51e07bb15416e584","cloudflare-workers-ai.json":"07ef63208ff7517fd1a80962f18143e21de399640423329490b157f459ccf995","deepseek.json":"b5f9693ec641e9a957dc5f7a22042b3bb928bac3d7268406619b6f18e21c4b83","fireworks.json":"6283651d25a8861e7d42fe2bdb1cb7dd80802811dfaf61e40c11cc813408c294","github-copilot.json":"2628f6583c2509e1f17412e6a8a8f12cf20750cc8cb82ab4273c63155cee4746","google-vertex.json":"e1631109172dc1f7d7977570420a5bb86258bdd1088427e244a2c51545c4f24d","google.json":"7619bf03edd2a7acb06a2274a14b13c3a61354288abe029a758401d4de36a8fd","groq.json":"e4728fd72e358cd8f25e9a518e9b49a521ef44523d3debe38a7db9e0663c4077","huggingface.json":"a488b6f175b382277ccf7d487f877ef0c698994576bb55d2410838bf9c8c7c41","kimi-coding.json":"2600a474d5a5ab9790dbf9a68701823658bb79bd44554e75c1e869641165e7a3","minimax-cn.json":"65d37e55a6d9585855f94b3fb7739308d107fe248ebd9e1001d1c5d4606ad2c4","minimax.json":"c7dc5765995ae77242916430929c7cc9a782589f7e483e13f7e01663190d028e","mistral.json":"be522597b22bceeb0bb9a0ba1781647649ffd19637d0c8e67b056d7b0ec33d52","moonshotai-cn.json":"c4e1801b5dfd61bebcaa33cbfc5ed0c69df14a3bee37da218a558668d817864e","moonshotai.json":"3dab637e7e2648792c786157f85f29026b93393f7098b77593c1180928d371c9","nvidia.json":"2ff6862206269af88a694e627c4b54753055357710adaf49ac8518d102c17407","openai-codex.json":"5b308f19ee369ba78113998361d8f8e6c160690b29947e6f07ccbc12b46289e6","openai.json":"203a1d6bf61178268edf3d3f0ad4a6408eded401c4472bda4ac0ec73142f38ce","opencode-go.json":"f97adb96bf613ee102585c6c4cd0a8cc8047d51c8cfe4cf2f98673afce09ee3d","opencode.json":"52b40ba8ab7435c9029bf59f38558f41528462990a6a7d7ba3f00aa10481da09","opengateway.json":"7a4c98061b7b84c476ba70d6f597019ef53c02c0135b9d8a7507e2c30905c07d","openrouter.json":"1789012d9a82e8311815000a87ef3333ab5949a6609d7108b547c47523a075e0","qwen-token-plan-cn.json":"4bf520ed38e5c3045680d2ec2816fa8a69079dbe97f7b929767a63172288da6b","qwen-token-plan-individual.json":"eb040e78595853e980011308b1bf9caacae6dc8a91abbac5ffebd402515dd2a6","qwen-token-plan.json":"a5c67213745329ec3ba79f712f31c1c32a781d7ffb8c04f9819f36c27672531f","together.json":"927c707d06f2236cdab13f14c870fb58bce0614ba7287bbcd57cc9fd66d191ed","venice.json":"669535f56137a845e3bb6e62345ad1e3fbd594490f496061778a6daca7f647fe","vercel-ai-gateway.json":"30de1ec1b71d5b9cea3e5f3802b515db5e4a74cec3a4c28addb23eee2ceedd7d","xai.json":"5947370c4a40ad85605f1a17ae09d4d6dd4f9ab120d14fabfb4c5a08a75e6f7e","xiaomi-token-plan-ams.json":"568b9992cf320536a65826e26a414afa5c0d17f083a01af4bd96658d9dd3e705","xiaomi-token-plan-cn.json":"c423857d0bbb0b126394eaf1ebb2a91bf2d1193cc5a4fe77843ff0f4536a0a80","xiaomi-token-plan-sgp.json":"008f1eb41037e93c5ae478f12815cd67bac1978f131ffefa602775bb60b63fea","xiaomi.json":"37acf451bb4364bdca2ecea6b7d962590d9974a87e80cfe34bb800be6a95c13b","zai-coding-cn.json":"c68da532c6e8fa126372e743a2474d9f483ac3260bf9b1fad3ee40183957e141","zai.json":"f42790c77fb4681a656897a9d860b939916c0ddf979a5f16856bce9573cdf64e"}}
1
+ {"schemaVersion":3,"generatedAt":"2026-09-18T10:38:29.376Z","structureHash":"d8e0baf21507d04ec5484b212b5f1f546cb7e55a6476a087b6bc9bfb4bb5ab5e","files":{"alibaba-token-plan.json":"3a9c1be76d47459371e9fa2feeffc31e7edbbfec65fa9cc41236988efc4cf6d9","amazon-bedrock.json":"d82a76308591b1777c351a22f1bd3e4f332a50464743dfc3610b250e265e531d","ant-ling.json":"4979fe79d99ed97382d7ce40170c6132e932e77906de1eb54464c042e7d63633","anthropic.json":"e9d883ee35d94dba963320b5496bd7dd368d226cbafcf134bfec66a0a24b3b7f","azure-openai-responses.json":"9d2137c68fbf7012872296a02a13a138f7d5246dc09f2ca79e34e6a875b11488","bai.json":"2b12b15bd43462e60711944dd7283db8676611d9d76c82c2a01f64913e16a67e","baseten.json":"d155c434294b5167244cffb6dea6793f9669e91e8ab65b564f9510d81b330e37","cerebras.json":"9eaa554e1b02f3665f8f63e6432d253bf81351af7c72001054dd8108aa528a52","cloudflare-ai-gateway.json":"b62b46dbb24c9a5cd0c10ba5adb58aedc2a1c0616459f36b51e07bb15416e584","cloudflare-workers-ai.json":"07ef63208ff7517fd1a80962f18143e21de399640423329490b157f459ccf995","deepseek.json":"b5f9693ec641e9a957dc5f7a22042b3bb928bac3d7268406619b6f18e21c4b83","fireworks.json":"6283651d25a8861e7d42fe2bdb1cb7dd80802811dfaf61e40c11cc813408c294","github-copilot.json":"2628f6583c2509e1f17412e6a8a8f12cf20750cc8cb82ab4273c63155cee4746","google-vertex.json":"e1631109172dc1f7d7977570420a5bb86258bdd1088427e244a2c51545c4f24d","google.json":"7619bf03edd2a7acb06a2274a14b13c3a61354288abe029a758401d4de36a8fd","groq.json":"e4728fd72e358cd8f25e9a518e9b49a521ef44523d3debe38a7db9e0663c4077","huggingface.json":"a488b6f175b382277ccf7d487f877ef0c698994576bb55d2410838bf9c8c7c41","kimi-coding.json":"2600a474d5a5ab9790dbf9a68701823658bb79bd44554e75c1e869641165e7a3","minimax-cn.json":"65d37e55a6d9585855f94b3fb7739308d107fe248ebd9e1001d1c5d4606ad2c4","minimax.json":"c7dc5765995ae77242916430929c7cc9a782589f7e483e13f7e01663190d028e","mistral.json":"be522597b22bceeb0bb9a0ba1781647649ffd19637d0c8e67b056d7b0ec33d52","moonshotai-cn.json":"c4e1801b5dfd61bebcaa33cbfc5ed0c69df14a3bee37da218a558668d817864e","moonshotai.json":"3dab637e7e2648792c786157f85f29026b93393f7098b77593c1180928d371c9","nvidia.json":"2ff6862206269af88a694e627c4b54753055357710adaf49ac8518d102c17407","openai-codex.json":"5b308f19ee369ba78113998361d8f8e6c160690b29947e6f07ccbc12b46289e6","openai.json":"203a1d6bf61178268edf3d3f0ad4a6408eded401c4472bda4ac0ec73142f38ce","opencode-go.json":"f97adb96bf613ee102585c6c4cd0a8cc8047d51c8cfe4cf2f98673afce09ee3d","opencode.json":"7b115931cd69b446a47419ff8e47c9052fd630e2afe66c60d3533e79e29cc16e","opengateway.json":"98a5c5a0e8998579d8735da8f8db8d24842f570d6c835758c50d6801c22b8a10","openrouter.json":"41622547ad2090172bb4315a40106bfa02ae73b86a7a7af76202b29339295c97","qwen-token-plan-cn.json":"4bf520ed38e5c3045680d2ec2816fa8a69079dbe97f7b929767a63172288da6b","qwen-token-plan-individual.json":"eb040e78595853e980011308b1bf9caacae6dc8a91abbac5ffebd402515dd2a6","qwen-token-plan.json":"a5c67213745329ec3ba79f712f31c1c32a781d7ffb8c04f9819f36c27672531f","together.json":"927c707d06f2236cdab13f14c870fb58bce0614ba7287bbcd57cc9fd66d191ed","venice.json":"669535f56137a845e3bb6e62345ad1e3fbd594490f496061778a6daca7f647fe","vercel-ai-gateway.json":"be9809f013a4dfbe6de0c19abc134cd7ea73856dbb12c592aef5e841921aac25","xai.json":"5947370c4a40ad85605f1a17ae09d4d6dd4f9ab120d14fabfb4c5a08a75e6f7e","xiaomi-token-plan-ams.json":"568b9992cf320536a65826e26a414afa5c0d17f083a01af4bd96658d9dd3e705","xiaomi-token-plan-cn.json":"c423857d0bbb0b126394eaf1ebb2a91bf2d1193cc5a4fe77843ff0f4536a0a80","xiaomi-token-plan-sgp.json":"008f1eb41037e93c5ae478f12815cd67bac1978f131ffefa602775bb60b63fea","xiaomi.json":"37acf451bb4364bdca2ecea6b7d962590d9974a87e80cfe34bb800be6a95c13b","zai-coding-cn.json":"c68da532c6e8fa126372e743a2474d9f483ac3260bf9b1fad3ee40183957e141","zai.json":"f42790c77fb4681a656897a9d860b939916c0ddf979a5f16856bce9573cdf64e"}}