@absolutejs/ai 0.0.58 → 0.1.1

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.
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/ai/inputCapacity.ts", "../src/ai/providers/openaiCapacity.ts", "../src/ai/errors/providerError.ts", "../src/ai/resilience.ts", "../src/ai/providers/instrumentation.ts", "../src/ai/providers/reasoning.ts", "../src/ai/providers/openaiResponses.ts", "../src/ai/providers/openai.ts", "../src/ai/providers/anthropic.ts", "../src/ai/providers/openrouterClient.ts", "../src/ai/providers/openrouter.ts"],
4
4
  "sourcesContent": [
5
- "import type { AIProviderConfig, AIProviderStreamParams } from \"../../types/ai\";\n\n/** Provider-reported limits. Some providers have separate input/output windows. */\nexport type AIModelLimits = {\n maxInputTokens: number;\n maxOutputTokens: number;\n contextWindowTokens?: number;\n};\nexport type AIInputCapacity = {\n limits: AIModelLimits;\n inputTokens: number;\n outputTokens: number;\n availableInputTokens: number;\n fits: boolean;\n};\nexport class AIInputError extends Error {\n constructor(\n public readonly code:\n | \"capacity_unavailable\"\n | \"input_too_large\"\n | \"unsupported_content\",\n message: string,\n ) {\n super(message);\n this.name = \"AIInputError\";\n }\n}\nexport const positiveTokenLimit = (value: unknown): number => {\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value <= 0)\n throw new AIInputError(\n \"capacity_unavailable\",\n \"The provider did not supply a valid model limit.\",\n );\n return value;\n};\nexport const inputTokenCount = (value: unknown): number => {\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0)\n throw new AIInputError(\n \"capacity_unavailable\",\n \"The provider did not supply a valid token count.\",\n );\n return value;\n};\n\n/** No character/token conversion guesses. Includes the serialized prompt and tools. */\nexport const inspectAIInput = async (\n provider: AIProviderConfig,\n params: AIProviderStreamParams,\n): Promise<AIInputCapacity> => {\n params.signal?.throwIfAborted();\n if (!provider.inputCapacity)\n throw new AIInputError(\n \"capacity_unavailable\",\n \"This provider does not expose model capacity and token counting.\",\n );\n const [limits, tokens] = await Promise.all([\n provider.inputCapacity.getLimits(params),\n provider.inputCapacity.countTokens(params),\n ]);\n const inputTokens = inputTokenCount(tokens);\n const outputTokens = positiveTokenLimit(\n provider.inputCapacity.outputTokens?.(params) ??\n params.maxTokens ??\n limits.maxOutputTokens,\n );\n const maxInputTokens = positiveTokenLimit(limits.maxInputTokens);\n const maxOutputTokens = positiveTokenLimit(limits.maxOutputTokens);\n const availableInputTokens = Math.max(\n 0,\n Math.min(\n maxInputTokens,\n limits.contextWindowTokens === undefined\n ? maxInputTokens\n : positiveTokenLimit(limits.contextWindowTokens) - outputTokens,\n ),\n );\n return {\n limits,\n inputTokens,\n outputTokens,\n availableInputTokens,\n fits:\n outputTokens <= maxOutputTokens && inputTokens <= availableInputTokens,\n };\n};\n\n/** Cache metadata per provider instance; use a zero TTL with rotating auth/headers. never cache failures. */\nexport const cacheModelLimits = (\n load: (params: AIProviderStreamParams) => Promise<AIModelLimits>,\n ttlMs = 300_000,\n) => {\n const cache = new Map<string, { at: number; limits: AIModelLimits }>();\n return async (params: AIProviderStreamParams) => {\n const entry = cache.get(params.model);\n if (entry && Date.now() - entry.at < ttlMs) return entry.limits;\n const limits = await load(params);\n positiveTokenLimit(limits.maxInputTokens);\n positiveTokenLimit(limits.maxOutputTokens);\n if (cache.size >= 100) cache.clear();\n cache.set(params.model, { at: Date.now(), limits });\n return limits;\n };\n};\n\nexport const capacityJson = async (\n response: Response,\n): Promise<Record<string, unknown>> => {\n if (!response.ok)\n throw new AIInputError(\n \"capacity_unavailable\",\n `Model capacity request failed (${response.status}).`,\n );\n const value: unknown = await response.json();\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new AIInputError(\n \"capacity_unavailable\",\n \"Model capacity response was invalid.\",\n );\n return value as Record<string, unknown>;\n};\n",
5
+ "import type { AIProviderConfig, AIProviderStreamParams } from \"../../types/ai\";\n\n/** Provider-reported limits. Some providers have separate input/output windows. */\nexport type AIModelLimits = {\n maxInputTokens: number;\n maxOutputTokens: number;\n contextWindowTokens?: number;\n};\nexport type AIInputCapacity = {\n limits: AIModelLimits;\n inputTokens: number;\n outputTokens: number;\n availableInputTokens: number;\n fits: boolean;\n};\nexport class AIInputError extends Error {\n constructor(\n public readonly code:\n | \"capacity_unavailable\"\n | \"input_too_large\"\n | \"unsupported_content\",\n message: string,\n ) {\n super(message);\n this.name = \"AIInputError\";\n }\n}\nexport const positiveTokenLimit = (value: unknown): number => {\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value <= 0)\n throw new AIInputError(\n \"capacity_unavailable\",\n \"The provider did not supply a valid model limit.\",\n );\n return value;\n};\nexport const inputTokenCount = (value: unknown): number => {\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0)\n throw new AIInputError(\n \"capacity_unavailable\",\n \"The provider did not supply a valid token count.\",\n );\n return value;\n};\n\n/** No character/token conversion guesses. Includes the serialized prompt and tools. */\nexport const inspectAIInput = async (\n provider: AIProviderConfig,\n params: AIProviderStreamParams,\n): Promise<AIInputCapacity> => {\n params.signal?.throwIfAborted();\n if (!provider.inputCapacity)\n throw new AIInputError(\n \"capacity_unavailable\",\n \"This provider does not expose model capacity and token counting.\",\n );\n const [limits, tokens] = await Promise.all([\n provider.inputCapacity.getLimits(params),\n provider.inputCapacity.countTokens(params),\n ]).catch((error: unknown) => {\n // Provider subpaths may bundle their own AIInputError constructor. Preserve\n // the high-level error contract instead of leaking a different class copy.\n if (\n error instanceof Error &&\n error.name === \"AIInputError\" &&\n \"code\" in error &&\n (error.code === \"capacity_unavailable\" ||\n error.code === \"input_too_large\" ||\n error.code === \"unsupported_content\")\n )\n throw new AIInputError(error.code, error.message);\n throw error;\n });\n const inputTokens = inputTokenCount(tokens);\n const outputTokens = positiveTokenLimit(\n provider.inputCapacity.outputTokens?.(params) ??\n params.maxTokens ??\n limits.maxOutputTokens,\n );\n const maxInputTokens = positiveTokenLimit(limits.maxInputTokens);\n const maxOutputTokens = positiveTokenLimit(limits.maxOutputTokens);\n const availableInputTokens = Math.max(\n 0,\n Math.min(\n maxInputTokens,\n limits.contextWindowTokens === undefined\n ? maxInputTokens\n : positiveTokenLimit(limits.contextWindowTokens) - outputTokens,\n ),\n );\n return {\n limits,\n inputTokens,\n outputTokens,\n availableInputTokens,\n fits:\n outputTokens <= maxOutputTokens && inputTokens <= availableInputTokens,\n };\n};\n\n/** Cache metadata per provider instance; use a zero TTL with rotating auth/headers. never cache failures. */\nexport const cacheModelLimits = (\n load: (params: AIProviderStreamParams) => Promise<AIModelLimits>,\n ttlMs = 300_000,\n) => {\n const cache = new Map<string, { at: number; limits: AIModelLimits }>();\n return async (params: AIProviderStreamParams) => {\n const entry = cache.get(params.model);\n if (entry && Date.now() - entry.at < ttlMs) return entry.limits;\n const limits = await load(params);\n positiveTokenLimit(limits.maxInputTokens);\n positiveTokenLimit(limits.maxOutputTokens);\n if (cache.size >= 100) cache.clear();\n cache.set(params.model, { at: Date.now(), limits });\n return limits;\n };\n};\n\nexport const capacityJson = async (\n response: Response,\n): Promise<Record<string, unknown>> => {\n if (!response.ok)\n throw new AIInputError(\n \"capacity_unavailable\",\n `Model capacity request failed (${response.status}).`,\n );\n const value: unknown = await response.json();\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new AIInputError(\n \"capacity_unavailable\",\n \"Model capacity response was invalid.\",\n );\n return value as Record<string, unknown>;\n};\n",
6
6
  "import type {\n AIProviderConfig,\n AIProviderStreamParams,\n} from \"../../../types/ai\";\nimport {\n AIInputError,\n capacityJson,\n inputTokenCount,\n positiveTokenLimit,\n type AIModelLimits,\n} from \"../inputCapacity\";\n\n// Exact IDs only: new variants/snapshots must not inherit a guessed context size.\n// Sources verified 2026-09-15: https://developers.openai.com/api/docs/models/{id}\nconst LIMITS: Record<string, AIModelLimits> = {\n \"gpt-4.1\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-2025-04-14\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-mini\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-mini-2025-04-14\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-nano\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-nano-2025-04-14\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4o\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-4o-mini\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-4o-mini-2024-07-18\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-5\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-mini\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-mini-2025-08-07\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-nano\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-nano-2025-08-07\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4-mini\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4-nano\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.1\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.1-2025-11-13\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.2\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.2-2025-12-11\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4\": {\n maxInputTokens: 1050000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4-2026-03-05\": {\n maxInputTokens: 1050000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.5\": {\n maxInputTokens: 1050000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-6-astra\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.6-sol\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.6-terra\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.6-luna\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n o3: {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"o3-2025-04-16\": {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"o4-mini\": {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"o4-mini-2025-04-16\": {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"gpt-5-chat-latest\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-5.1-chat-latest\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-5.2-chat-latest\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n};\nexport const openaiInputCapacity = (config: {\n baseUrl: string;\n fetch: typeof globalThis.fetch;\n key: () => Promise<string>;\n headers: (params: AIProviderStreamParams) => Promise<HeadersInit>;\n body: (params: AIProviderStreamParams) => Record<string, unknown>;\n /** For private deployments or models not yet in the documented catalog. */\n modelLimits?: (params: AIProviderStreamParams) => Promise<AIModelLimits>;\n}): NonNullable<AIProviderConfig[\"inputCapacity\"]> => ({\n outputTokens: (params) => {\n const value = config.body(params).max_output_tokens;\n return value === undefined ? undefined : positiveTokenLimit(value);\n },\n getLimits: async (params) => {\n if (config.modelLimits) return config.modelLimits(params);\n if (new URL(config.baseUrl).origin !== \"https://api.openai.com\")\n throw new AIInputError(\n \"capacity_unavailable\",\n \"This compatible endpoint must expose its own model capacity.\",\n );\n const limits = LIMITS[params.model];\n if (!limits)\n throw new AIInputError(\n \"capacity_unavailable\",\n `Model limits are unavailable for ${params.model}; no character limit has been substituted.`,\n );\n return { ...limits };\n },\n countTokens: async (params) => {\n const headers = new Headers(await config.headers(params));\n headers.set(\"Authorization\", `Bearer ${await config.key()}`);\n headers.set(\"Content-Type\", \"application/json\");\n const body = config.body(params);\n const counted: Record<string, unknown> = {};\n for (const key of [\n \"model\",\n \"input\",\n \"instructions\",\n \"tools\",\n \"tool_choice\",\n \"reasoning\",\n \"text\",\n \"parallel_tool_calls\",\n ])\n if (body[key] !== undefined) counted[key] = body[key];\n const response = await config.fetch(\n `${config.baseUrl}/v1/responses/input_tokens`,\n {\n method: \"POST\",\n headers,\n body: JSON.stringify(counted),\n signal: params.signal\n ? AbortSignal.any([params.signal, AbortSignal.timeout(15_000)])\n : AbortSignal.timeout(15_000),\n },\n );\n return inputTokenCount((await capacityJson(response)).input_tokens);\n },\n});\n",
7
- "// Structured provider error. Replaces the previous `throw new Error(\"Anthropic\n// API error 529: ...\")` strings so consumers can classify outages\n// programmatically (retryable? which provider? what status?) instead of parsing\n// message text. Surfaced both by the retry/circuit-breaker layer and to end\n// callers via `instanceof ProviderError`.\n\n// Public status pages (also serve the Atlassian Statuspage JSON API at\n// /api/v2/*), keyed by the provider name passed to the factories. Anthropic\n// moved theirs to status.claude.com — status.anthropic.com only HTTP-redirects,\n// which breaks JSON polling, so we point at the canonical host.\nexport const PROVIDER_STATUS_PAGES: Record<string, string> = {\n anthropic: \"https://status.claude.com\",\n gemini: \"https://status.cloud.google.com\",\n google: \"https://status.cloud.google.com\",\n openai: \"https://status.openai.com\",\n openrouter: \"https://status.openrouter.ai\",\n};\n\n// HTTP statuses that mean \"the provider is unavailable / overloaded / rate\n// limited\", i.e. retrying later may succeed — NOT a malformed request. 529 is\n// Anthropic's \"overloaded\". 4xx auth/validation (400/401/403/404/422) are\n// deliberately excluded: those are the caller's fault and never self-heal.\nconst RETRYABLE_STATUSES = new Set([\n 408, 409, 425, 429, 500, 502, 503, 504, 529,\n]);\n\n// Connection-level failure fingerprints (fetch rejects before any HTTP status).\nconst CONNECTION_ERROR_PATTERNS = [\n \"econnreset\",\n \"econnrefused\",\n \"etimedout\",\n \"enotfound\",\n \"eai_again\",\n \"socket hang up\",\n \"fetch failed\",\n \"network\",\n \"terminated\",\n \"timed out\",\n \"timeout\",\n \"and not retryable\",\n \"no response body\",\n];\n\nconst isAbortError = (err: unknown): boolean =>\n err instanceof Error &&\n (err.name === \"AbortError\" || /\\babort(ed)?\\b/i.test(err.message));\n\n/** Public status page for a provider, or null when we don't track one. */\nexport const providerStatusPage = (provider: string): string | null =>\n PROVIDER_STATUS_PAGES[provider] ?? null;\n\nexport type ProviderErrorInit = {\n provider: string;\n message: string;\n status?: number | null;\n /** Provider-specific error type, e.g. Anthropic's \"overloaded_error\". */\n type?: string | null;\n retryable: boolean;\n cause?: unknown;\n /** Provider-native structured details, when the response exposes them. */\n metadata?: Record<string, unknown>;\n};\n\nexport class ProviderError extends Error {\n readonly provider: string;\n /** HTTP status when the failure carried one; null for connection errors. */\n readonly status: number | null;\n readonly type: string | null;\n /** Whether retrying the same request later could plausibly succeed. */\n readonly retryable: boolean;\n readonly metadata: Record<string, unknown> | undefined;\n /** Provider status page, when known — for surfacing \"is it them?\" to users. */\n readonly statusPageUrl: string | null;\n\n constructor(init: ProviderErrorInit) {\n super(\n init.message,\n init.cause === undefined ? undefined : { cause: init.cause },\n );\n this.name = \"ProviderError\";\n this.provider = init.provider;\n this.status = init.status ?? null;\n this.type = init.type ?? null;\n this.retryable = init.retryable;\n this.metadata = init.metadata;\n this.statusPageUrl = providerStatusPage(init.provider);\n }\n\n /** Build from a non-2xx HTTP response (status + body text are known). */\n static fromResponse(\n provider: string,\n status: number,\n body: string,\n type?: string | null,\n ): ProviderError {\n return new ProviderError({\n message: `${capitalize(provider)} API error ${status}: ${body}`,\n provider,\n retryable: RETRYABLE_STATUSES.has(status),\n status,\n type: type ?? null,\n });\n }\n\n /**\n * Normalize any thrown value into a ProviderError. Passes existing\n * ProviderErrors through unchanged; classifies connection errors and\n * status-bearing message strings; rethrows aborts to the caller (an aborted\n * request is the caller's intent, never a provider outage).\n */\n static from(err: unknown, provider: string): ProviderError {\n if (err instanceof ProviderError) return err;\n if (isAbortError(err)) throw err;\n\n const rawMessage = err instanceof Error ? err.message : String(err ?? \"\");\n const lower = rawMessage.toLowerCase();\n\n const statusMatch = lower.match(/api error\\s+(\\d{3})/);\n const status = statusMatch ? Number(statusMatch[1]) : null;\n\n const retryable =\n (status !== null && RETRYABLE_STATUSES.has(status)) ||\n (status === null &&\n CONNECTION_ERROR_PATTERNS.some((pattern) => lower.includes(pattern)));\n\n return new ProviderError({\n cause: err,\n message: rawMessage || `${capitalize(provider)} request failed`,\n provider,\n retryable,\n status,\n });\n }\n}\n\nconst capitalize = (value: string): string =>\n value.charAt(0).toUpperCase() + value.slice(1);\n",
7
+ "// Structured provider error. Replaces the previous `throw new Error(\"Anthropic\n// API error 529: ...\")` strings so consumers can classify outages\n// programmatically (retryable? which provider? what status?) instead of parsing\n// message text. Surfaced both by the retry/circuit-breaker layer and to end\n// callers via `instanceof ProviderError`.\n\n// Public status pages (also serve the Atlassian Statuspage JSON API at\n// /api/v2/*), keyed by the provider name passed to the factories. Anthropic\n// moved theirs to status.claude.com — status.anthropic.com only HTTP-redirects,\n// which breaks JSON polling, so we point at the canonical host.\nexport const PROVIDER_STATUS_PAGES: Record<string, string> = {\n anthropic: \"https://status.claude.com\",\n gemini: \"https://status.cloud.google.com\",\n google: \"https://status.cloud.google.com\",\n openai: \"https://status.openai.com\",\n openrouter: \"https://status.openrouter.ai\",\n};\n\n// HTTP statuses that mean \"the provider is unavailable / overloaded / rate\n// limited\", i.e. retrying later may succeed — NOT a malformed request. 529 is\n// Anthropic's \"overloaded\". 4xx auth/validation (400/401/403/404/422) are\n// deliberately excluded: those are the caller's fault and never self-heal.\nconst RETRYABLE_STATUSES = new Set([\n 408, 409, 425, 429, 500, 502, 503, 504, 529,\n]);\n\n// Connection-level failure fingerprints (fetch rejects before any HTTP status).\nconst CONNECTION_ERROR_PATTERNS = [\n \"econnreset\",\n \"econnrefused\",\n \"etimedout\",\n \"enotfound\",\n \"eai_again\",\n \"socket hang up\",\n \"fetch failed\",\n \"network\",\n \"terminated\",\n \"timed out\",\n \"timeout\",\n \"and not retryable\",\n \"no response body\",\n];\n\nconst isAbortError = (err: unknown): boolean =>\n err instanceof Error &&\n (err.name === \"AbortError\" || /\\babort(ed)?\\b/i.test(err.message));\n\n/** Public status page for a provider, or null when we don't track one. */\nexport const providerStatusPage = (provider: string): string | null =>\n PROVIDER_STATUS_PAGES[provider] ?? null;\n\nexport type ProviderErrorInit = {\n provider: string;\n message: string;\n status?: number | null;\n /** Provider-specific error type, e.g. Anthropic's \"overloaded_error\". */\n type?: string | null;\n retryable: boolean;\n cause?: unknown;\n /** Provider-native structured details, when the response exposes them. */\n metadata?: Record<string, unknown>;\n};\n\nexport class ProviderError extends Error {\n readonly provider: string;\n /** HTTP status when the failure carried one; null for connection errors. */\n readonly status: number | null;\n readonly type: string | null;\n /** Whether retrying the same request later could plausibly succeed. */\n readonly retryable: boolean;\n readonly metadata: Record<string, unknown> | undefined;\n /** Provider status page, when known — for surfacing \"is it them?\" to users. */\n readonly statusPageUrl: string | null;\n\n constructor(init: ProviderErrorInit) {\n super(\n init.message,\n init.cause === undefined ? undefined : { cause: init.cause },\n );\n this.name = \"ProviderError\";\n this.provider = init.provider;\n this.status = init.status ?? null;\n this.type = init.type ?? null;\n this.retryable = init.retryable;\n this.metadata = init.metadata;\n this.statusPageUrl = providerStatusPage(init.provider);\n }\n\n /** Build from a non-2xx HTTP response (status + body text are known). */\n static fromResponse(\n provider: string,\n status: number,\n body: string,\n type?: string | null,\n ): ProviderError {\n let metadata: Record<string, unknown> | undefined;\n try {\n const parsed = JSON.parse(body);\n const details = parsed?.error ?? parsed;\n if (details && typeof details === \"object\" && !Array.isArray(details))\n metadata = details;\n } catch {\n /* Non-JSON error bodies retain their original message. */\n }\n return new ProviderError({\n metadata,\n message: `${capitalize(provider)} API error ${status}: ${body}`,\n provider,\n retryable: RETRYABLE_STATUSES.has(status),\n status,\n type: type ?? null,\n });\n }\n\n /**\n * Normalize any thrown value into a ProviderError. Passes existing\n * ProviderErrors through unchanged; classifies connection errors and\n * status-bearing message strings; rethrows aborts to the caller (an aborted\n * request is the caller's intent, never a provider outage).\n */\n static from(err: unknown, provider: string): ProviderError {\n if (err instanceof ProviderError) return err;\n if (isAbortError(err)) throw err;\n\n const rawMessage = err instanceof Error ? err.message : String(err ?? \"\");\n const lower = rawMessage.toLowerCase();\n\n const statusMatch = lower.match(/api error\\s+(\\d{3})/);\n const status = statusMatch ? Number(statusMatch[1]) : null;\n\n const retryable =\n (status !== null && RETRYABLE_STATUSES.has(status)) ||\n (status === null &&\n CONNECTION_ERROR_PATTERNS.some((pattern) => lower.includes(pattern)));\n\n return new ProviderError({\n cause: err,\n message: rawMessage || `${capitalize(provider)} request failed`,\n provider,\n retryable,\n status,\n });\n }\n}\n\nconst capitalize = (value: string): string =>\n value.charAt(0).toUpperCase() + value.slice(1);\n",
8
8
  "import type {\n AIChunk,\n AIProviderConfig,\n AIProviderStreamParams,\n} from \"../../types/ai\";\nimport { ProviderError, providerStatusPage } from \"./errors/providerError\";\n\n// Resilience layer wrapped around every provider (via instrumentAIProvider).\n// Two behaviours, both automatic:\n//\n// 1. Bounded retry with exponential backoff on TRANSIENT failures that happen\n// before any chunk is emitted (connection drops, 429/5xx/529). Retrying is\n// only safe pre-first-chunk — once text has streamed to the consumer a retry\n// would duplicate output, so mid-stream failures are surfaced, never retried.\n//\n// 2. A per-provider circuit breaker. After enough consecutive request failures\n// the circuit OPENS and further calls fail fast (no hammering a provider\n// that's down) until a cooldown elapses, then a single half-open probe\n// decides whether to close. State is exposed via getProviderHealth().\n//\n// NOTE: state is per-process. Across multiple server instances each process\n// keeps its own view — this is best-effort local protection, not a distributed\n// breaker. Authoritative \"is the provider down\" should come from their status\n// page; this just stops one process from flogging a dead endpoint.\n\nexport type ResilienceConfig = {\n /** Max retry attempts AFTER the first try (so total tries = maxRetries + 1). */\n maxRetries: number;\n baseDelayMs: number;\n maxDelayMs: number;\n /** Consecutive failed requests before the circuit opens. */\n failureThreshold: number;\n /** How long the circuit stays open before allowing a half-open probe. */\n openMs: number;\n};\n\nconst DEFAULT_CONFIG: ResilienceConfig = {\n baseDelayMs: 500,\n failureThreshold: 4,\n maxDelayMs: 8000,\n maxRetries: 2,\n openMs: 30_000,\n};\n\nlet config: ResilienceConfig = { ...DEFAULT_CONFIG };\n\n/** Override the global resilience defaults (retry counts, breaker thresholds). */\nexport const configureProviderResilience = (\n partial: Partial<ResilienceConfig>,\n): void => {\n config = { ...config, ...partial };\n};\n\ntype CircuitState = \"closed\" | \"open\" | \"half-open\";\n\n// Externally-supplied availability (e.g. from a status-page monitor). When a\n// provider's API is reported down, the breaker trips PROACTIVELY — no warmup of\n// real user-facing failures needed.\ntype ExternalStatus = {\n available: boolean;\n /** Statuspage indicator, e.g. \"major_outage\" | \"operational\" | \"unknown\". */\n indicator: string;\n reason: string;\n checkedAt: number;\n};\n\ntype HealthRecord = {\n state: CircuitState;\n consecutiveFailures: number;\n lastFailureAt: number | null;\n lastSuccessAt: number | null;\n nextProbeAt: number | null;\n lastError: {\n status: number | null;\n type: string | null;\n message: string;\n } | null;\n external: ExternalStatus | null;\n};\n\nconst health = new Map<string, HealthRecord>();\n\nconst recordFor = (provider: string): HealthRecord => {\n const existing = health.get(provider);\n if (existing) return existing;\n const fresh: HealthRecord = {\n consecutiveFailures: 0,\n external: null,\n lastError: null,\n lastFailureAt: null,\n lastSuccessAt: null,\n nextProbeAt: null,\n state: \"closed\",\n };\n health.set(provider, fresh);\n\n return fresh;\n};\n\n/**\n * Feed externally-observed provider availability (typically from a status-page\n * monitor) into the breaker. A report of `available: false` makes the provider\n * fail fast immediately; `available: true` clears the external block (the\n * reactive breaker still governs real failures).\n */\nexport const setProviderAvailability = (\n provider: string,\n status: { available: boolean; indicator?: string; reason?: string },\n): void => {\n const record = recordFor(provider);\n record.external = {\n available: status.available,\n checkedAt: Date.now(),\n indicator:\n status.indicator ?? (status.available ? \"operational\" : \"unknown\"),\n reason: status.reason ?? \"\",\n };\n};\n\nconst noteSuccess = (provider: string): void => {\n const record = recordFor(provider);\n record.state = \"closed\";\n record.consecutiveFailures = 0;\n record.nextProbeAt = null;\n record.lastError = null;\n record.lastSuccessAt = Date.now();\n};\n\nconst noteFailure = (provider: string, error: ProviderError): void => {\n const record = recordFor(provider);\n record.consecutiveFailures += 1;\n record.lastFailureAt = Date.now();\n record.lastError = {\n message: error.message,\n status: error.status,\n type: error.type,\n };\n if (record.consecutiveFailures >= config.failureThreshold) {\n record.state = \"open\";\n record.nextProbeAt = Date.now() + config.openMs;\n }\n};\n\nexport type ProviderHealth = {\n provider: string;\n /**\n * True when the provider is usable: circuit closed AND not reported down by\n * an external status monitor.\n */\n healthy: boolean;\n state: CircuitState;\n consecutiveFailures: number;\n lastFailureAt: number | null;\n lastSuccessAt: number | null;\n /** When the breaker will next allow a probe (epoch ms), if open. */\n nextRetryAt: number | null;\n lastError: {\n status: number | null;\n type: string | null;\n message: string;\n } | null;\n statusPageUrl: string | null;\n /** Latest externally-observed status (e.g. status page), if any. */\n external: ExternalStatus | null;\n};\n\nconst snapshot = (provider: string, record: HealthRecord): ProviderHealth => ({\n consecutiveFailures: record.consecutiveFailures,\n external: record.external,\n healthy: record.state === \"closed\" && record.external?.available !== false,\n lastError: record.lastError,\n lastFailureAt: record.lastFailureAt,\n lastSuccessAt: record.lastSuccessAt,\n nextRetryAt: record.nextProbeAt,\n provider,\n state: record.state,\n statusPageUrl: providerStatusPage(provider),\n});\n\n/**\n * Inspect provider health as tracked by the circuit breaker. Pass a provider\n * name for one snapshot, or omit to get every provider seen this process.\n */\nexport function getProviderHealth(provider: string): ProviderHealth;\nexport function getProviderHealth(): ProviderHealth[];\nexport function getProviderHealth(\n provider?: string,\n): ProviderHealth | ProviderHealth[] {\n if (provider !== undefined) return snapshot(provider, recordFor(provider));\n\n return [...health.entries()].map(([name, record]) => snapshot(name, record));\n}\n\nconst backoffDelay = (attempt: number): number => {\n const exponential = config.baseDelayMs * 2 ** attempt;\n const capped = Math.min(exponential, config.maxDelayMs);\n // Full jitter: spread retries so concurrent callers don't reconnect in lockstep.\n return Math.round(capped / 2 + (Math.random() * capped) / 2);\n};\n\nconst sleep = (ms: number, signal?: AbortSignal): Promise<void> =>\n new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason ?? new Error(\"aborted\"));\n\n return;\n }\n const timer = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal?.reason ?? new Error(\"aborted\"));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n\nconst circuitOpen = (provider: string): ProviderError | null => {\n const record = recordFor(provider);\n\n // Proactive trip: an external monitor (status page) reported the API down, so\n // fail fast without waiting to accumulate real user-facing failures.\n if (record.external && !record.external.available) {\n return new ProviderError({\n message: `${provider} API is reported down${record.external.reason ? `: ${record.external.reason}` : \"\"}`,\n provider,\n retryable: true,\n status: null,\n type: record.external.indicator,\n });\n }\n\n if (record.state !== \"open\") return null;\n if (record.nextProbeAt !== null && Date.now() >= record.nextProbeAt) {\n // Cooldown elapsed: allow a single probe through.\n record.state = \"half-open\";\n\n return null;\n }\n const detail = record.lastError?.message ?? \"recent failures\";\n\n return new ProviderError({\n message: `${provider} is temporarily unavailable (circuit open after ${record.consecutiveFailures} failures): ${detail}`,\n provider,\n retryable: true,\n status: record.lastError?.status ?? null,\n type: record.lastError?.type ?? null,\n });\n};\n\n/**\n * Wrap a provider with retry + circuit-breaker behaviour. The returned config\n * has the same `stream(params) => AsyncIterable<AIChunk>` shape.\n */\nexport const withResilience = (\n provider: AIProviderConfig,\n providerName = \"unknown\",\n): AIProviderConfig => {\n const attempt = async function* (\n params: AIProviderStreamParams,\n attemptNo: number,\n ): AsyncIterable<AIChunk> {\n let yielded = false;\n try {\n for await (const chunk of provider.stream(params)) {\n yielded = true;\n yield chunk;\n }\n noteSuccess(providerName);\n } catch (err) {\n // Aborts are the caller's intent — propagate without touching health.\n const providerError = ProviderError.from(err, providerName);\n const canRetry =\n !yielded &&\n providerError.retryable &&\n attemptNo < config.maxRetries &&\n !params.signal?.aborted;\n\n if (canRetry) {\n await sleep(backoffDelay(attemptNo), params.signal);\n yield* attempt(params, attemptNo + 1);\n\n return;\n }\n\n // A circuit breaker represents provider availability. Local validation,\n // authentication, and other non-retryable request errors do not indicate\n // an outage and must not poison health shared by later requests.\n if (providerError.retryable) noteFailure(providerName, providerError);\n throw providerError;\n }\n };\n\n return {\n ...provider,\n stream: (params: AIProviderStreamParams) => {\n // Fail fast while the breaker is open — don't count this as a new failure\n // (no request was made); nextProbeAt already governs the cooldown.\n const tripped = circuitOpen(providerName);\n if (tripped) {\n return (async function* () {\n throw tripped;\n })();\n }\n\n return attempt(params, 0);\n },\n };\n};\n",
9
9
  "import type {\n AIChunk,\n AIProviderConfig,\n AIProviderStreamParams,\n AIUsage,\n} from \"../../../types/ai\";\nimport { withResilience } from \"../resilience\";\n\n// Every provider factory routes through here, so this is also where the\n// automatic retry + circuit-breaker layer is applied — wrapping the raw provider\n// BENEATH the usage/span tap so onUsage/onSpan fire once, for the attempt that\n// actually streamed.\nexport const instrumentAIProvider = (\n provider: AIProviderConfig,\n providerName?: string,\n): AIProviderConfig => {\n const resilient = withResilience(provider, providerName);\n\n return {\n ...provider,\n stream: (params: AIProviderStreamParams) => {\n if (!params.onUsage && !params.onSpan) {\n return resilient.stream(params);\n }\n return tapStream(resilient.stream(params), params, providerName);\n },\n };\n};\n\nasync function* tapStream(\n source: AsyncIterable<AIChunk>,\n params: AIProviderStreamParams,\n providerName?: string,\n): AsyncIterable<AIChunk> {\n const startedAt = Date.now();\n let lastUsage: AIUsage | undefined;\n try {\n for await (const chunk of source) {\n if (chunk.type === \"done\" && chunk.usage) {\n lastUsage = chunk.usage;\n }\n yield chunk;\n }\n } finally {\n if (lastUsage && params.onUsage) {\n try {\n params.onUsage({\n ...lastUsage,\n model: params.model,\n provider: providerName,\n });\n } catch {\n // operator-supplied callback errors must not affect stream consumers\n }\n }\n if (params.onSpan) {\n try {\n params.onSpan({\n durationMs: Date.now() - startedAt,\n model: params.model,\n provider: providerName,\n usage: lastUsage,\n });\n } catch {\n // same\n }\n }\n }\n}\n",
10
10
  "// Provider-agnostic reasoning translation. Consumers set one portable knob —\n// `reasoning: { effort }` — and each provider maps it to the wire shape the\n// NAMED MODEL accepts. This is where the per-model API divergence lives:\n//\n// - Modern Anthropic (Opus 4.5–4.8, Sonnet 4.6, Fable/Mythos 5): adaptive\n// thinking + `output_config.effort`. `budget_tokens` 400s here.\n// - Haiku 4.5: adaptive thinking only (no `effort`).\n// - Legacy Anthropic (Sonnet 4.5/4, Opus 4/4.1, 3.7 Sonnet): extended\n// thinking with `budget_tokens`. `output_config.effort` 400s here.\n// - OpenAI reasoning models (o-series, GPT-5): `reasoning.effort`. Non-reasoning\n// models (gpt-4.1, gpt-4o) have no effort dial — ignored.\n// - Gemini 2.5: `thinkingConfig.thinkingBudget`.\n//\n// Model classification is by ID pattern (a Models-API capability lookup would be\n// a network round-trip per request). THIS TABLE IS THE MAINTENANCE POINT — add\n// new model families here as they ship.\n\nimport type { ReasoningConfig, ReasoningEffort } from \"../../../types/ai\";\n\nconst EFFORT_ORDER: ReasoningEffort[] = [\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"max\",\n];\n\n// Anthropic models that take adaptive thinking + output_config.effort.\nconst ANTHROPIC_EFFORT = [/opus-4-[5-8]/, /sonnet-4-6/, /fable-5/, /mythos-5/];\n// Anthropic models with adaptive thinking but NO effort parameter. Reserved:\n// only add a model here once it's CONFIRMED to accept adaptive thinking without\n// `output_config.effort`. Unconfirmed models fall through to \"none\" (no-op) so\n// we never risk a 400 — Haiku 4.5, for instance, rejects `effort` and is not\n// confirmed for adaptive, so it stays out.\nconst ANTHROPIC_ADAPTIVE_ONLY: RegExp[] = [];\n// Anthropic models that use legacy extended thinking (budget_tokens).\nconst ANTHROPIC_LEGACY_THINKING = [\n /sonnet-4-5/,\n /sonnet-4-0/,\n /sonnet-4-2025/,\n /opus-4-0/,\n /opus-4-1/,\n /opus-4-2025/,\n /3-7-sonnet/,\n];\n// Anthropic models that REMOVED temperature/top_p/top_k (sending them 400s).\nconst ANTHROPIC_NO_SAMPLING = [/opus-4-[78]/, /fable-5/, /mythos-5/];\n// Anthropic models that support the `max` effort tier (others clamp max→high).\nconst ANTHROPIC_MAX_EFFORT = [\n /opus-4-[678]/,\n /sonnet-4-6/,\n /fable-5/,\n /mythos-5/,\n];\n// OpenAI reasoning models (effort-capable); everything else ignores effort.\nconst OPENAI_REASONING = [/(^|[^a-z])o[1345](-|$)/, /gpt-5/];\n// OpenAI reasoning models that support the `minimal` tier (others clamp →low).\nconst OPENAI_MINIMAL_EFFORT = [/gpt-5/];\n\nconst matches = (model: string, patterns: RegExp[]) =>\n patterns.some((pattern) => pattern.test(model));\n\nexport type AnthropicReasoningMode = \"effort\" | \"adaptive\" | \"legacy\" | \"none\";\n\nexport const anthropicReasoningMode = (\n model: string,\n): AnthropicReasoningMode => {\n if (matches(model, ANTHROPIC_EFFORT)) return \"effort\";\n if (matches(model, ANTHROPIC_ADAPTIVE_ONLY)) return \"adaptive\";\n if (matches(model, ANTHROPIC_LEGACY_THINKING)) return \"legacy\";\n\n return \"none\";\n};\n\n/** Modern Anthropic + Fable/Mythos reject temperature/top_p/top_k entirely. */\nexport const anthropicSupportsSampling = (model: string) =>\n !matches(model, ANTHROPIC_NO_SAMPLING);\n\nexport const isOpenAIReasoningModel = (model: string) =>\n matches(model, OPENAI_REASONING);\n\n// effort → legacy thinking budget (tokens). Kept under typical max_tokens; the\n// Anthropic provider raises max_tokens to fit when thinking is enabled.\nconst EFFORT_BUDGET: Record<ReasoningEffort, number> = {\n high: 16384,\n low: 2048,\n max: 32768,\n medium: 8192,\n minimal: 1024,\n};\n\n// budget tokens → nearest effort (when a caller gave only budgetTokens but the\n// target model is effort-based).\nconst budgetToEffort = (budget: number): ReasoningEffort => {\n if (budget <= 2048) return \"low\";\n if (budget <= 8192) return \"medium\";\n if (budget <= 16384) return \"high\";\n\n return \"max\";\n};\n\n/** The portable effort a config asks for, deriving from budgetTokens if needed. */\nexport const resolveEffort = (\n reasoning: ReasoningConfig,\n): ReasoningEffort | null => {\n if (reasoning.effort) return reasoning.effort;\n if (typeof reasoning.budgetTokens === \"number\") {\n return budgetToEffort(reasoning.budgetTokens);\n }\n\n return null;\n};\n\n/** The budget a config asks for, deriving from effort if needed. */\nexport const resolveBudgetTokens = (\n reasoning: ReasoningConfig,\n): number | null => {\n if (typeof reasoning.budgetTokens === \"number\") return reasoning.budgetTokens;\n if (reasoning.effort) return EFFORT_BUDGET[reasoning.effort];\n\n return null;\n};\n\nconst clampEffort = (\n effort: ReasoningEffort,\n allowed: ReasoningEffort[],\n): ReasoningEffort => {\n if (allowed.includes(effort)) return effort;\n // Walk DOWN the order to the nearest allowed tier (never silently escalate).\n const idx = EFFORT_ORDER.indexOf(effort);\n for (let lower = idx - 1; lower >= 0; lower -= 1) {\n const candidate = EFFORT_ORDER[lower];\n if (candidate && allowed.includes(candidate)) return candidate;\n }\n\n return allowed[0] ?? effort;\n};\n\n/** Anthropic `output_config.effort` value for an effort-capable model, or null. */\nexport const anthropicEffortValue = (\n model: string,\n reasoning: ReasoningConfig,\n) => {\n const effort = resolveEffort(reasoning);\n if (!effort) return null;\n const allowed: ReasoningEffort[] = matches(model, ANTHROPIC_MAX_EFFORT)\n ? [\"low\", \"medium\", \"high\", \"max\"]\n : [\"low\", \"medium\", \"high\"];\n\n return clampEffort(effort, allowed);\n};\n\n/** OpenAI `reasoning.effort` value for a reasoning model, or null. */\nexport const openaiEffortValue = (\n model: string,\n reasoning: ReasoningConfig,\n) => {\n if (!isOpenAIReasoningModel(model)) return null;\n const effort = resolveEffort(reasoning);\n if (!effort) return null;\n const allowed: ReasoningEffort[] = matches(model, OPENAI_MINIMAL_EFFORT)\n ? [\"minimal\", \"low\", \"medium\", \"high\"]\n : [\"low\", \"medium\", \"high\"];\n // OpenAI has no `max`; clamp it to `high`.\n const requested = effort === \"max\" ? \"high\" : effort;\n\n return clampEffort(requested, allowed);\n};\n",
@@ -14,7 +14,7 @@
14
14
  "import { ProviderError } from \"../errors/providerError\";\n\nexport type OpenRouterClientConfig = {\n allowedModels?: readonly string[];\n apiKey?: string;\n batchBaseUrl?: string;\n baseUrl?: string;\n fetch?: typeof globalThis.fetch;\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n tokenSource?: () => Promise<string> | string;\n /** Default workspace for APIs that accept explicit workspace selection. */\n workspaceId?: string;\n};\n\nexport type OpenRouterPKCE = {\n codeChallenge: string;\n codeChallengeMethod: \"S256\";\n codeVerifier: string;\n};\n\nexport type OpenRouterAuthorizationUrlOptions = {\n baseUrl?: string;\n callbackUrl?: string;\n codeChallenge?: string;\n codeChallengeMethod?: \"S256\" | \"plain\";\n keyLabel?: string;\n};\n\nexport type OpenRouterAuthCodeExchangeRequest = {\n code: string;\n code_challenge_method?: \"S256\" | \"plain\";\n code_verifier?: string;\n};\n\nexport type OpenRouterAuthCodeExchangeResponse = {\n key: string;\n user_id: string | null;\n};\n\nexport type OpenRouterCreateAuthCodeRequest = {\n callback_url: string;\n code_challenge?: string;\n code_challenge_method?: \"S256\" | \"plain\";\n expires_at?: string;\n key_label?: string;\n limit?: number;\n usage_limit_type?: string;\n workspace_id?: string;\n};\n\nexport type OpenRouterCreateAuthCodeResponse = {\n data: { app_id: number; created_at: string; id: string };\n};\n\nexport type OpenRouterBatchEndpoint =\n | \"/v1/chat/completions\"\n | \"/v1/responses\"\n | \"/v1/messages\"\n | \"/v1/embeddings\";\n\nexport type OpenRouterBatchStatus =\n | \"validating\"\n | \"in_progress\"\n | \"finalizing\"\n | \"completed\"\n | \"failed\"\n | \"expired\"\n | \"cancelling\"\n | \"cancelled\";\n\nexport type OpenRouterBatchRequest = {\n custom_id: string;\n body: Record<string, unknown>;\n};\n\nexport type OpenRouterBatchResult = {\n custom_id: string;\n id: string;\n response?: {\n body: Record<string, unknown>;\n request_id: string;\n status_code: number;\n };\n error?: Record<string, unknown>;\n};\n\nexport type OpenRouterBatch = {\n id: string;\n endpoint: OpenRouterBatchEndpoint;\n model: string;\n status: OpenRouterBatchStatus;\n completion_window?: \"24h\";\n created_at?: string;\n completed_at?: string | null;\n request_counts?: { completed: number; failed: number; total: number };\n results?: OpenRouterBatchResult[];\n usage?: {\n completion_tokens: number;\n cost: number;\n is_byok: boolean;\n prompt_tokens: number;\n total_tokens: number;\n };\n [field: string]: unknown;\n};\n\nexport type OpenRouterCreateBatchRequest = {\n endpoint: OpenRouterBatchEndpoint;\n model: string;\n requests: [OpenRouterBatchRequest, ...OpenRouterBatchRequest[]];\n completion_window?: \"24h\";\n};\n\nexport type OpenRouterModel = {\n id: string;\n name?: string;\n description?: string;\n context_length?: number;\n architecture?: Record<string, unknown>;\n pricing?: OpenRouterPricing;\n supported_parameters?: string[] | Record<string, unknown>;\n [field: string]: unknown;\n};\n\nexport type OpenRouterPricingKey =\n | \"prompt\"\n | \"completion\"\n | \"request\"\n | \"image\"\n | \"web_search\"\n | \"internal_reasoning\"\n | \"input_cache_read\"\n | \"input_cache_write\";\n\nexport type OpenRouterPricing = Partial<Record<OpenRouterPricingKey, string>> &\n Record<string, string | undefined>;\n\nexport type OpenRouterCostUnits = Partial<Record<OpenRouterPricingKey, number>>;\n\nexport type OpenRouterCostEstimate = {\n components: Partial<Record<OpenRouterPricingKey, number>>;\n total: number;\n};\n\nconst OPENROUTER_PRICING_KEYS: readonly OpenRouterPricingKey[] = [\n \"prompt\",\n \"completion\",\n \"request\",\n \"image\",\n \"web_search\",\n \"internal_reasoning\",\n \"input_cache_read\",\n \"input_cache_write\",\n];\n\n/** Estimate USD cost using OpenRouter's per-unit model pricing fields. */\nexport const estimateOpenRouterCost = (\n pricing: OpenRouterPricing,\n units: OpenRouterCostUnits,\n): OpenRouterCostEstimate => {\n const components: Partial<Record<OpenRouterPricingKey, number>> = {};\n let total = 0;\n for (const key of OPENROUTER_PRICING_KEYS) {\n const quantity = units[key];\n if (quantity === undefined) continue;\n if (!Number.isFinite(quantity) || quantity < 0)\n throw new Error(`OpenRouter ${key} units must be non-negative`);\n const rawPrice = pricing[key];\n if (rawPrice === undefined) continue;\n const price = Number(rawPrice);\n if (!Number.isFinite(price) || price < 0)\n throw new Error(`OpenRouter ${key} price must be non-negative`);\n components[key] = price * quantity;\n total += components[key];\n }\n return { components, total };\n};\n\nexport const estimateOpenRouterModelCost = (\n model: Pick<OpenRouterModel, \"pricing\">,\n units: OpenRouterCostUnits,\n) => estimateOpenRouterCost(model.pricing ?? {}, units);\n\nexport type OpenRouterModelList = { data: OpenRouterModel[] };\n\nexport type OpenRouterModelQuery = {\n arch?: string;\n context?: number;\n distillable?: \"false\" | \"true\";\n input_modalities?: string;\n max_price?: number;\n min_price?: number;\n model_authors?: string;\n output_modalities?: string;\n providers?: string;\n q?: string;\n region?: \"eu\";\n supported_parameters?: string;\n sort?:\n | \"pricing-low-to-high\"\n | \"pricing-high-to-low\"\n | \"context-high-to-low\"\n | \"throughput-high-to-low\"\n | \"latency-low-to-high\"\n | \"most-popular\"\n | \"top-weekly\"\n | \"newest\"\n | \"intelligence-high-to-low\"\n | \"design-arena-elo-high-to-low\";\n zdr?: \"true\";\n};\n\nexport type OpenRouterEmbeddingRequest = {\n model: string;\n input: string | string[] | number[] | number[][];\n dimensions?: number;\n encoding_format?: \"float\" | \"base64\";\n provider?: Record<string, unknown>;\n user?: string;\n};\n\nexport type OpenRouterChatRequest = Record<string, unknown> & {\n messages: readonly unknown[];\n model: string;\n stream?: false;\n};\n\nexport type OpenRouterChatResponse = Record<string, unknown> & {\n choices: Array<Record<string, unknown>>;\n id: string;\n model: string;\n usage?: Record<string, unknown>;\n};\n\nexport type OpenRouterEmbeddingResponse = {\n data: Array<{ embedding: number[] | string; index: number; object: string }>;\n model: string;\n object: string;\n usage?: { prompt_tokens: number; total_tokens: number; cost?: number };\n};\n\nexport type OpenRouterRerankRequest = {\n model: string;\n query: string;\n documents: Array<string | { text: string }>;\n top_n?: number;\n return_documents?: boolean;\n};\n\nexport type OpenRouterRerankResponse = {\n id?: string;\n model?: string;\n results: Array<{\n document?: { text: string };\n index: number;\n relevance_score: number;\n }>;\n usage?: Record<string, number>;\n};\n\nexport type OpenRouterImageRequest = {\n model: string;\n prompt: string;\n n?: number;\n resolution?: string;\n aspect_ratio?: string;\n size?: string;\n quality?: \"auto\" | \"low\" | \"medium\" | \"high\";\n output_format?: \"png\" | \"jpeg\" | \"webp\" | \"svg\";\n background?: \"auto\" | \"transparent\" | \"opaque\";\n output_compression?: number;\n seed?: number;\n input_references?: Array<Record<string, unknown>>;\n provider?: Record<string, unknown>;\n stream?: boolean;\n};\n\nexport type OpenRouterImageResponse = {\n created: number;\n data: Array<{ b64_json: string; media_type?: string }>;\n usage?: Record<string, number>;\n};\n\nexport type OpenRouterImageModelEndpoint = {\n allowed_passthrough_parameters: string[];\n pricing: Array<{\n billable: string;\n cost_usd: number;\n unit: \"image\" | \"megapixel\" | \"token\" | string;\n variant?: string;\n }>;\n provider_name: string;\n provider_slug: string;\n provider_tag: string | null;\n supported_parameters: Record<string, unknown>;\n supports_streaming: boolean;\n};\n\nexport type OpenRouterImageModelEndpoints = {\n endpoints: OpenRouterImageModelEndpoint[];\n id: string;\n};\n\nexport type OpenRouterResponsesRequest = Record<string, unknown> & {\n input: unknown;\n model: string;\n stream?: boolean;\n};\n\nexport type OpenRouterSpeechRequest = Record<string, unknown> & {\n input: string;\n model: string;\n voice: string;\n};\n\nexport type OpenRouterTranscriptionRequest = Record<string, unknown> & {\n input_audio: { data: string; format: string };\n language?: string;\n model: string;\n provider?: Record<string, unknown>;\n temperature?: number;\n};\n\nexport type OpenRouterTranscriptionResponse = {\n text: string;\n usage: {\n cost: number;\n input_tokens: number;\n output_tokens: number;\n seconds: number;\n total_tokens: number;\n };\n};\n\nexport type OpenRouterVideoRequest = Record<string, unknown> & {\n model: string;\n prompt: string;\n};\n\nexport type OpenRouterImageStreamEvent = Record<string, unknown> & {\n type: string;\n b64_json?: string;\n media_type?: string;\n partial_image_index?: number;\n usage?: Record<string, number>;\n};\n\nexport type OpenRouterFile = {\n created_at: string;\n downloadable: boolean;\n filename: string;\n id: string;\n mime_type: string;\n size_bytes: number;\n type: \"file\";\n};\n\nexport type OpenRouterFileList = {\n cursor: string | null;\n data: OpenRouterFile[];\n first_id: string | null;\n has_more: boolean;\n last_id: string | null;\n};\n\nexport type OpenRouterVideoJob = {\n error?: string;\n generation_id?: string | null;\n id: string;\n polling_url?: string;\n status:\n | \"pending\"\n | \"in_progress\"\n | \"completed\"\n | \"failed\"\n | \"cancelled\"\n | \"expired\";\n unsigned_urls?: string[];\n usage?: { cost?: number; is_byok?: boolean };\n};\n\nexport type OpenRouterVideoWebhookEvent = {\n created_at: string;\n data: OpenRouterVideoJob & { model?: string | null };\n type:\n | \"video.generation.completed\"\n | \"video.generation.failed\"\n | \"video.generation.cancelled\"\n | \"video.generation.expired\";\n};\n\nexport type OpenRouterZdrEndpoint = Record<string, unknown> & {\n context_length: number;\n model_id: string;\n model_name: string;\n name: string;\n pricing: Record<string, string>;\n provider_name: string;\n supported_parameters: string[];\n tag: string;\n};\n\nexport type OpenRouterPresetVersion = {\n config: Record<string, unknown>;\n created_at: string;\n creator_id: string;\n id: string;\n preset_id: string;\n system_prompt: string | null;\n updated_at: string | null;\n version: number;\n};\n\nexport type OpenRouterPreset = {\n created_at: string;\n creator_user_id: string;\n designated_version: OpenRouterPresetVersion;\n designated_version_id: string;\n description: string | null;\n id: string;\n name: string;\n slug: string;\n status: string;\n status_updated_at: string | null;\n updated_at: string | null;\n workspace_id: string;\n};\n\nexport type OpenRouterPresetResponse = { data: OpenRouterPreset };\nexport type OpenRouterPresetVersionResponse = {\n data: OpenRouterPresetVersion;\n};\nexport type OpenRouterPresetInferenceRequest = Record<string, unknown> & {\n model?: string;\n models?: string[];\n};\n\nexport type OpenRouterActivityQuery = {\n api_key_hash?: string;\n date?: string;\n user_id?: string;\n workspace_id?: string;\n};\n\nexport type OpenRouterActivityItem = {\n byok_usage_inference: number;\n completion_tokens: number;\n date: string;\n endpoint_id: string;\n model: string;\n model_permaslug: string;\n prompt_tokens: number;\n provider_name: string;\n reasoning_tokens: number;\n requests: number;\n usage: number;\n workspace_id?: string;\n};\n\nexport type OpenRouterAnalyticsQuery = {\n metrics: [string, ...string[]];\n dimensions?: string[];\n filters?: Array<{ field: string; operator: string; value: unknown }>;\n granularity?: string;\n group_limit?: number;\n limit?: number;\n order_by?: { direction: \"asc\" | \"desc\"; field: string };\n time_range?: { end: string; start: string };\n};\n\nexport type OpenRouterAnalyticsResponse = {\n data: {\n data: Record<string, unknown>[];\n metadata: { query_time_ms: number; row_count: number; truncated: boolean };\n };\n};\n\nexport type OpenRouterAnalyticsMeta = {\n data: {\n dimensions: Array<{ display_label: string; name: string }>;\n granularities: Array<{ display_label: string; name: string }>;\n metrics: Array<{\n display_format: string;\n display_label: string;\n is_rate: boolean;\n name: string;\n }>;\n operators: Array<{ name: string; value_type: string }>;\n };\n};\n\nexport type OpenRouterTaskClassifications = {\n data: {\n as_of: string;\n classifications: Array<{\n category_token_share: number;\n category_usage_share: number;\n display_name: string;\n macro_category: string;\n models: Array<{\n id: string;\n tag_token_share: number;\n tag_usage_share: number;\n }>;\n tag: string;\n token_share: number;\n usage_share: number;\n }>;\n macro_categories: Array<{\n key: string;\n label: string;\n token_share: number;\n usage_share: number;\n }>;\n window_days: 7;\n };\n};\n\nexport type OpenRouterWorkspace = {\n created_at: string;\n created_by: string;\n default_image_model: string | null;\n default_provider_sort: \"price\" | \"throughput\" | \"latency\" | \"exacto\" | null;\n default_text_model: string | null;\n description: string | null;\n id: string;\n io_logging_api_key_ids: number[] | null;\n io_logging_sampling_rate: number;\n is_data_discount_logging_enabled: boolean;\n is_observability_broadcast_enabled: boolean;\n is_observability_io_logging_enabled: boolean;\n name: string;\n slug: string;\n updated_at: string | null;\n};\n\nexport type OpenRouterWorkspaceOptions = {\n default_image_model?: string | null;\n default_provider_sort?: OpenRouterWorkspace[\"default_provider_sort\"];\n default_text_model?: string | null;\n description?: string | null;\n io_logging_api_key_ids?: number[] | null;\n io_logging_sampling_rate?: number;\n is_data_discount_logging_enabled?: boolean;\n is_observability_broadcast_enabled?: boolean;\n is_observability_io_logging_enabled?: boolean;\n name?: string;\n slug?: string;\n};\n\nexport type OpenRouterCreateWorkspaceRequest = OpenRouterWorkspaceOptions & {\n name: string;\n slug: string;\n};\n\nexport type OpenRouterWorkspaceBudgetInterval =\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"lifetime\";\n\nexport type OpenRouterWorkspaceBudget = {\n created_at: string;\n id: string;\n limit_usd: number;\n reset_interval: OpenRouterWorkspaceBudgetInterval;\n updated_at: string | null;\n workspace_id: string;\n};\n\nexport type OpenRouterWorkspaceMember = {\n created_at: string;\n id: string;\n role: string;\n user_id: string;\n workspace_id: string;\n};\n\nexport type OpenRouterHttpRequestOptions = Omit<\n RequestInit,\n \"body\" | \"headers\"\n> & {\n body?: unknown;\n headers?: HeadersInit;\n query?: Record<string, boolean | number | string | undefined>;\n};\n\nexport type OpenRouterClient = ReturnType<typeof createOpenRouterClient>;\n\nconst DEFAULT_BASE_URL = \"https://openrouter.ai/api/v1\";\nconst DEFAULT_BATCH_BASE_URL = \"https://openrouter.ai/api/beta\";\nconst DEFAULT_SITE_URL = \"https://openrouter.ai\";\nconst TERMINAL_BATCH_STATUSES = new Set<OpenRouterBatchStatus>([\n \"completed\",\n \"failed\",\n \"expired\",\n \"cancelled\",\n]);\n\nconst withoutLatestPrefix = (model: string) =>\n model.startsWith(\"~\") ? model.slice(1) : model;\n\nexport const openRouterModelMatchesRule = (model: string, rule: string) => {\n const normalizedModel = withoutLatestPrefix(model);\n const normalizedRule = withoutLatestPrefix(rule);\n return normalizedRule.endsWith(\"/*\")\n ? normalizedModel.startsWith(normalizedRule.slice(0, -1))\n : normalizedModel === normalizedRule;\n};\n\nconst assertAllowedModel = (\n model: string,\n allowedModels: readonly string[] | undefined,\n) => {\n if (!allowedModels) return;\n if (allowedModels.some((rule) => openRouterModelMatchesRule(model, rule)))\n return;\n throw new Error(`OpenRouter model \"${model}\" is not allowed`);\n};\n\nconst assertAllowedModelsInValue = (\n value: unknown,\n allowedModels: readonly string[] | undefined,\n key = \"\",\n) => {\n if (key === \"model\" && typeof value === \"string\")\n assertAllowedModel(value, allowedModels);\n if (\n (key === \"models\" ||\n key === \"analysis_models\" ||\n key === \"allowed_models\") &&\n Array.isArray(value)\n ) {\n for (const model of value)\n if (typeof model === \"string\") assertAllowedModel(model, allowedModels);\n }\n if (Array.isArray(value)) {\n for (const item of value) assertAllowedModelsInValue(item, allowedModels);\n } else if (value && typeof value === \"object\") {\n for (const [childKey, child] of Object.entries(value))\n assertAllowedModelsInValue(child, allowedModels, childKey);\n }\n};\n\nconst normalizePath = (path: string) =>\n path.startsWith(\"/\") ? path : `/${path}`;\n\nconst encodeModelPath = (model: string) =>\n model.split(\"/\").map(encodeURIComponent).join(\"/\");\n\nconst withQuery = (\n url: string,\n query: OpenRouterHttpRequestOptions[\"query\"],\n) => {\n if (!query) return url;\n const result = new URL(url);\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) result.searchParams.set(key, String(value));\n }\n return result.toString();\n};\n\nconst parseImageSSE = async function* (\n response: Response,\n): AsyncGenerator<OpenRouterImageStreamEvent> {\n if (!response.body) throw new Error(\"OpenRouter image stream has no body\");\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n try {\n for (;;) {\n // eslint-disable-next-line no-await-in-loop\n const result = await reader.read();\n buffer += decoder.decode(result.value, { stream: !result.done });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n const data = line.slice(6);\n if (data === \"[DONE]\") return;\n try {\n const parsed: unknown = JSON.parse(data);\n if (parsed && typeof parsed === \"object\" && \"type\" in parsed)\n yield parsed as OpenRouterImageStreamEvent;\n } catch {\n // Ignore malformed keepalive/event lines; a later valid event can continue.\n }\n }\n if (result.done) break;\n }\n if (buffer.startsWith(\"data: \")) {\n const parsed: unknown = JSON.parse(buffer.slice(6));\n if (parsed && typeof parsed === \"object\" && \"type\" in parsed)\n yield parsed as OpenRouterImageStreamEvent;\n }\n } finally {\n reader.releaseLock();\n }\n};\n\nconst toBytes = (value: string | Uint8Array) =>\n typeof value === \"string\" ? new TextEncoder().encode(value) : value;\n\nconst toBase64Url = (bytes: Uint8Array) => {\n let binary = \"\";\n for (const byte of bytes) binary += String.fromCharCode(byte);\n return btoa(binary)\n .replaceAll(\"+\", \"-\")\n .replaceAll(\"/\", \"_\")\n .replace(/=+$/u, \"\");\n};\n\nexport const generateOpenRouterPKCE = async (): Promise<OpenRouterPKCE> => {\n const random = crypto.getRandomValues(new Uint8Array(32));\n const codeVerifier = toBase64Url(random);\n const digest = await crypto.subtle.digest(\n \"SHA-256\",\n new TextEncoder().encode(codeVerifier),\n );\n return {\n codeChallenge: toBase64Url(new Uint8Array(digest)),\n codeChallengeMethod: \"S256\",\n codeVerifier,\n };\n};\n\nexport const createOpenRouterAuthorizationUrl = (\n options: OpenRouterAuthorizationUrlOptions = {},\n) => {\n const url = new URL(\"/auth\", options.baseUrl ?? DEFAULT_SITE_URL);\n if (options.callbackUrl)\n url.searchParams.set(\"callback_url\", options.callbackUrl);\n if (options.codeChallenge)\n url.searchParams.set(\"code_challenge\", options.codeChallenge);\n if (options.codeChallengeMethod)\n url.searchParams.set(\"code_challenge_method\", options.codeChallengeMethod);\n if (options.keyLabel) url.searchParams.set(\"key_label\", options.keyLabel);\n return url.toString();\n};\n\n/** Exchange a single-use OAuth code. This endpoint intentionally has no API-key authentication. */\nexport const exchangeOpenRouterAuthCode = async (\n body: OpenRouterAuthCodeExchangeRequest,\n options: { baseUrl?: string; fetch?: typeof globalThis.fetch } = {},\n): Promise<OpenRouterAuthCodeExchangeResponse> => {\n const response = await (options.fetch ?? globalThis.fetch)(\n `${(options.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\")}/auth/keys`,\n {\n body: JSON.stringify(body),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n },\n );\n if (!response.ok)\n throw ProviderError.fromResponse(\n \"openrouter\",\n response.status,\n await response.text(),\n );\n return response.json() as Promise<OpenRouterAuthCodeExchangeResponse>;\n};\n\nexport const createOpenRouterKeyLinks = async (\n key: string,\n siteUrl = DEFAULT_SITE_URL,\n) => {\n const digest = new Uint8Array(\n await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(key)),\n );\n const hash = Array.from(digest, (byte) =>\n byte.toString(16).padStart(2, \"0\"),\n ).join(\"\");\n const root = siteUrl.replace(/\\/$/, \"\");\n return {\n hash,\n logsUrl: `${root}/logs?api_key_hash=${hash}`,\n settingsUrl: `${root}/keys/${hash}`,\n };\n};\n\nconst hexToBytes = (hex: string) => {\n if (!/^[0-9a-f]+$/iu.test(hex) || hex.length % 2 !== 0) return;\n const bytes = new Uint8Array(hex.length / 2);\n for (let index = 0; index < bytes.length; index += 1) {\n bytes[index] = Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16);\n }\n return bytes;\n};\n\nconst constantTimeEqual = (left: Uint8Array, right: Uint8Array) => {\n if (left.length !== right.length) return false;\n let mismatch = 0;\n for (let index = 0; index < left.length; index += 1)\n mismatch |= (left[index] ?? 0) ^ (right[index] ?? 0);\n return mismatch === 0;\n};\n\n/** Verify `X-OpenRouter-Signature` against the exact raw webhook bytes. */\nexport const verifyOpenRouterWebhookSignature = async (options: {\n body: string | Uint8Array;\n header: string;\n secret: string;\n nowSeconds?: number;\n toleranceSeconds?: number;\n}) => {\n const fields = new Map(\n options.header.split(\",\").map((part) => {\n const [key, ...rest] = part.trim().split(\"=\");\n return [key, rest.join(\"=\")];\n }),\n );\n const timestamp = fields.get(\"t\");\n const supplied = fields.get(\"v1\");\n if (!timestamp || !supplied) return false;\n const timestampNumber = Number(timestamp);\n const now = options.nowSeconds ?? Math.floor(Date.now() / 1000);\n const tolerance = options.toleranceSeconds ?? 300;\n if (\n !Number.isFinite(timestampNumber) ||\n Math.abs(now - timestampNumber) > tolerance\n )\n return false;\n const key = await crypto.subtle.importKey(\n \"raw\",\n Uint8Array.from(toBytes(options.secret)).buffer,\n { hash: \"SHA-256\", name: \"HMAC\" },\n false,\n [\"sign\"],\n );\n const prefix = new TextEncoder().encode(`${timestamp},`);\n const body = toBytes(options.body);\n const payload = new Uint8Array(prefix.length + body.length);\n payload.set(prefix);\n payload.set(body, prefix.length);\n const expected = new Uint8Array(\n await crypto.subtle.sign(\"HMAC\", key, payload.buffer),\n );\n const suppliedBytes = hexToBytes(supplied);\n return suppliedBytes ? constantTimeEqual(expected, suppliedBytes) : false;\n};\n\nexport const createOpenRouterClient = (config: OpenRouterClientConfig) => {\n if (!config.apiKey && !config.tokenSource)\n throw new Error(\n \"createOpenRouterClient() requires either apiKey or tokenSource\",\n );\n const baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\");\n const batchBaseUrl = (\n config.batchBaseUrl ??\n (config.baseUrl\n ? new URL(\"../beta\", `${baseUrl}/`).toString()\n : DEFAULT_BATCH_BASE_URL)\n ).replace(/\\/$/, \"\");\n const fetchImpl = config.fetch ?? globalThis.fetch;\n const allowedModels = config.allowedModels\n ? [...config.allowedModels]\n : undefined;\n const defaultWorkspaceId = config.workspaceId;\n\n const requestRawAt = async (\n rootUrl: string,\n path: string,\n options: OpenRouterHttpRequestOptions = {},\n ) => {\n const token = config.tokenSource\n ? await Promise.resolve(config.tokenSource())\n : config.apiKey!;\n const suppliedHeaders =\n typeof config.headers === \"function\"\n ? await config.headers()\n : (config.headers ?? {});\n const headers = new Headers(suppliedHeaders);\n new Headers(options.headers).forEach((value, key) =>\n headers.set(key, value),\n );\n headers.set(\"Authorization\", `Bearer ${token}`);\n let body: BodyInit | undefined;\n if (options.body instanceof FormData || options.body instanceof Blob) {\n body = options.body;\n } else if (options.body !== undefined) {\n headers.set(\"Content-Type\", \"application/json\");\n body = JSON.stringify(options.body);\n }\n const { query, ...requestInit } = options;\n const response = await fetchImpl(\n withQuery(`${rootUrl}${normalizePath(path)}`, options.query),\n { ...requestInit, body, headers },\n );\n if (!response.ok) {\n throw ProviderError.fromResponse(\n \"openrouter\",\n response.status,\n await response.text(),\n );\n }\n return response;\n };\n\n const requestRaw = (\n path: string,\n options: OpenRouterHttpRequestOptions = {},\n ) => requestRawAt(baseUrl, path, options);\n\n const request = async <T>(\n path: string,\n options: OpenRouterHttpRequestOptions = {},\n ): Promise<T> => (await requestRaw(path, options)).json() as Promise<T>;\n\n const requestBatch = async <T>(\n path: string,\n options: OpenRouterHttpRequestOptions = {},\n ): Promise<T> =>\n (await requestRawAt(batchBaseUrl, path, options)).json() as Promise<T>;\n\n const getBatch = (id: string) =>\n requestBatch<OpenRouterBatch>(`/batches/${encodeURIComponent(id)}`);\n\n const listModels = async (\n query?: OpenRouterModelQuery,\n ): Promise<OpenRouterModelList> => {\n const result = await request<OpenRouterModelList>(\"/models\", { query });\n if (!allowedModels) return result;\n return {\n ...result,\n data: result.data.filter((model) =>\n allowedModels.some((rule) =>\n openRouterModelMatchesRule(model.id, rule),\n ),\n ),\n };\n };\n\n const filterModelList = (result: OpenRouterModelList) => {\n if (!allowedModels) return result;\n return {\n ...result,\n data: result.data.filter((model) =>\n allowedModels.some((rule) =>\n openRouterModelMatchesRule(model.id, rule),\n ),\n ),\n };\n };\n\n return {\n addWorkspaceMembers: (id: string, userIds: readonly string[]) =>\n request<{ added_count: number; data: OpenRouterWorkspaceMember[] }>(\n `/workspaces/${encodeURIComponent(id)}/members/add`,\n { body: { user_ids: [...userIds] }, method: \"POST\" },\n ),\n createAuthCode: (body: OpenRouterCreateAuthCodeRequest) =>\n request<OpenRouterCreateAuthCodeResponse>(\"/auth/keys/code\", {\n body: {\n ...body,\n workspace_id: body.workspace_id ?? defaultWorkspaceId,\n },\n method: \"POST\",\n }),\n chat: (body: OpenRouterChatRequest) => {\n assertAllowedModelsInValue(body, allowedModels);\n return request<OpenRouterChatResponse>(\"/chat/completions\", {\n body: { ...body, stream: false },\n method: \"POST\",\n });\n },\n createPresetFromChatCompletions: (\n slug: string,\n body: OpenRouterPresetInferenceRequest,\n ) => {\n assertAllowedModelsInValue(body, allowedModels);\n return request<OpenRouterPresetResponse>(\n `/presets/${encodeURIComponent(slug)}/chat/completions`,\n { body, method: \"POST\" },\n );\n },\n createPresetFromMessages: (\n slug: string,\n body: OpenRouterPresetInferenceRequest,\n ) => {\n assertAllowedModelsInValue(body, allowedModels);\n return request<OpenRouterPresetResponse>(\n `/presets/${encodeURIComponent(slug)}/messages`,\n { body, method: \"POST\" },\n );\n },\n createPresetFromResponses: (\n slug: string,\n body: OpenRouterPresetInferenceRequest,\n ) => {\n assertAllowedModelsInValue(body, allowedModels);\n return request<OpenRouterPresetResponse>(\n `/presets/${encodeURIComponent(slug)}/responses`,\n { body, method: \"POST\" },\n );\n },\n createWorkspace: (body: OpenRouterCreateWorkspaceRequest) => {\n assertAllowedModelsInValue(body, allowedModels);\n return request<{ data: OpenRouterWorkspace }>(\"/workspaces\", {\n body,\n method: \"POST\",\n });\n },\n createBatch: (body: OpenRouterCreateBatchRequest) => {\n assertAllowedModel(body.model, allowedModels);\n return requestBatch<OpenRouterBatch>(\"/batches\", {\n // OpenRouter's streaming batch parser requires endpoint/model before requests.\n body: {\n endpoint: body.endpoint,\n model: body.model,\n requests: body.requests,\n ...(body.completion_window\n ? { completion_window: body.completion_window }\n : {}),\n },\n method: \"POST\",\n });\n },\n createEmbedding: (body: OpenRouterEmbeddingRequest) => {\n assertAllowedModel(body.model, allowedModels);\n return request<OpenRouterEmbeddingResponse>(\"/embeddings\", {\n body,\n method: \"POST\",\n });\n },\n generateImage: (body: OpenRouterImageRequest) => {\n assertAllowedModel(body.model, allowedModels);\n return request<OpenRouterImageResponse>(\"/images\", {\n body,\n method: \"POST\",\n });\n },\n deleteFile: (id: string, workspaceId = defaultWorkspaceId) =>\n request<{ id: string; type: \"file_deleted\" }>(\n `/files/${encodeURIComponent(id)}`,\n { method: \"DELETE\", query: { workspace_id: workspaceId } },\n ),\n deleteWorkspace: (id: string) =>\n request<{ deleted: true }>(`/workspaces/${encodeURIComponent(id)}`, {\n method: \"DELETE\",\n }),\n deleteWorkspaceBudget: (\n id: string,\n interval: OpenRouterWorkspaceBudgetInterval,\n ) =>\n request<{ deleted: true }>(\n `/workspaces/${encodeURIComponent(id)}/budgets/${interval}`,\n { method: \"DELETE\" },\n ),\n downloadFile: (id: string, workspaceId = defaultWorkspaceId) =>\n requestRaw(`/files/${encodeURIComponent(id)}/content`, {\n query: { workspace_id: workspaceId },\n }),\n downloadVideo: (id: string, index = 0) =>\n requestRaw(`/videos/${encodeURIComponent(id)}/content`, {\n query: { index },\n }),\n generateVideo: (body: OpenRouterVideoRequest) => {\n assertAllowedModel(body.model, allowedModels);\n return request<OpenRouterVideoJob>(\"/videos\", {\n body,\n method: \"POST\",\n });\n },\n getBatch,\n getActivity: (query?: OpenRouterActivityQuery) =>\n request<{ data: OpenRouterActivityItem[] }>(\"/activity\", {\n query: {\n ...query,\n workspace_id: query?.workspace_id ?? defaultWorkspaceId,\n },\n }),\n getAnalyticsMeta: () => request<OpenRouterAnalyticsMeta>(\"/analytics/meta\"),\n getCredits: () => request<{ data: Record<string, number> }>(\"/credits\"),\n getCurrentKey: () => request<{ data: Record<string, unknown> }>(\"/key\"),\n getFile: (id: string, workspaceId = defaultWorkspaceId) =>\n request<OpenRouterFile>(`/files/${encodeURIComponent(id)}`, {\n query: { workspace_id: workspaceId },\n }),\n getGeneration: (id: string) =>\n request<{ data: Record<string, unknown> }>(\"/generation\", {\n query: { id },\n }),\n getGenerationContent: (id: string) =>\n request<Record<string, unknown>>(\"/generation/content\", {\n query: { id },\n }),\n getModelEndpoints: (model: string) => {\n assertAllowedModel(model, allowedModels);\n return request<Record<string, unknown>>(\n `/models/${encodeModelPath(model)}/endpoints`,\n );\n },\n getModel: (model: string) => {\n assertAllowedModel(model, allowedModels);\n return request<{ data: OpenRouterModel }>(\n `/model/${encodeModelPath(model)}`,\n );\n },\n getImageModelEndpoints: (model: string) => {\n assertAllowedModel(model, allowedModels);\n return request<OpenRouterImageModelEndpoints>(\n `/images/models/${encodeModelPath(model)}/endpoints`,\n );\n },\n getPreset: (slug: string) =>\n request<OpenRouterPresetResponse>(`/presets/${encodeURIComponent(slug)}`),\n getPresetVersion: (slug: string, version: number | string) =>\n request<OpenRouterPresetVersionResponse>(\n `/presets/${encodeURIComponent(slug)}/versions/${encodeURIComponent(String(version))}`,\n ),\n getTaskClassifications: (window: \"7d\" = \"7d\") =>\n request<OpenRouterTaskClassifications>(\"/classifications/task\", {\n query: { window },\n }),\n getVideo: (id: string) =>\n request<OpenRouterVideoJob>(`/videos/${encodeURIComponent(id)}`),\n getWorkspace: (id: string) =>\n request<{ data: OpenRouterWorkspace }>(\n `/workspaces/${encodeURIComponent(id)}`,\n ),\n listImageModels: async () =>\n filterModelList(await request<OpenRouterModelList>(\"/images/models\")),\n listEmbeddingModels: async () =>\n filterModelList(await request<OpenRouterModelList>(\"/embeddings/models\")),\n listFiles: (query?: {\n cursor?: string;\n limit?: number;\n workspace_id?: string;\n }) =>\n request<OpenRouterFileList>(\"/files\", {\n query: {\n ...query,\n workspace_id: query?.workspace_id ?? defaultWorkspaceId,\n },\n }),\n listModels,\n listUserModels: async () =>\n filterModelList(await request<OpenRouterModelList>(\"/models/user\")),\n listZdrEndpoints: async () => {\n const result = await request<{ data: OpenRouterZdrEndpoint[] }>(\n \"/endpoints/zdr\",\n );\n if (!allowedModels) return result;\n return {\n ...result,\n data: result.data.filter((endpoint) =>\n allowedModels.some((rule) =>\n openRouterModelMatchesRule(endpoint.model_id, rule),\n ),\n ),\n };\n },\n countModels: (outputModalities?: string) =>\n request<{ data: { count: number } }>(\"/models/count\", {\n query: { output_modalities: outputModalities },\n }),\n listPresets: (offset = 0, limit = 100) =>\n request<{ data: OpenRouterPreset[]; total_count: number }>(\"/presets\", {\n query: { limit, offset },\n }),\n listPresetVersions: (slug: string, offset = 0, limit = 100) =>\n request<{ data: OpenRouterPresetVersion[]; total_count: number }>(\n `/presets/${encodeURIComponent(slug)}/versions`,\n { query: { limit, offset } },\n ),\n listProviders: () =>\n request<{ data: Record<string, unknown>[] }>(\"/providers\"),\n listRerankModels: async () =>\n filterModelList(await request<OpenRouterModelList>(\"/rerank/models\")),\n listVideoModels: async () =>\n filterModelList(await request<OpenRouterModelList>(\"/videos/models\")),\n listWorkspaceBudgets: (id: string) =>\n request<{ data: OpenRouterWorkspaceBudget[] }>(\n `/workspaces/${encodeURIComponent(id)}/budgets`,\n ),\n listWorkspaces: (offset = 0, limit = 100) =>\n request<{ data: OpenRouterWorkspace[]; total_count: number }>(\n \"/workspaces\",\n { query: { limit, offset } },\n ),\n queryAnalytics: (body: OpenRouterAnalyticsQuery) =>\n request<OpenRouterAnalyticsResponse>(\"/analytics/query\", {\n body,\n method: \"POST\",\n }),\n removeWorkspaceMembers: (id: string, userIds: readonly string[]) =>\n request<{ data: OpenRouterWorkspaceMember[]; removed_count: number }>(\n `/workspaces/${encodeURIComponent(id)}/members/remove`,\n { body: { user_ids: [...userIds] }, method: \"POST\" },\n ),\n request,\n requestRaw,\n streamImage: async function* (\n body: Omit<OpenRouterImageRequest, \"stream\">,\n options: Omit<OpenRouterHttpRequestOptions, \"body\" | \"method\"> = {},\n ) {\n assertAllowedModel(body.model, allowedModels);\n const response = await requestRaw(\"/images\", {\n ...options,\n body: { ...body, stream: true },\n method: \"POST\",\n });\n yield* parseImageSSE(response);\n },\n respond: (body: OpenRouterResponsesRequest) => {\n assertAllowedModel(body.model, allowedModels);\n return body.stream\n ? requestRaw(\"/responses\", { body, method: \"POST\" })\n : request<Record<string, unknown>>(\"/responses\", {\n body,\n method: \"POST\",\n });\n },\n rerank: (body: OpenRouterRerankRequest) => {\n assertAllowedModel(body.model, allowedModels);\n return request<OpenRouterRerankResponse>(\"/rerank\", {\n body,\n method: \"POST\",\n });\n },\n speak: (body: OpenRouterSpeechRequest) => {\n assertAllowedModel(body.model, allowedModels);\n return requestRaw(\"/audio/speech\", { body, method: \"POST\" });\n },\n transcribe: (body: OpenRouterTranscriptionRequest | FormData) => {\n if (body instanceof FormData) {\n const model = body.get(\"model\");\n if (typeof model !== \"string\")\n throw new Error(\"OpenRouter transcription FormData requires model\");\n assertAllowedModel(model, allowedModels);\n } else {\n assertAllowedModel(body.model, allowedModels);\n }\n return request<OpenRouterTranscriptionResponse>(\"/audio/transcriptions\", {\n body,\n method: \"POST\",\n });\n },\n uploadFile: (\n file: Blob,\n options: { filename?: string; workspaceId?: string } = {},\n ) => {\n const body = new FormData();\n if (options.filename) body.append(\"file\", file, options.filename);\n else body.append(\"file\", file);\n return request<OpenRouterFile>(\"/files\", {\n body,\n method: \"POST\",\n query: { workspace_id: options.workspaceId ?? defaultWorkspaceId },\n });\n },\n updateWorkspace: (id: string, body: OpenRouterWorkspaceOptions) => {\n assertAllowedModelsInValue(body, allowedModels);\n return request<{ data: OpenRouterWorkspace }>(\n `/workspaces/${encodeURIComponent(id)}`,\n { body, method: \"PATCH\" },\n );\n },\n upsertWorkspaceBudget: (\n id: string,\n interval: OpenRouterWorkspaceBudgetInterval,\n limitUsd: number,\n ) =>\n request<{ data: OpenRouterWorkspaceBudget }>(\n `/workspaces/${encodeURIComponent(id)}/budgets/${interval}`,\n { body: { limit_usd: limitUsd }, method: \"PUT\" },\n ),\n waitForBatch: async (\n id: string,\n options: {\n intervalMs?: number;\n signal?: AbortSignal;\n timeoutMs?: number;\n } = {},\n ) => {\n const intervalMs = options.intervalMs ?? 1_000;\n const timeoutMs = options.timeoutMs;\n if (!Number.isFinite(intervalMs) || intervalMs < 0)\n throw new Error(\"OpenRouter batch intervalMs must be non-negative\");\n if (\n timeoutMs !== undefined &&\n (!Number.isFinite(timeoutMs) || timeoutMs < 0)\n )\n throw new Error(\"OpenRouter batch timeoutMs must be non-negative\");\n const startedAt = Date.now();\n for (;;) {\n options.signal?.throwIfAborted();\n // eslint-disable-next-line no-await-in-loop\n const batch = await getBatch(id);\n if (TERMINAL_BATCH_STATUSES.has(batch.status)) return batch;\n if (\n timeoutMs !== undefined &&\n Date.now() - startedAt + intervalMs > timeoutMs\n )\n throw new Error(`Timed out waiting for OpenRouter batch \"${id}\"`);\n // eslint-disable-next-line no-await-in-loop\n await new Promise<void>((resolve, reject) => {\n const onAbort = () => {\n clearTimeout(timeout);\n reject(options.signal?.reason);\n };\n const timeout = setTimeout(() => {\n options.signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, intervalMs);\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n }\n },\n };\n};\n",
15
15
  "import type {\n AIProviderConfig,\n AIProviderStreamParams,\n} from \"../../../types/ai\";\nimport { openai } from \"./openai\";\nimport { openaiResponses } from \"./openaiResponses\";\nimport { anthropic } from \"./anthropic\";\n\nexport type OpenRouterDataCollection = \"allow\" | \"deny\";\nexport type OpenRouterQuantization =\n | \"bf16\"\n | \"fp4\"\n | \"fp6\"\n | \"fp8\"\n | \"fp16\"\n | \"fp32\"\n | \"int4\"\n | \"int8\"\n | \"unknown\";\nexport type OpenRouterSortStrategy = \"latency\" | \"price\" | \"throughput\";\nexport type OpenRouterSort =\n | OpenRouterSortStrategy\n | {\n by: OpenRouterSortStrategy;\n partition?: \"model\" | \"none\";\n };\nexport type OpenRouterPerformancePreference =\n | number\n | {\n p50?: number;\n p75?: number;\n p90?: number;\n p99?: number;\n };\nexport type OpenRouterMaxPrice = {\n /** Maximum completion-token price in USD per million tokens. */\n completion?: number;\n /** Maximum price in USD per image. */\n image?: number;\n /** Maximum prompt-token price in USD per million tokens. */\n prompt?: number;\n /** Maximum price in USD per request. */\n request?: number;\n};\n\nexport type OpenRouterProviderRouting = {\n allowFallbacks?: boolean;\n dataCollection?: OpenRouterDataCollection;\n enforceDistillableText?: boolean;\n ignore?: readonly string[];\n maxPrice?: OpenRouterMaxPrice;\n only?: readonly string[];\n order?: readonly string[];\n preferredMaxLatency?: OpenRouterPerformancePreference;\n preferredMinThroughput?: OpenRouterPerformancePreference;\n quantizations?: readonly OpenRouterQuantization[];\n requireParameters?: boolean;\n sort?: OpenRouterSort;\n zdr?: boolean;\n};\n\nexport type OpenRouterServiceTier =\n | \"auto\"\n | \"default\"\n | \"flex\"\n | \"priority\"\n | \"fast\";\n\nexport type OpenRouterResponseCache = {\n clear?: boolean;\n enabled: boolean;\n /** OpenRouter response-cache TTL in seconds (1-86400). */\n ttlSeconds?: number;\n};\n\nexport type OpenRouterCacheControl = {\n type: \"ephemeral\";\n ttl?: \"5m\" | \"1h\";\n};\n\nexport type OpenRouterPromptCacheOptions = {\n mode: \"explicit\";\n ttl?: string;\n};\n\nexport type OpenRouterReasoning = {\n context?: \"all_turns\" | \"auto\" | \"current_turn\";\n effort?: \"minimal\" | \"low\" | \"medium\" | \"high\" | \"max\" | \"xhigh\";\n enabled?: boolean;\n exclude?: boolean;\n maxTokens?: number;\n mode?: \"pro\";\n summary?: \"auto\" | \"concise\" | \"detailed\";\n};\n\nexport type OpenRouterTrace = Record<string, unknown> & {\n generation_name?: string;\n parent_span_id?: string;\n span_name?: string;\n trace_id?: string;\n trace_name?: string;\n};\n\nexport type OpenRouterAudioOutput = {\n format: \"wav\" | \"mp3\" | \"flac\" | \"opus\" | \"pcm16\";\n voice: string;\n};\n\nexport type OpenRouterAutoRouterCostTier =\n | \"low\"\n | \"medium\"\n | \"high\"\n | \"xhigh\"\n | \"max\";\n\nexport type OpenRouterAutoRouterPlugin = {\n id: \"auto-router\";\n /** Restrict Auto Router candidates; omitted means the full catalog. */\n allowed_models?: readonly string[];\n cost_tier?: OpenRouterAutoRouterCostTier;\n /** Legacy numeric control. When present, OpenRouter prioritizes it over cost_tier. */\n cost_quality_tradeoff?: number;\n};\n\n/** @deprecated OpenRouter recommends the `openrouter:web_search` server tool. */\nexport type OpenRouterWebSearchPlugin = {\n id: \"web\";\n engine?: \"native\" | \"exa\" | \"firecrawl\" | \"parallel\" | \"perplexity\";\n exclude_domains?: readonly string[];\n include_domains?: readonly string[];\n max_results?: number;\n search_prompt?: string;\n};\n\nexport type OpenRouterFusionPlugin = {\n id: \"fusion\";\n analysis_models?: readonly string[];\n enabled?: boolean;\n max_tool_calls?: number;\n model?: string;\n preset?: string;\n};\n\nexport type OpenRouterResponseHealingPlugin = { id: \"response-healing\" };\n\nexport type OpenRouterPlugin =\n | OpenRouterAutoRouterPlugin\n | OpenRouterFusionPlugin\n | OpenRouterResponseHealingPlugin\n | OpenRouterWebSearchPlugin\n | {\n id: string;\n [option: string]: unknown;\n };\n\nexport type OpenRouterWebSearchParameters = {\n allowed_domains?: readonly string[];\n engine?: \"auto\" | \"native\" | \"exa\" | \"firecrawl\" | \"parallel\" | \"perplexity\";\n excluded_domains?: readonly string[];\n max_characters?: number;\n max_results?: number;\n max_total_results?: number;\n search_context_size?: \"low\" | \"medium\" | \"high\";\n user_location?: {\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n type: \"approximate\";\n };\n};\n\nexport type OpenRouterWebFetchParameters = {\n allowed_domains?: readonly string[];\n blocked_domains?: readonly string[];\n engine?: \"auto\" | \"native\" | \"exa\" | \"openrouter\" | \"firecrawl\" | \"parallel\";\n max_content_tokens?: number;\n max_uses?: number;\n};\n\nexport type OpenRouterImageGenerationParameters = {\n aspect_ratio?: string;\n background?: string;\n model?: string;\n moderation?: string;\n output_compression?: number;\n output_format?: string;\n quality?: string;\n size?: string;\n};\n\nexport type OpenRouterSubagentParameters = {\n inherit_functions?: boolean;\n inherited_function_names?: readonly string[];\n instructions?: string;\n max_completion_tokens?: number;\n max_tool_calls?: number;\n model?: string;\n name?: string;\n reasoning?: {\n effort?: OpenRouterReasoning[\"effort\"];\n max_tokens?: number;\n };\n temperature?: number;\n tools?: readonly Exclude<\n OpenRouterServerTool,\n { type: \"openrouter:subagent\" }\n >[];\n};\n\nexport type OpenRouterAdvisorParameters = {\n forward_transcript?: boolean;\n instructions?: string;\n max_completion_tokens?: number;\n model?: string;\n name?: string;\n reasoning?: { effort?: string; max_tokens?: number };\n stream?: boolean;\n temperature?: number;\n};\n\nexport type OpenRouterFusionServerToolParameters = {\n analysis_models?: readonly string[];\n cache_control?: OpenRouterCacheControl;\n max_completion_tokens?: number;\n max_tool_calls?: number;\n model?: string;\n reasoning?: { effort?: string; max_tokens?: number };\n temperature?: number;\n tools?: readonly OpenRouterServerTool[];\n};\n\nexport type OpenRouterShellParameters = {\n engine?: \"auto\" | \"openrouter\";\n environment?:\n | { type: \"container_auto\" }\n | { container_id: string; type: \"container_reference\" };\n sleep_after_seconds?: number;\n};\n\nexport type OpenRouterServerTool =\n | {\n type: \"openrouter:web_search\";\n parameters?: OpenRouterWebSearchParameters;\n }\n | { type: \"openrouter:web_fetch\"; parameters?: OpenRouterWebFetchParameters }\n | { type: \"openrouter:datetime\"; parameters?: { timezone?: string } }\n | {\n type: \"openrouter:image_generation\";\n parameters?: OpenRouterImageGenerationParameters;\n }\n | {\n type: \"openrouter:apply_patch\";\n parameters?: { engine?: \"auto\" | \"native\" | \"openrouter\" };\n }\n | { type: \"openrouter:subagent\"; parameters: OpenRouterSubagentParameters }\n | {\n type: \"openrouter:advisor\";\n parameters?: OpenRouterAdvisorParameters;\n }\n | {\n type: \"openrouter:fusion\";\n parameters?: OpenRouterFusionServerToolParameters;\n }\n | { type: \"openrouter:shell\"; parameters?: OpenRouterShellParameters }\n | {\n type: \"openrouter:experimental__search_models\";\n parameters?: { max_results?: number };\n };\n\nexport type OpenRouterRequestOptions = {\n /** Stream text and synthesized audio from an audio-output chat model. */\n audioOutput?: OpenRouterAudioOutput;\n /** Automatic top-level prompt caching, including optional Anthropic TTL. */\n cacheControl?: OpenRouterCacheControl;\n /** Future OpenRouter fields. Security-sensitive routing fields are rejected. */\n extraBody?: Record<string, unknown>;\n fallbackModels?: readonly string[];\n includeReasoning?: boolean;\n maxToolCalls?: number;\n /** Native `/messages` server-tool definitions and replayable tool shapes. */\n messagesTools?: readonly Record<string, unknown>[];\n plugins?: readonly OpenRouterPlugin[];\n /** Stable cache identity used by compatible OpenAI-family models. */\n promptCacheKey?: string;\n /** OpenAI explicit-cache mode and TTL. */\n promptCacheOptions?: OpenRouterPromptCacheOptions;\n preset?: string;\n responseCache?: OpenRouterResponseCache;\n /** OpenRouter-native reasoning controls beyond the portable effort knob. */\n reasoning?: OpenRouterReasoning;\n routerMetadata?: boolean;\n routing?: OpenRouterProviderRouting;\n serverTools?: readonly OpenRouterServerTool[];\n serviceTier?: OpenRouterServiceTier;\n sessionId?: string;\n stopServerToolsWhen?: readonly Record<string, unknown>[];\n /** Metadata forwarded to configured OpenRouter Broadcast destinations. */\n trace?: OpenRouterTrace;\n transforms?: readonly string[];\n user?: string;\n verbosity?: \"low\" | \"medium\" | \"high\";\n};\n\nexport type OpenRouterConfig = {\n /**\n * Local model policy. Entries are exact model IDs or namespace wildcards such\n * as `anthropic/*`. Requests outside the list fail before network access.\n */\n allowedModels?: readonly string[];\n /** Preset slugs deliberately approved for use with this provider. */\n allowedPresets?: readonly string[];\n /**\n * Inference-provider policy sent as OpenRouter's `provider.only`. When\n * `routing.only` is also set, every entry must be allowed by this policy.\n */\n allowedProviders?: readonly string[];\n apiKey?: string;\n /** Up to two OpenRouter marketplace categories. */\n appCategories?: readonly string[];\n /** Public application name used for optional OpenRouter attribution. */\n appName?: string;\n /** Public application URL used for optional OpenRouter attribution. */\n appUrl?: string;\n baseUrl?: string;\n fetch?: typeof globalThis.fetch;\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n /** Default OpenRouter request options, overridable per call. */\n requestOptions?: OpenRouterRequestOptions;\n routing?: OpenRouterProviderRouting;\n tokenSource?: () => Promise<string> | string;\n};\n\nconst DEFAULT_BASE_URL = \"https://openrouter.ai/api\";\nconst MAX_APP_CATEGORIES = 2;\n\nconst withoutLatestPrefix = (model: string) =>\n model.startsWith(\"~\") ? model.slice(1) : model;\n\nconst modelForOpenAICapabilities = (model: string) => {\n const normalized = withoutLatestPrefix(model);\n return normalized.startsWith(\"openai/\")\n ? normalized.slice(\"openai/\".length)\n : normalized;\n};\n\nconst modelMatchesRule = (model: string, rule: string) => {\n const normalizedModel = withoutLatestPrefix(model);\n const normalizedRule = withoutLatestPrefix(rule);\n if (normalizedRule.endsWith(\"/*\")) {\n return normalizedModel.startsWith(normalizedRule.slice(0, -1));\n }\n\n return normalizedModel === normalizedRule;\n};\n\nconst providerMatchesRule = (provider: string, rule: string) =>\n provider === rule || provider.startsWith(`${rule}/`);\n\nconst assertNonEmptyPolicy = (\n label: string,\n value: readonly string[] | undefined,\n) => {\n if (value && value.length === 0) {\n throw new Error(`openrouter() ${label} must not be empty`);\n }\n};\n\nconst assertRoutingPolicy = (config: OpenRouterConfig) => {\n assertNonEmptyPolicy(\"allowedProviders\", config.allowedProviders);\n assertNonEmptyPolicy(\"routing.only\", config.routing?.only);\n assertNonEmptyPolicy(\"allowedPresets\", config.allowedPresets);\n if (\n config.appCategories &&\n config.appCategories.length > MAX_APP_CATEGORIES\n ) {\n throw new Error(\"openrouter() appCategories supports at most 2 entries\");\n }\n if (!config.allowedProviders) return;\n const selected = [\n ...(config.routing?.only ?? []),\n ...(config.routing?.order ?? []),\n ];\n const denied = selected.find(\n (provider) =>\n !config.allowedProviders!.some((rule) =>\n providerMatchesRule(provider, rule),\n ),\n );\n if (denied) {\n throw new Error(\n `openrouter() provider \"${denied}\" is outside allowedProviders`,\n );\n }\n};\n\nconst assertRequestRoutingPolicy = (\n routing: OpenRouterProviderRouting | undefined,\n allowedProviders: readonly string[] | undefined,\n) => {\n assertRoutingPolicy({\n allowedProviders,\n apiKey: \"policy-validation\",\n routing,\n });\n};\n\nconst mapRouting = (\n routing: OpenRouterProviderRouting | undefined,\n allowedProviders: readonly string[] | undefined,\n) => {\n const only = routing?.only ?? allowedProviders;\n const wire: Record<string, unknown> = {};\n if (typeof routing?.allowFallbacks === \"boolean\")\n wire.allow_fallbacks = routing.allowFallbacks;\n if (routing?.dataCollection) wire.data_collection = routing.dataCollection;\n if (typeof routing?.enforceDistillableText === \"boolean\")\n wire.enforce_distillable_text = routing.enforceDistillableText;\n if (routing?.ignore) wire.ignore = [...routing.ignore];\n if (routing?.maxPrice) wire.max_price = { ...routing.maxPrice };\n if (only) wire.only = [...only];\n if (routing?.order) wire.order = [...routing.order];\n if (routing?.preferredMaxLatency !== undefined)\n wire.preferred_max_latency = routing.preferredMaxLatency;\n if (routing?.preferredMinThroughput !== undefined)\n wire.preferred_min_throughput = routing.preferredMinThroughput;\n if (routing?.quantizations) wire.quantizations = [...routing.quantizations];\n if (typeof routing?.requireParameters === \"boolean\")\n wire.require_parameters = routing.requireParameters;\n if (routing?.sort) wire.sort = routing.sort;\n if (typeof routing?.zdr === \"boolean\") wire.zdr = routing.zdr;\n\n return wire;\n};\n\nconst requestOptionsFor = (\n params: AIProviderStreamParams,\n defaults: OpenRouterRequestOptions | undefined,\n) => {\n const supplied = params.providerOptions?.openrouter;\n if (supplied !== undefined && (typeof supplied !== \"object\" || !supplied)) {\n throw new Error(\"providerOptions.openrouter must be an object\");\n }\n\n return {\n ...defaults,\n ...(supplied as OpenRouterRequestOptions | undefined),\n };\n};\n\nconst resolveAttributionHeaders = async (\n config: OpenRouterConfig,\n params: AIProviderStreamParams,\n) => {\n const supplied =\n typeof config.headers === \"function\"\n ? await config.headers()\n : (config.headers ?? {});\n const headers = new Headers(supplied);\n if (config.appUrl) headers.set(\"HTTP-Referer\", config.appUrl);\n if (config.appName) headers.set(\"X-OpenRouter-Title\", config.appName);\n if (config.appCategories?.length) {\n headers.set(\"X-OpenRouter-Categories\", config.appCategories.join(\",\"));\n }\n const options = requestOptionsFor(params, config.requestOptions);\n if (options.routerMetadata ?? true)\n headers.set(\"X-OpenRouter-Metadata\", \"enabled\");\n if (options.sessionId) headers.set(\"X-Session-Id\", options.sessionId);\n if (options.responseCache) {\n headers.set(\n \"X-OpenRouter-Cache\",\n options.responseCache.enabled ? \"true\" : \"false\",\n );\n if (options.responseCache.ttlSeconds !== undefined)\n headers.set(\n \"X-OpenRouter-Cache-TTL\",\n String(options.responseCache.ttlSeconds),\n );\n if (options.responseCache.clear)\n headers.set(\"X-OpenRouter-Cache-Clear\", \"true\");\n }\n\n return headers;\n};\n\nconst SECURITY_SENSITIVE_EXTRA_BODY_FIELDS = new Set([\n \"messages\",\n \"model\",\n \"models\",\n \"plugins\",\n \"preset\",\n \"provider\",\n \"stream\",\n \"tools\",\n]);\n\nconst assertAllowedPreset = (\n preset: string | undefined,\n allowedPresets: readonly string[] | undefined,\n) => {\n if (!preset) return;\n if (allowedPresets?.includes(preset)) return;\n throw new Error(`OpenRouter preset \"${preset}\" is not allowed`);\n};\n\nconst assertIndirectModels = (\n value: unknown,\n allowedModels: readonly string[] | undefined,\n key = \"\",\n) => {\n if (key === \"model\" && typeof value === \"string\")\n assertAllowedModel(value, allowedModels);\n if (\n (key === \"models\" ||\n key === \"analysis_models\" ||\n key === \"allowed_models\") &&\n Array.isArray(value)\n ) {\n for (const model of value) {\n if (typeof model === \"string\") assertAllowedModel(model, allowedModels);\n }\n }\n if (Array.isArray(value)) {\n for (const item of value) assertIndirectModels(item, allowedModels);\n } else if (value && typeof value === \"object\") {\n for (const [childKey, child] of Object.entries(value))\n assertIndirectModels(child, allowedModels, childKey);\n }\n};\n\nconst assertIntegerRange = (\n label: string,\n value: number | undefined,\n minimum: number,\n maximum?: number,\n) => {\n if (value === undefined) return;\n if (\n !Number.isInteger(value) ||\n value < minimum ||\n (maximum !== undefined && value > maximum)\n )\n throw new Error(\n `OpenRouter ${label} must be an integer from ${minimum}${maximum === undefined ? \" or greater\" : ` to ${maximum}`}`,\n );\n};\n\nconst assertPluginOptions = (\n plugins: readonly OpenRouterPlugin[] | undefined,\n) => {\n for (const plugin of plugins ?? []) {\n if (plugin.id === \"response-healing\")\n throw new Error(\n \"OpenRouter response-healing requires a non-streaming request; use createOpenRouterClient().chat()\",\n );\n if (plugin.id === \"fusion\") {\n const fusion = plugin as OpenRouterFusionPlugin;\n if (\n fusion.analysis_models &&\n (fusion.analysis_models.length < 1 || fusion.analysis_models.length > 8)\n )\n throw new Error(\n \"OpenRouter Fusion analysis_models must contain 1-8 models\",\n );\n assertIntegerRange(\"Fusion max_tool_calls\", fusion.max_tool_calls, 1, 16);\n }\n if (plugin.id === \"web\") {\n const web = plugin as OpenRouterWebSearchPlugin;\n assertIntegerRange(\n \"web plugin max_results\",\n web.max_results,\n 1,\n web.engine === \"perplexity\" ? 20 : 25,\n );\n if (\n web.include_domains?.length &&\n web.exclude_domains?.length &&\n (web.engine === \"firecrawl\" ||\n web.engine === \"parallel\" ||\n web.engine === \"perplexity\")\n )\n throw new Error(\n `OpenRouter ${web.engine} web plugin cannot combine include_domains and exclude_domains`,\n );\n }\n }\n};\n\nconst assertServerToolOptions = (\n tools: readonly OpenRouterServerTool[] | undefined,\n) => {\n for (const tool of tools ?? []) {\n if (tool.type === \"openrouter:web_search\") {\n const parameters = tool.parameters;\n assertIntegerRange(\n \"web search max_results\",\n parameters?.max_results,\n 1,\n 25,\n );\n if (\n parameters?.engine === \"perplexity\" &&\n (parameters.max_results ?? 0) > 20\n )\n throw new Error(\n \"OpenRouter Perplexity web search max_results must be at most 20\",\n );\n assertIntegerRange(\n \"web search max_characters\",\n parameters?.max_characters,\n 1,\n 100_000,\n );\n assertIntegerRange(\n \"web search max_total_results\",\n parameters?.max_total_results,\n 1,\n );\n }\n if (tool.type === \"openrouter:web_fetch\") {\n assertIntegerRange(\"web fetch max_uses\", tool.parameters?.max_uses, 1);\n assertIntegerRange(\n \"web fetch max_content_tokens\",\n tool.parameters?.max_content_tokens,\n 1,\n );\n }\n if (tool.type === \"openrouter:image_generation\") {\n const compression = tool.parameters?.output_compression;\n if (\n compression !== undefined &&\n (!Number.isFinite(compression) || compression < 0 || compression > 100)\n )\n throw new Error(\n \"OpenRouter image generation output_compression must be 0-100\",\n );\n }\n if (tool.type === \"openrouter:subagent\") {\n assertIntegerRange(\n \"subagent max_completion_tokens\",\n tool.parameters.max_completion_tokens,\n 1,\n );\n assertIntegerRange(\n \"subagent max_tool_calls\",\n tool.parameters.max_tool_calls,\n 1,\n 25,\n );\n const temperature = tool.parameters.temperature;\n if (\n temperature !== undefined &&\n (!Number.isFinite(temperature) || temperature < 0 || temperature > 2)\n )\n throw new Error(\"OpenRouter subagent temperature must be 0-2\");\n assertServerToolOptions(tool.parameters.tools);\n }\n if (tool.type === \"openrouter:advisor\") {\n assertIntegerRange(\n \"advisor max_completion_tokens\",\n tool.parameters?.max_completion_tokens,\n 1,\n );\n const temperature = tool.parameters?.temperature;\n if (\n temperature !== undefined &&\n (!Number.isFinite(temperature) || temperature < 0 || temperature > 2)\n )\n throw new Error(\"OpenRouter advisor temperature must be 0-2\");\n }\n if (tool.type === \"openrouter:fusion\") {\n const analysisModels = tool.parameters?.analysis_models;\n if (\n analysisModels &&\n (analysisModels.length < 1 || analysisModels.length > 8)\n )\n throw new Error(\n \"OpenRouter Fusion server tool analysis_models must contain 1-8 models\",\n );\n assertIntegerRange(\n \"Fusion server tool max_completion_tokens\",\n tool.parameters?.max_completion_tokens,\n 1,\n );\n assertIntegerRange(\n \"Fusion server tool max_tool_calls\",\n tool.parameters?.max_tool_calls,\n 1,\n 16,\n );\n const temperature = tool.parameters?.temperature;\n if (\n temperature !== undefined &&\n (!Number.isFinite(temperature) || temperature < 0 || temperature > 2)\n )\n throw new Error(\n \"OpenRouter Fusion server tool temperature must be 0-2\",\n );\n assertServerToolOptions(tool.parameters?.tools);\n }\n if (tool.type === \"openrouter:shell\") {\n assertIntegerRange(\n \"shell sleep_after_seconds\",\n tool.parameters?.sleep_after_seconds,\n 0,\n 2_592_000,\n );\n const environment = tool.parameters?.environment;\n if (\n environment?.type === \"container_reference\" &&\n (environment.container_id.length < 1 ||\n environment.container_id.length > 20)\n )\n throw new Error(\n \"OpenRouter shell container_id must contain 1-20 characters\",\n );\n }\n if (tool.type === \"openrouter:experimental__search_models\")\n assertIntegerRange(\n \"model search max_results\",\n tool.parameters?.max_results,\n 1,\n 20,\n );\n }\n};\n\nconst assertRequestOptions = (\n options: OpenRouterRequestOptions,\n allowedModels: readonly string[] | undefined,\n allowedPresets: readonly string[] | undefined,\n allowedProviders: readonly string[] | undefined,\n) => {\n assertAllowedPreset(options.preset, allowedPresets);\n assertRequestRoutingPolicy(options.routing, allowedProviders);\n if (options.sessionId && options.sessionId.length > 256)\n throw new Error(\"OpenRouter sessionId must be at most 256 characters\");\n const ttl = options.responseCache?.ttlSeconds;\n if (ttl !== undefined && (!Number.isInteger(ttl) || ttl < 1 || ttl > 86400))\n throw new Error(\"OpenRouter response-cache TTL must be 1-86400 seconds\");\n if (options.responseCache?.clear && !options.responseCache.enabled)\n throw new Error(\"OpenRouter cache clear requires response caching enabled\");\n if (options.fallbackModels) {\n if (options.fallbackModels.length === 0)\n throw new Error(\"OpenRouter fallbackModels must not be empty\");\n for (const model of options.fallbackModels)\n assertAllowedModel(model, allowedModels);\n }\n assertIndirectModels(options.serverTools, allowedModels);\n assertIndirectModels(options.messagesTools, allowedModels);\n assertIndirectModels(options.plugins, allowedModels);\n assertPluginOptions(options.plugins);\n assertServerToolOptions(options.serverTools);\n if (options.extraBody) {\n const unsafe = Object.keys(options.extraBody).find((key) =>\n SECURITY_SENSITIVE_EXTRA_BODY_FIELDS.has(key),\n );\n if (unsafe)\n throw new Error(`OpenRouter extraBody cannot override \"${unsafe}\"`);\n }\n};\n\nconst assertAllowedModel = (\n model: string,\n allowedModels: readonly string[] | undefined,\n) => {\n if (!allowedModels) return;\n if (allowedModels.some((rule) => modelMatchesRule(model, rule))) return;\n throw new Error(`OpenRouter model \"${model}\" is not allowed`);\n};\n\nconst snapshotPolicy = (config: OpenRouterConfig) => ({\n allowedModels: config.allowedModels ? [...config.allowedModels] : undefined,\n allowedPresets: config.allowedPresets\n ? [...config.allowedPresets]\n : undefined,\n});\n\nconst transformOpenRouterRequest = (\n config: OpenRouterConfig,\n allowedModels: readonly string[] | undefined,\n allowedPresets: readonly string[] | undefined,\n body: Record<string, unknown>,\n params: AIProviderStreamParams,\n skin: \"messages\" | \"openai\" = \"openai\",\n) => {\n const options = requestOptionsFor(params, config.requestOptions);\n assertRequestOptions(\n options,\n allowedModels,\n allowedPresets,\n config.allowedProviders,\n );\n const transformed = { ...body, ...options.extraBody };\n if (options.audioOutput) {\n transformed.audio = options.audioOutput;\n transformed.modalities = [\"text\", \"audio\"];\n }\n if (skin === \"openai\") {\n const requestedReasoning: Record<string, unknown> = {};\n if (params.reasoning?.budgetTokens !== undefined) {\n requestedReasoning.max_tokens = params.reasoning.budgetTokens;\n delete transformed.reasoning_effort;\n } else if (params.reasoning?.effort) {\n requestedReasoning.effort = params.reasoning.effort;\n delete transformed.reasoning_effort;\n }\n if (options.reasoning) {\n Object.assign(requestedReasoning, options.reasoning);\n if (options.reasoning.maxTokens !== undefined) {\n requestedReasoning.max_tokens = options.reasoning.maxTokens;\n delete requestedReasoning.maxTokens;\n }\n }\n if (Object.keys(requestedReasoning).length > 0)\n transformed.reasoning = requestedReasoning;\n }\n const automaticCacheControl =\n params.promptCaching === true || params.cacheSystemPrompt === true\n ? ({ type: \"ephemeral\" } satisfies OpenRouterCacheControl)\n : undefined;\n const cacheControl = options.cacheControl ?? automaticCacheControl;\n if (cacheControl) transformed.cache_control = cacheControl;\n if (options.promptCacheKey)\n transformed.prompt_cache_key = options.promptCacheKey;\n if (options.promptCacheOptions)\n transformed.prompt_cache_options = options.promptCacheOptions;\n const routing = mapRouting(\n { ...config.routing, ...options.routing },\n config.allowedProviders,\n );\n if (Object.keys(routing).length > 0) transformed.provider = routing;\n if (options.fallbackModels) transformed.models = [...options.fallbackModels];\n if (options.includeReasoning !== undefined)\n transformed.include_reasoning = options.includeReasoning;\n if (options.maxToolCalls !== undefined)\n transformed.max_tool_calls = options.maxToolCalls;\n if (options.plugins) transformed.plugins = [...options.plugins];\n if (options.preset) transformed.preset = options.preset;\n if (options.serverTools) {\n transformed.tools = [\n ...(Array.isArray(transformed.tools) ? transformed.tools : []),\n ...options.serverTools,\n ];\n }\n if (options.messagesTools) {\n if (skin !== \"messages\")\n throw new Error(\"OpenRouter messagesTools requires openrouterMessages()\");\n transformed.tools = [\n ...(Array.isArray(transformed.tools) ? transformed.tools : []),\n ...options.messagesTools,\n ];\n }\n if (options.serviceTier) transformed.service_tier = options.serviceTier;\n if (options.sessionId) transformed.session_id = options.sessionId;\n if (options.stopServerToolsWhen)\n transformed.stop_server_tools_when = options.stopServerToolsWhen;\n if (options.trace) transformed.trace = options.trace;\n if (options.transforms) transformed.transforms = [...options.transforms];\n if (options.user) transformed.user = options.user;\n if (options.verbosity) transformed.verbosity = options.verbosity;\n\n return transformed;\n};\n\nconst withOpenRouterPolicy = (\n provider: AIProviderConfig,\n allowedModels: readonly string[] | undefined,\n allowedPresets: readonly string[] | undefined,\n): AIProviderConfig => ({\n stream: (params) => {\n if (params.model.startsWith(\"@preset/\")) {\n assertAllowedPreset(\n params.model.slice(\"@preset/\".length),\n allowedPresets,\n );\n } else {\n const presetSeparator = params.model.indexOf(\"@preset/\");\n if (presetSeparator >= 0) {\n assertAllowedModel(\n params.model.slice(0, presetSeparator),\n allowedModels,\n );\n assertAllowedPreset(\n params.model.slice(presetSeparator + \"@preset/\".length),\n allowedPresets,\n );\n } else {\n assertAllowedModel(params.model, allowedModels);\n }\n }\n return provider.stream(params);\n },\n});\n\n/**\n * OpenRouter provider for the shared AbsoluteJS AI contract.\n *\n * Uses the existing OpenAI-compatible streaming implementation while adding\n * OpenRouter attribution, typed provider routing, local model policy, provider\n * allowlists, cost metadata, and OpenRouter-specific error attribution.\n */\nexport const openrouter = (config: OpenRouterConfig): AIProviderConfig => {\n assertRoutingPolicy(config);\n // Snapshot policy at construction so later mutation of a caller-owned array\n // cannot silently broaden a long-lived provider instance.\n const { allowedModels, allowedPresets } = snapshotPolicy(config);\n const provider = openai({\n apiKey: config.apiKey,\n baseUrl: config.baseUrl ?? DEFAULT_BASE_URL,\n fetch: config.fetch,\n headers: (params) => resolveAttributionHeaders(config, params),\n modelForCapabilities: modelForOpenAICapabilities,\n providerName: \"openrouter\",\n tokenSource: config.tokenSource,\n transformRequestBody: (body, params) =>\n transformOpenRouterRequest(\n config,\n allowedModels,\n allowedPresets,\n body,\n params,\n ),\n });\n return withOpenRouterPolicy(provider, allowedModels, allowedPresets);\n};\n\n/** OpenRouter's stateless OpenAI-compatible Responses API provider skin. */\nexport const openrouterResponses = (\n config: OpenRouterConfig,\n): AIProviderConfig => {\n assertRoutingPolicy(config);\n const { allowedModels, allowedPresets } = snapshotPolicy(config);\n const provider = openaiResponses({\n apiKey: config.apiKey,\n baseUrl: config.baseUrl ?? DEFAULT_BASE_URL,\n fetch: config.fetch,\n headers: (params) => resolveAttributionHeaders(config, params),\n modelForCapabilities: modelForOpenAICapabilities,\n providerName: \"openrouter\",\n tokenSource: config.tokenSource,\n transformRequestBody: (body, params) =>\n transformOpenRouterRequest(\n config,\n allowedModels,\n allowedPresets,\n body,\n params,\n ),\n });\n return withOpenRouterPolicy(provider, allowedModels, allowedPresets);\n};\n\n/** OpenRouter provider using the native Anthropic Messages protocol skin. */\nexport const openrouterMessages = (\n config: OpenRouterConfig,\n): AIProviderConfig => {\n assertRoutingPolicy(config);\n const { allowedModels, allowedPresets } = snapshotPolicy(config);\n const provider = anthropic({\n apiKey: config.apiKey,\n authStyle: \"bearer\",\n baseUrl: config.baseUrl ?? DEFAULT_BASE_URL,\n fetch: config.fetch,\n headers: (params) => resolveAttributionHeaders(config, params),\n providerName: \"openrouter\",\n tokenSource: config.tokenSource,\n transformRequestBody: (body, params) =>\n transformOpenRouterRequest(\n config,\n allowedModels,\n allowedPresets,\n body,\n params,\n \"messages\",\n ),\n });\n return withOpenRouterPolicy(provider, allowedModels, allowedPresets);\n};\n\nexport {\n createOpenRouterAuthorizationUrl,\n createOpenRouterClient,\n createOpenRouterKeyLinks,\n estimateOpenRouterCost,\n estimateOpenRouterModelCost,\n exchangeOpenRouterAuthCode,\n generateOpenRouterPKCE,\n openRouterModelMatchesRule,\n verifyOpenRouterWebhookSignature,\n} from \"./openrouterClient\";\nexport type {\n OpenRouterActivityItem,\n OpenRouterActivityQuery,\n OpenRouterAnalyticsMeta,\n OpenRouterAnalyticsQuery,\n OpenRouterAnalyticsResponse,\n OpenRouterAuthCodeExchangeRequest,\n OpenRouterAuthCodeExchangeResponse,\n OpenRouterAuthorizationUrlOptions,\n OpenRouterBatch,\n OpenRouterBatchEndpoint,\n OpenRouterBatchRequest,\n OpenRouterBatchResult,\n OpenRouterBatchStatus,\n OpenRouterChatRequest,\n OpenRouterChatResponse,\n OpenRouterClient,\n OpenRouterClientConfig,\n OpenRouterCostEstimate,\n OpenRouterCostUnits,\n OpenRouterCreateAuthCodeRequest,\n OpenRouterCreateAuthCodeResponse,\n OpenRouterCreateBatchRequest,\n OpenRouterCreateWorkspaceRequest,\n OpenRouterEmbeddingRequest,\n OpenRouterEmbeddingResponse,\n OpenRouterFile,\n OpenRouterFileList,\n OpenRouterHttpRequestOptions,\n OpenRouterImageModelEndpoint,\n OpenRouterImageModelEndpoints,\n OpenRouterImageRequest,\n OpenRouterImageResponse,\n OpenRouterImageStreamEvent,\n OpenRouterModel,\n OpenRouterModelList,\n OpenRouterModelQuery,\n OpenRouterPreset,\n OpenRouterPresetInferenceRequest,\n OpenRouterPresetResponse,\n OpenRouterPresetVersion,\n OpenRouterPresetVersionResponse,\n OpenRouterPricing,\n OpenRouterPricingKey,\n OpenRouterPKCE,\n OpenRouterRerankRequest,\n OpenRouterRerankResponse,\n OpenRouterResponsesRequest,\n OpenRouterSpeechRequest,\n OpenRouterTranscriptionRequest,\n OpenRouterTranscriptionResponse,\n OpenRouterTaskClassifications,\n OpenRouterVideoJob,\n OpenRouterVideoRequest,\n OpenRouterVideoWebhookEvent,\n OpenRouterWorkspace,\n OpenRouterWorkspaceBudget,\n OpenRouterWorkspaceBudgetInterval,\n OpenRouterWorkspaceMember,\n OpenRouterWorkspaceOptions,\n OpenRouterZdrEndpoint,\n} from \"./openrouterClient\";\n"
16
16
  ],
17
- "mappings": "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",
18
- "debugId": "97E7A9DE2EC4EDCB64756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "A11CF494B73D044A64756E2164756E21",
19
19
  "names": []
20
20
  }