@anyr/ai-sdk-provider 0.1.0 → 0.1.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/dist/index.js CHANGED
@@ -735,5 +735,3 @@ exports.AnyRouterEmbeddingModel = AnyRouterEmbeddingModel;
735
735
  exports.AnyRouterImageModel = AnyRouterImageModel;
736
736
  exports.anyrouter = anyrouter;
737
737
  exports.createAnyRouter = createAnyRouter;
738
- //# sourceMappingURL=index.js.map
739
- //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -729,5 +729,3 @@ function createAnyRouter(options = {}) {
729
729
  var anyrouter = createAnyRouter();
730
730
 
731
731
  export { AnyRouterChatLanguageModel, AnyRouterEmbeddingModel, AnyRouterImageModel, anyrouter, createAnyRouter };
732
- //# sourceMappingURL=index.mjs.map
733
- //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anyr/ai-sdk-provider",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "The AnyRouter provider for the Vercel AI SDK — call every AnyRouter model through `createAnyRouter`.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -61,7 +61,7 @@
61
61
  "access": "public"
62
62
  },
63
63
  "dependencies": {
64
- "@anyr/sdk": "^0.1.0",
64
+ "@anyr/sdk": "^0.1.1",
65
65
  "@ai-sdk/provider": "^3.0.10",
66
66
  "@ai-sdk/provider-utils": "^4.0.0"
67
67
  },
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/convert-to-anyrouter-chat-messages.ts","../src/anyrouter-chat-language-model.ts","../src/anyrouter-embedding-model.ts","../src/anyrouter-image-model.ts","../src/anyrouter-provider.ts"],"names":["UnsupportedFunctionalityError","z","generateId","parseProviderOptions","postJsonToApi","combineHeaders","createJsonErrorResponseHandler","response","createJsonResponseHandler","createEventSourceResponseHandler","anyRouterErrorSchema","withoutTrailingSlash","DEFAULT_BASE_URL","loadApiKey","provider","NoSuchModelError","AnyRouter"],"mappings":"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","file":"index.js","sourcesContent":["import type {\n LanguageModelV3FilePart,\n LanguageModelV3Message,\n LanguageModelV3Prompt,\n LanguageModelV3ToolCallPart,\n LanguageModelV3ToolResultOutput,\n LanguageModelV3ToolResultPart,\n} from \"@ai-sdk/provider\"\nimport { UnsupportedFunctionalityError } from \"@ai-sdk/provider\"\n\n// ─── OpenAI-compatible message shapes ─────────────────────────────────────\n\ntype TextContentPart = { type: \"text\"; text: string }\ntype ImageUrlContentPart = {\n type: \"image_url\"\n image_url: { url: string; detail?: \"auto\" | \"low\" | \"high\" }\n}\ntype FileContentPart = {\n type: \"file\"\n file: { url?: string; data?: string; media_type?: string }\n}\ntype UserContentPart = TextContentPart | ImageUrlContentPart | FileContentPart\n\ntype AssistantToolCall = {\n id: string\n type: \"function\"\n function: { name: string; arguments: string }\n}\n\nexport type AnyRouterChatMessage =\n | { role: \"system\"; content: string }\n | { role: \"user\"; content: string | UserContentPart[] }\n | {\n role: \"assistant\"\n content: string | null\n tool_calls?: AssistantToolCall[]\n }\n | { role: \"tool\"; tool_call_id: string; content: string }\n\n/**\n * Convert a V3 prompt to an array of OpenAI-compatible chat messages.\n */\nexport function convertToAnyRouterChatMessages(\n prompt: LanguageModelV3Prompt,\n): AnyRouterChatMessage[] {\n const messages: AnyRouterChatMessage[] = []\n\n for (const message of prompt) {\n switch (message.role) {\n case \"system\":\n messages.push({ role: \"system\", content: message.content })\n break\n\n case \"user\":\n messages.push(convertUserMessage(message))\n break\n\n case \"assistant\":\n messages.push(convertAssistantMessage(message))\n break\n\n case \"tool\":\n for (const part of message.content) {\n if (part.type === \"tool-result\") {\n messages.push(convertToolResultMessage(part))\n }\n // tool-approval-response is not representable in OpenAI format — skip\n }\n break\n\n default: {\n const _exhaustive: never = message\n throw new Error(`Unsupported message role: ${(_exhaustive as LanguageModelV3Message).role}`)\n }\n }\n }\n\n return messages\n}\n\nfunction convertUserMessage(\n message: Extract<LanguageModelV3Message, { role: \"user\" }>,\n): AnyRouterChatMessage {\n // Single text part → collapse to string\n if (message.content.length === 1 && message.content[0].type === \"text\") {\n return { role: \"user\", content: message.content[0].text }\n }\n\n const parts: UserContentPart[] = []\n\n for (const part of message.content) {\n if (part.type === \"text\") {\n parts.push({ type: \"text\", text: part.text })\n } else if (part.type === \"file\") {\n const filePart = part as LanguageModelV3FilePart\n const mediaType = filePart.mediaType\n const url = toDataUrlOrString(filePart.data, mediaType)\n\n if (mediaType.startsWith(\"image/\")) {\n parts.push({ type: \"image_url\", image_url: { url } })\n } else {\n parts.push({ type: \"file\", file: { url, media_type: mediaType } })\n }\n } else {\n // Exhaustive: LanguageModelV3Message user content is only text | file.\n // Cast to access type for the error message.\n const unknown = part as { type?: string }\n throw new UnsupportedFunctionalityError({\n functionality: `User message part type: ${unknown.type ?? \"unknown\"}`,\n })\n }\n }\n\n return { role: \"user\", content: parts }\n}\n\nfunction convertAssistantMessage(\n message: Extract<LanguageModelV3Message, { role: \"assistant\" }>,\n): AnyRouterChatMessage {\n let text = \"\"\n const toolCalls: AssistantToolCall[] = []\n\n for (const part of message.content) {\n switch (part.type) {\n case \"text\":\n text += part.text\n break\n\n case \"tool-call\": {\n const tc = part as LanguageModelV3ToolCallPart\n toolCalls.push({\n id: tc.toolCallId,\n type: \"function\",\n function: {\n name: tc.toolName,\n arguments: typeof tc.input === \"string\" ? tc.input : JSON.stringify(tc.input),\n },\n })\n break\n }\n\n // reasoning, file, tool-result inside assistant turn — skip\n default:\n break\n }\n }\n\n const result: Extract<AnyRouterChatMessage, { role: \"assistant\" }> = {\n role: \"assistant\",\n content: text || null,\n }\n\n if (toolCalls.length > 0) {\n result.tool_calls = toolCalls\n }\n\n return result\n}\n\nfunction convertToolResultMessage(part: LanguageModelV3ToolResultPart): AnyRouterChatMessage {\n return {\n role: \"tool\",\n tool_call_id: part.toolCallId,\n content: toolResultOutputToString(part.output),\n }\n}\n\nfunction toolResultOutputToString(output: LanguageModelV3ToolResultOutput): string {\n switch (output.type) {\n case \"text\":\n return output.value\n\n case \"json\":\n return JSON.stringify(output.value)\n\n case \"error-text\":\n return output.value\n\n case \"error-json\":\n return JSON.stringify(output.value)\n\n case \"execution-denied\":\n return output.reason ?? \"Tool execution denied.\"\n\n case \"content\": {\n const segments: string[] = []\n for (const c of output.value) {\n if (c.type === \"text\") {\n segments.push(c.text)\n } else {\n segments.push(`[${c.type}]`)\n }\n }\n return segments.join(\"\\n\")\n }\n\n default:\n return JSON.stringify(output)\n }\n}\n\nfunction toDataUrlOrString(data: string | Uint8Array | URL, mediaType: string): string {\n if (data instanceof URL) return data.toString()\n if (typeof data === \"string\") {\n if (data.startsWith(\"http\") || data.startsWith(\"data:\")) return data\n return `data:${mediaType};base64,${data}`\n }\n return `data:${mediaType};base64,${uint8ArrayToBase64(data)}`\n}\n\nfunction uint8ArrayToBase64(bytes: Uint8Array): string {\n let binary = \"\"\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n","import type {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n LanguageModelV3Usage,\n} from \"@ai-sdk/provider\"\nimport type { ParseResult } from \"@ai-sdk/provider-utils\"\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod\"\nimport { convertToAnyRouterChatMessages } from \"./convert-to-anyrouter-chat-messages\"\nimport type { AnyRouterProviderSettings } from \"./types\"\n\n// ─── Provider options (per-call) ───────────────────────────────────────────\n\nconst anyRouterProviderOptionsSchema = z.object({\n /** Routing preference forwarded as `provider` in the request body. */\n provider: z.record(z.string(), z.unknown()).optional(),\n /** Session ID forwarded as `session_id` in the request body. */\n sessionId: z.string().optional(),\n /** Extra body fields merged in last (highest precedence). */\n extraBody: z.record(z.string(), z.unknown()).optional(),\n})\n\ntype AnyRouterChatProviderOptions = z.infer<typeof anyRouterProviderOptionsSchema>\n\n// ─── Zod schemas for response / chunk validation ───────────────────────────\n\nconst anyRouterErrorSchema = z.object({\n error: z\n .object({\n code: z.string().optional(),\n message: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .optional(),\n})\n\nconst completionUsageSchema = z.object({\n prompt_tokens: z.number().optional(),\n completion_tokens: z.number().optional(),\n total_tokens: z.number().optional(),\n})\n\nconst toolCallSchema = z.object({\n id: z.string().optional(),\n type: z.literal(\"function\").optional(),\n function: z\n .object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n })\n .optional(),\n})\n\nconst toolCallDeltaSchema = z.object({\n index: z.number(),\n id: z.string().optional(),\n type: z.literal(\"function\").optional(),\n function: z\n .object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n })\n .optional(),\n})\n\nconst messageSchema = z.object({\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z.array(toolCallSchema).optional(),\n})\n\nconst choiceSchema = z.object({\n message: messageSchema.optional(),\n finish_reason: z.string().nullish(),\n})\n\nconst generateResponseSchema = z.object({\n id: z.string().optional(),\n model: z.string().optional(),\n choices: z.array(choiceSchema).optional(),\n usage: completionUsageSchema.optional(),\n})\n\nconst deltaSchema = z.object({\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z.array(toolCallDeltaSchema).optional(),\n})\n\nconst streamChoiceSchema = z.object({\n delta: deltaSchema.optional(),\n finish_reason: z.string().nullish(),\n})\n\nconst streamChunkSchema = z.object({\n id: z.string().optional(),\n model: z.string().optional(),\n choices: z.array(streamChoiceSchema).optional(),\n usage: completionUsageSchema.optional(),\n})\n\n// ─── Finish reason mapping ─────────────────────────────────────────────────\n\nfunction mapFinishReason(raw: string | null | undefined): LanguageModelV3FinishReason {\n switch (raw) {\n case \"stop\":\n return { unified: \"stop\", raw: raw }\n case \"length\":\n case \"max_tokens\":\n return { unified: \"length\", raw: raw }\n case \"tool_calls\":\n case \"function_call\":\n return { unified: \"tool-calls\", raw: raw }\n case \"content_filter\":\n return { unified: \"content-filter\", raw: raw }\n default:\n return { unified: \"other\", raw: raw ?? undefined }\n }\n}\n\n// ─── Usage conversion ──────────────────────────────────────────────────────\n\nfunction buildUsage(\n raw:\n | {\n prompt_tokens?: number | null\n completion_tokens?: number | null\n total_tokens?: number | null\n }\n | undefined,\n): LanguageModelV3Usage {\n return {\n inputTokens: {\n total: raw?.prompt_tokens ?? undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: raw?.completion_tokens ?? undefined,\n text: undefined,\n reasoning: undefined,\n },\n }\n}\n\n// ─── Stream transform helpers ──────────────────────────────────────────────\n\ntype StreamChunk = z.infer<typeof streamChunkSchema>\ntype StreamChoice = z.infer<typeof streamChoiceSchema>\ntype ToolCallDelta = z.infer<typeof toolCallDeltaSchema>\ntype ToolCallAccumulator = Record<\n number,\n { id: string; name: string; arguments: string; started: boolean }\n>\ninterface StreamState {\n activeTextId: string | null\n metadataEmitted: boolean\n}\ntype StreamController = TransformStreamDefaultController<LanguageModelV3StreamPart>\n\n/** Emit `response-metadata` once, on the first chunk carrying an id or model. */\nfunction emitResponseMetadata(\n chunk: StreamChunk,\n state: StreamState,\n fallbackModelId: string,\n controller: StreamController,\n): void {\n if (state.metadataEmitted || !(chunk.id || chunk.model)) return\n state.metadataEmitted = true\n controller.enqueue({\n type: \"response-metadata\",\n id: chunk.id,\n modelId: chunk.model ?? fallbackModelId,\n })\n}\n\n/** Emit a text delta, opening a text block on first content. */\nfunction emitTextDelta(content: string, state: StreamState, controller: StreamController): void {\n if (state.activeTextId === null) {\n state.activeTextId = generateId()\n controller.enqueue({ type: \"text-start\", id: state.activeTextId })\n }\n controller.enqueue({ type: \"text-delta\", id: state.activeTextId, delta: content })\n}\n\n/** Accumulate tool-call deltas by index and emit tool-input start/delta parts. */\nfunction emitToolCallDeltas(\n toolCalls: ToolCallDelta[],\n acc: ToolCallAccumulator,\n controller: StreamController,\n): void {\n for (const tcDelta of toolCalls) {\n const idx = tcDelta.index\n if (!acc[idx]) acc[idx] = { id: \"\", name: \"\", arguments: \"\", started: false }\n const entry = acc[idx]\n if (tcDelta.id) entry.id = tcDelta.id\n if (tcDelta.function?.name) entry.name = tcDelta.function.name\n if (tcDelta.function?.arguments) entry.arguments += tcDelta.function.arguments\n\n const toolId = entry.id || `tool-${idx}`\n if (!entry.started && entry.name) {\n entry.started = true\n controller.enqueue({ type: \"tool-input-start\", id: toolId, toolName: entry.name })\n }\n if (tcDelta.function?.arguments) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolId,\n delta: tcDelta.function.arguments,\n })\n }\n }\n}\n\n/** Close any open text + tool blocks and emit the final `finish` part. */\nfunction emitFinish(\n choice: StreamChoice,\n chunk: StreamChunk,\n state: StreamState,\n acc: ToolCallAccumulator,\n controller: StreamController,\n): void {\n if (state.activeTextId !== null) {\n controller.enqueue({ type: \"text-end\", id: state.activeTextId })\n state.activeTextId = null\n }\n for (const [idxStr, entry] of Object.entries(acc)) {\n if (!entry.started) continue\n const toolId = entry.id || `tool-${idxStr}`\n controller.enqueue({ type: \"tool-input-end\", id: toolId })\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: toolId,\n toolName: entry.name,\n input: entry.arguments,\n })\n }\n controller.enqueue({\n type: \"finish\",\n usage: buildUsage(chunk.usage),\n finishReason: mapFinishReason(choice.finish_reason),\n })\n}\n\n// ─── Tool-choice mapping ───────────────────────────────────────────────────\n\ntype OpenAIToolChoice =\n | \"auto\"\n | \"none\"\n | \"required\"\n | { type: \"function\"; function: { name: string } }\n\nfunction mapToolChoice(\n toolChoice: LanguageModelV3CallOptions[\"toolChoice\"],\n): OpenAIToolChoice | undefined {\n if (!toolChoice) return undefined\n switch (toolChoice.type) {\n case \"auto\":\n return \"auto\"\n case \"none\":\n return \"none\"\n case \"required\":\n return \"required\"\n case \"tool\":\n return { type: \"function\", function: { name: toolChoice.toolName } }\n }\n}\n\n// ─── Request body builder helpers ─────────────────────────────────────────\n\ntype ResponseFormat =\n | { type: \"text\" }\n | { type: \"json_object\" }\n | { type: \"json_schema\"; json_schema: unknown }\n\nfunction buildResponseFormat(\n responseFormat: LanguageModelV3CallOptions[\"responseFormat\"],\n): ResponseFormat | undefined {\n if (!responseFormat) return undefined\n if (responseFormat.type === \"text\") return { type: \"text\" }\n if (responseFormat.type === \"json\") {\n if (responseFormat.schema) {\n return {\n type: \"json_schema\",\n json_schema: {\n name: responseFormat.name ?? \"response\",\n description: responseFormat.description,\n schema: responseFormat.schema,\n strict: true,\n },\n }\n }\n return { type: \"json_object\" }\n }\n return undefined\n}\n\nfunction buildTools(\n tools: LanguageModelV3CallOptions[\"tools\"],\n): Array<{ type: \"function\"; function: unknown }> | undefined {\n if (!tools || tools.length === 0) return undefined\n const fns = tools\n .filter((t) => t.type === \"function\")\n .map((t) => ({\n type: \"function\" as const,\n function: {\n name: (t as { name: string }).name,\n description: (t as { description?: string }).description,\n parameters: (t as { inputSchema: unknown }).inputSchema,\n strict: (t as { strict?: boolean }).strict,\n },\n }))\n return fns.length > 0 ? fns : undefined\n}\n\n// ─── Request body builder ──────────────────────────────────────────────────\n\nfunction buildRequestBody(\n modelId: string,\n options: LanguageModelV3CallOptions,\n settings: AnyRouterProviderSettings,\n stream: boolean,\n perCallOptions: AnyRouterChatProviderOptions,\n): Record<string, unknown> {\n const messages = convertToAnyRouterChatMessages(options.prompt)\n const responseFormat = buildResponseFormat(options.responseFormat)\n const tools = buildTools(options.tools)\n const toolChoice = mapToolChoice(options.toolChoice)\n\n // Merge routing / session / extra from settings and per-call options\n const provider = perCallOptions.provider ?? settings.provider\n const sessionId = perCallOptions.sessionId ?? settings.sessionId\n const extraBody = { ...settings.extraBody, ...perCallOptions.extraBody }\n\n const body: Record<string, unknown> = {\n model: modelId,\n messages,\n ...(stream ? { stream: true, stream_options: { include_usage: true } } : {}),\n max_tokens: options.maxOutputTokens,\n temperature: options.temperature,\n top_p: options.topP,\n top_k: options.topK,\n stop: options.stopSequences,\n frequency_penalty: options.frequencyPenalty,\n presence_penalty: options.presencePenalty,\n seed: options.seed,\n response_format: responseFormat,\n tools,\n tool_choice: toolChoice,\n provider: provider ?? undefined,\n session_id: sessionId ?? undefined,\n ...extraBody,\n }\n\n // Strip undefined values\n for (const key of Object.keys(body)) {\n if (body[key] === undefined) delete body[key]\n }\n\n return body\n}\n\n// ─── AnyRouterChatLanguageModel ────────────────────────────────────────────\n\nexport interface AnyRouterChatConfig {\n provider: string\n baseURL: string\n headers: () => Record<string, string | undefined>\n fetch?: typeof globalThis.fetch\n settings: AnyRouterProviderSettings\n}\n\nexport class AnyRouterChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = \"v3\" as const\n readonly provider: string\n readonly modelId: string\n readonly supportedUrls: Record<string, RegExp[]> = {}\n\n private readonly config: AnyRouterChatConfig\n\n constructor(modelId: string, config: AnyRouterChatConfig) {\n this.modelId = modelId\n this.provider = config.provider\n this.config = config\n }\n\n // ─── doGenerate ─────────────────────────────────────────────────────────\n\n async doGenerate(options: LanguageModelV3CallOptions): Promise<LanguageModelV3GenerateResult> {\n const perCallOptions: AnyRouterChatProviderOptions =\n (await parseProviderOptions({\n provider: \"anyrouter\",\n providerOptions: options.providerOptions,\n schema: anyRouterProviderOptionsSchema,\n })) ?? {}\n\n const body = buildRequestBody(\n this.modelId,\n options,\n this.config.settings,\n false,\n perCallOptions,\n )\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: anyRouterErrorSchema,\n errorToMessage: (data) => data.error?.message ?? \"AnyRouter API error\",\n isRetryable: (response) => response.status >= 500,\n }),\n successfulResponseHandler: createJsonResponseHandler(generateResponseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const choice = response.choices?.[0]\n const message = choice?.message\n\n const content: LanguageModelV3GenerateResult[\"content\"] = []\n\n if (message?.content) {\n content.push({ type: \"text\", text: message.content })\n }\n\n if (message?.tool_calls && message.tool_calls.length > 0) {\n for (const tc of message.tool_calls) {\n if (tc.id && tc.function?.name) {\n content.push({\n type: \"tool-call\",\n toolCallId: tc.id,\n toolName: tc.function.name,\n input: tc.function.arguments ?? \"{}\",\n })\n }\n }\n }\n\n return {\n content,\n finishReason: mapFinishReason(choice?.finish_reason),\n usage: buildUsage(response.usage),\n warnings: [],\n request: { body },\n response: {\n id: response.id,\n modelId: response.model,\n headers: responseHeaders,\n },\n }\n }\n\n // ─── doStream ───────────────────────────────────────────────────────────\n\n async doStream(options: LanguageModelV3CallOptions): Promise<LanguageModelV3StreamResult> {\n const perCallOptions: AnyRouterChatProviderOptions =\n (await parseProviderOptions({\n provider: \"anyrouter\",\n providerOptions: options.providerOptions,\n schema: anyRouterProviderOptionsSchema,\n })) ?? {}\n\n const body = buildRequestBody(this.modelId, options, this.config.settings, true, perCallOptions)\n\n const { value: stream, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: anyRouterErrorSchema,\n errorToMessage: (data) => data.error?.message ?? \"AnyRouter API error\",\n isRetryable: (response) => response.status >= 500,\n }),\n successfulResponseHandler: createEventSourceResponseHandler(streamChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const toolCallAccumulator: ToolCallAccumulator = {}\n const state: StreamState = { activeTextId: null, metadataEmitted: false }\n const selfModelId = this.modelId\n\n const transformStream = new TransformStream<\n ParseResult<z.infer<typeof streamChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings: [] })\n },\n\n transform(chunkResult, controller) {\n if (!chunkResult.success) {\n controller.enqueue({ type: \"error\", error: chunkResult.error })\n return\n }\n\n const chunk = chunkResult.value\n const choice = chunk.choices?.[0]\n\n emitResponseMetadata(chunk, state, selfModelId, controller)\n\n const delta = choice?.delta\n if (delta) {\n if (typeof delta.content === \"string\" && delta.content.length > 0) {\n emitTextDelta(delta.content, state, controller)\n }\n if (delta.tool_calls) {\n emitToolCallDeltas(delta.tool_calls, toolCallAccumulator, controller)\n }\n }\n\n if (choice?.finish_reason) {\n emitFinish(choice, chunk, state, toolCallAccumulator, controller)\n }\n },\n\n flush(controller) {\n if (state.activeTextId !== null) {\n controller.enqueue({ type: \"text-end\", id: state.activeTextId })\n }\n },\n })\n\n return {\n stream: stream.pipeThrough(transformStream),\n request: { body },\n response: { headers: responseHeaders },\n }\n }\n}\n","import type {\n EmbeddingModelV3,\n EmbeddingModelV3CallOptions,\n EmbeddingModelV3Result,\n} from \"@ai-sdk/provider\"\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod\"\n\nconst anyRouterErrorSchema = z.object({\n error: z\n .object({\n code: z.string().optional(),\n message: z.string().optional(),\n })\n .optional(),\n})\n\nconst embeddingResponseSchema = z.object({\n data: z.array(\n z.object({\n embedding: z.array(z.number()),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().optional(),\n total_tokens: z.number().optional(),\n })\n .optional(),\n})\n\nexport interface AnyRouterEmbeddingConfig {\n provider: string\n baseURL: string\n headers: () => Record<string, string | undefined>\n fetch?: typeof globalThis.fetch\n}\n\nexport class AnyRouterEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = \"v3\" as const\n readonly provider: string\n readonly modelId: string\n\n /** No hard per-call limit imposed by the provider layer. */\n readonly maxEmbeddingsPerCall: number | undefined = undefined\n readonly supportsParallelCalls = true\n\n private readonly config: AnyRouterEmbeddingConfig\n\n constructor(modelId: string, config: AnyRouterEmbeddingConfig) {\n this.modelId = modelId\n this.provider = config.provider\n this.config = config\n }\n\n async doEmbed(options: EmbeddingModelV3CallOptions): Promise<EmbeddingModelV3Result> {\n const { value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n model: this.modelId,\n input: options.values,\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: anyRouterErrorSchema,\n errorToMessage: (data) => data.error?.message ?? \"AnyRouter embeddings API error\",\n isRetryable: (response) => response.status >= 500,\n }),\n successfulResponseHandler: createJsonResponseHandler(embeddingResponseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const embeddings = response.data.map((d) => d.embedding)\n const tokens = response.usage?.prompt_tokens ?? response.usage?.total_tokens\n\n return {\n embeddings,\n usage: tokens !== undefined ? { tokens } : undefined,\n warnings: [],\n }\n }\n}\n","import type { ImageModelV3, ImageModelV3CallOptions, SharedV3Warning } from \"@ai-sdk/provider\"\nimport { UnsupportedFunctionalityError } from \"@ai-sdk/provider\"\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod\"\n\nconst anyRouterErrorSchema = z.object({\n error: z\n .object({\n code: z.string().optional(),\n message: z.string().optional(),\n })\n .optional(),\n})\n\nconst imageGenerationResponseSchema = z.object({\n created: z.number().optional(),\n data: z.array(\n z.object({\n url: z.string().optional(),\n b64_json: z.string().optional(),\n revised_prompt: z.string().optional(),\n }),\n ),\n})\n\nexport interface AnyRouterImageConfig {\n provider: string\n baseURL: string\n headers: () => Record<string, string | undefined>\n fetch?: typeof globalThis.fetch\n}\n\nexport class AnyRouterImageModel implements ImageModelV3 {\n readonly specificationVersion = \"v3\" as const\n readonly provider: string\n readonly modelId: string\n\n /**\n * Most image generation APIs support only 1 image per call via the\n * standard `/images/generations` endpoint.\n */\n readonly maxImagesPerCall = 1\n\n private readonly config: AnyRouterImageConfig\n\n constructor(modelId: string, config: AnyRouterImageConfig) {\n this.modelId = modelId\n this.provider = config.provider\n this.config = config\n }\n\n async doGenerate(\n options: ImageModelV3CallOptions,\n ): Promise<Awaited<ReturnType<ImageModelV3[\"doGenerate\"]>>> {\n if (options.mask) {\n throw new UnsupportedFunctionalityError({\n functionality: \"mask (inpainting) for AnyRouter image generation\",\n })\n }\n\n const warnings: SharedV3Warning[] = []\n\n if (options.n > 1) {\n warnings.push({\n type: \"unsupported\",\n feature: `n=${options.n} (AnyRouter image endpoint supports n=1 per call)`,\n })\n }\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt: options.prompt ?? \"\",\n n: Math.min(options.n, 1),\n ...(options.size ? { size: options.size } : {}),\n ...(options.seed !== undefined ? { seed: options.seed } : {}),\n response_format: \"b64_json\",\n }\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: anyRouterErrorSchema,\n errorToMessage: (data) => data.error?.message ?? \"AnyRouter images API error\",\n isRetryable: (res) => res.status >= 500,\n }),\n successfulResponseHandler: createJsonResponseHandler(imageGenerationResponseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const images: string[] = []\n for (const item of response.data) {\n if (item.b64_json) {\n images.push(item.b64_json)\n } else if (item.url) {\n images.push(item.url)\n }\n }\n\n return {\n images,\n warnings,\n response: {\n timestamp: new Date(),\n modelId: this.modelId,\n headers: responseHeaders,\n },\n }\n }\n}\n","import type { EmbeddingModelV3, ImageModelV3, LanguageModelV3, ProviderV3 } from \"@ai-sdk/provider\"\nimport { NoSuchModelError } from \"@ai-sdk/provider\"\nimport { combineHeaders, loadApiKey, withoutTrailingSlash } from \"@ai-sdk/provider-utils\"\nimport { AnyRouter, DEFAULT_BASE_URL } from \"@anyr/sdk\"\nimport { AnyRouterChatLanguageModel } from \"./anyrouter-chat-language-model\"\nimport { AnyRouterEmbeddingModel } from \"./anyrouter-embedding-model\"\nimport { AnyRouterImageModel } from \"./anyrouter-image-model\"\nimport type { AnyRouterProviderSettings } from \"./types\"\n\nconst PROVIDER_ID = \"anyrouter\"\n\n// ─── Provider interface ────────────────────────────────────────────────────\n\nexport interface AnyRouterProvider extends ProviderV3 {\n /** Create a chat language model by calling the provider directly. */\n (modelId: string): LanguageModelV3\n\n /** Create a chat language model (explicit method). */\n chat(modelId: string): LanguageModelV3\n\n /**\n * Low-level `@anyr/sdk` client instance.\n * Use this as an escape hatch when you need direct API access.\n */\n readonly client: AnyRouter\n}\n\n// ─── Factory ───────────────────────────────────────────────────────────────\n\n/**\n * Create an AnyRouter provider for the Vercel AI SDK.\n *\n * ```ts\n * import { createAnyRouter } from \"@anyr/ai-sdk-provider\"\n * import { generateText } from \"ai\"\n *\n * const anyrouter = createAnyRouter() // reads ANYROUTER_API_KEY\n * const { text } = await generateText({\n * model: anyrouter(\"openai/gpt-4o-mini\"),\n * prompt: \"Hello!\",\n * })\n * ```\n *\n * The `apiKey` is resolved **lazily** at request time (not at\n * `createAnyRouter()` call time), so the factory can be constructed\n * before environment variables are populated.\n */\nexport function createAnyRouter(options: AnyRouterProviderSettings = {}): AnyRouterProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? DEFAULT_BASE_URL) ?? DEFAULT_BASE_URL\n\n /** Resolve the API key and build request headers lazily at request time. */\n function getHeaders(): Record<string, string | undefined> {\n const apiKey = loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"ANYROUTER_API_KEY\",\n description: \"AnyRouter\",\n })\n return combineHeaders({ Authorization: `Bearer ${apiKey}` }, options.headers)\n }\n\n function chatModel(modelId: string): AnyRouterChatLanguageModel {\n return new AnyRouterChatLanguageModel(modelId, {\n provider: PROVIDER_ID,\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n settings: options,\n })\n }\n\n function embeddingModel(modelId: string): AnyRouterEmbeddingModel {\n return new AnyRouterEmbeddingModel(modelId, {\n provider: PROVIDER_ID,\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n }\n\n function imageModel(modelId: string): AnyRouterImageModel {\n return new AnyRouterImageModel(modelId, {\n provider: PROVIDER_ID,\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n }\n\n /**\n * The callable provider — calling it directly returns a chat model.\n */\n const provider = (modelId: string): LanguageModelV3 => chatModel(modelId)\n\n const providerObj = Object.assign(provider, {\n // ProviderV3 required fields\n specificationVersion: \"v3\" as const,\n\n // ProviderV3 required methods\n languageModel(modelId: string): LanguageModelV3 {\n return chatModel(modelId)\n },\n embeddingModel(modelId: string): EmbeddingModelV3 {\n return embeddingModel(modelId)\n },\n imageModel(modelId: string): ImageModelV3 {\n return imageModel(modelId)\n },\n\n // ProviderV3 optional methods (deprecated textEmbeddingModel alias)\n textEmbeddingModel(modelId: string): EmbeddingModelV3 {\n return embeddingModel(modelId)\n },\n\n // AnyRouter convenience alias\n chat(modelId: string): LanguageModelV3 {\n return chatModel(modelId)\n },\n\n // Unsupported model types — throw NoSuchModelError per ProviderV3 contract\n transcriptionModel(modelId: string): never {\n throw new NoSuchModelError({ modelId, modelType: \"transcriptionModel\" })\n },\n speechModel(modelId: string): never {\n throw new NoSuchModelError({ modelId, modelType: \"speechModel\" })\n },\n })\n\n // Define `client` as a proper getter so that Object.assign does not invoke it\n // eagerly (Object.assign reads property values, which would call the getter\n // and trigger AnyRouter key resolution before any API call).\n Object.defineProperty(providerObj, \"client\", {\n enumerable: true,\n configurable: true,\n get(): AnyRouter {\n return new AnyRouter({\n apiKey: options.apiKey,\n baseURL: options.baseURL,\n headers: options.headers,\n fetch: options.fetch,\n })\n },\n })\n\n return providerObj as unknown as AnyRouterProvider\n}\n\n/**\n * Default AnyRouter provider instance.\n *\n * Uses `ANYROUTER_API_KEY` from the environment (resolved lazily at request time).\n *\n * ```ts\n * import { anyrouter } from \"@anyr/ai-sdk-provider\"\n * import { generateText } from \"ai\"\n *\n * const { text } = await generateText({\n * model: anyrouter(\"openai/gpt-4o-mini\"),\n * prompt: \"Hello!\",\n * })\n * ```\n */\nexport const anyrouter = createAnyRouter()\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/convert-to-anyrouter-chat-messages.ts","../src/anyrouter-chat-language-model.ts","../src/anyrouter-embedding-model.ts","../src/anyrouter-image-model.ts","../src/anyrouter-provider.ts"],"names":["response","anyRouterErrorSchema","z","postJsonToApi","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","UnsupportedFunctionalityError"],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n LanguageModelV3FilePart,\n LanguageModelV3Message,\n LanguageModelV3Prompt,\n LanguageModelV3ToolCallPart,\n LanguageModelV3ToolResultOutput,\n LanguageModelV3ToolResultPart,\n} from \"@ai-sdk/provider\"\nimport { UnsupportedFunctionalityError } from \"@ai-sdk/provider\"\n\n// ─── OpenAI-compatible message shapes ─────────────────────────────────────\n\ntype TextContentPart = { type: \"text\"; text: string }\ntype ImageUrlContentPart = {\n type: \"image_url\"\n image_url: { url: string; detail?: \"auto\" | \"low\" | \"high\" }\n}\ntype FileContentPart = {\n type: \"file\"\n file: { url?: string; data?: string; media_type?: string }\n}\ntype UserContentPart = TextContentPart | ImageUrlContentPart | FileContentPart\n\ntype AssistantToolCall = {\n id: string\n type: \"function\"\n function: { name: string; arguments: string }\n}\n\nexport type AnyRouterChatMessage =\n | { role: \"system\"; content: string }\n | { role: \"user\"; content: string | UserContentPart[] }\n | {\n role: \"assistant\"\n content: string | null\n tool_calls?: AssistantToolCall[]\n }\n | { role: \"tool\"; tool_call_id: string; content: string }\n\n/**\n * Convert a V3 prompt to an array of OpenAI-compatible chat messages.\n */\nexport function convertToAnyRouterChatMessages(\n prompt: LanguageModelV3Prompt,\n): AnyRouterChatMessage[] {\n const messages: AnyRouterChatMessage[] = []\n\n for (const message of prompt) {\n switch (message.role) {\n case \"system\":\n messages.push({ role: \"system\", content: message.content })\n break\n\n case \"user\":\n messages.push(convertUserMessage(message))\n break\n\n case \"assistant\":\n messages.push(convertAssistantMessage(message))\n break\n\n case \"tool\":\n for (const part of message.content) {\n if (part.type === \"tool-result\") {\n messages.push(convertToolResultMessage(part))\n }\n // tool-approval-response is not representable in OpenAI format — skip\n }\n break\n\n default: {\n const _exhaustive: never = message\n throw new Error(`Unsupported message role: ${(_exhaustive as LanguageModelV3Message).role}`)\n }\n }\n }\n\n return messages\n}\n\nfunction convertUserMessage(\n message: Extract<LanguageModelV3Message, { role: \"user\" }>,\n): AnyRouterChatMessage {\n // Single text part → collapse to string\n if (message.content.length === 1 && message.content[0].type === \"text\") {\n return { role: \"user\", content: message.content[0].text }\n }\n\n const parts: UserContentPart[] = []\n\n for (const part of message.content) {\n if (part.type === \"text\") {\n parts.push({ type: \"text\", text: part.text })\n } else if (part.type === \"file\") {\n const filePart = part as LanguageModelV3FilePart\n const mediaType = filePart.mediaType\n const url = toDataUrlOrString(filePart.data, mediaType)\n\n if (mediaType.startsWith(\"image/\")) {\n parts.push({ type: \"image_url\", image_url: { url } })\n } else {\n parts.push({ type: \"file\", file: { url, media_type: mediaType } })\n }\n } else {\n // Exhaustive: LanguageModelV3Message user content is only text | file.\n // Cast to access type for the error message.\n const unknown = part as { type?: string }\n throw new UnsupportedFunctionalityError({\n functionality: `User message part type: ${unknown.type ?? \"unknown\"}`,\n })\n }\n }\n\n return { role: \"user\", content: parts }\n}\n\nfunction convertAssistantMessage(\n message: Extract<LanguageModelV3Message, { role: \"assistant\" }>,\n): AnyRouterChatMessage {\n let text = \"\"\n const toolCalls: AssistantToolCall[] = []\n\n for (const part of message.content) {\n switch (part.type) {\n case \"text\":\n text += part.text\n break\n\n case \"tool-call\": {\n const tc = part as LanguageModelV3ToolCallPart\n toolCalls.push({\n id: tc.toolCallId,\n type: \"function\",\n function: {\n name: tc.toolName,\n arguments: typeof tc.input === \"string\" ? tc.input : JSON.stringify(tc.input),\n },\n })\n break\n }\n\n // reasoning, file, tool-result inside assistant turn — skip\n default:\n break\n }\n }\n\n const result: Extract<AnyRouterChatMessage, { role: \"assistant\" }> = {\n role: \"assistant\",\n content: text || null,\n }\n\n if (toolCalls.length > 0) {\n result.tool_calls = toolCalls\n }\n\n return result\n}\n\nfunction convertToolResultMessage(part: LanguageModelV3ToolResultPart): AnyRouterChatMessage {\n return {\n role: \"tool\",\n tool_call_id: part.toolCallId,\n content: toolResultOutputToString(part.output),\n }\n}\n\nfunction toolResultOutputToString(output: LanguageModelV3ToolResultOutput): string {\n switch (output.type) {\n case \"text\":\n return output.value\n\n case \"json\":\n return JSON.stringify(output.value)\n\n case \"error-text\":\n return output.value\n\n case \"error-json\":\n return JSON.stringify(output.value)\n\n case \"execution-denied\":\n return output.reason ?? \"Tool execution denied.\"\n\n case \"content\": {\n const segments: string[] = []\n for (const c of output.value) {\n if (c.type === \"text\") {\n segments.push(c.text)\n } else {\n segments.push(`[${c.type}]`)\n }\n }\n return segments.join(\"\\n\")\n }\n\n default:\n return JSON.stringify(output)\n }\n}\n\nfunction toDataUrlOrString(data: string | Uint8Array | URL, mediaType: string): string {\n if (data instanceof URL) return data.toString()\n if (typeof data === \"string\") {\n if (data.startsWith(\"http\") || data.startsWith(\"data:\")) return data\n return `data:${mediaType};base64,${data}`\n }\n return `data:${mediaType};base64,${uint8ArrayToBase64(data)}`\n}\n\nfunction uint8ArrayToBase64(bytes: Uint8Array): string {\n let binary = \"\"\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n","import type {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n LanguageModelV3Usage,\n} from \"@ai-sdk/provider\"\nimport type { ParseResult } from \"@ai-sdk/provider-utils\"\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod\"\nimport { convertToAnyRouterChatMessages } from \"./convert-to-anyrouter-chat-messages\"\nimport type { AnyRouterProviderSettings } from \"./types\"\n\n// ─── Provider options (per-call) ───────────────────────────────────────────\n\nconst anyRouterProviderOptionsSchema = z.object({\n /** Routing preference forwarded as `provider` in the request body. */\n provider: z.record(z.string(), z.unknown()).optional(),\n /** Session ID forwarded as `session_id` in the request body. */\n sessionId: z.string().optional(),\n /** Extra body fields merged in last (highest precedence). */\n extraBody: z.record(z.string(), z.unknown()).optional(),\n})\n\ntype AnyRouterChatProviderOptions = z.infer<typeof anyRouterProviderOptionsSchema>\n\n// ─── Zod schemas for response / chunk validation ───────────────────────────\n\nconst anyRouterErrorSchema = z.object({\n error: z\n .object({\n code: z.string().optional(),\n message: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .optional(),\n})\n\nconst completionUsageSchema = z.object({\n prompt_tokens: z.number().optional(),\n completion_tokens: z.number().optional(),\n total_tokens: z.number().optional(),\n})\n\nconst toolCallSchema = z.object({\n id: z.string().optional(),\n type: z.literal(\"function\").optional(),\n function: z\n .object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n })\n .optional(),\n})\n\nconst toolCallDeltaSchema = z.object({\n index: z.number(),\n id: z.string().optional(),\n type: z.literal(\"function\").optional(),\n function: z\n .object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n })\n .optional(),\n})\n\nconst messageSchema = z.object({\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z.array(toolCallSchema).optional(),\n})\n\nconst choiceSchema = z.object({\n message: messageSchema.optional(),\n finish_reason: z.string().nullish(),\n})\n\nconst generateResponseSchema = z.object({\n id: z.string().optional(),\n model: z.string().optional(),\n choices: z.array(choiceSchema).optional(),\n usage: completionUsageSchema.optional(),\n})\n\nconst deltaSchema = z.object({\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z.array(toolCallDeltaSchema).optional(),\n})\n\nconst streamChoiceSchema = z.object({\n delta: deltaSchema.optional(),\n finish_reason: z.string().nullish(),\n})\n\nconst streamChunkSchema = z.object({\n id: z.string().optional(),\n model: z.string().optional(),\n choices: z.array(streamChoiceSchema).optional(),\n usage: completionUsageSchema.optional(),\n})\n\n// ─── Finish reason mapping ─────────────────────────────────────────────────\n\nfunction mapFinishReason(raw: string | null | undefined): LanguageModelV3FinishReason {\n switch (raw) {\n case \"stop\":\n return { unified: \"stop\", raw: raw }\n case \"length\":\n case \"max_tokens\":\n return { unified: \"length\", raw: raw }\n case \"tool_calls\":\n case \"function_call\":\n return { unified: \"tool-calls\", raw: raw }\n case \"content_filter\":\n return { unified: \"content-filter\", raw: raw }\n default:\n return { unified: \"other\", raw: raw ?? undefined }\n }\n}\n\n// ─── Usage conversion ──────────────────────────────────────────────────────\n\nfunction buildUsage(\n raw:\n | {\n prompt_tokens?: number | null\n completion_tokens?: number | null\n total_tokens?: number | null\n }\n | undefined,\n): LanguageModelV3Usage {\n return {\n inputTokens: {\n total: raw?.prompt_tokens ?? undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: raw?.completion_tokens ?? undefined,\n text: undefined,\n reasoning: undefined,\n },\n }\n}\n\n// ─── Stream transform helpers ──────────────────────────────────────────────\n\ntype StreamChunk = z.infer<typeof streamChunkSchema>\ntype StreamChoice = z.infer<typeof streamChoiceSchema>\ntype ToolCallDelta = z.infer<typeof toolCallDeltaSchema>\ntype ToolCallAccumulator = Record<\n number,\n { id: string; name: string; arguments: string; started: boolean }\n>\ninterface StreamState {\n activeTextId: string | null\n metadataEmitted: boolean\n}\ntype StreamController = TransformStreamDefaultController<LanguageModelV3StreamPart>\n\n/** Emit `response-metadata` once, on the first chunk carrying an id or model. */\nfunction emitResponseMetadata(\n chunk: StreamChunk,\n state: StreamState,\n fallbackModelId: string,\n controller: StreamController,\n): void {\n if (state.metadataEmitted || !(chunk.id || chunk.model)) return\n state.metadataEmitted = true\n controller.enqueue({\n type: \"response-metadata\",\n id: chunk.id,\n modelId: chunk.model ?? fallbackModelId,\n })\n}\n\n/** Emit a text delta, opening a text block on first content. */\nfunction emitTextDelta(content: string, state: StreamState, controller: StreamController): void {\n if (state.activeTextId === null) {\n state.activeTextId = generateId()\n controller.enqueue({ type: \"text-start\", id: state.activeTextId })\n }\n controller.enqueue({ type: \"text-delta\", id: state.activeTextId, delta: content })\n}\n\n/** Accumulate tool-call deltas by index and emit tool-input start/delta parts. */\nfunction emitToolCallDeltas(\n toolCalls: ToolCallDelta[],\n acc: ToolCallAccumulator,\n controller: StreamController,\n): void {\n for (const tcDelta of toolCalls) {\n const idx = tcDelta.index\n if (!acc[idx]) acc[idx] = { id: \"\", name: \"\", arguments: \"\", started: false }\n const entry = acc[idx]\n if (tcDelta.id) entry.id = tcDelta.id\n if (tcDelta.function?.name) entry.name = tcDelta.function.name\n if (tcDelta.function?.arguments) entry.arguments += tcDelta.function.arguments\n\n const toolId = entry.id || `tool-${idx}`\n if (!entry.started && entry.name) {\n entry.started = true\n controller.enqueue({ type: \"tool-input-start\", id: toolId, toolName: entry.name })\n }\n if (tcDelta.function?.arguments) {\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolId,\n delta: tcDelta.function.arguments,\n })\n }\n }\n}\n\n/** Close any open text + tool blocks and emit the final `finish` part. */\nfunction emitFinish(\n choice: StreamChoice,\n chunk: StreamChunk,\n state: StreamState,\n acc: ToolCallAccumulator,\n controller: StreamController,\n): void {\n if (state.activeTextId !== null) {\n controller.enqueue({ type: \"text-end\", id: state.activeTextId })\n state.activeTextId = null\n }\n for (const [idxStr, entry] of Object.entries(acc)) {\n if (!entry.started) continue\n const toolId = entry.id || `tool-${idxStr}`\n controller.enqueue({ type: \"tool-input-end\", id: toolId })\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: toolId,\n toolName: entry.name,\n input: entry.arguments,\n })\n }\n controller.enqueue({\n type: \"finish\",\n usage: buildUsage(chunk.usage),\n finishReason: mapFinishReason(choice.finish_reason),\n })\n}\n\n// ─── Tool-choice mapping ───────────────────────────────────────────────────\n\ntype OpenAIToolChoice =\n | \"auto\"\n | \"none\"\n | \"required\"\n | { type: \"function\"; function: { name: string } }\n\nfunction mapToolChoice(\n toolChoice: LanguageModelV3CallOptions[\"toolChoice\"],\n): OpenAIToolChoice | undefined {\n if (!toolChoice) return undefined\n switch (toolChoice.type) {\n case \"auto\":\n return \"auto\"\n case \"none\":\n return \"none\"\n case \"required\":\n return \"required\"\n case \"tool\":\n return { type: \"function\", function: { name: toolChoice.toolName } }\n }\n}\n\n// ─── Request body builder helpers ─────────────────────────────────────────\n\ntype ResponseFormat =\n | { type: \"text\" }\n | { type: \"json_object\" }\n | { type: \"json_schema\"; json_schema: unknown }\n\nfunction buildResponseFormat(\n responseFormat: LanguageModelV3CallOptions[\"responseFormat\"],\n): ResponseFormat | undefined {\n if (!responseFormat) return undefined\n if (responseFormat.type === \"text\") return { type: \"text\" }\n if (responseFormat.type === \"json\") {\n if (responseFormat.schema) {\n return {\n type: \"json_schema\",\n json_schema: {\n name: responseFormat.name ?? \"response\",\n description: responseFormat.description,\n schema: responseFormat.schema,\n strict: true,\n },\n }\n }\n return { type: \"json_object\" }\n }\n return undefined\n}\n\nfunction buildTools(\n tools: LanguageModelV3CallOptions[\"tools\"],\n): Array<{ type: \"function\"; function: unknown }> | undefined {\n if (!tools || tools.length === 0) return undefined\n const fns = tools\n .filter((t) => t.type === \"function\")\n .map((t) => ({\n type: \"function\" as const,\n function: {\n name: (t as { name: string }).name,\n description: (t as { description?: string }).description,\n parameters: (t as { inputSchema: unknown }).inputSchema,\n strict: (t as { strict?: boolean }).strict,\n },\n }))\n return fns.length > 0 ? fns : undefined\n}\n\n// ─── Request body builder ──────────────────────────────────────────────────\n\nfunction buildRequestBody(\n modelId: string,\n options: LanguageModelV3CallOptions,\n settings: AnyRouterProviderSettings,\n stream: boolean,\n perCallOptions: AnyRouterChatProviderOptions,\n): Record<string, unknown> {\n const messages = convertToAnyRouterChatMessages(options.prompt)\n const responseFormat = buildResponseFormat(options.responseFormat)\n const tools = buildTools(options.tools)\n const toolChoice = mapToolChoice(options.toolChoice)\n\n // Merge routing / session / extra from settings and per-call options\n const provider = perCallOptions.provider ?? settings.provider\n const sessionId = perCallOptions.sessionId ?? settings.sessionId\n const extraBody = { ...settings.extraBody, ...perCallOptions.extraBody }\n\n const body: Record<string, unknown> = {\n model: modelId,\n messages,\n ...(stream ? { stream: true, stream_options: { include_usage: true } } : {}),\n max_tokens: options.maxOutputTokens,\n temperature: options.temperature,\n top_p: options.topP,\n top_k: options.topK,\n stop: options.stopSequences,\n frequency_penalty: options.frequencyPenalty,\n presence_penalty: options.presencePenalty,\n seed: options.seed,\n response_format: responseFormat,\n tools,\n tool_choice: toolChoice,\n provider: provider ?? undefined,\n session_id: sessionId ?? undefined,\n ...extraBody,\n }\n\n // Strip undefined values\n for (const key of Object.keys(body)) {\n if (body[key] === undefined) delete body[key]\n }\n\n return body\n}\n\n// ─── AnyRouterChatLanguageModel ────────────────────────────────────────────\n\nexport interface AnyRouterChatConfig {\n provider: string\n baseURL: string\n headers: () => Record<string, string | undefined>\n fetch?: typeof globalThis.fetch\n settings: AnyRouterProviderSettings\n}\n\nexport class AnyRouterChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = \"v3\" as const\n readonly provider: string\n readonly modelId: string\n readonly supportedUrls: Record<string, RegExp[]> = {}\n\n private readonly config: AnyRouterChatConfig\n\n constructor(modelId: string, config: AnyRouterChatConfig) {\n this.modelId = modelId\n this.provider = config.provider\n this.config = config\n }\n\n // ─── doGenerate ─────────────────────────────────────────────────────────\n\n async doGenerate(options: LanguageModelV3CallOptions): Promise<LanguageModelV3GenerateResult> {\n const perCallOptions: AnyRouterChatProviderOptions =\n (await parseProviderOptions({\n provider: \"anyrouter\",\n providerOptions: options.providerOptions,\n schema: anyRouterProviderOptionsSchema,\n })) ?? {}\n\n const body = buildRequestBody(\n this.modelId,\n options,\n this.config.settings,\n false,\n perCallOptions,\n )\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: anyRouterErrorSchema,\n errorToMessage: (data) => data.error?.message ?? \"AnyRouter API error\",\n isRetryable: (response) => response.status >= 500,\n }),\n successfulResponseHandler: createJsonResponseHandler(generateResponseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const choice = response.choices?.[0]\n const message = choice?.message\n\n const content: LanguageModelV3GenerateResult[\"content\"] = []\n\n if (message?.content) {\n content.push({ type: \"text\", text: message.content })\n }\n\n if (message?.tool_calls && message.tool_calls.length > 0) {\n for (const tc of message.tool_calls) {\n if (tc.id && tc.function?.name) {\n content.push({\n type: \"tool-call\",\n toolCallId: tc.id,\n toolName: tc.function.name,\n input: tc.function.arguments ?? \"{}\",\n })\n }\n }\n }\n\n return {\n content,\n finishReason: mapFinishReason(choice?.finish_reason),\n usage: buildUsage(response.usage),\n warnings: [],\n request: { body },\n response: {\n id: response.id,\n modelId: response.model,\n headers: responseHeaders,\n },\n }\n }\n\n // ─── doStream ───────────────────────────────────────────────────────────\n\n async doStream(options: LanguageModelV3CallOptions): Promise<LanguageModelV3StreamResult> {\n const perCallOptions: AnyRouterChatProviderOptions =\n (await parseProviderOptions({\n provider: \"anyrouter\",\n providerOptions: options.providerOptions,\n schema: anyRouterProviderOptionsSchema,\n })) ?? {}\n\n const body = buildRequestBody(this.modelId, options, this.config.settings, true, perCallOptions)\n\n const { value: stream, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: anyRouterErrorSchema,\n errorToMessage: (data) => data.error?.message ?? \"AnyRouter API error\",\n isRetryable: (response) => response.status >= 500,\n }),\n successfulResponseHandler: createEventSourceResponseHandler(streamChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const toolCallAccumulator: ToolCallAccumulator = {}\n const state: StreamState = { activeTextId: null, metadataEmitted: false }\n const selfModelId = this.modelId\n\n const transformStream = new TransformStream<\n ParseResult<z.infer<typeof streamChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: \"stream-start\", warnings: [] })\n },\n\n transform(chunkResult, controller) {\n if (!chunkResult.success) {\n controller.enqueue({ type: \"error\", error: chunkResult.error })\n return\n }\n\n const chunk = chunkResult.value\n const choice = chunk.choices?.[0]\n\n emitResponseMetadata(chunk, state, selfModelId, controller)\n\n const delta = choice?.delta\n if (delta) {\n if (typeof delta.content === \"string\" && delta.content.length > 0) {\n emitTextDelta(delta.content, state, controller)\n }\n if (delta.tool_calls) {\n emitToolCallDeltas(delta.tool_calls, toolCallAccumulator, controller)\n }\n }\n\n if (choice?.finish_reason) {\n emitFinish(choice, chunk, state, toolCallAccumulator, controller)\n }\n },\n\n flush(controller) {\n if (state.activeTextId !== null) {\n controller.enqueue({ type: \"text-end\", id: state.activeTextId })\n }\n },\n })\n\n return {\n stream: stream.pipeThrough(transformStream),\n request: { body },\n response: { headers: responseHeaders },\n }\n }\n}\n","import type {\n EmbeddingModelV3,\n EmbeddingModelV3CallOptions,\n EmbeddingModelV3Result,\n} from \"@ai-sdk/provider\"\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod\"\n\nconst anyRouterErrorSchema = z.object({\n error: z\n .object({\n code: z.string().optional(),\n message: z.string().optional(),\n })\n .optional(),\n})\n\nconst embeddingResponseSchema = z.object({\n data: z.array(\n z.object({\n embedding: z.array(z.number()),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().optional(),\n total_tokens: z.number().optional(),\n })\n .optional(),\n})\n\nexport interface AnyRouterEmbeddingConfig {\n provider: string\n baseURL: string\n headers: () => Record<string, string | undefined>\n fetch?: typeof globalThis.fetch\n}\n\nexport class AnyRouterEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = \"v3\" as const\n readonly provider: string\n readonly modelId: string\n\n /** No hard per-call limit imposed by the provider layer. */\n readonly maxEmbeddingsPerCall: number | undefined = undefined\n readonly supportsParallelCalls = true\n\n private readonly config: AnyRouterEmbeddingConfig\n\n constructor(modelId: string, config: AnyRouterEmbeddingConfig) {\n this.modelId = modelId\n this.provider = config.provider\n this.config = config\n }\n\n async doEmbed(options: EmbeddingModelV3CallOptions): Promise<EmbeddingModelV3Result> {\n const { value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n model: this.modelId,\n input: options.values,\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: anyRouterErrorSchema,\n errorToMessage: (data) => data.error?.message ?? \"AnyRouter embeddings API error\",\n isRetryable: (response) => response.status >= 500,\n }),\n successfulResponseHandler: createJsonResponseHandler(embeddingResponseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const embeddings = response.data.map((d) => d.embedding)\n const tokens = response.usage?.prompt_tokens ?? response.usage?.total_tokens\n\n return {\n embeddings,\n usage: tokens !== undefined ? { tokens } : undefined,\n warnings: [],\n }\n }\n}\n","import type { ImageModelV3, ImageModelV3CallOptions, SharedV3Warning } from \"@ai-sdk/provider\"\nimport { UnsupportedFunctionalityError } from \"@ai-sdk/provider\"\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod\"\n\nconst anyRouterErrorSchema = z.object({\n error: z\n .object({\n code: z.string().optional(),\n message: z.string().optional(),\n })\n .optional(),\n})\n\nconst imageGenerationResponseSchema = z.object({\n created: z.number().optional(),\n data: z.array(\n z.object({\n url: z.string().optional(),\n b64_json: z.string().optional(),\n revised_prompt: z.string().optional(),\n }),\n ),\n})\n\nexport interface AnyRouterImageConfig {\n provider: string\n baseURL: string\n headers: () => Record<string, string | undefined>\n fetch?: typeof globalThis.fetch\n}\n\nexport class AnyRouterImageModel implements ImageModelV3 {\n readonly specificationVersion = \"v3\" as const\n readonly provider: string\n readonly modelId: string\n\n /**\n * Most image generation APIs support only 1 image per call via the\n * standard `/images/generations` endpoint.\n */\n readonly maxImagesPerCall = 1\n\n private readonly config: AnyRouterImageConfig\n\n constructor(modelId: string, config: AnyRouterImageConfig) {\n this.modelId = modelId\n this.provider = config.provider\n this.config = config\n }\n\n async doGenerate(\n options: ImageModelV3CallOptions,\n ): Promise<Awaited<ReturnType<ImageModelV3[\"doGenerate\"]>>> {\n if (options.mask) {\n throw new UnsupportedFunctionalityError({\n functionality: \"mask (inpainting) for AnyRouter image generation\",\n })\n }\n\n const warnings: SharedV3Warning[] = []\n\n if (options.n > 1) {\n warnings.push({\n type: \"unsupported\",\n feature: `n=${options.n} (AnyRouter image endpoint supports n=1 per call)`,\n })\n }\n\n const body: Record<string, unknown> = {\n model: this.modelId,\n prompt: options.prompt ?? \"\",\n n: Math.min(options.n, 1),\n ...(options.size ? { size: options.size } : {}),\n ...(options.seed !== undefined ? { seed: options.seed } : {}),\n response_format: \"b64_json\",\n }\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: anyRouterErrorSchema,\n errorToMessage: (data) => data.error?.message ?? \"AnyRouter images API error\",\n isRetryable: (res) => res.status >= 500,\n }),\n successfulResponseHandler: createJsonResponseHandler(imageGenerationResponseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const images: string[] = []\n for (const item of response.data) {\n if (item.b64_json) {\n images.push(item.b64_json)\n } else if (item.url) {\n images.push(item.url)\n }\n }\n\n return {\n images,\n warnings,\n response: {\n timestamp: new Date(),\n modelId: this.modelId,\n headers: responseHeaders,\n },\n }\n }\n}\n","import type { EmbeddingModelV3, ImageModelV3, LanguageModelV3, ProviderV3 } from \"@ai-sdk/provider\"\nimport { NoSuchModelError } from \"@ai-sdk/provider\"\nimport { combineHeaders, loadApiKey, withoutTrailingSlash } from \"@ai-sdk/provider-utils\"\nimport { AnyRouter, DEFAULT_BASE_URL } from \"@anyr/sdk\"\nimport { AnyRouterChatLanguageModel } from \"./anyrouter-chat-language-model\"\nimport { AnyRouterEmbeddingModel } from \"./anyrouter-embedding-model\"\nimport { AnyRouterImageModel } from \"./anyrouter-image-model\"\nimport type { AnyRouterProviderSettings } from \"./types\"\n\nconst PROVIDER_ID = \"anyrouter\"\n\n// ─── Provider interface ────────────────────────────────────────────────────\n\nexport interface AnyRouterProvider extends ProviderV3 {\n /** Create a chat language model by calling the provider directly. */\n (modelId: string): LanguageModelV3\n\n /** Create a chat language model (explicit method). */\n chat(modelId: string): LanguageModelV3\n\n /**\n * Low-level `@anyr/sdk` client instance.\n * Use this as an escape hatch when you need direct API access.\n */\n readonly client: AnyRouter\n}\n\n// ─── Factory ───────────────────────────────────────────────────────────────\n\n/**\n * Create an AnyRouter provider for the Vercel AI SDK.\n *\n * ```ts\n * import { createAnyRouter } from \"@anyr/ai-sdk-provider\"\n * import { generateText } from \"ai\"\n *\n * const anyrouter = createAnyRouter() // reads ANYROUTER_API_KEY\n * const { text } = await generateText({\n * model: anyrouter(\"openai/gpt-4o-mini\"),\n * prompt: \"Hello!\",\n * })\n * ```\n *\n * The `apiKey` is resolved **lazily** at request time (not at\n * `createAnyRouter()` call time), so the factory can be constructed\n * before environment variables are populated.\n */\nexport function createAnyRouter(options: AnyRouterProviderSettings = {}): AnyRouterProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? DEFAULT_BASE_URL) ?? DEFAULT_BASE_URL\n\n /** Resolve the API key and build request headers lazily at request time. */\n function getHeaders(): Record<string, string | undefined> {\n const apiKey = loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"ANYROUTER_API_KEY\",\n description: \"AnyRouter\",\n })\n return combineHeaders({ Authorization: `Bearer ${apiKey}` }, options.headers)\n }\n\n function chatModel(modelId: string): AnyRouterChatLanguageModel {\n return new AnyRouterChatLanguageModel(modelId, {\n provider: PROVIDER_ID,\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n settings: options,\n })\n }\n\n function embeddingModel(modelId: string): AnyRouterEmbeddingModel {\n return new AnyRouterEmbeddingModel(modelId, {\n provider: PROVIDER_ID,\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n }\n\n function imageModel(modelId: string): AnyRouterImageModel {\n return new AnyRouterImageModel(modelId, {\n provider: PROVIDER_ID,\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n }\n\n /**\n * The callable provider — calling it directly returns a chat model.\n */\n const provider = (modelId: string): LanguageModelV3 => chatModel(modelId)\n\n const providerObj = Object.assign(provider, {\n // ProviderV3 required fields\n specificationVersion: \"v3\" as const,\n\n // ProviderV3 required methods\n languageModel(modelId: string): LanguageModelV3 {\n return chatModel(modelId)\n },\n embeddingModel(modelId: string): EmbeddingModelV3 {\n return embeddingModel(modelId)\n },\n imageModel(modelId: string): ImageModelV3 {\n return imageModel(modelId)\n },\n\n // ProviderV3 optional methods (deprecated textEmbeddingModel alias)\n textEmbeddingModel(modelId: string): EmbeddingModelV3 {\n return embeddingModel(modelId)\n },\n\n // AnyRouter convenience alias\n chat(modelId: string): LanguageModelV3 {\n return chatModel(modelId)\n },\n\n // Unsupported model types — throw NoSuchModelError per ProviderV3 contract\n transcriptionModel(modelId: string): never {\n throw new NoSuchModelError({ modelId, modelType: \"transcriptionModel\" })\n },\n speechModel(modelId: string): never {\n throw new NoSuchModelError({ modelId, modelType: \"speechModel\" })\n },\n })\n\n // Define `client` as a proper getter so that Object.assign does not invoke it\n // eagerly (Object.assign reads property values, which would call the getter\n // and trigger AnyRouter key resolution before any API call).\n Object.defineProperty(providerObj, \"client\", {\n enumerable: true,\n configurable: true,\n get(): AnyRouter {\n return new AnyRouter({\n apiKey: options.apiKey,\n baseURL: options.baseURL,\n headers: options.headers,\n fetch: options.fetch,\n })\n },\n })\n\n return providerObj as unknown as AnyRouterProvider\n}\n\n/**\n * Default AnyRouter provider instance.\n *\n * Uses `ANYROUTER_API_KEY` from the environment (resolved lazily at request time).\n *\n * ```ts\n * import { anyrouter } from \"@anyr/ai-sdk-provider\"\n * import { generateText } from \"ai\"\n *\n * const { text } = await generateText({\n * model: anyrouter(\"openai/gpt-4o-mini\"),\n * prompt: \"Hello!\",\n * })\n * ```\n */\nexport const anyrouter = createAnyRouter()\n"]}