{"repo": "ainaive/auriga", "files": {"packages/provider/src/openai-compatible.ts": {"42bea131a345529ba08f34ad85c27ea1e26a2789": {"t": 1786067563.8552485, "n": 2524, "h": "affbab16e8902ec9", "c": "/**\n * Registry of OpenAI-compatible backends. Each one is served by the same\n * {@link OpenAIProvider} (Chat Completions wire format) pointed at a different\n * base URL + API key — so adding a vendor is a one-line entry here, not a new\n * SDK adapter. The model-id prefixes drive {@link providerKindFor}.\n */\nexport interface CompatibleBackend {\n label: string;\n /** Base URL for the gateway; undefined uses the canonical OpenAI endpoint. */\n baseURL?: string;\n /** Optional env var that overrides `baseURL` (e.g. region or self-hosted proxy). */\n baseURLEnv?: string;\n /** Credential env vars, in priority order — the first one present is used. */\n apiKeyEnv: readonly string[];\n /** Model-id prefixes routed to this backend. */\n prefixes: readonly RegExp[];\n /** Output-token-limit field this gateway understands. */\n maxTokensField: \"max_completion_tokens\" | \"max_tokens\";\n}\n\nexport const OPENAI_COMPATIBLE = {\n openai: {\n label: \"OpenAI\",\n apiKeyEnv: [\"OPENAI_API_KEY\"],\n prefixes: [/^gpt-/, /^o1/, /^o3/, /^o4/, /^chatgpt/],\n maxTokensField: \"max_completion_tokens\",\n },\n deepseek: {\n label: \"DeepSeek\",\n baseURL: \"https://api.deepseek.com\",\n baseURLEnv: \"DEEPSEEK_BASE_URL\",\n apiKeyEnv: [\"DEEPSEEK_API_KEY\"],\n prefixes: [/^deepseek-/],\n maxTokensField: \"max_tokens\",\n },\n bailian: {\n label: \"Aliyun Bailian\",\n // Mainland endpoint; set DASHSCOPE_BASE_URL to the dashscope-intl host for international.\n baseURL: \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n baseURLEnv: \"DASHSCOPE_BASE_URL\",\n apiKeyEnv: [\"DASHSCOPE_API_KEY\"],\n prefixes: [/^qwen/, /^qwq/, /^qvq/],\n maxTokensField: \"max_tokens\",\n },\n moonshot: {\n label: \"Moonshot\",\n baseURL: \"https://api.moonshot.cn/v1\",\n baseURLEnv: \"MOONSHOT_BASE_URL\",\n apiKeyEnv: [\"MOONSHOT_API_KEY\"],\n prefixes: [/^kimi/, /^moonshot/],\n maxTokensField: \"max_tokens\",\n },\n zhipu: {\n label: \"Zhipu GLM\",\n baseURL: \"https://open.bigmodel.cn/api/paas/v4\",\n baseURLEnv: \"ZHIPU_BASE_URL\",\n apiKeyEnv: [\"ZHIPU_API_KEY\", \"GLM_API_KEY\"],\n prefixes: [/^glm-/],\n maxTokensField: \"max_tokens\",\n },\n} as const satisfies Record;\n\nexport type CompatibleKind = keyof typeof OPENAI_COMPATIBLE;\n\n/** The first present credential env var for a backend, or undefined. */\nexport function firstPresentEnv(keys: readonly string[]): string | undefined {\n for (const key of keys) {\n if (process.env[key]) return process.env[key];\n }\n return undefined;\n}\n"}}}}