@absolutejs/ai 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/changelog.json +23 -0
- package/dist/ai/index.js +33 -4
- package/dist/ai/index.js.map +6 -6
- package/dist/ai/models/index.js +12 -1
- package/dist/ai/models/index.js.map +3 -3
- package/dist/ai/providers/anthropic.js +16 -3
- package/dist/ai/providers/anthropic.js.map +4 -4
- package/dist/ai/providers/gemini.js +16 -3
- package/dist/ai/providers/gemini.js.map +4 -4
- package/dist/ai/providers/openai.js +26 -3
- package/dist/ai/providers/openai.js.map +5 -5
- package/dist/ai/providers/openaiCompatible.js +26 -3
- package/dist/ai/providers/openaiCompatible.js.map +5 -5
- package/dist/ai/providers/openaiResponses.js +26 -3
- package/dist/ai/providers/openaiResponses.js.map +5 -5
- package/dist/ai/providers/openrouter.js +26 -3
- package/dist/ai/providers/openrouter.js.map +5 -5
- package/dist/angular/ai/index.js +7 -9
- package/dist/angular/ai/index.js.map +2 -2
- package/dist/src/ai/streamAIWithTools.d.ts +2 -0
- package/package.json +1 -1
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
"// 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",
|
|
7
7
|
"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 <\n (params.maxRetries === undefined\n ? config.maxRetries\n : Math.max(0, Math.min(config.maxRetries, params.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",
|
|
8
8
|
"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 (\n (chunk.type === \"done\" ||\n (chunk.type === \"usage_update\" && chunk.final)) &&\n chunk.usage\n ) {\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",
|
|
9
|
-
"import type { ReasoningEffort } from \"../../../types/ai\";\n\nexport const REASONING_EFFORTS = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n] as const;\nexport type ReasoningSelection = \"auto\" | ReasoningEffort;\nexport type ModelReasoning = {\n kind: \"effort\" | \"budget\" | \"fixed\";\n efforts: readonly ReasoningEffort[];\n description: string;\n source: string;\n};\nexport const isReasoningSelection = (\n value: unknown,\n): value is ReasoningSelection =>\n value === \"auto\" || REASONING_EFFORTS.some((effort) => effort === value);\nconst profile = (\n kind: ModelReasoning[\"kind\"],\n efforts: readonly ReasoningEffort[],\n description: string,\n source: string,\n): ModelReasoning => ({ kind, efforts, description, source });\nconst claude = profile(\n \"effort\",\n [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n \"More thinking for harder problems; higher settings can take longer and use more credits.\",\n \"https://platform.claude.com/docs/en/build-with-claude/effort\",\n);\nconst claude46 = {\n ...claude,\n efforts: [\"low\", \"medium\", \"high\", \"max\"] as const,\n};\nconst opus45 = { ...claude, efforts: [\"low\", \"medium\", \"high\"] as const };\nconst haiku = profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n \"Thinking-token budget: Low 2,048; Medium 8,192; High 16,384. Actual usage can be lower.\",\n \"https://platform.claude.com/docs/en/build-with-claude/extended-thinking\",\n);\nconst gpt = profile(\n \"effort\",\n [\"none\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n claude.description,\n \"https://developers.openai.com/api/docs/models/gpt-5.6-sol\",\n);\nconst gemini = profile(\n \"effort\",\n [\"low\", \"medium\", \"high\"],\n claude.description,\n \"https://ai.google.dev/gemini-api/docs/openai\",\n);\nconst deepseek = profile(\n \"effort\",\n [\"none\", \"low\", \"high\", \"max\"],\n claude.description,\n \"https://api-docs.deepseek.com/guides/thinking_mode/\",\n);\nconst mistral = profile(\n \"effort\",\n [\"none\", \"high\"],\n \"Minimal thinking or full reasoning. This model does not offer intermediate effort levels.\",\n \"https://docs.mistral.ai/studio/conversations/reasoning\",\n);\nconst qwen = profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n haiku.description,\n \"https://help.aliyun.com/en/model-studio/deep-thinking\",\n);\n/** Exact reviewed IDs; unknown models expose only the provider default. Reviewed 2026-09-20;\n * Anthropic effort levels re-checked against the Models API 2026-09-25. */\nexport const MODEL_REASONING: Readonly<Record<string, ModelReasoning>> = {\n \"anthropic:claude-opus-5-5\": claude,\n \"anthropic:claude-fable-5-1\": claude,\n \"anthropic:claude-opus-5\": claude,\n \"anthropic:claude-sonnet-5\": claude,\n \"anthropic:claude-fable-5\": claude,\n \"anthropic:claude-opus-4-8\": claude,\n \"anthropic:claude-opus-4-7\": claude,\n \"anthropic:claude-sonnet-4-6\": claude46,\n \"anthropic:claude-opus-4-6\": claude46,\n \"anthropic:claude-opus-4-5\": opus45,\n \"anthropic:claude-haiku-4-5\": haiku,\n \"anthropic:claude-sonnet-4-5\": haiku,\n \"openai:gpt-6-astra\": {\n ...gpt,\n efforts: [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n source: \"https://developers.openai.com/api/docs/models/gpt-6-astra\",\n },\n \"openai:gpt-5.6-sol\": gpt,\n \"openai:gpt-5.6-terra\": gpt,\n \"openai:gpt-5.6-luna\": gpt,\n \"google:gemini-3.8-flash\": gemini,\n \"google:gemini-3.1-pro-preview\": gemini,\n \"google:gemini-2.5-flash\": profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n \"Thinking-token budget: Low 1,024; Medium 8,192; High 24,576.\",\n gemini.source,\n ),\n \"xai:grok-4.6\": profile(\n \"effort\",\n [\"low\", \"medium\", \"high\", \"xhigh\"],\n \"Always reasons. Choose how much thinking it should do.\",\n \"https://docs.x.ai/developers/model-capabilities/text/reasoning\",\n ),\n \"deepseek:deepseek-flash\": deepseek,\n \"deepseek:deepseek-v4-pro\": deepseek,\n \"mistral:mistral-medium-3-5\": mistral,\n \"mistral:mistral-small-latest\": mistral,\n \"alibaba:qwen3.8-max\": qwen,\n \"alibaba:qwen3.7-plus\": qwen,\n \"moonshot:kimi-k3\": profile(\n \"effort\",\n [\"low\", \"high\", \"max\"],\n \"Always reasons. Choose how much thinking it should do.\",\n \"https://platform.kimi.ai/docs/guide/kimi-k3-quickstart\",\n ),\n \"moonshot:kimi-k2.7-code\": profile(\n \"fixed\",\n [],\n \"Thinking is always enabled; this model has no documented adjustable effort control.\",\n \"https://www.kimi.ai/resources/kimi-k2-7-code\",\n ),\n};\nexport const getModelReasoning = (\n provider: string,\n model: string,\n): ModelReasoning | undefined => MODEL_REASONING[`${provider}:${model}`];\nexport const supportsReasoningSelection = (\n provider: string,\n model: string,\n selection: ReasoningSelection,\n): boolean =>\n selection === \"auto\" ||\n Boolean(getModelReasoning(provider, model)?.efforts.includes(selection));\nexport const reasoningSelectionLabel = (\n selection: ReasoningSelection,\n provider?: string,\n): string => {\n if (selection === \"auto\") return \"Auto\";\n if (selection === \"none\") return provider === \"mistral\" ? \"Minimal\" : \"Off\";\n if (selection === \"xhigh\") return \"Extra high\";\n return selection.charAt(0).toUpperCase() + selection.slice(1);\n};\n",
|
|
10
|
-
"import type { ReasoningConfig, ReasoningEffort } from \"../../../types/ai\";\n\nimport { getModelReasoning } from \"../models/reasoning\";\n\nconst EFFORT_ORDER: ReasoningEffort[] = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n];\n\n// Anthropic models that take adaptive thinking + output_config.effort.\nconst ANTHROPIC_EFFORT = [\n /opus-4-[5-8]/,\n /sonnet-4-6/,\n /fable-5/,\n /mythos-5/,\n /opus-5/,\n /sonnet-5/,\n];\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 /haiku-4-5/,\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 = [\n /opus-4-[78]/,\n /fable-5/,\n /mythos-5/,\n /opus-5/,\n /sonnet-5/,\n];\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-[56]/];\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 none: 0,\n xhigh: 24576,\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 known = getModelReasoning(\"anthropic\", model);\n if (known?.kind === \"effort\") return clampEffort(effort, [...known.efforts]);\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 known = getModelReasoning(\"openai\", model);\n if (known) return clampEffort(effort, [...known.efforts]);\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\n/** Provider-specific Chat Completions controls. Never send a guessed parameter. */\nexport const compatibleReasoningBody = (\n provider: string,\n model: string,\n reasoning?: ReasoningConfig,\n): Record<string, unknown> => {\n if (!reasoning) return {};\n const known = getModelReasoning(provider, model);\n const effort = resolveEffort(reasoning);\n if (!known || !effort) return {};\n if (!known.efforts.includes(effort))\n throw new Error(\n `Unsupported reasoning effort ${effort} for ${provider}:${model}`,\n );\n if (provider === \"alibaba\")\n return effort === \"none\"\n ? { enable_thinking: false }\n : {\n enable_thinking: true,\n thinking_budget: resolveBudgetTokens(reasoning),\n };\n if (provider === \"deepseek\")\n return effort === \"none\"\n ? { thinking: { type: \"disabled\" } }\n : { thinking: { type: \"enabled\" }, reasoning_effort: effort };\n return { reasoning_effort: effort };\n};\nexport const geminiThinkingConfig = (\n model: string,\n reasoning?: ReasoningConfig,\n): Record<string, unknown> | undefined => {\n if (!reasoning) return undefined;\n const profile = getModelReasoning(\"google\", model);\n const effort = resolveEffort(reasoning);\n if (!profile || !effort) return undefined;\n if (!profile.efforts.includes(effort))\n throw new Error(`Unsupported reasoning effort ${effort} for ${model}`);\n if (profile.kind === \"effort\") return { thinkingLevel: effort };\n const budgets: Partial<Record<ReasoningEffort, number>> = {\n none: 0,\n low: 1024,\n medium: 8192,\n high: 24576,\n };\n return { thinkingBudget: reasoning.budgetTokens ?? budgets[effort] };\n};\n",
|
|
9
|
+
"import type { ReasoningEffort } from \"../../../types/ai\";\n\nexport const REASONING_EFFORTS = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n] as const;\nexport type ReasoningSelection = \"auto\" | ReasoningEffort;\nexport type ModelReasoning = {\n kind: \"effort\" | \"budget\" | \"fixed\";\n efforts: readonly ReasoningEffort[];\n description: string;\n source: string;\n};\nexport const isReasoningSelection = (\n value: unknown,\n): value is ReasoningSelection =>\n value === \"auto\" || REASONING_EFFORTS.some((effort) => effort === value);\nconst profile = (\n kind: ModelReasoning[\"kind\"],\n efforts: readonly ReasoningEffort[],\n description: string,\n source: string,\n): ModelReasoning => ({ kind, efforts, description, source });\nconst claude = profile(\n \"effort\",\n [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n \"More thinking for harder problems; higher settings can take longer and use more credits.\",\n \"https://platform.claude.com/docs/en/build-with-claude/effort\",\n);\nconst claude46 = {\n ...claude,\n efforts: [\"low\", \"medium\", \"high\", \"max\"] as const,\n};\nconst opus45 = { ...claude, efforts: [\"low\", \"medium\", \"high\"] as const };\nconst haiku = profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n \"Thinking-token budget: Low 2,048; Medium 8,192; High 16,384. Actual usage can be lower.\",\n \"https://platform.claude.com/docs/en/build-with-claude/extended-thinking\",\n);\nconst gpt = profile(\n \"effort\",\n [\"none\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n claude.description,\n \"https://developers.openai.com/api/docs/models/gpt-5.6-sol\",\n);\nconst gemini = profile(\n \"effort\",\n [\"low\", \"medium\", \"high\"],\n claude.description,\n \"https://ai.google.dev/gemini-api/docs/openai\",\n);\nconst deepseek = profile(\n \"effort\",\n [\"none\", \"low\", \"high\", \"max\"],\n claude.description,\n \"https://api-docs.deepseek.com/guides/thinking_mode/\",\n);\nconst mistral = profile(\n \"effort\",\n [\"none\", \"high\"],\n \"Minimal thinking or full reasoning. This model does not offer intermediate effort levels.\",\n \"https://docs.mistral.ai/studio/conversations/reasoning\",\n);\nconst qwen = profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n haiku.description,\n \"https://help.aliyun.com/en/model-studio/deep-thinking\",\n);\n/** Exact reviewed IDs; unknown models expose only the provider default. Reviewed 2026-09-20;\n * Anthropic effort levels re-checked against the Models API 2026-09-25. */\nexport const MODEL_REASONING: Readonly<Record<string, ModelReasoning>> = {\n \"anthropic:claude-opus-5-5\": claude,\n \"anthropic:claude-sonnet-5-5\": claude,\n \"anthropic:claude-haiku-5-5\": claude,\n \"openai:gpt-6.1-sol\": {\n ...gpt,\n efforts: [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n source: \"https://developers.openai.com/api/docs/models/gpt-6.1-sol\",\n },\n \"openai:gpt-6-luna\": {\n ...gpt,\n source: \"https://developers.openai.com/api/docs/models/gpt-6-luna\",\n },\n \"anthropic:claude-fable-5-1\": claude,\n \"anthropic:claude-opus-5\": claude,\n \"anthropic:claude-sonnet-5\": claude,\n \"anthropic:claude-fable-5\": claude,\n \"anthropic:claude-opus-4-8\": claude,\n \"anthropic:claude-opus-4-7\": claude,\n \"anthropic:claude-sonnet-4-6\": claude46,\n \"anthropic:claude-opus-4-6\": claude46,\n \"anthropic:claude-opus-4-5\": opus45,\n \"anthropic:claude-haiku-4-5\": haiku,\n \"anthropic:claude-sonnet-4-5\": haiku,\n \"openai:gpt-6-astra\": {\n ...gpt,\n efforts: [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n source: \"https://developers.openai.com/api/docs/models/gpt-6-astra\",\n },\n \"openai:gpt-5.6-sol\": gpt,\n \"openai:gpt-5.6-terra\": gpt,\n \"openai:gpt-5.6-luna\": gpt,\n \"google:gemini-3.8-flash\": gemini,\n \"google:gemini-3.1-pro-preview\": gemini,\n \"google:gemini-2.5-flash\": profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n \"Thinking-token budget: Low 1,024; Medium 8,192; High 24,576.\",\n gemini.source,\n ),\n \"xai:grok-4.6\": profile(\n \"effort\",\n [\"low\", \"medium\", \"high\", \"xhigh\"],\n \"Always reasons. Choose how much thinking it should do.\",\n \"https://docs.x.ai/developers/model-capabilities/text/reasoning\",\n ),\n \"deepseek:deepseek-flash\": deepseek,\n \"deepseek:deepseek-v4-pro\": deepseek,\n \"mistral:mistral-medium-3-5\": mistral,\n \"mistral:mistral-small-latest\": mistral,\n \"alibaba:qwen3.8-max\": qwen,\n \"alibaba:qwen3.7-plus\": qwen,\n \"moonshot:kimi-k3\": profile(\n \"effort\",\n [\"low\", \"high\", \"max\"],\n \"Always reasons. Choose how much thinking it should do.\",\n \"https://platform.kimi.ai/docs/guide/kimi-k3-quickstart\",\n ),\n \"moonshot:kimi-k2.7-code\": profile(\n \"fixed\",\n [],\n \"Thinking is always enabled; this model has no documented adjustable effort control.\",\n \"https://www.kimi.ai/resources/kimi-k2-7-code\",\n ),\n};\nexport const getModelReasoning = (\n provider: string,\n model: string,\n): ModelReasoning | undefined => MODEL_REASONING[`${provider}:${model}`];\nexport const supportsReasoningSelection = (\n provider: string,\n model: string,\n selection: ReasoningSelection,\n): boolean =>\n selection === \"auto\" ||\n Boolean(getModelReasoning(provider, model)?.efforts.includes(selection));\nexport const reasoningSelectionLabel = (\n selection: ReasoningSelection,\n provider?: string,\n): string => {\n if (selection === \"auto\") return \"Auto\";\n if (selection === \"none\") return provider === \"mistral\" ? \"Minimal\" : \"Off\";\n if (selection === \"xhigh\") return \"Extra high\";\n return selection.charAt(0).toUpperCase() + selection.slice(1);\n};\n",
|
|
10
|
+
"import type { ReasoningConfig, ReasoningEffort } from \"../../../types/ai\";\n\nimport { getModelReasoning } from \"../models/reasoning\";\n\nconst EFFORT_ORDER: ReasoningEffort[] = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n];\n\n// Anthropic models that take adaptive thinking + output_config.effort.\nconst ANTHROPIC_EFFORT = [\n /opus-4-[5-8]/,\n /sonnet-4-6/,\n /fable-5/,\n /mythos-5/,\n /opus-5/,\n /sonnet-5/,\n /haiku-5/,\n];\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 /haiku-4-5/,\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 = [\n /opus-4-[78]/,\n /fable-5/,\n /mythos-5/,\n /opus-5/,\n /sonnet-5/,\n /haiku-5/,\n];\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-[56]/];\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 none: 0,\n xhigh: 24576,\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 known = getModelReasoning(\"anthropic\", model);\n if (known?.kind === \"effort\") return clampEffort(effort, [...known.efforts]);\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 known = getModelReasoning(\"openai\", model);\n if (known) return clampEffort(effort, [...known.efforts]);\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\n/** Provider-specific Chat Completions controls. Never send a guessed parameter. */\nexport const compatibleReasoningBody = (\n provider: string,\n model: string,\n reasoning?: ReasoningConfig,\n): Record<string, unknown> => {\n if (!reasoning) return {};\n const known = getModelReasoning(provider, model);\n const effort = resolveEffort(reasoning);\n if (!known || !effort) return {};\n if (!known.efforts.includes(effort))\n throw new Error(\n `Unsupported reasoning effort ${effort} for ${provider}:${model}`,\n );\n if (provider === \"alibaba\")\n return effort === \"none\"\n ? { enable_thinking: false }\n : {\n enable_thinking: true,\n thinking_budget: resolveBudgetTokens(reasoning),\n };\n if (provider === \"deepseek\")\n return effort === \"none\"\n ? { thinking: { type: \"disabled\" } }\n : { thinking: { type: \"enabled\" }, reasoning_effort: effort };\n return { reasoning_effort: effort };\n};\nexport const geminiThinkingConfig = (\n model: string,\n reasoning?: ReasoningConfig,\n): Record<string, unknown> | undefined => {\n if (!reasoning) return undefined;\n const profile = getModelReasoning(\"google\", model);\n const effort = resolveEffort(reasoning);\n if (!profile || !effort) return undefined;\n if (!profile.efforts.includes(effort))\n throw new Error(`Unsupported reasoning effort ${effort} for ${model}`);\n if (profile.kind === \"effort\") return { thinkingLevel: effort };\n const budgets: Partial<Record<ReasoningEffort, number>> = {\n none: 0,\n low: 1024,\n medium: 8192,\n high: 24576,\n };\n return { thinkingBudget: reasoning.budgetTokens ?? budgets[effort] };\n};\n",
|
|
11
11
|
"import type {\n AIChunk,\n AIProviderConfig,\n AIProviderContentBlock,\n AIProviderMessage,\n AIProviderStreamParams,\n AIProviderToolDefinition,\n AIToolResultClearing,\n AIUsage,\n} from \"../../../types/ai\";\nimport type {\n AnthropicConfig,\n AnthropicMessage,\n AnthropicRequestOptions,\n AnthropicSSEState,\n AnthropicServerTool,\n} from \"../../../types/anthropic\";\n\n// Opportunistic HTTP/2 multiplexing for outbound HTTPS (Bun 1.3.14+).\n// The `protocol` option lands in @types/bun 1.3.14; widen locally for now.\n// Hard-skip on non-HTTPS — Bun's h2 client throws HTTP2Unsupported on h2c.\ntype H2Init = RequestInit & { protocol?: \"http2\" };\nconst h2IfHttps = (url: string): H2Init =>\n url.startsWith(\"https://\") ? { protocol: \"http2\" } : {};\n\nimport {\n cacheModelLimits,\n capacityJson,\n positiveTokenLimit,\n inputTokenCount,\n} from \"../inputCapacity\";\nimport { instrumentAIProvider } from \"./instrumentation\";\nimport { ProviderError } from \"../errors/providerError\";\nimport {\n anthropicEffortValue,\n anthropicReasoningMode,\n anthropicSupportsSampling,\n resolveBudgetTokens,\n} from \"./reasoning\";\n\nconst DEFAULT_BASE_URL = \"https://api.anthropic.com\";\nconst API_VERSION = \"2023-06-01\";\nconst DEFAULT_MAX_TOKENS = 32000;\nconst EVENT_PREFIX_LENGTH = 7;\nconst DATA_PREFIX_LENGTH = 6;\n\nconst isRecord = (val: unknown): val is Record<string, unknown> =>\n typeof val === \"object\" && val !== null;\n\nconst mapContentBlock = (block: AIProviderContentBlock) => {\n if (block.type === \"thinking\") {\n return {\n signature: block.signature,\n thinking: block.thinking,\n type: \"thinking\",\n };\n }\n\n if (block.type === \"image\") {\n return {\n source: block.source,\n type: \"image\",\n };\n }\n\n if (block.type === \"document\") {\n return {\n source: block.source,\n type: \"document\",\n };\n }\n\n if (block.type === \"tool_result\") {\n return {\n content: block.images?.length\n ? [\n { text: block.content, type: \"text\" },\n ...block.images.map((source) => ({ source, type: \"image\" })),\n ]\n : block.content,\n tool_use_id: block.tool_use_id,\n type: \"tool_result\",\n };\n }\n\n if (block.type === \"tool_use\") {\n if (block.providerData) return { ...block.providerData };\n return {\n id: block.id,\n input: block.input,\n name: block.name,\n type: \"tool_use\",\n };\n }\n\n if (block.type === \"audio\" || block.type === \"video\") {\n throw new Error(`Anthropic does not support ${block.type} content blocks`);\n }\n\n if (block.type === \"provider_data\") {\n return { ...block.data };\n }\n\n return { text: block.content, type: \"text\" };\n};\n\nconst mapMessage = (msg: AIProviderMessage): AnthropicMessage => ({\n content:\n typeof msg.content === \"string\"\n ? msg.content\n : msg.content.map(mapContentBlock),\n role: msg.role === \"system\" ? \"user\" : msg.role,\n});\n\nconst mapToolDefinition = (tool: AIProviderToolDefinition) => ({\n ...(tool.deferLoading ? { defer_loading: true } : {}),\n description: tool.description,\n input_schema: tool.input_schema,\n name: tool.name,\n});\n\n// Searches the deferred tools by natural language; the API runs it and\n// expands what it finds inline, leaving the cached prefix untouched.\nconst TOOL_SEARCH_TOOL = {\n name: \"tool_search_tool_bm25\",\n type: \"tool_search_tool_bm25_20251119\",\n} as const;\nexport const CONTEXT_MANAGEMENT_BETA = \"context-management-2025-06-27\";\n\nconst contextManagementFor = (clearing: AIToolResultClearing) => ({\n edits: [\n {\n ...(clearing.clearAtLeastInputTokens === undefined\n ? {}\n : {\n clear_at_least: {\n type: \"input_tokens\",\n value: clearing.clearAtLeastInputTokens,\n },\n }),\n ...(clearing.excludeTools?.length\n ? { exclude_tools: [...clearing.excludeTools] }\n : {}),\n ...(clearing.keepToolUses === undefined\n ? {}\n : { keep: { type: \"tool_uses\", value: clearing.keepToolUses } }),\n trigger: { type: \"input_tokens\", value: clearing.triggerInputTokens },\n type: \"clear_tool_uses_20250919\",\n },\n ],\n});\n\nconst requestOptionsFor = (\n params: AIProviderStreamParams,\n): AnthropicRequestOptions => {\n const raw = params.providerOptions?.anthropic;\n if (raw === undefined) return {};\n if (!isRecord(raw)) {\n throw new Error(\"providerOptions.anthropic must be an object\");\n }\n if (raw.serverTools !== undefined && !Array.isArray(raw.serverTools)) {\n throw new Error(\"Anthropic serverTools must be an array\");\n }\n\n return raw as AnthropicRequestOptions;\n};\n\nconst assertDomains = (domains: readonly string[] | undefined) => {\n for (const domain of domains ?? []) {\n if (!domain || domain.includes(\"://\")) {\n throw new Error(\n \"Anthropic web-search domains must be non-empty bare domains without a scheme\",\n );\n }\n }\n};\n\nconst mapServerTool = (tool: AnthropicServerTool) => {\n const parameters = tool.parameters ?? {};\n if (parameters.allowedDomains && parameters.blockedDomains) {\n throw new Error(\n \"Anthropic web search accepts allowedDomains or blockedDomains, not both\",\n );\n }\n assertDomains(parameters.allowedDomains);\n assertDomains(parameters.blockedDomains);\n if (\n parameters.maxUses !== undefined &&\n (!Number.isInteger(parameters.maxUses) || parameters.maxUses < 1)\n ) {\n throw new Error(\"Anthropic web-search maxUses must be a positive integer\");\n }\n if (\n parameters.responseInclusion !== undefined &&\n parameters.version !== \"web_search_20260318\"\n ) {\n throw new Error(\n \"Anthropic web-search responseInclusion requires web_search_20260318\",\n );\n }\n const location = parameters.userLocation;\n if (\n location &&\n !location.city &&\n !location.country &&\n !location.region &&\n !location.timezone\n ) {\n throw new Error(\n \"Anthropic web-search userLocation requires a city, region, country, or timezone\",\n );\n }\n\n return {\n ...(parameters.allowedCallers\n ? { allowed_callers: [...parameters.allowedCallers] }\n : {}),\n ...(parameters.allowedDomains\n ? { allowed_domains: [...parameters.allowedDomains] }\n : {}),\n ...(parameters.blockedDomains\n ? { blocked_domains: [...parameters.blockedDomains] }\n : {}),\n ...(parameters.maxUses === undefined\n ? {}\n : { max_uses: parameters.maxUses }),\n name: \"web_search\",\n ...(parameters.responseInclusion\n ? { response_inclusion: parameters.responseInclusion }\n : {}),\n type: parameters.version ?? \"web_search_20250305\",\n ...(location\n ? {\n user_location: {\n ...(location.city ? { city: location.city } : {}),\n ...(location.country ? { country: location.country } : {}),\n ...(location.region ? { region: location.region } : {}),\n ...(location.timezone ? { timezone: location.timezone } : {}),\n type: \"approximate\",\n },\n }\n : {}),\n };\n};\n\n// Attach an ephemeral cache breakpoint to the final content block of a message.\n// `content` may be a bare string (collapse to a single cached text block) or an\n// array of blocks (clone the last block and tag it). Returns a new message; the\n// input is left untouched.\nconst cacheLastContentBlock = (msg: AnthropicMessage): AnthropicMessage => {\n const cacheControl = { type: \"ephemeral\" };\n\n if (typeof msg.content === \"string\") {\n return {\n content: [\n { cache_control: cacheControl, text: msg.content, type: \"text\" },\n ],\n role: msg.role,\n };\n }\n\n if (msg.content.length === 0) return msg;\n\n const blocks = [...msg.content];\n blocks[blocks.length - 1] = {\n ...blocks[blocks.length - 1],\n cache_control: cacheControl,\n };\n\n return { content: blocks, role: msg.role };\n};\n\nconst buildRequestBody = (\n params: AIProviderStreamParams,\n configuredMax: number,\n configCaching: boolean,\n) => {\n // Per-call override wins over the provider default, so a caller can opt a\n // known one-shot out of the 1.25x cache-write (or force caching on).\n const caching = params.promptCaching ?? configCaching;\n // The system block specifically can be overridden by the legacy\n // `cacheSystemPrompt` (tri-state: true/false force it; undefined follows the\n // effective `caching`).\n const cacheSystem = params.cacheSystemPrompt ?? caching;\n const options = requestOptionsFor(params);\n\n const messages: AnthropicMessage[] = params.messages\n .filter((msg) => msg.role !== \"system\")\n .map(mapMessage);\n\n // Rolling prefix breakpoints: when there is prior history, mark the final\n // content block of the last message so the next turn reads this turn's\n // prefix from cache. Skipped on the first turn (nothing to reuse yet).\n //\n // Also mark the latest earlier user message: in an agent loop that is where\n // the previous request's breakpoint sat, so this request finds that entry\n // by exact position. Relying on the API's automatic lookback alone missed\n // it intermittently: a production Studio build re-wrote its whole history\n // (40-53k tokens) on 7 of 48 requests while the identical prefix was\n // cached, and those writes were half the build's cost. Tools, system and\n // these two keep within Anthropic's limit of four breakpoints.\n if (caching && messages.length > 1) {\n const lastIndex = messages.length - 1;\n const last = messages[lastIndex];\n if (last) {\n messages[lastIndex] = cacheLastContentBlock(last);\n }\n const previousUserIndex = messages.findLastIndex(\n (message, index) => index < lastIndex - 1 && message.role === \"user\",\n );\n const previous = messages[previousUserIndex];\n if (previous) {\n messages[previousUserIndex] = cacheLastContentBlock(previous);\n }\n }\n\n // Per-call `params.maxTokens` wins over the per-provider configured default.\n const max =\n typeof params.maxTokens === \"number\" ? params.maxTokens : configuredMax;\n\n const body: Record<string, unknown> = {\n max_tokens: max,\n messages,\n model: params.model,\n stream: true,\n };\n\n if (params.systemPrompt) {\n body.system = cacheSystem\n ? [\n {\n cache_control: { type: \"ephemeral\" },\n text: params.systemPrompt,\n type: \"text\",\n },\n ]\n : params.systemPrompt;\n }\n\n const clientTools: Array<Record<string, unknown>> =\n params.tools?.map(mapToolDefinition) ?? [];\n const deferring = clientTools.some((tool) => tool.defer_loading === true);\n // Tool schemas are the most stable prefix — cache them whenever enabled.\n // The breakpoint goes on the last tool that loads up front: a deferred tool\n // is outside the prefix, and the API refuses cache_control on one.\n const lastLoaded = clientTools.findLastIndex(\n (tool) => tool.defer_loading !== true,\n );\n if (caching && lastLoaded >= 0) {\n clientTools[lastLoaded] = {\n ...clientTools[lastLoaded],\n cache_control: { type: \"ephemeral\" },\n };\n }\n const serverTools = (options.serverTools ?? []).map(mapServerTool);\n const tools = [\n ...clientTools,\n ...(deferring ? [TOOL_SEARCH_TOOL] : []),\n ...serverTools,\n ];\n if (tools.length > 0) {\n body.tools = tools;\n if (params.toolChoice === \"auto\" || params.toolChoice === \"none\") {\n body.tool_choice = { type: params.toolChoice };\n } else if (params.toolChoice === \"required\") {\n body.tool_choice = { type: \"any\" };\n } else if (params.toolChoice && typeof params.toolChoice === \"object\") {\n body.tool_choice = { name: params.toolChoice.name, type: \"tool\" };\n }\n }\n\n if (params.stopSequences && params.stopSequences.length > 0) {\n body.stop_sequences = params.stopSequences;\n }\n\n if (params.toolResultClearing) {\n body.context_management = contextManagementFor(params.toolResultClearing);\n }\n\n const mode =\n params.reasoning && params.reasoning.effort !== \"none\"\n ? anthropicReasoningMode(params.model)\n : \"none\";\n if (params.reasoning?.effort === \"none\") body.thinking = { type: \"disabled\" };\n const thinkingActive = mode !== \"none\";\n\n // Sampling params (temperature/top_p) are rejected outright by Opus 4.7/4.8 and\n // Fable/Mythos, and conflict with thinking on the models that do accept them —\n // so only send them when the model allows sampling AND thinking is off.\n if (!thinkingActive && anthropicSupportsSampling(params.model)) {\n if (typeof params.temperature === \"number\") {\n body.temperature = params.temperature;\n }\n if (typeof params.topP === \"number\") body.top_p = params.topP;\n }\n\n if (mode === \"effort\" || mode === \"adaptive\") {\n body.thinking = { type: \"adaptive\" };\n if (mode === \"effort\" && params.reasoning) {\n const effort = anthropicEffortValue(params.model, params.reasoning);\n if (effort) body.output_config = { effort };\n }\n } else if (mode === \"legacy\" && params.reasoning) {\n const budget = resolveBudgetTokens(params.reasoning);\n if (budget) {\n body.thinking = { budget_tokens: budget, type: \"enabled\" };\n // Extended thinking requires headroom: budget tokens + room to answer.\n body.max_tokens = Math.max(max, budget + max);\n }\n }\n\n return body;\n};\n\nconst classifyLine = (line: string) => {\n if (line.startsWith(\"event: \")) {\n return {\n field: \"event\" as const,\n value: line.slice(EVENT_PREFIX_LENGTH),\n };\n }\n\n if (line.startsWith(\"data: \")) {\n return {\n field: \"data\" as const,\n value: line.slice(DATA_PREFIX_LENGTH),\n };\n }\n\n return undefined;\n};\n\nconst applyClassified = (\n acc: { eventData: string; eventType: string },\n classified: { field: \"event\" | \"data\"; value: string } | undefined,\n) => {\n if (!classified) {\n return acc;\n }\n\n if (classified.field === \"event\") {\n return { eventData: acc.eventData, eventType: classified.value };\n }\n\n return { eventData: classified.value, eventType: acc.eventType };\n};\n\nconst parseEventLines = (event: string) =>\n event\n .split(\"\\n\")\n .reduce((acc, line) => applyClassified(acc, classifyLine(line)), {\n eventData: \"\",\n eventType: \"\",\n });\n\nconst safeParse = (text: string) => {\n try {\n const result: unknown = JSON.parse(text);\n\n return result;\n } catch {\n return undefined;\n }\n};\n\nconst tryParseJson = (text: string) => {\n const result = safeParse(text);\n\n if (isRecord(result)) {\n return result;\n }\n\n return undefined;\n};\n\nconst getRecord = (obj: Record<string, unknown>, key: string) => {\n const val = obj[key];\n\n if (isRecord(val)) {\n return val;\n }\n\n return undefined;\n};\n\nconst getString = (obj: Record<string, unknown>, key: string) => {\n const val = obj[key];\n\n if (typeof val === \"string\") {\n return val;\n }\n\n return \"\";\n};\n\nconst getNumber = (obj: Record<string, unknown>, key: string) => {\n const val = obj[key];\n\n if (typeof val === \"number\") {\n return val;\n }\n\n return 0;\n};\n\n// Report a streaming tool input every 2 KB: often enough to look alive,\n// rarely enough that a large file adds a few dozen small events.\nconst TOOL_INPUT_PROGRESS_CHARS = 2048;\nconst TOOL_INPUT_FIELD_MAX_CHARS = 200;\n// Reads a JSON string starting at `start` (its opening quote); returns the\n// raw text between the quotes and the index after the closing one, or\n// undefined while the string is still arriving.\nconst readJsonString = (json: string, start: number) => {\n for (let index = start + 1; index < json.length; index += 1) {\n if (json[index] === \"\\\\\") index += 1;\n else if (json[index] === '\"')\n return { end: index + 1, raw: json.slice(start + 1, index) };\n }\n\n return undefined;\n};\n\nconst decodeJsonString = (raw: string) => {\n try {\n const value: unknown = JSON.parse(`\"${raw}\"`);\n\n return typeof value === \"string\" ? value : undefined;\n } catch {\n return undefined;\n }\n};\n\n// Top-level string fields already complete in a partial JSON object, such as\n// a tool's path or name. Nested values and string contents are skipped, so a\n// file whose text contains \"path\": \"x\" reports nothing from it.\nconst completeStringFields = (partialJson: string) => {\n const fields: Record<string, string> = {};\n let depth = 0;\n let key: string | undefined;\n let index = 0;\n while (index < partialJson.length) {\n const character = partialJson[index];\n if (character === '\"') {\n const text = readJsonString(partialJson, index);\n if (!text) break;\n if (depth === 1 && key === undefined) {\n const after = partialJson.slice(text.end).trimStart();\n if (after.startsWith(\":\")) key = text.raw;\n } else if (depth === 1 && key !== undefined) {\n const value = decodeJsonString(text.raw);\n if (value !== undefined && value.length <= TOOL_INPUT_FIELD_MAX_CHARS)\n fields[key] = value;\n key = undefined;\n }\n index = text.end;\n continue;\n }\n if (character === \"{\" || character === \"[\") depth += 1;\n else if (character === \"}\" || character === \"]\") depth -= 1;\n else if (character === \",\" && depth === 1) key = undefined;\n index += 1;\n }\n\n return fields;\n};\n\nconst toolInputProgress = (state: AnthropicSSEState): AIChunk => {\n state.toolInputReported = state.toolInputJson.length;\n\n return {\n fields: completeStringFields(state.toolInputJson),\n id: state.currentToolId,\n name: state.currentToolName,\n receivedChars: state.toolInputJson.length,\n type: \"tool_input\",\n };\n};\n\nconst handleContentBlockStart = (\n parsed: Record<string, unknown>,\n state: AnthropicSSEState,\n) => {\n const block = getRecord(parsed, \"content_block\");\n\n if (block && block.type === \"tool_use\") {\n state.currentToolId = getString(block, \"id\");\n state.currentToolName = getString(block, \"name\");\n state.toolInputJson = \"\";\n state.toolInputReported = 0;\n state.isThinkingBlock = false;\n state.currentProviderBlock = undefined;\n\n return toolInputProgress(state);\n } else if (block && block.type === \"thinking\") {\n state.isThinkingBlock = true;\n state.thinkingSignature = \"\";\n state.currentProviderBlock = undefined;\n } else {\n state.isThinkingBlock = false;\n state.currentProviderBlock =\n block && block.type !== \"text\" ? { ...block } : undefined;\n state.providerBlockInputJson = \"\";\n }\n\n return undefined;\n};\n\nconst handleContentBlockDelta = (\n parsed: Record<string, unknown>,\n state: AnthropicSSEState,\n) => {\n const delta = getRecord(parsed, \"delta\");\n\n if (!delta) {\n return undefined;\n }\n\n if (delta.type === \"thinking_delta\") {\n return {\n content: getString(delta, \"thinking\"),\n type: \"thinking\",\n } satisfies AIChunk;\n }\n\n if (delta.type === \"text_delta\") {\n return {\n content: getString(delta, \"text\"),\n type: \"text\",\n } satisfies AIChunk;\n }\n\n if (delta.type === \"citations_delta\") {\n const citation = getRecord(delta, \"citation\");\n if (\n citation?.type === \"web_search_result_location\" &&\n getString(citation, \"url\")\n ) {\n return {\n content: getString(citation, \"cited_text\") || undefined,\n title: getString(citation, \"title\") || undefined,\n type: \"citation\",\n url: getString(citation, \"url\"),\n } satisfies AIChunk;\n }\n }\n\n if (delta.type === \"input_json_delta\") {\n if (state.currentProviderBlock) {\n state.providerBlockInputJson += getString(delta, \"partial_json\");\n } else {\n state.toolInputJson += getString(delta, \"partial_json\");\n if (\n state.toolInputJson.length - state.toolInputReported >=\n TOOL_INPUT_PROGRESS_CHARS\n )\n return toolInputProgress(state);\n }\n }\n\n if (delta.type === \"signature_delta\") {\n state.thinkingSignature += getString(delta, \"signature\");\n }\n\n return undefined;\n};\n\nconst handleContentBlockStop = (state: AnthropicSSEState) => {\n // Emit thinking signature when thinking block completes\n if (state.isThinkingBlock && state.thinkingSignature) {\n state.isThinkingBlock = false;\n const signature = state.thinkingSignature;\n state.thinkingSignature = \"\";\n\n return {\n content: \"\",\n signature,\n type: \"thinking\",\n } satisfies AIChunk;\n }\n\n if (state.currentProviderBlock) {\n const data = { ...state.currentProviderBlock };\n if (state.providerBlockInputJson) {\n data.input =\n tryParseJson(state.providerBlockInputJson) ??\n state.providerBlockInputJson;\n }\n state.currentProviderBlock = undefined;\n state.providerBlockInputJson = \"\";\n return {\n data,\n provider: state.providerName,\n type: \"provider_event\",\n } satisfies AIChunk;\n }\n\n if (!state.currentToolId) {\n return undefined;\n }\n\n const input = tryParseJson(state.toolInputJson) ?? state.toolInputJson;\n\n const chunk: AIChunk = {\n id: state.currentToolId,\n input,\n name: state.currentToolName,\n type: \"tool_use\",\n };\n\n state.currentToolId = \"\";\n state.currentToolName = \"\";\n state.toolInputJson = \"\";\n\n return chunk;\n};\n\nconst extractUsage = (\n usageRecord: Record<string, unknown> | undefined,\n existingUsage: AIUsage | undefined,\n) => {\n if (!usageRecord) {\n return existingUsage;\n }\n\n const normalized: AIUsage = {\n cacheReadInputTokens:\n getNumber(usageRecord, \"cache_read_input_tokens\") ||\n existingUsage?.cacheReadInputTokens ||\n 0,\n cacheWriteInputTokens:\n getNumber(usageRecord, \"cache_creation_input_tokens\") ||\n existingUsage?.cacheWriteInputTokens ||\n 0,\n inputTokens:\n getNumber(usageRecord, \"input_tokens\") || existingUsage?.inputTokens || 0,\n outputTokens:\n getNumber(usageRecord, \"output_tokens\") ||\n existingUsage?.outputTokens ||\n 0,\n costCredits: getNumber(usageRecord, \"cost\") || existingUsage?.costCredits,\n reasoningTokens:\n getNumber(usageRecord, \"reasoning_tokens\") ||\n existingUsage?.reasoningTokens,\n upstreamInferenceCostCredits:\n getNumber(\n getRecord(usageRecord, \"cost_details\") ?? {},\n \"upstream_inference_cost\",\n ) || existingUsage?.upstreamInferenceCostCredits,\n };\n const serverToolUse = getRecord(usageRecord, \"server_tool_use\");\n if (serverToolUse) {\n normalized.serverToolUse = Object.fromEntries(\n Object.entries(serverToolUse).filter(\n (entry): entry is [string, number] => typeof entry[1] === \"number\",\n ),\n );\n }\n\n return normalized;\n};\n\nconst mergeMetadata = (\n source: Record<string, unknown>,\n state: AnthropicSSEState,\n) => {\n const providerMetadata = getRecord(source, \"openrouter_metadata\");\n const generationId = getString(source, \"id\") || undefined;\n const model = getString(source, \"model\") || undefined;\n const provider = getString(source, \"provider\") || undefined;\n const serviceTier = getString(source, \"service_tier\") || undefined;\n if (!providerMetadata && !generationId && !model && !provider && !serviceTier)\n return;\n state.metadata = {\n ...state.metadata,\n generationId: generationId ?? state.metadata?.generationId,\n model: model ?? state.metadata?.model,\n provider: provider ?? state.metadata?.provider,\n providerMetadata: {\n ...state.metadata?.providerMetadata,\n ...providerMetadata,\n },\n serviceTier: serviceTier ?? state.metadata?.serviceTier,\n };\n};\n\nconst handleMessageDelta = (\n parsed: Record<string, unknown>,\n state: AnthropicSSEState,\n) => {\n const deltaUsage = getRecord(parsed, \"usage\");\n state.usage = extractUsage(deltaUsage, state.usage);\n\n const delta = getRecord(parsed, \"delta\");\n const stopReason = delta ? getString(delta, \"stop_reason\") : \"\";\n if (stopReason) state.stopReason = stopReason;\n};\n\nconst handleMessageStart = (\n parsed: Record<string, unknown>,\n state: AnthropicSSEState,\n) => {\n const message = getRecord(parsed, \"message\");\n\n if (!message) {\n return;\n }\n\n const startUsage = getRecord(message, \"usage\");\n state.usage = extractUsage(startUsage, state.usage);\n mergeMetadata(message, state);\n};\n\nconst handleError = (\n parsed: Record<string, unknown>,\n state: AnthropicSSEState,\n) => {\n const error = getRecord(parsed, \"error\");\n const errorMessage = error ? getString(error, \"message\") : \"\";\n const nativeErrorType = error ? getString(error, \"type\") : \"\";\n const errorType = error\n ? getString(error, \"error_type\") || nativeErrorType\n : \"\";\n\n // Mid-stream error events (e.g. \"overloaded_error\") — overloaded/rate-limit\n // types are retryable; everything else is treated as a hard failure.\n const retryable =\n errorType === \"provider_overloaded\" ||\n errorType === \"rate_limit_exceeded\" ||\n errorType === \"provider_unavailable\" ||\n errorType === \"server\" ||\n nativeErrorType === \"overloaded_error\" ||\n nativeErrorType === \"rate_limit_error\" ||\n nativeErrorType === \"api_error\";\n\n throw new ProviderError({\n message: errorMessage || \"Anthropic API error\",\n metadata: error,\n provider: state.providerName,\n retryable,\n type: errorType || null,\n });\n};\n\nconst processEvent = (\n eventType: string,\n parsed: Record<string, unknown>,\n state: AnthropicSSEState,\n) => {\n switch (eventType) {\n case \"content_block_start\": {\n return handleContentBlockStart(parsed, state);\n }\n\n case \"content_block_delta\": {\n return handleContentBlockDelta(parsed, state);\n }\n\n case \"content_block_stop\": {\n return handleContentBlockStop(state);\n }\n\n case \"message_delta\": {\n handleMessageDelta(parsed, state);\n mergeMetadata(parsed, state);\n\n return state.usage\n ? {\n type: \"usage_update\" as const,\n usage: state.usage,\n metadata: state.metadata,\n final: false,\n }\n : undefined;\n }\n\n case \"message_start\": {\n handleMessageStart(parsed, state);\n\n return state.usage\n ? {\n type: \"usage_update\" as const,\n usage: state.usage,\n metadata: state.metadata,\n final: false,\n }\n : undefined;\n }\n\n case \"message_stop\": {\n mergeMetadata(parsed, state);\n return {\n stopReason: state.stopReason,\n metadata: state.metadata,\n type: \"done\" as const,\n usage: state.usage,\n };\n }\n\n case \"error\": {\n handleError(parsed, state);\n\n return undefined;\n }\n\n default: {\n return undefined;\n }\n }\n};\n\nconst processSingleEvent = (event: string, state: AnthropicSSEState) => {\n if (!event.trim()) {\n return undefined;\n }\n\n const { eventData, eventType } = parseEventLines(event);\n\n if (!eventData) {\n return undefined;\n }\n\n const parsed = tryParseJson(eventData);\n\n if (!parsed) {\n return undefined;\n }\n\n return processEvent(eventType, parsed, state);\n};\n\n// Parse and yield each event before parsing the next. A later error in the same\n// network frame must not discard usage already reported earlier in that frame.\nasync function* parseSSEStream(\n body: ReadableStream<Uint8Array>,\n providerName: string,\n signal?: AbortSignal,\n) {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n const state: AnthropicSSEState = {\n buffer: \"\",\n currentToolId: \"\",\n currentToolName: \"\",\n isThinkingBlock: false,\n stopReason: \"\",\n thinkingSignature: \"\",\n toolInputJson: \"\",\n toolInputReported: 0,\n usage: undefined,\n providerName,\n providerBlockInputJson: \"\",\n };\n try {\n while (true) {\n signal?.throwIfAborted();\n // eslint-disable-next-line no-await-in-loop -- Pull and expose events in wire order.\n const { done, value } = await reader.read();\n if (done) return;\n const events = (\n state.buffer + decoder.decode(value, { stream: true })\n ).split(\"\\n\\n\");\n state.buffer = events.pop() ?? \"\";\n for (const event of events) {\n const chunk = processSingleEvent(event, state);\n if (!chunk) continue;\n if (chunk.type === \"tool_input\" && chunk.receivedChars === 0)\n yield {\n type: \"tool_input_start\" as const,\n id: chunk.id,\n name: chunk.name,\n };\n yield chunk;\n if (chunk.type === \"done\") return;\n }\n }\n } finally {\n await reader.cancel().catch(() => undefined);\n reader.releaseLock();\n }\n}\n\nconst fetchAndStream = async function* (\n baseUrl: string,\n config: AnthropicConfig,\n params: AIProviderStreamParams,\n configuredMax: number,\n promptCaching: boolean,\n providerName: string,\n) {\n const builtBody = buildRequestBody(params, configuredMax, promptCaching);\n const body = config.transformRequestBody\n ? config.transformRequestBody(builtBody, params)\n : builtBody;\n\n const target = `${baseUrl}/v1/messages`;\n const fetchImpl = config.fetch ?? fetch;\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(params)\n : (config.headers ?? {});\n const requestHeaders = new Headers(suppliedHeaders);\n requestHeaders.set(\"Content-Type\", \"application/json\");\n if (body.context_management !== undefined) {\n const betas = (requestHeaders.get(\"anthropic-beta\") ?? \"\")\n .split(\",\")\n .map((beta) => beta.trim())\n .filter(Boolean);\n if (!betas.includes(CONTEXT_MANAGEMENT_BETA))\n requestHeaders.set(\n \"anthropic-beta\",\n [...betas, CONTEXT_MANAGEMENT_BETA].join(\",\"),\n );\n }\n if (config.authStyle === \"bearer\") {\n requestHeaders.set(\"Authorization\", `Bearer ${token}`);\n } else {\n requestHeaders.set(\"anthropic-version\", API_VERSION);\n requestHeaders.set(\"x-api-key\", token);\n }\n const response = await fetchImpl(target, {\n ...h2IfHttps(target),\n body: JSON.stringify(body),\n headers: requestHeaders,\n method: \"POST\",\n signal: params.signal,\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n\n throw ProviderError.fromResponse(providerName, response.status, errorText);\n }\n\n if (!response.body) {\n throw new ProviderError({\n message: `${providerName} Messages API returned no response body`,\n provider: providerName,\n retryable: true,\n });\n }\n\n yield* parseSSEStream(response.body, providerName, params.signal);\n};\n\nexport const anthropic = (config: AnthropicConfig): AIProviderConfig => {\n if (!config.apiKey && !config.tokenSource)\n throw new Error(\"anthropic() requires either apiKey or tokenSource\");\n const baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n const configuredMax = config.maxTokens ?? DEFAULT_MAX_TOKENS;\n const promptCaching = config.promptCaching ?? true;\n const providerName = config.providerName ?? \"anthropic\";\n\n const capacityRequest = async (\n params: AIProviderStreamParams,\n path: string,\n body?: Record<string, unknown>,\n ) => {\n const token = config.tokenSource\n ? await config.tokenSource()\n : config.apiKey!;\n const headers = new Headers(\n typeof config.headers === \"function\"\n ? await config.headers(params)\n : config.headers,\n );\n headers.set(\"Content-Type\", \"application/json\");\n if (config.authStyle === \"bearer\")\n headers.set(\"Authorization\", `Bearer ${token}`);\n else {\n headers.set(\"anthropic-version\", API_VERSION);\n headers.set(\"x-api-key\", token);\n }\n return capacityJson(\n await (config.fetch ?? fetch)(`${baseUrl}${path}`, {\n method: body ? \"POST\" : \"GET\",\n headers,\n body: body ? JSON.stringify(body) : undefined,\n signal: params.signal\n ? AbortSignal.any([params.signal, AbortSignal.timeout(15_000)])\n : AbortSignal.timeout(15_000),\n }),\n );\n };\n // Anthropic's token-counting guide excludes hosted search/fetch/code/tool-search,\n // even though the generated API schema lists them. Count the supported caller\n // payload only; generation retains the full body and validates hosted context.\n const countingRequest = (params: AIProviderStreamParams) => {\n const built = buildRequestBody(params, configuredMax, promptCaching);\n const body = config.transformRequestBody\n ? config.transformRequestBody(built, params)\n : built;\n const counted: Record<string, unknown> = {};\n for (const key of [\n \"model\",\n \"messages\",\n \"system\",\n \"tools\",\n \"tool_choice\",\n \"thinking\",\n ])\n if (body[key] !== undefined) counted[key] = body[key];\n const tools = Array.isArray(body.tools) ? body.tools : [];\n const hosted = tools.filter(\n (tool) =>\n isRecord(tool) &&\n typeof tool.type === \"string\" &&\n /^(web_search_|web_fetch_|code_execution_|bash_code_execution_|text_editor_code_execution_|tool_search_tool_)/u.test(\n tool.type,\n ),\n );\n const scope =\n hosted.length > 0 || body.mcp_servers !== undefined\n ? (\"caller-input\" as const)\n : (\"request\" as const);\n if (hosted.length > 0) {\n // Without the search tool a deferred tool is counted as loaded: an\n // overcount, which is the safe side of a capacity check.\n const clientTools = tools\n .filter((tool) => !hosted.includes(tool))\n .map((tool) => {\n if (!isRecord(tool) || tool.defer_loading === undefined) return tool;\n const { defer_loading: _deferred, ...loaded } = tool;\n return loaded;\n });\n if (clientTools.length) counted.tools = clientTools;\n else delete counted.tools;\n const choice = counted.tool_choice;\n if (\n !clientTools.length ||\n (isRecord(choice) &&\n choice.type === \"tool\" &&\n hosted.some((tool) => isRecord(tool) && tool.name === choice.name))\n )\n delete counted.tool_choice;\n }\n return { counted, scope };\n };\n const inputCapacity = {\n outputTokens: (params: AIProviderStreamParams) => {\n const built = buildRequestBody(params, configuredMax, promptCaching);\n const body = config.transformRequestBody\n ? config.transformRequestBody(built, params)\n : built;\n return positiveTokenLimit(body.max_tokens);\n },\n getLimits: cacheModelLimits(\n async (params) => {\n const data = await capacityRequest(\n params,\n `/v1/models/${encodeURIComponent(params.model)}`,\n );\n const context = positiveTokenLimit(data.max_input_tokens);\n return {\n maxInputTokens: context,\n contextWindowTokens: context,\n maxOutputTokens: positiveTokenLimit(data.max_tokens),\n };\n },\n config.tokenSource || typeof config.headers === \"function\" ? 0 : 300_000,\n ),\n countScope: (params: AIProviderStreamParams) =>\n countingRequest(params).scope,\n countTokens: async (params: AIProviderStreamParams) => {\n const { counted } = countingRequest(params);\n return inputTokenCount(\n (await capacityRequest(params, \"/v1/messages/count_tokens\", counted))\n .input_tokens,\n );\n },\n };\n return instrumentAIProvider(\n {\n inputCapacity,\n stream: (params: AIProviderStreamParams) =>\n fetchAndStream(\n baseUrl,\n config,\n params,\n configuredMax,\n promptCaching,\n providerName,\n ),\n },\n providerName,\n );\n};\n"
|
|
12
12
|
],
|
|
13
|
-
"mappings": "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",
|
|
14
|
-
"debugId": "
|
|
13
|
+
"mappings": "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",
|
|
14
|
+
"debugId": "1AF13C77B17DA68C64756E2164756E21",
|
|
15
15
|
"names": []
|
|
16
16
|
}
|
|
@@ -15,6 +15,17 @@ var mistral = profile("effort", ["none", "high"], "Minimal thinking or full reas
|
|
|
15
15
|
var qwen = profile("budget", ["none", "low", "medium", "high"], haiku.description, "https://help.aliyun.com/en/model-studio/deep-thinking");
|
|
16
16
|
var MODEL_REASONING = {
|
|
17
17
|
"anthropic:claude-opus-5-5": claude,
|
|
18
|
+
"anthropic:claude-sonnet-5-5": claude,
|
|
19
|
+
"anthropic:claude-haiku-5-5": claude,
|
|
20
|
+
"openai:gpt-6.1-sol": {
|
|
21
|
+
...gpt,
|
|
22
|
+
efforts: ["low", "medium", "high", "xhigh", "max"],
|
|
23
|
+
source: "https://developers.openai.com/api/docs/models/gpt-6.1-sol"
|
|
24
|
+
},
|
|
25
|
+
"openai:gpt-6-luna": {
|
|
26
|
+
...gpt,
|
|
27
|
+
source: "https://developers.openai.com/api/docs/models/gpt-6-luna"
|
|
28
|
+
},
|
|
18
29
|
"anthropic:claude-fable-5-1": claude,
|
|
19
30
|
"anthropic:claude-opus-5": claude,
|
|
20
31
|
"anthropic:claude-sonnet-5": claude,
|
|
@@ -65,7 +76,8 @@ var ANTHROPIC_EFFORT = [
|
|
|
65
76
|
/fable-5/,
|
|
66
77
|
/mythos-5/,
|
|
67
78
|
/opus-5/,
|
|
68
|
-
/sonnet-5
|
|
79
|
+
/sonnet-5/,
|
|
80
|
+
/haiku-5/
|
|
69
81
|
];
|
|
70
82
|
var ANTHROPIC_ADAPTIVE_ONLY = [];
|
|
71
83
|
var ANTHROPIC_LEGACY_THINKING = [
|
|
@@ -83,7 +95,8 @@ var ANTHROPIC_NO_SAMPLING = [
|
|
|
83
95
|
/fable-5/,
|
|
84
96
|
/mythos-5/,
|
|
85
97
|
/opus-5/,
|
|
86
|
-
/sonnet-5
|
|
98
|
+
/sonnet-5/,
|
|
99
|
+
/haiku-5/
|
|
87
100
|
];
|
|
88
101
|
var ANTHROPIC_MAX_EFFORT = [
|
|
89
102
|
/opus-4-[678]/,
|
|
@@ -947,5 +960,5 @@ export {
|
|
|
947
960
|
gemini2 as gemini
|
|
948
961
|
};
|
|
949
962
|
|
|
950
|
-
//# debugId=
|
|
963
|
+
//# debugId=51F10643F35B2C8E64756E2164756E21
|
|
951
964
|
//# sourceMappingURL=gemini.js.map
|