@ax-llm/ax-ai-sdk-provider 22.0.7 → 22.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,70 +6,40 @@ Install the ax provider package
6
6
  npm i @ax-llm/ax-ai-sdk-provider
7
7
  ```
8
8
 
9
- ### AI SDK v5 Compatibility
9
+ ### AI SDK v7 Compatibility
10
10
 
11
- This provider is fully compatible with **AI SDK v5** and implements the `LanguageModelV2` specification. It supports:
11
+ This provider is compatible with **AI SDK v7** and implements the `LanguageModelV3` specification. It supports:
12
12
 
13
- - **Text Generation**: Standard text completion and chat functionality
14
- - **Tool Calling**: Function calls with proper serialization/deserialization
15
- - **Streaming**: Enhanced streaming with proper lifecycle events (`stream-start`, `text-start`, `text-delta`, `text-end`, `finish`)
16
- - **Multi-modal**: Support for text and file inputs (images, documents)
17
- - **Token Usage**: Accurate tracking with `inputTokens`, `outputTokens`, and `totalTokens`
13
+ - **Text Generation**: Standard text completion and chat functionality
14
+ - **Tool Calling**: Function calls with proper serialization/deserialization
15
+ - **Streaming**: Streaming lifecycle events (`stream-start`, `text-start`, `text-delta`, `text-end`, `finish`)
16
+ - **Multi-modal**: Support for text and file inputs (images, documents)
17
+ - **Token Usage**: AI SDK v7 usage shape with nested `inputTokens` and `outputTokens`
18
18
 
19
- > **Note**: If you're upgrading from AI SDK v4, this provider handles all the necessary conversions between v1 and v2 specification formats automatically.
19
+ AI SDK v7 requires Node.js 22+, uses `LanguageModelV3` provider models, and keeps React Server Component helpers such as `streamUI` in `@ai-sdk/rsc`.
20
20
 
21
21
  ## Usage
22
22
 
23
- You can use it with the AI SDK, either with the AI provider or the Agent Provider
23
+ Use `AxAIProvider` anywhere AI SDK v7 accepts a language model.
24
24
 
25
25
  ```typescript
26
- const ai = ai({
27
- name: "openai",
28
- apiKey: process.env["OPENAI_APIKEY"] ?? "",
29
- });
30
-
31
- // Create a model using the provider
32
- const model = new AxAIProvider(ai);
26
+ import { generateText } from 'ai';
27
+ import { ai } from '@ax-llm/ax';
28
+ import { AxAIProvider } from '@ax-llm/ax-ai-sdk-provider';
33
29
 
34
- export const foodAgent = new AxAgent({
35
- name: "food-search",
36
- description:
37
- "Use this agent to find restaurants based on what the customer wants",
38
- signature,
39
- functions,
30
+ const axAI = ai({
31
+ name: 'openai',
32
+ apiKey: process.env.OPENAI_APIKEY ?? '',
40
33
  });
41
34
 
42
- // Get vercel ai sdk state
43
- const aiState = getMutableAIState();
35
+ const model = new AxAIProvider(axAI);
44
36
 
45
- // Create an agent for a specific task
46
- const foodAgent = new AxAgentProvider(ai, {
47
- agent: foodAgent,
48
- updateState: (state) => {
49
- aiState.done({ ...aiState.get(), state });
50
- },
51
- generate: async ({ restaurant, priceRange }) => {
52
- return (
53
- <BotCard>
54
- <h1>{restaurant as string} {priceRange as string}</h1>
55
- </BotCard>
56
- );
57
- },
37
+ const result = await generateText({
38
+ model,
39
+ prompt: 'Write a haiku about typed AI SDK providers.',
58
40
  });
59
41
 
60
- // Use with streamUI a critical part of building chat UIs in the AI SDK
61
- const result = await streamUI({
62
- model,
63
- initial: <SpinnerMessage />,
64
- messages: [
65
- // ...
66
- ],
67
- text: ({ content, done, delta }) => {
68
- // ...
69
- },
70
- tools: {
71
- // @ts-ignore
72
- "find-food": foodAgent,
73
- },
74
- });
42
+ console.log(result.text);
75
43
  ```
44
+
45
+ For React Server Component helpers such as `streamUI`, install `@ai-sdk/rsc` and import those helpers from that package.
package/index.cjs CHANGED
@@ -35,9 +35,6 @@ __export(index_exports, {
35
35
  });
36
36
  module.exports = __toCommonJS(index_exports);
37
37
 
38
- // provider.ts
39
- var import_web = require("stream/web");
40
-
41
38
  // ../../node_modules/nanoid/index.js
42
39
  var import_crypto = __toESM(require("crypto"), 1);
43
40
  var POOL_SIZE_MULTIPLIER = 128;
@@ -205,7 +202,7 @@ var AxAgentProvider = class {
205
202
  }
206
203
  };
207
204
  var AxAIProvider = class {
208
- specificationVersion = "v2";
205
+ specificationVersion = "v3";
209
206
  supportedUrls = {};
210
207
  ai;
211
208
  config;
@@ -246,11 +243,7 @@ var AxAIProvider = class {
246
243
  return {
247
244
  content,
248
245
  finishReason: mapAxFinishReason(choice.finishReason),
249
- usage: {
250
- inputTokens: res.modelUsage?.tokens?.promptTokens ?? 0,
251
- outputTokens: res.modelUsage?.tokens?.completionTokens ?? 0,
252
- totalTokens: (res.modelUsage?.tokens?.promptTokens ?? 0) + (res.modelUsage?.tokens?.completionTokens ?? 0)
253
- },
246
+ usage: createUsage(res.modelUsage?.tokens),
254
247
  ...providerMetadata ? { providerMetadata } : {},
255
248
  ...response ? { response } : {},
256
249
  warnings: []
@@ -379,6 +372,9 @@ function convertToAxChatPrompt(prompt) {
379
372
  }
380
373
  case "tool": {
381
374
  for (const part of content) {
375
+ if (part.type !== "tool-result") {
376
+ throw new Error(`Unsupported part: ${part.type}`);
377
+ }
382
378
  messages.push({
383
379
  role: "function",
384
380
  functionId: part.toolCallId,
@@ -396,15 +392,20 @@ function convertToAxChatPrompt(prompt) {
396
392
  return messages;
397
393
  }
398
394
  function mapAxFinishReason(finishReason) {
395
+ const raw = finishReason;
399
396
  switch (finishReason) {
400
397
  case "stop":
401
- return "stop";
398
+ return { unified: "stop", raw };
402
399
  case "length":
403
- return "length";
400
+ return { unified: "length", raw };
404
401
  case "function_call":
405
- return "tool-calls";
402
+ return { unified: "tool-calls", raw };
403
+ case "content_filter":
404
+ return { unified: "content-filter", raw };
405
+ case "error":
406
+ return { unified: "error", raw };
406
407
  default:
407
- return "other";
408
+ return { unified: "other", raw };
408
409
  }
409
410
  }
410
411
  function createChatRequest({
@@ -434,13 +435,69 @@ function createChatRequest({
434
435
  }
435
436
  return req;
436
437
  }
437
- var AxToSDKTransformer = class extends import_web.TransformStream {
438
+ function createUsage(tokens) {
439
+ return {
440
+ inputTokens: {
441
+ total: tokens?.promptTokens,
442
+ noCache: void 0,
443
+ cacheRead: tokens?.cacheReadTokens,
444
+ cacheWrite: tokens?.cacheCreationTokens
445
+ },
446
+ outputTokens: {
447
+ total: tokens?.completionTokens,
448
+ text: void 0,
449
+ reasoning: tokens?.reasoningTokens
450
+ }
451
+ };
452
+ }
453
+ function addUsage(usage, tokens) {
454
+ return {
455
+ inputTokens: {
456
+ ...usage.inputTokens,
457
+ total: (usage.inputTokens.total ?? 0) + (tokens?.promptTokens ?? 0),
458
+ cacheRead: addOptionalUsage(
459
+ usage.inputTokens.cacheRead,
460
+ tokens?.cacheReadTokens
461
+ ),
462
+ cacheWrite: addOptionalUsage(
463
+ usage.inputTokens.cacheWrite,
464
+ tokens?.cacheCreationTokens
465
+ )
466
+ },
467
+ outputTokens: {
468
+ ...usage.outputTokens,
469
+ total: (usage.outputTokens.total ?? 0) + (tokens?.completionTokens ?? 0),
470
+ reasoning: addOptionalUsage(
471
+ usage.outputTokens.reasoning,
472
+ tokens?.reasoningTokens
473
+ )
474
+ }
475
+ };
476
+ }
477
+ function addOptionalUsage(current, next) {
478
+ if (next === void 0) {
479
+ return current;
480
+ }
481
+ return (current ?? 0) + next;
482
+ }
483
+ var AxToSDKTransformer = class extends TransformStream {
438
484
  usage = {
439
- inputTokens: 0,
440
- outputTokens: 0,
441
- totalTokens: 0
485
+ inputTokens: {
486
+ total: 0,
487
+ noCache: void 0,
488
+ cacheRead: void 0,
489
+ cacheWrite: void 0
490
+ },
491
+ outputTokens: {
492
+ total: 0,
493
+ text: void 0,
494
+ reasoning: void 0
495
+ }
496
+ };
497
+ finishReason = {
498
+ unified: "other",
499
+ raw: void 0
442
500
  };
443
- finishReason = "other";
444
501
  functionCalls = [];
445
502
  providerMetadata;
446
503
  responseMetadataSent = false;
@@ -491,11 +548,7 @@ var AxToSDKTransformer = class extends import_web.TransformStream {
491
548
  return;
492
549
  }
493
550
  if (chunk.modelUsage) {
494
- this.usage = {
495
- inputTokens: (this.usage.inputTokens ?? 0) + (chunk.modelUsage?.tokens?.promptTokens ?? 0),
496
- outputTokens: (this.usage.outputTokens ?? 0) + (chunk.modelUsage.tokens?.completionTokens ?? 0),
497
- totalTokens: (this.usage.totalTokens ?? 0) + (chunk.modelUsage?.tokens?.promptTokens ?? 0) + (chunk.modelUsage.tokens?.completionTokens ?? 0)
498
- };
551
+ this.usage = addUsage(this.usage, chunk.modelUsage.tokens);
499
552
  }
500
553
  if (choice.functionCalls) {
501
554
  for (const fc of choice.functionCalls) {
@@ -520,7 +573,7 @@ var AxToSDKTransformer = class extends import_web.TransformStream {
520
573
  obj.input = JSON.stringify(fc.function.params);
521
574
  }
522
575
  }
523
- this.finishReason = "tool-calls";
576
+ this.finishReason = { unified: "tool-calls", raw: "function_call" };
524
577
  }
525
578
  }
526
579
  if (choice.content && choice.content.length > 0) {
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../provider.ts","../../../node_modules/nanoid/index.js"],"sourcesContent":["import { AxAgentProvider, AxAIProvider } from './provider.js';\n\nexport { AxAgentProvider, AxAIProvider };\n","// cspell:ignore Streamable\n\nimport {\n type ReadableStream,\n TransformStream,\n type TransformStreamDefaultController,\n} from 'node:stream/web';\nimport type {\n JSONValue,\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2FunctionTool,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2ToolCall,\n LanguageModelV2ToolChoice,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport type {\n AxAgentic,\n AxAIService,\n AxChatRequest,\n AxChatResponse,\n AxChatResponseResult,\n AxFunction,\n AxFunctionJSONSchema,\n AxGenIn,\n AxGenOut,\n} from '@ax-llm/ax/index.js';\nimport type { CoreMessage } from 'ai';\nimport { customAlphabet } from 'nanoid';\nimport type { ReactNode } from 'react';\nimport { z } from 'zod';\n\ntype Writeable<T> = { -readonly [P in keyof T]: T[P] };\ntype AxChatRequestChatPrompt = Writeable<AxChatRequest['chatPrompt'][0]>;\n\ntype AxResponseLike = Pick<\n AxChatResponse,\n | 'sessionId'\n | 'remoteId'\n | 'remoteRequestId'\n | 'remoteSessionId'\n | 'providerMetadata'\n | 'modelUsage'\n>;\n\nfunction toJSONValue(value: unknown): JSONValue | undefined {\n if (value === null) return null;\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n if (Array.isArray(value)) {\n return value\n .map((item) => toJSONValue(item))\n .filter((item): item is JSONValue => item !== undefined);\n }\n if (value && typeof value === 'object') {\n const entries = Object.entries(value)\n .map(([key, nested]) => [key, toJSONValue(nested)] as const)\n .filter((entry): entry is readonly [string, JSONValue] => {\n return entry[1] !== undefined;\n });\n return Object.fromEntries(entries) as JSONValue;\n }\n return undefined;\n}\n\nfunction mergeProviderMetadata(\n base?: SharedV2ProviderMetadata,\n next?: SharedV2ProviderMetadata\n): SharedV2ProviderMetadata | undefined {\n if (!base && !next) return undefined;\n const merged: SharedV2ProviderMetadata = {};\n for (const source of [base, next]) {\n if (!source) continue;\n for (const [provider, metadata] of Object.entries(source)) {\n merged[provider] = {\n ...(merged[provider] ?? {}),\n ...metadata,\n };\n }\n }\n return merged;\n}\n\nfunction createProviderMetadata(\n res: Readonly<AxResponseLike>,\n provider: string\n): SharedV2ProviderMetadata | undefined {\n let metadata: SharedV2ProviderMetadata | undefined;\n\n if (res.providerMetadata) {\n metadata = {};\n for (const [providerName, providerMetadata] of Object.entries(\n res.providerMetadata\n )) {\n const jsonProviderMetadata = toJSONValue(providerMetadata);\n if (\n jsonProviderMetadata &&\n typeof jsonProviderMetadata === 'object' &&\n !Array.isArray(jsonProviderMetadata)\n ) {\n metadata[providerName] = jsonProviderMetadata;\n }\n }\n }\n\n const axMetadata = {\n ...(res.sessionId ? { sessionId: res.sessionId } : {}),\n ...(res.remoteRequestId ? { requestId: res.remoteRequestId } : {}),\n ...(res.remoteSessionId ? { remoteSessionId: res.remoteSessionId } : {}),\n };\n\n if (Object.keys(axMetadata).length > 0) {\n metadata = mergeProviderMetadata(metadata, {\n [provider]: axMetadata,\n });\n }\n\n return metadata;\n}\n\nfunction createResponseMetadata(res: Readonly<AxResponseLike>) {\n if (!res.remoteId && !res.modelUsage?.model) {\n return undefined;\n }\n return {\n ...(res.remoteId ? { id: res.remoteId } : {}),\n ...(res.modelUsage?.model ? { modelId: res.modelUsage.model } : {}),\n };\n}\n\ntype AxConfig = {\n fetch?: typeof fetch;\n};\n\ntype Streamable = ReactNode | Promise<ReactNode>;\ntype Renderer<T> = (\n args: T\n) =>\n | Streamable\n | Generator<Streamable, Streamable, void>\n | AsyncGenerator<Streamable, Streamable, void>;\n\nconst nanoid = customAlphabet(\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n 7\n);\n\nexport class AxAgentProvider<IN extends AxGenIn, OUT extends AxGenOut> {\n private readonly config?: AxConfig;\n private readonly funcInfo: AxFunction;\n private generateFunction: Renderer<OUT>;\n private updateState: (msgs: readonly CoreMessage[]) => void;\n\n constructor({\n agent,\n updateState,\n generate,\n config,\n }: Readonly<{\n agent: AxAgentic<IN, OUT>;\n updateState: (msgs: readonly CoreMessage[]) => void;\n generate: Renderer<OUT>;\n config?: Readonly<AxConfig>;\n }>) {\n this.funcInfo = agent.getFunction();\n this.generateFunction = generate;\n this.updateState = updateState;\n this.config = config;\n }\n\n get description() {\n return this.funcInfo.description;\n }\n\n get parameters(): z.ZodTypeAny {\n const schema = this.funcInfo.parameters ?? {\n type: 'object',\n properties: {},\n };\n\n return convertToZodSchema(schema);\n }\n\n get generate(): Renderer<IN> {\n const fn = async (input: IN) => {\n const res = (await this.funcInfo.func(input)) as OUT;\n const toolCallId = nanoid();\n\n this.updateState([\n {\n role: 'assistant',\n content: [\n {\n type: 'tool-call',\n toolName: this.funcInfo.name,\n toolCallId,\n input: input,\n },\n ],\n },\n {\n role: 'tool',\n content: [\n {\n type: 'tool-result',\n toolName: this.funcInfo.name,\n toolCallId,\n output: { type: 'text' as const, value: JSON.stringify(res) },\n },\n ],\n },\n ]);\n\n return this.generateFunction(res);\n };\n return fn as Renderer<IN>;\n }\n}\n\nexport class AxAIProvider implements LanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly supportedUrls: Record<string, RegExp[]> = {};\n\n private readonly ai: AxAIService;\n private readonly config?: AxConfig;\n\n public modelId: string;\n\n constructor(ai: AxAIService, config?: Readonly<AxConfig>) {\n this.ai = ai;\n this.config = config;\n this.modelId = this.ai.getName();\n }\n\n get provider(): string {\n return this.ai.getName();\n }\n\n async doGenerate(\n options: LanguageModelV2CallOptions\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const req = createChatRequest(options);\n const res = (await this.ai.chat(req, {\n stream: false,\n })) as AxChatResponse;\n const choice = res.results.at(0);\n\n if (!choice) {\n throw new Error('No choice returned');\n }\n\n const content: LanguageModelV2Content[] = [];\n\n if (choice.content) {\n content.push({ type: 'text', text: choice.content });\n }\n\n if (choice.functionCalls) {\n for (const tc of choice.functionCalls) {\n content.push({\n type: 'tool-call',\n toolCallId: tc.id,\n toolName: tc.function.name,\n input:\n typeof tc.function.params === 'string'\n ? tc.function.params\n : JSON.stringify(tc.function.params),\n });\n }\n }\n\n const providerMetadata = createProviderMetadata(res, this.provider);\n const response = createResponseMetadata(res);\n\n return {\n content,\n finishReason: mapAxFinishReason(choice.finishReason),\n usage: {\n inputTokens: res.modelUsage?.tokens?.promptTokens ?? 0,\n outputTokens: res.modelUsage?.tokens?.completionTokens ?? 0,\n totalTokens:\n (res.modelUsage?.tokens?.promptTokens ?? 0) +\n (res.modelUsage?.tokens?.completionTokens ?? 0),\n },\n ...(providerMetadata ? { providerMetadata } : {}),\n ...(response ? { response } : {}),\n warnings: [] as LanguageModelV2CallWarning[],\n };\n }\n\n async doStream(\n options: LanguageModelV2CallOptions\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const req = createChatRequest(options);\n\n const res = (await this.ai.chat(req, {\n stream: true,\n })) as ReadableStream<AxChatResponse>;\n\n return {\n stream: res.pipeThrough(new AxToSDKTransformer(this.provider)) as any,\n };\n }\n}\n\nfunction prepareToolsAndToolChoice(\n tools: Array<LanguageModelV2FunctionTool>,\n toolChoice?: LanguageModelV2ToolChoice\n): Pick<AxChatRequest, 'functions' | 'functionCall'> {\n // when the tools array is empty, change it to undefined to prevent errors:\n if (!tools || tools.length === 0) {\n return {};\n }\n const functions = tools.map((f) => ({\n name: f.name,\n description: f.description ?? '',\n parameters: f.inputSchema as AxFunctionJSONSchema,\n }));\n\n if (!toolChoice) {\n return { functions };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { functions, functionCall: 'auto' };\n case 'none':\n return { functions, functionCall: 'none' };\n case 'required':\n return { functions, functionCall: 'required' };\n case 'tool':\n return {\n functions,\n functionCall: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n };\n default: {\n const ExhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${ExhaustiveCheck}`);\n }\n }\n}\n\nfunction convertToAxChatPrompt(\n prompt: Readonly<LanguageModelV2Prompt>\n): AxChatRequest['chatPrompt'] {\n const messages: AxChatRequest['chatPrompt'] = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map((part) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (!part.mediaType) {\n throw new Error('File part must have a mediaType');\n }\n let dataContent: string;\n if (typeof part.data === 'string') {\n dataContent = part.data;\n } else if (part.data instanceof URL) {\n dataContent = part.data.toString();\n } else {\n dataContent = Buffer.from(part.data).toString('base64');\n }\n return {\n type: 'image',\n mimeType: part.mediaType,\n image: dataContent,\n };\n }\n default:\n throw new Error(`Unsupported part: ${part}`);\n // case 'audio': {\n // if (!part.data) {\n // throw new Error('Audio part must have a audio');\n // }\n // if (!ArrayBuffer.isView(part.data)) {\n // throw new Error('Audio part must have an ArrayBuffer');\n // }\n // const data = Buffer.from(part.data).toString('base64');\n // return {\n // type: 'audio',\n // format: 'wav',\n // data\n // };\n // }\n }\n }),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Extract<\n AxChatRequestChatPrompt,\n { role: 'assistant' }\n >['functionCalls'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n params:\n typeof part.input === 'string'\n ? JSON.parse(part.input)\n : part.input,\n },\n });\n break;\n }\n\n default: {\n const ExhaustiveCheck = part;\n throw new Error(`Unsupported part: ${ExhaustiveCheck}`);\n }\n }\n }\n\n const functionCalls = toolCalls.length === 0 ? undefined : toolCalls;\n\n if (functionCalls || text.length > 0) {\n messages.push({\n role: 'assistant',\n content: text,\n functionCalls,\n });\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n messages.push({\n role: 'function' as const,\n functionId: part.toolCallId,\n result:\n typeof part.output === 'object' && part.output?.type === 'text'\n ? part.output.value\n : JSON.stringify(part.output, null, 2),\n });\n }\n break;\n }\n default: {\n const ExhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${ExhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n\nfunction mapAxFinishReason(\n finishReason: AxChatResponseResult['finishReason']\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'function_call':\n return 'tool-calls';\n default:\n return 'other';\n }\n}\n\nfunction createChatRequest({\n tools,\n toolChoice,\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n //seed,\n}: Readonly<LanguageModelV2CallOptions>): AxChatRequest {\n const req: AxChatRequest = {\n chatPrompt: convertToAxChatPrompt(prompt),\n ...(frequencyPenalty != null ? { frequencyPenalty } : {}),\n ...(presencePenalty != null ? { presencePenalty } : {}),\n ...(maxOutputTokens != null ? { maxTokens: maxOutputTokens } : {}),\n ...(temperature != null ? { temperature } : {}),\n ...(topP != null ? { topP } : {}),\n };\n\n if (tools && tools.length > 0) {\n const functionTools = tools.filter(\n (tool): tool is LanguageModelV2FunctionTool => tool.type === 'function'\n );\n return { ...req, ...prepareToolsAndToolChoice(functionTools, toolChoice) };\n }\n\n return req;\n}\n\nclass AxToSDKTransformer extends TransformStream<\n AxChatResponse,\n LanguageModelV2StreamPart\n> {\n private usage: LanguageModelV2Usage = {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n };\n\n private finishReason: LanguageModelV2FinishReason = 'other';\n\n private functionCalls: LanguageModelV2ToolCall[] = [];\n private providerMetadata: SharedV2ProviderMetadata | undefined;\n private responseMetadataSent = false;\n private hasStarted = false;\n private textStarted = false;\n\n constructor(provider: string) {\n const providerName = provider;\n const transformer = {\n transform: (\n chunk: Readonly<AxChatResponse>,\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart>\n ) => {\n // Emit stream-start event only once\n if (!this.hasStarted) {\n controller.enqueue({\n type: 'stream-start',\n warnings: [] as LanguageModelV2CallWarning[],\n });\n this.hasStarted = true;\n }\n\n const chunkProviderMetadata = createProviderMetadata(\n chunk,\n providerName\n );\n this.providerMetadata = mergeProviderMetadata(\n this.providerMetadata,\n chunkProviderMetadata\n );\n\n const responseMetadata = createResponseMetadata(chunk);\n if (!this.responseMetadataSent && responseMetadata) {\n controller.enqueue({\n type: 'response-metadata',\n ...responseMetadata,\n });\n this.responseMetadataSent = true;\n }\n\n const choice = chunk.results.at(0);\n if (!choice) {\n // End text if it was started\n if (this.textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: 'text-content',\n });\n }\n\n const val = {\n type: 'finish' as const,\n finishReason: this.finishReason,\n usage: this.usage,\n ...(this.providerMetadata\n ? { providerMetadata: this.providerMetadata }\n : {}),\n };\n controller.enqueue(val);\n return;\n }\n\n if (chunk.modelUsage) {\n this.usage = {\n inputTokens:\n (this.usage.inputTokens ?? 0) +\n (chunk.modelUsage?.tokens?.promptTokens ?? 0),\n outputTokens:\n (this.usage.outputTokens ?? 0) +\n (chunk.modelUsage.tokens?.completionTokens ?? 0),\n totalTokens:\n (this.usage.totalTokens ?? 0) +\n (chunk.modelUsage?.tokens?.promptTokens ?? 0) +\n (chunk.modelUsage.tokens?.completionTokens ?? 0),\n };\n }\n\n if (choice.functionCalls) {\n for (const fc of choice.functionCalls) {\n const index = this.functionCalls.findIndex(\n (f) => f.toolCallId === fc.id\n );\n if (index === -1) {\n this.functionCalls.push({\n type: 'tool-call' as const,\n toolCallId: fc.id,\n toolName: fc.function.name,\n input:\n typeof fc.function.params === 'string'\n ? fc.function.params\n : JSON.stringify(fc.function.params),\n });\n } else {\n const obj = this.functionCalls[index];\n if (!obj) {\n continue;\n }\n if (typeof fc.function.params === 'string') {\n obj.input = ((obj.input as string) || '') + fc.function.params;\n } else {\n obj.input = JSON.stringify(fc.function.params);\n }\n }\n this.finishReason = 'tool-calls';\n }\n }\n\n if (choice.content && choice.content.length > 0) {\n // Start text stream if not started\n if (!this.textStarted) {\n controller.enqueue({\n type: 'text-start',\n id: 'text-content',\n });\n this.textStarted = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'text-content',\n delta: choice.content ?? '',\n });\n this.finishReason = mapAxFinishReason(choice.finishReason);\n }\n },\n flush: (\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart>\n ) => {\n // End text stream if it was started\n if (this.textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: 'text-content',\n });\n }\n\n for (const fc of this.functionCalls) {\n controller.enqueue(fc);\n }\n\n const val = {\n type: 'finish' as const,\n finishReason: this.finishReason,\n usage: this.usage,\n ...(this.providerMetadata\n ? { providerMetadata: this.providerMetadata }\n : {}),\n };\n controller.enqueue(val);\n controller.terminate();\n },\n };\n\n super(transformer);\n }\n}\n\ntype AnyZod =\n | z.AnyZodObject\n | z.ZodString\n | z.ZodNumber\n | z.ZodBoolean\n | z.ZodArray<AnyZod>\n | z.ZodOptional<AnyZod>;\n\nfunction convertToZodSchema(\n jsonSchema: Readonly<AxFunctionJSONSchema>\n): AnyZod {\n const { type, properties, required, items } = jsonSchema;\n\n switch (type) {\n case 'string':\n return z.string();\n case 'number':\n return z.number();\n case 'boolean':\n return z.boolean();\n case 'array':\n if (!items) {\n throw new Error(\"Array type must have 'items' property.\");\n }\n return z.array(convertToZodSchema(items));\n case 'object': {\n if (!properties) {\n throw new Error(\"Object type must have 'properties' property.\");\n }\n const shape: Record<string, AnyZod> = {};\n\n for (const [key, value] of Object.entries(properties)) {\n const schema = convertToZodSchema(value);\n let val = required?.includes(key) ? schema : schema.optional();\n val = value.description ? val.describe(value.description) : val;\n shape[key] = val;\n }\n return z.object(shape);\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n","import crypto from 'crypto'\nimport { urlAlphabet } from './url-alphabet/index.js'\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nlet fillPool = bytes => {\n if (!pool || pool.length < bytes) {\n pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n crypto.randomFillSync(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.randomFillSync(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\nlet random = bytes => {\n fillPool((bytes |= 0))\n return pool.subarray(poolOffset - bytes, poolOffset)\n}\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let i = step\n while (i--) {\n id += alphabet[bytes[i] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n fillPool((size |= 0))\n let id = ''\n for (let i = poolOffset - size; i < poolOffset; i++) {\n id += urlAlphabet[pool[i] & 63]\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n"],"mappings":"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","names":["crypto"]}
1
+ {"version":3,"sources":["../index.ts","../../../node_modules/nanoid/index.js","../provider.ts"],"sourcesContent":["import { AxAgentProvider, AxAIProvider } from './provider.js';\n\nexport { AxAgentProvider, AxAIProvider };\n","import crypto from 'crypto'\nimport { urlAlphabet } from './url-alphabet/index.js'\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nlet fillPool = bytes => {\n if (!pool || pool.length < bytes) {\n pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n crypto.randomFillSync(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.randomFillSync(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\nlet random = bytes => {\n fillPool((bytes |= 0))\n return pool.subarray(poolOffset - bytes, poolOffset)\n}\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let i = step\n while (i--) {\n id += alphabet[bytes[i] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n fillPool((size |= 0))\n let id = ''\n for (let i = poolOffset - size; i < poolOffset; i++) {\n id += urlAlphabet[pool[i] & 63]\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","// cspell:ignore Streamable\n\nimport type {\n JSONValue,\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3FunctionTool,\n LanguageModelV3Prompt,\n LanguageModelV3StreamPart,\n LanguageModelV3ToolCall,\n LanguageModelV3ToolChoice,\n LanguageModelV3Usage,\n SharedV3ProviderMetadata,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport type {\n AxAgentic,\n AxAIService,\n AxChatRequest,\n AxChatResponse,\n AxChatResponseResult,\n AxFunction,\n AxFunctionJSONSchema,\n AxGenIn,\n AxGenOut,\n AxTokenUsage,\n} from '@ax-llm/ax/index.js';\nimport type { ModelMessage } from 'ai';\nimport { customAlphabet } from 'nanoid';\nimport type { ReactNode } from 'react';\nimport { z } from 'zod';\n\ntype Writeable<T> = { -readonly [P in keyof T]: T[P] };\ntype AxChatRequestChatPrompt = Writeable<AxChatRequest['chatPrompt'][0]>;\n\ntype AxResponseLike = Pick<\n AxChatResponse,\n | 'sessionId'\n | 'remoteId'\n | 'remoteRequestId'\n | 'remoteSessionId'\n | 'providerMetadata'\n | 'modelUsage'\n>;\n\nfunction toJSONValue(value: unknown): JSONValue | undefined {\n if (value === null) return null;\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n if (Array.isArray(value)) {\n return value\n .map((item) => toJSONValue(item))\n .filter((item): item is JSONValue => item !== undefined);\n }\n if (value && typeof value === 'object') {\n const entries = Object.entries(value)\n .map(([key, nested]) => [key, toJSONValue(nested)] as const)\n .filter((entry): entry is readonly [string, JSONValue] => {\n return entry[1] !== undefined;\n });\n return Object.fromEntries(entries) as JSONValue;\n }\n return undefined;\n}\n\nfunction mergeProviderMetadata(\n base?: SharedV3ProviderMetadata,\n next?: SharedV3ProviderMetadata\n): SharedV3ProviderMetadata | undefined {\n if (!base && !next) return undefined;\n const merged: SharedV3ProviderMetadata = {};\n for (const source of [base, next]) {\n if (!source) continue;\n for (const [provider, metadata] of Object.entries(source)) {\n merged[provider] = {\n ...(merged[provider] ?? {}),\n ...metadata,\n };\n }\n }\n return merged;\n}\n\nfunction createProviderMetadata(\n res: Readonly<AxResponseLike>,\n provider: string\n): SharedV3ProviderMetadata | undefined {\n let metadata: SharedV3ProviderMetadata | undefined;\n\n if (res.providerMetadata) {\n metadata = {};\n for (const [providerName, providerMetadata] of Object.entries(\n res.providerMetadata\n )) {\n const jsonProviderMetadata = toJSONValue(providerMetadata);\n if (\n jsonProviderMetadata &&\n typeof jsonProviderMetadata === 'object' &&\n !Array.isArray(jsonProviderMetadata)\n ) {\n metadata[providerName] = jsonProviderMetadata;\n }\n }\n }\n\n const axMetadata = {\n ...(res.sessionId ? { sessionId: res.sessionId } : {}),\n ...(res.remoteRequestId ? { requestId: res.remoteRequestId } : {}),\n ...(res.remoteSessionId ? { remoteSessionId: res.remoteSessionId } : {}),\n };\n\n if (Object.keys(axMetadata).length > 0) {\n metadata = mergeProviderMetadata(metadata, {\n [provider]: axMetadata,\n });\n }\n\n return metadata;\n}\n\nfunction createResponseMetadata(res: Readonly<AxResponseLike>) {\n if (!res.remoteId && !res.modelUsage?.model) {\n return undefined;\n }\n return {\n ...(res.remoteId ? { id: res.remoteId } : {}),\n ...(res.modelUsage?.model ? { modelId: res.modelUsage.model } : {}),\n };\n}\n\ntype AxConfig = {\n fetch?: typeof fetch;\n};\n\ntype Streamable = ReactNode | Promise<ReactNode>;\ntype Renderer<T> = (\n args: T\n) =>\n | Streamable\n | Generator<Streamable, Streamable, void>\n | AsyncGenerator<Streamable, Streamable, void>;\n\nconst nanoid = customAlphabet(\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n 7\n);\n\nexport class AxAgentProvider<IN extends AxGenIn, OUT extends AxGenOut> {\n private readonly config?: AxConfig;\n private readonly funcInfo: AxFunction;\n private generateFunction: Renderer<OUT>;\n private updateState: (msgs: readonly ModelMessage[]) => void;\n\n constructor({\n agent,\n updateState,\n generate,\n config,\n }: Readonly<{\n agent: AxAgentic<IN, OUT>;\n updateState: (msgs: readonly ModelMessage[]) => void;\n generate: Renderer<OUT>;\n config?: Readonly<AxConfig>;\n }>) {\n this.funcInfo = agent.getFunction();\n this.generateFunction = generate;\n this.updateState = updateState;\n this.config = config;\n }\n\n get description() {\n return this.funcInfo.description;\n }\n\n get parameters(): z.ZodTypeAny {\n const schema = this.funcInfo.parameters ?? {\n type: 'object',\n properties: {},\n };\n\n return convertToZodSchema(schema);\n }\n\n get generate(): Renderer<IN> {\n const fn = async (input: IN) => {\n const res = (await this.funcInfo.func(input)) as OUT;\n const toolCallId = nanoid();\n\n this.updateState([\n {\n role: 'assistant',\n content: [\n {\n type: 'tool-call',\n toolName: this.funcInfo.name,\n toolCallId,\n input: input,\n },\n ],\n },\n {\n role: 'tool',\n content: [\n {\n type: 'tool-result',\n toolName: this.funcInfo.name,\n toolCallId,\n output: { type: 'text' as const, value: JSON.stringify(res) },\n },\n ],\n },\n ]);\n\n return this.generateFunction(res);\n };\n return fn as Renderer<IN>;\n }\n}\n\nexport class AxAIProvider implements LanguageModelV3 {\n readonly specificationVersion = 'v3' as const;\n readonly supportedUrls: Record<string, RegExp[]> = {};\n\n private readonly ai: AxAIService;\n private readonly config?: AxConfig;\n\n public modelId: string;\n\n constructor(ai: AxAIService, config?: Readonly<AxConfig>) {\n this.ai = ai;\n this.config = config;\n this.modelId = this.ai.getName();\n }\n\n get provider(): string {\n return this.ai.getName();\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions\n ): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>> {\n const req = createChatRequest(options);\n const res = (await this.ai.chat(req, {\n stream: false,\n })) as AxChatResponse;\n const choice = res.results.at(0);\n\n if (!choice) {\n throw new Error('No choice returned');\n }\n\n const content: LanguageModelV3Content[] = [];\n\n if (choice.content) {\n content.push({ type: 'text', text: choice.content });\n }\n\n if (choice.functionCalls) {\n for (const tc of choice.functionCalls) {\n content.push({\n type: 'tool-call',\n toolCallId: tc.id,\n toolName: tc.function.name,\n input:\n typeof tc.function.params === 'string'\n ? tc.function.params\n : JSON.stringify(tc.function.params),\n });\n }\n }\n\n const providerMetadata = createProviderMetadata(res, this.provider);\n const response = createResponseMetadata(res);\n\n return {\n content,\n finishReason: mapAxFinishReason(choice.finishReason),\n usage: createUsage(res.modelUsage?.tokens),\n ...(providerMetadata ? { providerMetadata } : {}),\n ...(response ? { response } : {}),\n warnings: [] as SharedV3Warning[],\n };\n }\n\n async doStream(\n options: LanguageModelV3CallOptions\n ): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>> {\n const req = createChatRequest(options);\n\n const res = (await this.ai.chat(req, {\n stream: true,\n })) as ReadableStream<AxChatResponse>;\n\n return {\n stream: res.pipeThrough(new AxToSDKTransformer(this.provider)),\n };\n }\n}\n\nfunction prepareToolsAndToolChoice(\n tools: Array<LanguageModelV3FunctionTool>,\n toolChoice?: LanguageModelV3ToolChoice\n): Pick<AxChatRequest, 'functions' | 'functionCall'> {\n // when the tools array is empty, change it to undefined to prevent errors:\n if (!tools || tools.length === 0) {\n return {};\n }\n const functions = tools.map((f) => ({\n name: f.name,\n description: f.description ?? '',\n parameters: f.inputSchema as AxFunctionJSONSchema,\n }));\n\n if (!toolChoice) {\n return { functions };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { functions, functionCall: 'auto' };\n case 'none':\n return { functions, functionCall: 'none' };\n case 'required':\n return { functions, functionCall: 'required' };\n case 'tool':\n return {\n functions,\n functionCall: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n };\n default: {\n const ExhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${ExhaustiveCheck}`);\n }\n }\n}\n\nfunction convertToAxChatPrompt(\n prompt: Readonly<LanguageModelV3Prompt>\n): AxChatRequest['chatPrompt'] {\n const messages: AxChatRequest['chatPrompt'] = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map((part) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (!part.mediaType) {\n throw new Error('File part must have a mediaType');\n }\n let dataContent: string;\n if (typeof part.data === 'string') {\n dataContent = part.data;\n } else if (part.data instanceof URL) {\n dataContent = part.data.toString();\n } else {\n dataContent = Buffer.from(part.data).toString('base64');\n }\n return {\n type: 'image',\n mimeType: part.mediaType,\n image: dataContent,\n };\n }\n default:\n throw new Error(`Unsupported part: ${part}`);\n // case 'audio': {\n // if (!part.data) {\n // throw new Error('Audio part must have a audio');\n // }\n // if (!ArrayBuffer.isView(part.data)) {\n // throw new Error('Audio part must have an ArrayBuffer');\n // }\n // const data = Buffer.from(part.data).toString('base64');\n // return {\n // type: 'audio',\n // format: 'wav',\n // data\n // };\n // }\n }\n }),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Extract<\n AxChatRequestChatPrompt,\n { role: 'assistant' }\n >['functionCalls'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n params:\n typeof part.input === 'string'\n ? JSON.parse(part.input)\n : part.input,\n },\n });\n break;\n }\n\n default: {\n const ExhaustiveCheck = part;\n throw new Error(`Unsupported part: ${ExhaustiveCheck}`);\n }\n }\n }\n\n const functionCalls = toolCalls.length === 0 ? undefined : toolCalls;\n\n if (functionCalls || text.length > 0) {\n messages.push({\n role: 'assistant',\n content: text,\n functionCalls,\n });\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n if (part.type !== 'tool-result') {\n throw new Error(`Unsupported part: ${part.type}`);\n }\n messages.push({\n role: 'function' as const,\n functionId: part.toolCallId,\n result:\n typeof part.output === 'object' && part.output?.type === 'text'\n ? part.output.value\n : JSON.stringify(part.output, null, 2),\n });\n }\n break;\n }\n default: {\n const ExhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${ExhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n\nfunction mapAxFinishReason(\n finishReason: AxChatResponseResult['finishReason']\n): LanguageModelV3FinishReason {\n const raw = finishReason;\n switch (finishReason) {\n case 'stop':\n return { unified: 'stop', raw };\n case 'length':\n return { unified: 'length', raw };\n case 'function_call':\n return { unified: 'tool-calls', raw };\n case 'content_filter':\n return { unified: 'content-filter', raw };\n case 'error':\n return { unified: 'error', raw };\n default:\n return { unified: 'other', raw };\n }\n}\n\nfunction createChatRequest({\n tools,\n toolChoice,\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n //seed,\n}: Readonly<LanguageModelV3CallOptions>): AxChatRequest {\n const req: AxChatRequest = {\n chatPrompt: convertToAxChatPrompt(prompt),\n ...(frequencyPenalty != null ? { frequencyPenalty } : {}),\n ...(presencePenalty != null ? { presencePenalty } : {}),\n ...(maxOutputTokens != null ? { maxTokens: maxOutputTokens } : {}),\n ...(temperature != null ? { temperature } : {}),\n ...(topP != null ? { topP } : {}),\n };\n\n if (tools && tools.length > 0) {\n const functionTools = tools.filter(\n (tool): tool is LanguageModelV3FunctionTool => tool.type === 'function'\n );\n return { ...req, ...prepareToolsAndToolChoice(functionTools, toolChoice) };\n }\n\n return req;\n}\n\nfunction createUsage(tokens?: Readonly<AxTokenUsage>): LanguageModelV3Usage {\n return {\n inputTokens: {\n total: tokens?.promptTokens,\n noCache: undefined,\n cacheRead: tokens?.cacheReadTokens,\n cacheWrite: tokens?.cacheCreationTokens,\n },\n outputTokens: {\n total: tokens?.completionTokens,\n text: undefined,\n reasoning: tokens?.reasoningTokens,\n },\n };\n}\n\nfunction addUsage(\n usage: Readonly<LanguageModelV3Usage>,\n tokens?: Readonly<AxTokenUsage>\n): LanguageModelV3Usage {\n return {\n inputTokens: {\n ...usage.inputTokens,\n total: (usage.inputTokens.total ?? 0) + (tokens?.promptTokens ?? 0),\n cacheRead: addOptionalUsage(\n usage.inputTokens.cacheRead,\n tokens?.cacheReadTokens\n ),\n cacheWrite: addOptionalUsage(\n usage.inputTokens.cacheWrite,\n tokens?.cacheCreationTokens\n ),\n },\n outputTokens: {\n ...usage.outputTokens,\n total: (usage.outputTokens.total ?? 0) + (tokens?.completionTokens ?? 0),\n reasoning: addOptionalUsage(\n usage.outputTokens.reasoning,\n tokens?.reasoningTokens\n ),\n },\n };\n}\n\nfunction addOptionalUsage(\n current: number | undefined,\n next: number | undefined\n): number | undefined {\n if (next === undefined) {\n return current;\n }\n return (current ?? 0) + next;\n}\n\nclass AxToSDKTransformer extends TransformStream<\n AxChatResponse,\n LanguageModelV3StreamPart\n> {\n private usage: LanguageModelV3Usage = {\n inputTokens: {\n total: 0,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: 0,\n text: undefined,\n reasoning: undefined,\n },\n };\n\n private finishReason: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n\n private functionCalls: LanguageModelV3ToolCall[] = [];\n private providerMetadata: SharedV3ProviderMetadata | undefined;\n private responseMetadataSent = false;\n private hasStarted = false;\n private textStarted = false;\n\n constructor(provider: string) {\n const providerName = provider;\n const transformer = {\n transform: (\n chunk: Readonly<AxChatResponse>,\n controller: TransformStreamDefaultController<LanguageModelV3StreamPart>\n ) => {\n // Emit stream-start event only once\n if (!this.hasStarted) {\n controller.enqueue({\n type: 'stream-start',\n warnings: [] as SharedV3Warning[],\n });\n this.hasStarted = true;\n }\n\n const chunkProviderMetadata = createProviderMetadata(\n chunk,\n providerName\n );\n this.providerMetadata = mergeProviderMetadata(\n this.providerMetadata,\n chunkProviderMetadata\n );\n\n const responseMetadata = createResponseMetadata(chunk);\n if (!this.responseMetadataSent && responseMetadata) {\n controller.enqueue({\n type: 'response-metadata',\n ...responseMetadata,\n });\n this.responseMetadataSent = true;\n }\n\n const choice = chunk.results.at(0);\n if (!choice) {\n // End text if it was started\n if (this.textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: 'text-content',\n });\n }\n\n const val = {\n type: 'finish' as const,\n finishReason: this.finishReason,\n usage: this.usage,\n ...(this.providerMetadata\n ? { providerMetadata: this.providerMetadata }\n : {}),\n };\n controller.enqueue(val);\n return;\n }\n\n if (chunk.modelUsage) {\n this.usage = addUsage(this.usage, chunk.modelUsage.tokens);\n }\n\n if (choice.functionCalls) {\n for (const fc of choice.functionCalls) {\n const index = this.functionCalls.findIndex(\n (f) => f.toolCallId === fc.id\n );\n if (index === -1) {\n this.functionCalls.push({\n type: 'tool-call' as const,\n toolCallId: fc.id,\n toolName: fc.function.name,\n input:\n typeof fc.function.params === 'string'\n ? fc.function.params\n : JSON.stringify(fc.function.params),\n });\n } else {\n const obj = this.functionCalls[index];\n if (!obj) {\n continue;\n }\n if (typeof fc.function.params === 'string') {\n obj.input = ((obj.input as string) || '') + fc.function.params;\n } else {\n obj.input = JSON.stringify(fc.function.params);\n }\n }\n this.finishReason = { unified: 'tool-calls', raw: 'function_call' };\n }\n }\n\n if (choice.content && choice.content.length > 0) {\n // Start text stream if not started\n if (!this.textStarted) {\n controller.enqueue({\n type: 'text-start',\n id: 'text-content',\n });\n this.textStarted = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'text-content',\n delta: choice.content ?? '',\n });\n this.finishReason = mapAxFinishReason(choice.finishReason);\n }\n },\n flush: (\n controller: TransformStreamDefaultController<LanguageModelV3StreamPart>\n ) => {\n // End text stream if it was started\n if (this.textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: 'text-content',\n });\n }\n\n for (const fc of this.functionCalls) {\n controller.enqueue(fc);\n }\n\n const val = {\n type: 'finish' as const,\n finishReason: this.finishReason,\n usage: this.usage,\n ...(this.providerMetadata\n ? { providerMetadata: this.providerMetadata }\n : {}),\n };\n controller.enqueue(val);\n controller.terminate();\n },\n };\n\n super(transformer);\n }\n}\n\ntype AnyZod =\n | z.AnyZodObject\n | z.ZodString\n | z.ZodNumber\n | z.ZodBoolean\n | z.ZodArray<AnyZod>\n | z.ZodOptional<AnyZod>;\n\nfunction convertToZodSchema(\n jsonSchema: Readonly<AxFunctionJSONSchema>\n): AnyZod {\n const { type, properties, required, items } = jsonSchema;\n\n switch (type) {\n case 'string':\n return z.string();\n case 'number':\n return z.number();\n case 'boolean':\n return z.boolean();\n case 'array':\n if (!items) {\n throw new Error(\"Array type must have 'items' property.\");\n }\n return z.array(convertToZodSchema(items));\n case 'object': {\n if (!properties) {\n throw new Error(\"Object type must have 'properties' property.\");\n }\n const shape: Record<string, AnyZod> = {};\n\n for (const [key, value] of Object.entries(properties)) {\n const schema = convertToZodSchema(value);\n let val = required?.includes(key) ? schema : schema.optional();\n val = value.description ? val.describe(value.description) : val;\n shape[key] = val;\n }\n return z.object(shape);\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n"],"mappings":"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","names":["crypto"]}
package/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { LanguageModelV2, LanguageModelV2CallOptions } from '@ai-sdk/provider';
1
+ import { LanguageModelV3, LanguageModelV3CallOptions } from '@ai-sdk/provider';
2
2
  import { AxAIService, AxGenIn, AxGenOut, AxAgentic } from '@ax-llm/ax/index.js';
3
- import { CoreMessage } from 'ai';
3
+ import { ModelMessage } from 'ai';
4
4
  import { ReactNode } from 'react';
5
5
  import { z } from 'zod';
6
6
 
@@ -16,7 +16,7 @@ declare class AxAgentProvider<IN extends AxGenIn, OUT extends AxGenOut> {
16
16
  private updateState;
17
17
  constructor({ agent, updateState, generate, config, }: Readonly<{
18
18
  agent: AxAgentic<IN, OUT>;
19
- updateState: (msgs: readonly CoreMessage[]) => void;
19
+ updateState: (msgs: readonly ModelMessage[]) => void;
20
20
  generate: Renderer<OUT>;
21
21
  config?: Readonly<AxConfig>;
22
22
  }>);
@@ -24,16 +24,16 @@ declare class AxAgentProvider<IN extends AxGenIn, OUT extends AxGenOut> {
24
24
  get parameters(): z.ZodTypeAny;
25
25
  get generate(): Renderer<IN>;
26
26
  }
27
- declare class AxAIProvider implements LanguageModelV2 {
28
- readonly specificationVersion: "v2";
27
+ declare class AxAIProvider implements LanguageModelV3 {
28
+ readonly specificationVersion: "v3";
29
29
  readonly supportedUrls: Record<string, RegExp[]>;
30
30
  private readonly ai;
31
31
  private readonly config?;
32
32
  modelId: string;
33
33
  constructor(ai: AxAIService, config?: Readonly<AxConfig>);
34
34
  get provider(): string;
35
- doGenerate(options: LanguageModelV2CallOptions): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>>;
36
- doStream(options: LanguageModelV2CallOptions): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>>;
35
+ doGenerate(options: LanguageModelV3CallOptions): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>>;
36
+ doStream(options: LanguageModelV3CallOptions): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>>;
37
37
  }
38
38
 
39
39
  export { AxAIProvider, AxAgentProvider };
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { LanguageModelV2, LanguageModelV2CallOptions } from '@ai-sdk/provider';
1
+ import { LanguageModelV3, LanguageModelV3CallOptions } from '@ai-sdk/provider';
2
2
  import { AxAIService, AxGenIn, AxGenOut, AxAgentic } from '@ax-llm/ax/index.js';
3
- import { CoreMessage } from 'ai';
3
+ import { ModelMessage } from 'ai';
4
4
  import { ReactNode } from 'react';
5
5
  import { z } from 'zod';
6
6
 
@@ -16,7 +16,7 @@ declare class AxAgentProvider<IN extends AxGenIn, OUT extends AxGenOut> {
16
16
  private updateState;
17
17
  constructor({ agent, updateState, generate, config, }: Readonly<{
18
18
  agent: AxAgentic<IN, OUT>;
19
- updateState: (msgs: readonly CoreMessage[]) => void;
19
+ updateState: (msgs: readonly ModelMessage[]) => void;
20
20
  generate: Renderer<OUT>;
21
21
  config?: Readonly<AxConfig>;
22
22
  }>);
@@ -24,16 +24,16 @@ declare class AxAgentProvider<IN extends AxGenIn, OUT extends AxGenOut> {
24
24
  get parameters(): z.ZodTypeAny;
25
25
  get generate(): Renderer<IN>;
26
26
  }
27
- declare class AxAIProvider implements LanguageModelV2 {
28
- readonly specificationVersion: "v2";
27
+ declare class AxAIProvider implements LanguageModelV3 {
28
+ readonly specificationVersion: "v3";
29
29
  readonly supportedUrls: Record<string, RegExp[]>;
30
30
  private readonly ai;
31
31
  private readonly config?;
32
32
  modelId: string;
33
33
  constructor(ai: AxAIService, config?: Readonly<AxConfig>);
34
34
  get provider(): string;
35
- doGenerate(options: LanguageModelV2CallOptions): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>>;
36
- doStream(options: LanguageModelV2CallOptions): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>>;
35
+ doGenerate(options: LanguageModelV3CallOptions): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>>;
36
+ doStream(options: LanguageModelV3CallOptions): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>>;
37
37
  }
38
38
 
39
39
  export { AxAIProvider, AxAgentProvider };
package/index.js CHANGED
@@ -1,8 +1,3 @@
1
- // provider.ts
2
- import {
3
- TransformStream
4
- } from "stream/web";
5
-
6
1
  // ../../node_modules/nanoid/index.js
7
2
  import crypto from "crypto";
8
3
  var POOL_SIZE_MULTIPLIER = 128;
@@ -170,7 +165,7 @@ var AxAgentProvider = class {
170
165
  }
171
166
  };
172
167
  var AxAIProvider = class {
173
- specificationVersion = "v2";
168
+ specificationVersion = "v3";
174
169
  supportedUrls = {};
175
170
  ai;
176
171
  config;
@@ -211,11 +206,7 @@ var AxAIProvider = class {
211
206
  return {
212
207
  content,
213
208
  finishReason: mapAxFinishReason(choice.finishReason),
214
- usage: {
215
- inputTokens: res.modelUsage?.tokens?.promptTokens ?? 0,
216
- outputTokens: res.modelUsage?.tokens?.completionTokens ?? 0,
217
- totalTokens: (res.modelUsage?.tokens?.promptTokens ?? 0) + (res.modelUsage?.tokens?.completionTokens ?? 0)
218
- },
209
+ usage: createUsage(res.modelUsage?.tokens),
219
210
  ...providerMetadata ? { providerMetadata } : {},
220
211
  ...response ? { response } : {},
221
212
  warnings: []
@@ -344,6 +335,9 @@ function convertToAxChatPrompt(prompt) {
344
335
  }
345
336
  case "tool": {
346
337
  for (const part of content) {
338
+ if (part.type !== "tool-result") {
339
+ throw new Error(`Unsupported part: ${part.type}`);
340
+ }
347
341
  messages.push({
348
342
  role: "function",
349
343
  functionId: part.toolCallId,
@@ -361,15 +355,20 @@ function convertToAxChatPrompt(prompt) {
361
355
  return messages;
362
356
  }
363
357
  function mapAxFinishReason(finishReason) {
358
+ const raw = finishReason;
364
359
  switch (finishReason) {
365
360
  case "stop":
366
- return "stop";
361
+ return { unified: "stop", raw };
367
362
  case "length":
368
- return "length";
363
+ return { unified: "length", raw };
369
364
  case "function_call":
370
- return "tool-calls";
365
+ return { unified: "tool-calls", raw };
366
+ case "content_filter":
367
+ return { unified: "content-filter", raw };
368
+ case "error":
369
+ return { unified: "error", raw };
371
370
  default:
372
- return "other";
371
+ return { unified: "other", raw };
373
372
  }
374
373
  }
375
374
  function createChatRequest({
@@ -399,13 +398,69 @@ function createChatRequest({
399
398
  }
400
399
  return req;
401
400
  }
401
+ function createUsage(tokens) {
402
+ return {
403
+ inputTokens: {
404
+ total: tokens?.promptTokens,
405
+ noCache: void 0,
406
+ cacheRead: tokens?.cacheReadTokens,
407
+ cacheWrite: tokens?.cacheCreationTokens
408
+ },
409
+ outputTokens: {
410
+ total: tokens?.completionTokens,
411
+ text: void 0,
412
+ reasoning: tokens?.reasoningTokens
413
+ }
414
+ };
415
+ }
416
+ function addUsage(usage, tokens) {
417
+ return {
418
+ inputTokens: {
419
+ ...usage.inputTokens,
420
+ total: (usage.inputTokens.total ?? 0) + (tokens?.promptTokens ?? 0),
421
+ cacheRead: addOptionalUsage(
422
+ usage.inputTokens.cacheRead,
423
+ tokens?.cacheReadTokens
424
+ ),
425
+ cacheWrite: addOptionalUsage(
426
+ usage.inputTokens.cacheWrite,
427
+ tokens?.cacheCreationTokens
428
+ )
429
+ },
430
+ outputTokens: {
431
+ ...usage.outputTokens,
432
+ total: (usage.outputTokens.total ?? 0) + (tokens?.completionTokens ?? 0),
433
+ reasoning: addOptionalUsage(
434
+ usage.outputTokens.reasoning,
435
+ tokens?.reasoningTokens
436
+ )
437
+ }
438
+ };
439
+ }
440
+ function addOptionalUsage(current, next) {
441
+ if (next === void 0) {
442
+ return current;
443
+ }
444
+ return (current ?? 0) + next;
445
+ }
402
446
  var AxToSDKTransformer = class extends TransformStream {
403
447
  usage = {
404
- inputTokens: 0,
405
- outputTokens: 0,
406
- totalTokens: 0
448
+ inputTokens: {
449
+ total: 0,
450
+ noCache: void 0,
451
+ cacheRead: void 0,
452
+ cacheWrite: void 0
453
+ },
454
+ outputTokens: {
455
+ total: 0,
456
+ text: void 0,
457
+ reasoning: void 0
458
+ }
459
+ };
460
+ finishReason = {
461
+ unified: "other",
462
+ raw: void 0
407
463
  };
408
- finishReason = "other";
409
464
  functionCalls = [];
410
465
  providerMetadata;
411
466
  responseMetadataSent = false;
@@ -456,11 +511,7 @@ var AxToSDKTransformer = class extends TransformStream {
456
511
  return;
457
512
  }
458
513
  if (chunk.modelUsage) {
459
- this.usage = {
460
- inputTokens: (this.usage.inputTokens ?? 0) + (chunk.modelUsage?.tokens?.promptTokens ?? 0),
461
- outputTokens: (this.usage.outputTokens ?? 0) + (chunk.modelUsage.tokens?.completionTokens ?? 0),
462
- totalTokens: (this.usage.totalTokens ?? 0) + (chunk.modelUsage?.tokens?.promptTokens ?? 0) + (chunk.modelUsage.tokens?.completionTokens ?? 0)
463
- };
514
+ this.usage = addUsage(this.usage, chunk.modelUsage.tokens);
464
515
  }
465
516
  if (choice.functionCalls) {
466
517
  for (const fc of choice.functionCalls) {
@@ -485,7 +536,7 @@ var AxToSDKTransformer = class extends TransformStream {
485
536
  obj.input = JSON.stringify(fc.function.params);
486
537
  }
487
538
  }
488
- this.finishReason = "tool-calls";
539
+ this.finishReason = { unified: "tool-calls", raw: "function_call" };
489
540
  }
490
541
  }
491
542
  if (choice.content && choice.content.length > 0) {
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../provider.ts","../../../node_modules/nanoid/index.js"],"sourcesContent":["// cspell:ignore Streamable\n\nimport {\n type ReadableStream,\n TransformStream,\n type TransformStreamDefaultController,\n} from 'node:stream/web';\nimport type {\n JSONValue,\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2FunctionTool,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2ToolCall,\n LanguageModelV2ToolChoice,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport type {\n AxAgentic,\n AxAIService,\n AxChatRequest,\n AxChatResponse,\n AxChatResponseResult,\n AxFunction,\n AxFunctionJSONSchema,\n AxGenIn,\n AxGenOut,\n} from '@ax-llm/ax/index.js';\nimport type { CoreMessage } from 'ai';\nimport { customAlphabet } from 'nanoid';\nimport type { ReactNode } from 'react';\nimport { z } from 'zod';\n\ntype Writeable<T> = { -readonly [P in keyof T]: T[P] };\ntype AxChatRequestChatPrompt = Writeable<AxChatRequest['chatPrompt'][0]>;\n\ntype AxResponseLike = Pick<\n AxChatResponse,\n | 'sessionId'\n | 'remoteId'\n | 'remoteRequestId'\n | 'remoteSessionId'\n | 'providerMetadata'\n | 'modelUsage'\n>;\n\nfunction toJSONValue(value: unknown): JSONValue | undefined {\n if (value === null) return null;\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n if (Array.isArray(value)) {\n return value\n .map((item) => toJSONValue(item))\n .filter((item): item is JSONValue => item !== undefined);\n }\n if (value && typeof value === 'object') {\n const entries = Object.entries(value)\n .map(([key, nested]) => [key, toJSONValue(nested)] as const)\n .filter((entry): entry is readonly [string, JSONValue] => {\n return entry[1] !== undefined;\n });\n return Object.fromEntries(entries) as JSONValue;\n }\n return undefined;\n}\n\nfunction mergeProviderMetadata(\n base?: SharedV2ProviderMetadata,\n next?: SharedV2ProviderMetadata\n): SharedV2ProviderMetadata | undefined {\n if (!base && !next) return undefined;\n const merged: SharedV2ProviderMetadata = {};\n for (const source of [base, next]) {\n if (!source) continue;\n for (const [provider, metadata] of Object.entries(source)) {\n merged[provider] = {\n ...(merged[provider] ?? {}),\n ...metadata,\n };\n }\n }\n return merged;\n}\n\nfunction createProviderMetadata(\n res: Readonly<AxResponseLike>,\n provider: string\n): SharedV2ProviderMetadata | undefined {\n let metadata: SharedV2ProviderMetadata | undefined;\n\n if (res.providerMetadata) {\n metadata = {};\n for (const [providerName, providerMetadata] of Object.entries(\n res.providerMetadata\n )) {\n const jsonProviderMetadata = toJSONValue(providerMetadata);\n if (\n jsonProviderMetadata &&\n typeof jsonProviderMetadata === 'object' &&\n !Array.isArray(jsonProviderMetadata)\n ) {\n metadata[providerName] = jsonProviderMetadata;\n }\n }\n }\n\n const axMetadata = {\n ...(res.sessionId ? { sessionId: res.sessionId } : {}),\n ...(res.remoteRequestId ? { requestId: res.remoteRequestId } : {}),\n ...(res.remoteSessionId ? { remoteSessionId: res.remoteSessionId } : {}),\n };\n\n if (Object.keys(axMetadata).length > 0) {\n metadata = mergeProviderMetadata(metadata, {\n [provider]: axMetadata,\n });\n }\n\n return metadata;\n}\n\nfunction createResponseMetadata(res: Readonly<AxResponseLike>) {\n if (!res.remoteId && !res.modelUsage?.model) {\n return undefined;\n }\n return {\n ...(res.remoteId ? { id: res.remoteId } : {}),\n ...(res.modelUsage?.model ? { modelId: res.modelUsage.model } : {}),\n };\n}\n\ntype AxConfig = {\n fetch?: typeof fetch;\n};\n\ntype Streamable = ReactNode | Promise<ReactNode>;\ntype Renderer<T> = (\n args: T\n) =>\n | Streamable\n | Generator<Streamable, Streamable, void>\n | AsyncGenerator<Streamable, Streamable, void>;\n\nconst nanoid = customAlphabet(\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n 7\n);\n\nexport class AxAgentProvider<IN extends AxGenIn, OUT extends AxGenOut> {\n private readonly config?: AxConfig;\n private readonly funcInfo: AxFunction;\n private generateFunction: Renderer<OUT>;\n private updateState: (msgs: readonly CoreMessage[]) => void;\n\n constructor({\n agent,\n updateState,\n generate,\n config,\n }: Readonly<{\n agent: AxAgentic<IN, OUT>;\n updateState: (msgs: readonly CoreMessage[]) => void;\n generate: Renderer<OUT>;\n config?: Readonly<AxConfig>;\n }>) {\n this.funcInfo = agent.getFunction();\n this.generateFunction = generate;\n this.updateState = updateState;\n this.config = config;\n }\n\n get description() {\n return this.funcInfo.description;\n }\n\n get parameters(): z.ZodTypeAny {\n const schema = this.funcInfo.parameters ?? {\n type: 'object',\n properties: {},\n };\n\n return convertToZodSchema(schema);\n }\n\n get generate(): Renderer<IN> {\n const fn = async (input: IN) => {\n const res = (await this.funcInfo.func(input)) as OUT;\n const toolCallId = nanoid();\n\n this.updateState([\n {\n role: 'assistant',\n content: [\n {\n type: 'tool-call',\n toolName: this.funcInfo.name,\n toolCallId,\n input: input,\n },\n ],\n },\n {\n role: 'tool',\n content: [\n {\n type: 'tool-result',\n toolName: this.funcInfo.name,\n toolCallId,\n output: { type: 'text' as const, value: JSON.stringify(res) },\n },\n ],\n },\n ]);\n\n return this.generateFunction(res);\n };\n return fn as Renderer<IN>;\n }\n}\n\nexport class AxAIProvider implements LanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly supportedUrls: Record<string, RegExp[]> = {};\n\n private readonly ai: AxAIService;\n private readonly config?: AxConfig;\n\n public modelId: string;\n\n constructor(ai: AxAIService, config?: Readonly<AxConfig>) {\n this.ai = ai;\n this.config = config;\n this.modelId = this.ai.getName();\n }\n\n get provider(): string {\n return this.ai.getName();\n }\n\n async doGenerate(\n options: LanguageModelV2CallOptions\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const req = createChatRequest(options);\n const res = (await this.ai.chat(req, {\n stream: false,\n })) as AxChatResponse;\n const choice = res.results.at(0);\n\n if (!choice) {\n throw new Error('No choice returned');\n }\n\n const content: LanguageModelV2Content[] = [];\n\n if (choice.content) {\n content.push({ type: 'text', text: choice.content });\n }\n\n if (choice.functionCalls) {\n for (const tc of choice.functionCalls) {\n content.push({\n type: 'tool-call',\n toolCallId: tc.id,\n toolName: tc.function.name,\n input:\n typeof tc.function.params === 'string'\n ? tc.function.params\n : JSON.stringify(tc.function.params),\n });\n }\n }\n\n const providerMetadata = createProviderMetadata(res, this.provider);\n const response = createResponseMetadata(res);\n\n return {\n content,\n finishReason: mapAxFinishReason(choice.finishReason),\n usage: {\n inputTokens: res.modelUsage?.tokens?.promptTokens ?? 0,\n outputTokens: res.modelUsage?.tokens?.completionTokens ?? 0,\n totalTokens:\n (res.modelUsage?.tokens?.promptTokens ?? 0) +\n (res.modelUsage?.tokens?.completionTokens ?? 0),\n },\n ...(providerMetadata ? { providerMetadata } : {}),\n ...(response ? { response } : {}),\n warnings: [] as LanguageModelV2CallWarning[],\n };\n }\n\n async doStream(\n options: LanguageModelV2CallOptions\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const req = createChatRequest(options);\n\n const res = (await this.ai.chat(req, {\n stream: true,\n })) as ReadableStream<AxChatResponse>;\n\n return {\n stream: res.pipeThrough(new AxToSDKTransformer(this.provider)) as any,\n };\n }\n}\n\nfunction prepareToolsAndToolChoice(\n tools: Array<LanguageModelV2FunctionTool>,\n toolChoice?: LanguageModelV2ToolChoice\n): Pick<AxChatRequest, 'functions' | 'functionCall'> {\n // when the tools array is empty, change it to undefined to prevent errors:\n if (!tools || tools.length === 0) {\n return {};\n }\n const functions = tools.map((f) => ({\n name: f.name,\n description: f.description ?? '',\n parameters: f.inputSchema as AxFunctionJSONSchema,\n }));\n\n if (!toolChoice) {\n return { functions };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { functions, functionCall: 'auto' };\n case 'none':\n return { functions, functionCall: 'none' };\n case 'required':\n return { functions, functionCall: 'required' };\n case 'tool':\n return {\n functions,\n functionCall: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n };\n default: {\n const ExhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${ExhaustiveCheck}`);\n }\n }\n}\n\nfunction convertToAxChatPrompt(\n prompt: Readonly<LanguageModelV2Prompt>\n): AxChatRequest['chatPrompt'] {\n const messages: AxChatRequest['chatPrompt'] = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map((part) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (!part.mediaType) {\n throw new Error('File part must have a mediaType');\n }\n let dataContent: string;\n if (typeof part.data === 'string') {\n dataContent = part.data;\n } else if (part.data instanceof URL) {\n dataContent = part.data.toString();\n } else {\n dataContent = Buffer.from(part.data).toString('base64');\n }\n return {\n type: 'image',\n mimeType: part.mediaType,\n image: dataContent,\n };\n }\n default:\n throw new Error(`Unsupported part: ${part}`);\n // case 'audio': {\n // if (!part.data) {\n // throw new Error('Audio part must have a audio');\n // }\n // if (!ArrayBuffer.isView(part.data)) {\n // throw new Error('Audio part must have an ArrayBuffer');\n // }\n // const data = Buffer.from(part.data).toString('base64');\n // return {\n // type: 'audio',\n // format: 'wav',\n // data\n // };\n // }\n }\n }),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Extract<\n AxChatRequestChatPrompt,\n { role: 'assistant' }\n >['functionCalls'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n params:\n typeof part.input === 'string'\n ? JSON.parse(part.input)\n : part.input,\n },\n });\n break;\n }\n\n default: {\n const ExhaustiveCheck = part;\n throw new Error(`Unsupported part: ${ExhaustiveCheck}`);\n }\n }\n }\n\n const functionCalls = toolCalls.length === 0 ? undefined : toolCalls;\n\n if (functionCalls || text.length > 0) {\n messages.push({\n role: 'assistant',\n content: text,\n functionCalls,\n });\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n messages.push({\n role: 'function' as const,\n functionId: part.toolCallId,\n result:\n typeof part.output === 'object' && part.output?.type === 'text'\n ? part.output.value\n : JSON.stringify(part.output, null, 2),\n });\n }\n break;\n }\n default: {\n const ExhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${ExhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n\nfunction mapAxFinishReason(\n finishReason: AxChatResponseResult['finishReason']\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'function_call':\n return 'tool-calls';\n default:\n return 'other';\n }\n}\n\nfunction createChatRequest({\n tools,\n toolChoice,\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n //seed,\n}: Readonly<LanguageModelV2CallOptions>): AxChatRequest {\n const req: AxChatRequest = {\n chatPrompt: convertToAxChatPrompt(prompt),\n ...(frequencyPenalty != null ? { frequencyPenalty } : {}),\n ...(presencePenalty != null ? { presencePenalty } : {}),\n ...(maxOutputTokens != null ? { maxTokens: maxOutputTokens } : {}),\n ...(temperature != null ? { temperature } : {}),\n ...(topP != null ? { topP } : {}),\n };\n\n if (tools && tools.length > 0) {\n const functionTools = tools.filter(\n (tool): tool is LanguageModelV2FunctionTool => tool.type === 'function'\n );\n return { ...req, ...prepareToolsAndToolChoice(functionTools, toolChoice) };\n }\n\n return req;\n}\n\nclass AxToSDKTransformer extends TransformStream<\n AxChatResponse,\n LanguageModelV2StreamPart\n> {\n private usage: LanguageModelV2Usage = {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n };\n\n private finishReason: LanguageModelV2FinishReason = 'other';\n\n private functionCalls: LanguageModelV2ToolCall[] = [];\n private providerMetadata: SharedV2ProviderMetadata | undefined;\n private responseMetadataSent = false;\n private hasStarted = false;\n private textStarted = false;\n\n constructor(provider: string) {\n const providerName = provider;\n const transformer = {\n transform: (\n chunk: Readonly<AxChatResponse>,\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart>\n ) => {\n // Emit stream-start event only once\n if (!this.hasStarted) {\n controller.enqueue({\n type: 'stream-start',\n warnings: [] as LanguageModelV2CallWarning[],\n });\n this.hasStarted = true;\n }\n\n const chunkProviderMetadata = createProviderMetadata(\n chunk,\n providerName\n );\n this.providerMetadata = mergeProviderMetadata(\n this.providerMetadata,\n chunkProviderMetadata\n );\n\n const responseMetadata = createResponseMetadata(chunk);\n if (!this.responseMetadataSent && responseMetadata) {\n controller.enqueue({\n type: 'response-metadata',\n ...responseMetadata,\n });\n this.responseMetadataSent = true;\n }\n\n const choice = chunk.results.at(0);\n if (!choice) {\n // End text if it was started\n if (this.textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: 'text-content',\n });\n }\n\n const val = {\n type: 'finish' as const,\n finishReason: this.finishReason,\n usage: this.usage,\n ...(this.providerMetadata\n ? { providerMetadata: this.providerMetadata }\n : {}),\n };\n controller.enqueue(val);\n return;\n }\n\n if (chunk.modelUsage) {\n this.usage = {\n inputTokens:\n (this.usage.inputTokens ?? 0) +\n (chunk.modelUsage?.tokens?.promptTokens ?? 0),\n outputTokens:\n (this.usage.outputTokens ?? 0) +\n (chunk.modelUsage.tokens?.completionTokens ?? 0),\n totalTokens:\n (this.usage.totalTokens ?? 0) +\n (chunk.modelUsage?.tokens?.promptTokens ?? 0) +\n (chunk.modelUsage.tokens?.completionTokens ?? 0),\n };\n }\n\n if (choice.functionCalls) {\n for (const fc of choice.functionCalls) {\n const index = this.functionCalls.findIndex(\n (f) => f.toolCallId === fc.id\n );\n if (index === -1) {\n this.functionCalls.push({\n type: 'tool-call' as const,\n toolCallId: fc.id,\n toolName: fc.function.name,\n input:\n typeof fc.function.params === 'string'\n ? fc.function.params\n : JSON.stringify(fc.function.params),\n });\n } else {\n const obj = this.functionCalls[index];\n if (!obj) {\n continue;\n }\n if (typeof fc.function.params === 'string') {\n obj.input = ((obj.input as string) || '') + fc.function.params;\n } else {\n obj.input = JSON.stringify(fc.function.params);\n }\n }\n this.finishReason = 'tool-calls';\n }\n }\n\n if (choice.content && choice.content.length > 0) {\n // Start text stream if not started\n if (!this.textStarted) {\n controller.enqueue({\n type: 'text-start',\n id: 'text-content',\n });\n this.textStarted = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'text-content',\n delta: choice.content ?? '',\n });\n this.finishReason = mapAxFinishReason(choice.finishReason);\n }\n },\n flush: (\n controller: TransformStreamDefaultController<LanguageModelV2StreamPart>\n ) => {\n // End text stream if it was started\n if (this.textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: 'text-content',\n });\n }\n\n for (const fc of this.functionCalls) {\n controller.enqueue(fc);\n }\n\n const val = {\n type: 'finish' as const,\n finishReason: this.finishReason,\n usage: this.usage,\n ...(this.providerMetadata\n ? { providerMetadata: this.providerMetadata }\n : {}),\n };\n controller.enqueue(val);\n controller.terminate();\n },\n };\n\n super(transformer);\n }\n}\n\ntype AnyZod =\n | z.AnyZodObject\n | z.ZodString\n | z.ZodNumber\n | z.ZodBoolean\n | z.ZodArray<AnyZod>\n | z.ZodOptional<AnyZod>;\n\nfunction convertToZodSchema(\n jsonSchema: Readonly<AxFunctionJSONSchema>\n): AnyZod {\n const { type, properties, required, items } = jsonSchema;\n\n switch (type) {\n case 'string':\n return z.string();\n case 'number':\n return z.number();\n case 'boolean':\n return z.boolean();\n case 'array':\n if (!items) {\n throw new Error(\"Array type must have 'items' property.\");\n }\n return z.array(convertToZodSchema(items));\n case 'object': {\n if (!properties) {\n throw new Error(\"Object type must have 'properties' property.\");\n }\n const shape: Record<string, AnyZod> = {};\n\n for (const [key, value] of Object.entries(properties)) {\n const schema = convertToZodSchema(value);\n let val = required?.includes(key) ? schema : schema.optional();\n val = value.description ? val.describe(value.description) : val;\n shape[key] = val;\n }\n return z.object(shape);\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n","import crypto from 'crypto'\nimport { urlAlphabet } from './url-alphabet/index.js'\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nlet fillPool = bytes => {\n if (!pool || pool.length < bytes) {\n pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n crypto.randomFillSync(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.randomFillSync(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\nlet random = bytes => {\n fillPool((bytes |= 0))\n return pool.subarray(poolOffset - bytes, poolOffset)\n}\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let i = step\n while (i--) {\n id += alphabet[bytes[i] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n fillPool((size |= 0))\n let id = ''\n for (let i = poolOffset - size; i < poolOffset; i++) {\n id += urlAlphabet[pool[i] & 63]\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../node_modules/nanoid/index.js","../provider.ts"],"sourcesContent":["import crypto from 'crypto'\nimport { urlAlphabet } from './url-alphabet/index.js'\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nlet fillPool = bytes => {\n if (!pool || pool.length < bytes) {\n pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n crypto.randomFillSync(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.randomFillSync(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\nlet random = bytes => {\n fillPool((bytes |= 0))\n return pool.subarray(poolOffset - bytes, poolOffset)\n}\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let i = step\n while (i--) {\n id += alphabet[bytes[i] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n fillPool((size |= 0))\n let id = ''\n for (let i = poolOffset - size; i < poolOffset; i++) {\n id += urlAlphabet[pool[i] & 63]\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","// cspell:ignore Streamable\n\nimport type {\n JSONValue,\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3FunctionTool,\n LanguageModelV3Prompt,\n LanguageModelV3StreamPart,\n LanguageModelV3ToolCall,\n LanguageModelV3ToolChoice,\n LanguageModelV3Usage,\n SharedV3ProviderMetadata,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport type {\n AxAgentic,\n AxAIService,\n AxChatRequest,\n AxChatResponse,\n AxChatResponseResult,\n AxFunction,\n AxFunctionJSONSchema,\n AxGenIn,\n AxGenOut,\n AxTokenUsage,\n} from '@ax-llm/ax/index.js';\nimport type { ModelMessage } from 'ai';\nimport { customAlphabet } from 'nanoid';\nimport type { ReactNode } from 'react';\nimport { z } from 'zod';\n\ntype Writeable<T> = { -readonly [P in keyof T]: T[P] };\ntype AxChatRequestChatPrompt = Writeable<AxChatRequest['chatPrompt'][0]>;\n\ntype AxResponseLike = Pick<\n AxChatResponse,\n | 'sessionId'\n | 'remoteId'\n | 'remoteRequestId'\n | 'remoteSessionId'\n | 'providerMetadata'\n | 'modelUsage'\n>;\n\nfunction toJSONValue(value: unknown): JSONValue | undefined {\n if (value === null) return null;\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n if (Array.isArray(value)) {\n return value\n .map((item) => toJSONValue(item))\n .filter((item): item is JSONValue => item !== undefined);\n }\n if (value && typeof value === 'object') {\n const entries = Object.entries(value)\n .map(([key, nested]) => [key, toJSONValue(nested)] as const)\n .filter((entry): entry is readonly [string, JSONValue] => {\n return entry[1] !== undefined;\n });\n return Object.fromEntries(entries) as JSONValue;\n }\n return undefined;\n}\n\nfunction mergeProviderMetadata(\n base?: SharedV3ProviderMetadata,\n next?: SharedV3ProviderMetadata\n): SharedV3ProviderMetadata | undefined {\n if (!base && !next) return undefined;\n const merged: SharedV3ProviderMetadata = {};\n for (const source of [base, next]) {\n if (!source) continue;\n for (const [provider, metadata] of Object.entries(source)) {\n merged[provider] = {\n ...(merged[provider] ?? {}),\n ...metadata,\n };\n }\n }\n return merged;\n}\n\nfunction createProviderMetadata(\n res: Readonly<AxResponseLike>,\n provider: string\n): SharedV3ProviderMetadata | undefined {\n let metadata: SharedV3ProviderMetadata | undefined;\n\n if (res.providerMetadata) {\n metadata = {};\n for (const [providerName, providerMetadata] of Object.entries(\n res.providerMetadata\n )) {\n const jsonProviderMetadata = toJSONValue(providerMetadata);\n if (\n jsonProviderMetadata &&\n typeof jsonProviderMetadata === 'object' &&\n !Array.isArray(jsonProviderMetadata)\n ) {\n metadata[providerName] = jsonProviderMetadata;\n }\n }\n }\n\n const axMetadata = {\n ...(res.sessionId ? { sessionId: res.sessionId } : {}),\n ...(res.remoteRequestId ? { requestId: res.remoteRequestId } : {}),\n ...(res.remoteSessionId ? { remoteSessionId: res.remoteSessionId } : {}),\n };\n\n if (Object.keys(axMetadata).length > 0) {\n metadata = mergeProviderMetadata(metadata, {\n [provider]: axMetadata,\n });\n }\n\n return metadata;\n}\n\nfunction createResponseMetadata(res: Readonly<AxResponseLike>) {\n if (!res.remoteId && !res.modelUsage?.model) {\n return undefined;\n }\n return {\n ...(res.remoteId ? { id: res.remoteId } : {}),\n ...(res.modelUsage?.model ? { modelId: res.modelUsage.model } : {}),\n };\n}\n\ntype AxConfig = {\n fetch?: typeof fetch;\n};\n\ntype Streamable = ReactNode | Promise<ReactNode>;\ntype Renderer<T> = (\n args: T\n) =>\n | Streamable\n | Generator<Streamable, Streamable, void>\n | AsyncGenerator<Streamable, Streamable, void>;\n\nconst nanoid = customAlphabet(\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n 7\n);\n\nexport class AxAgentProvider<IN extends AxGenIn, OUT extends AxGenOut> {\n private readonly config?: AxConfig;\n private readonly funcInfo: AxFunction;\n private generateFunction: Renderer<OUT>;\n private updateState: (msgs: readonly ModelMessage[]) => void;\n\n constructor({\n agent,\n updateState,\n generate,\n config,\n }: Readonly<{\n agent: AxAgentic<IN, OUT>;\n updateState: (msgs: readonly ModelMessage[]) => void;\n generate: Renderer<OUT>;\n config?: Readonly<AxConfig>;\n }>) {\n this.funcInfo = agent.getFunction();\n this.generateFunction = generate;\n this.updateState = updateState;\n this.config = config;\n }\n\n get description() {\n return this.funcInfo.description;\n }\n\n get parameters(): z.ZodTypeAny {\n const schema = this.funcInfo.parameters ?? {\n type: 'object',\n properties: {},\n };\n\n return convertToZodSchema(schema);\n }\n\n get generate(): Renderer<IN> {\n const fn = async (input: IN) => {\n const res = (await this.funcInfo.func(input)) as OUT;\n const toolCallId = nanoid();\n\n this.updateState([\n {\n role: 'assistant',\n content: [\n {\n type: 'tool-call',\n toolName: this.funcInfo.name,\n toolCallId,\n input: input,\n },\n ],\n },\n {\n role: 'tool',\n content: [\n {\n type: 'tool-result',\n toolName: this.funcInfo.name,\n toolCallId,\n output: { type: 'text' as const, value: JSON.stringify(res) },\n },\n ],\n },\n ]);\n\n return this.generateFunction(res);\n };\n return fn as Renderer<IN>;\n }\n}\n\nexport class AxAIProvider implements LanguageModelV3 {\n readonly specificationVersion = 'v3' as const;\n readonly supportedUrls: Record<string, RegExp[]> = {};\n\n private readonly ai: AxAIService;\n private readonly config?: AxConfig;\n\n public modelId: string;\n\n constructor(ai: AxAIService, config?: Readonly<AxConfig>) {\n this.ai = ai;\n this.config = config;\n this.modelId = this.ai.getName();\n }\n\n get provider(): string {\n return this.ai.getName();\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions\n ): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>> {\n const req = createChatRequest(options);\n const res = (await this.ai.chat(req, {\n stream: false,\n })) as AxChatResponse;\n const choice = res.results.at(0);\n\n if (!choice) {\n throw new Error('No choice returned');\n }\n\n const content: LanguageModelV3Content[] = [];\n\n if (choice.content) {\n content.push({ type: 'text', text: choice.content });\n }\n\n if (choice.functionCalls) {\n for (const tc of choice.functionCalls) {\n content.push({\n type: 'tool-call',\n toolCallId: tc.id,\n toolName: tc.function.name,\n input:\n typeof tc.function.params === 'string'\n ? tc.function.params\n : JSON.stringify(tc.function.params),\n });\n }\n }\n\n const providerMetadata = createProviderMetadata(res, this.provider);\n const response = createResponseMetadata(res);\n\n return {\n content,\n finishReason: mapAxFinishReason(choice.finishReason),\n usage: createUsage(res.modelUsage?.tokens),\n ...(providerMetadata ? { providerMetadata } : {}),\n ...(response ? { response } : {}),\n warnings: [] as SharedV3Warning[],\n };\n }\n\n async doStream(\n options: LanguageModelV3CallOptions\n ): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>> {\n const req = createChatRequest(options);\n\n const res = (await this.ai.chat(req, {\n stream: true,\n })) as ReadableStream<AxChatResponse>;\n\n return {\n stream: res.pipeThrough(new AxToSDKTransformer(this.provider)),\n };\n }\n}\n\nfunction prepareToolsAndToolChoice(\n tools: Array<LanguageModelV3FunctionTool>,\n toolChoice?: LanguageModelV3ToolChoice\n): Pick<AxChatRequest, 'functions' | 'functionCall'> {\n // when the tools array is empty, change it to undefined to prevent errors:\n if (!tools || tools.length === 0) {\n return {};\n }\n const functions = tools.map((f) => ({\n name: f.name,\n description: f.description ?? '',\n parameters: f.inputSchema as AxFunctionJSONSchema,\n }));\n\n if (!toolChoice) {\n return { functions };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { functions, functionCall: 'auto' };\n case 'none':\n return { functions, functionCall: 'none' };\n case 'required':\n return { functions, functionCall: 'required' };\n case 'tool':\n return {\n functions,\n functionCall: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n };\n default: {\n const ExhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${ExhaustiveCheck}`);\n }\n }\n}\n\nfunction convertToAxChatPrompt(\n prompt: Readonly<LanguageModelV3Prompt>\n): AxChatRequest['chatPrompt'] {\n const messages: AxChatRequest['chatPrompt'] = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map((part) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (!part.mediaType) {\n throw new Error('File part must have a mediaType');\n }\n let dataContent: string;\n if (typeof part.data === 'string') {\n dataContent = part.data;\n } else if (part.data instanceof URL) {\n dataContent = part.data.toString();\n } else {\n dataContent = Buffer.from(part.data).toString('base64');\n }\n return {\n type: 'image',\n mimeType: part.mediaType,\n image: dataContent,\n };\n }\n default:\n throw new Error(`Unsupported part: ${part}`);\n // case 'audio': {\n // if (!part.data) {\n // throw new Error('Audio part must have a audio');\n // }\n // if (!ArrayBuffer.isView(part.data)) {\n // throw new Error('Audio part must have an ArrayBuffer');\n // }\n // const data = Buffer.from(part.data).toString('base64');\n // return {\n // type: 'audio',\n // format: 'wav',\n // data\n // };\n // }\n }\n }),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Extract<\n AxChatRequestChatPrompt,\n { role: 'assistant' }\n >['functionCalls'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n params:\n typeof part.input === 'string'\n ? JSON.parse(part.input)\n : part.input,\n },\n });\n break;\n }\n\n default: {\n const ExhaustiveCheck = part;\n throw new Error(`Unsupported part: ${ExhaustiveCheck}`);\n }\n }\n }\n\n const functionCalls = toolCalls.length === 0 ? undefined : toolCalls;\n\n if (functionCalls || text.length > 0) {\n messages.push({\n role: 'assistant',\n content: text,\n functionCalls,\n });\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n if (part.type !== 'tool-result') {\n throw new Error(`Unsupported part: ${part.type}`);\n }\n messages.push({\n role: 'function' as const,\n functionId: part.toolCallId,\n result:\n typeof part.output === 'object' && part.output?.type === 'text'\n ? part.output.value\n : JSON.stringify(part.output, null, 2),\n });\n }\n break;\n }\n default: {\n const ExhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${ExhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n\nfunction mapAxFinishReason(\n finishReason: AxChatResponseResult['finishReason']\n): LanguageModelV3FinishReason {\n const raw = finishReason;\n switch (finishReason) {\n case 'stop':\n return { unified: 'stop', raw };\n case 'length':\n return { unified: 'length', raw };\n case 'function_call':\n return { unified: 'tool-calls', raw };\n case 'content_filter':\n return { unified: 'content-filter', raw };\n case 'error':\n return { unified: 'error', raw };\n default:\n return { unified: 'other', raw };\n }\n}\n\nfunction createChatRequest({\n tools,\n toolChoice,\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n //seed,\n}: Readonly<LanguageModelV3CallOptions>): AxChatRequest {\n const req: AxChatRequest = {\n chatPrompt: convertToAxChatPrompt(prompt),\n ...(frequencyPenalty != null ? { frequencyPenalty } : {}),\n ...(presencePenalty != null ? { presencePenalty } : {}),\n ...(maxOutputTokens != null ? { maxTokens: maxOutputTokens } : {}),\n ...(temperature != null ? { temperature } : {}),\n ...(topP != null ? { topP } : {}),\n };\n\n if (tools && tools.length > 0) {\n const functionTools = tools.filter(\n (tool): tool is LanguageModelV3FunctionTool => tool.type === 'function'\n );\n return { ...req, ...prepareToolsAndToolChoice(functionTools, toolChoice) };\n }\n\n return req;\n}\n\nfunction createUsage(tokens?: Readonly<AxTokenUsage>): LanguageModelV3Usage {\n return {\n inputTokens: {\n total: tokens?.promptTokens,\n noCache: undefined,\n cacheRead: tokens?.cacheReadTokens,\n cacheWrite: tokens?.cacheCreationTokens,\n },\n outputTokens: {\n total: tokens?.completionTokens,\n text: undefined,\n reasoning: tokens?.reasoningTokens,\n },\n };\n}\n\nfunction addUsage(\n usage: Readonly<LanguageModelV3Usage>,\n tokens?: Readonly<AxTokenUsage>\n): LanguageModelV3Usage {\n return {\n inputTokens: {\n ...usage.inputTokens,\n total: (usage.inputTokens.total ?? 0) + (tokens?.promptTokens ?? 0),\n cacheRead: addOptionalUsage(\n usage.inputTokens.cacheRead,\n tokens?.cacheReadTokens\n ),\n cacheWrite: addOptionalUsage(\n usage.inputTokens.cacheWrite,\n tokens?.cacheCreationTokens\n ),\n },\n outputTokens: {\n ...usage.outputTokens,\n total: (usage.outputTokens.total ?? 0) + (tokens?.completionTokens ?? 0),\n reasoning: addOptionalUsage(\n usage.outputTokens.reasoning,\n tokens?.reasoningTokens\n ),\n },\n };\n}\n\nfunction addOptionalUsage(\n current: number | undefined,\n next: number | undefined\n): number | undefined {\n if (next === undefined) {\n return current;\n }\n return (current ?? 0) + next;\n}\n\nclass AxToSDKTransformer extends TransformStream<\n AxChatResponse,\n LanguageModelV3StreamPart\n> {\n private usage: LanguageModelV3Usage = {\n inputTokens: {\n total: 0,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: 0,\n text: undefined,\n reasoning: undefined,\n },\n };\n\n private finishReason: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n\n private functionCalls: LanguageModelV3ToolCall[] = [];\n private providerMetadata: SharedV3ProviderMetadata | undefined;\n private responseMetadataSent = false;\n private hasStarted = false;\n private textStarted = false;\n\n constructor(provider: string) {\n const providerName = provider;\n const transformer = {\n transform: (\n chunk: Readonly<AxChatResponse>,\n controller: TransformStreamDefaultController<LanguageModelV3StreamPart>\n ) => {\n // Emit stream-start event only once\n if (!this.hasStarted) {\n controller.enqueue({\n type: 'stream-start',\n warnings: [] as SharedV3Warning[],\n });\n this.hasStarted = true;\n }\n\n const chunkProviderMetadata = createProviderMetadata(\n chunk,\n providerName\n );\n this.providerMetadata = mergeProviderMetadata(\n this.providerMetadata,\n chunkProviderMetadata\n );\n\n const responseMetadata = createResponseMetadata(chunk);\n if (!this.responseMetadataSent && responseMetadata) {\n controller.enqueue({\n type: 'response-metadata',\n ...responseMetadata,\n });\n this.responseMetadataSent = true;\n }\n\n const choice = chunk.results.at(0);\n if (!choice) {\n // End text if it was started\n if (this.textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: 'text-content',\n });\n }\n\n const val = {\n type: 'finish' as const,\n finishReason: this.finishReason,\n usage: this.usage,\n ...(this.providerMetadata\n ? { providerMetadata: this.providerMetadata }\n : {}),\n };\n controller.enqueue(val);\n return;\n }\n\n if (chunk.modelUsage) {\n this.usage = addUsage(this.usage, chunk.modelUsage.tokens);\n }\n\n if (choice.functionCalls) {\n for (const fc of choice.functionCalls) {\n const index = this.functionCalls.findIndex(\n (f) => f.toolCallId === fc.id\n );\n if (index === -1) {\n this.functionCalls.push({\n type: 'tool-call' as const,\n toolCallId: fc.id,\n toolName: fc.function.name,\n input:\n typeof fc.function.params === 'string'\n ? fc.function.params\n : JSON.stringify(fc.function.params),\n });\n } else {\n const obj = this.functionCalls[index];\n if (!obj) {\n continue;\n }\n if (typeof fc.function.params === 'string') {\n obj.input = ((obj.input as string) || '') + fc.function.params;\n } else {\n obj.input = JSON.stringify(fc.function.params);\n }\n }\n this.finishReason = { unified: 'tool-calls', raw: 'function_call' };\n }\n }\n\n if (choice.content && choice.content.length > 0) {\n // Start text stream if not started\n if (!this.textStarted) {\n controller.enqueue({\n type: 'text-start',\n id: 'text-content',\n });\n this.textStarted = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'text-content',\n delta: choice.content ?? '',\n });\n this.finishReason = mapAxFinishReason(choice.finishReason);\n }\n },\n flush: (\n controller: TransformStreamDefaultController<LanguageModelV3StreamPart>\n ) => {\n // End text stream if it was started\n if (this.textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: 'text-content',\n });\n }\n\n for (const fc of this.functionCalls) {\n controller.enqueue(fc);\n }\n\n const val = {\n type: 'finish' as const,\n finishReason: this.finishReason,\n usage: this.usage,\n ...(this.providerMetadata\n ? { providerMetadata: this.providerMetadata }\n : {}),\n };\n controller.enqueue(val);\n controller.terminate();\n },\n };\n\n super(transformer);\n }\n}\n\ntype AnyZod =\n | z.AnyZodObject\n | z.ZodString\n | z.ZodNumber\n | z.ZodBoolean\n | z.ZodArray<AnyZod>\n | z.ZodOptional<AnyZod>;\n\nfunction convertToZodSchema(\n jsonSchema: Readonly<AxFunctionJSONSchema>\n): AnyZod {\n const { type, properties, required, items } = jsonSchema;\n\n switch (type) {\n case 'string':\n return z.string();\n case 'number':\n return z.number();\n case 'boolean':\n return z.boolean();\n case 'array':\n if (!items) {\n throw new Error(\"Array type must have 'items' property.\");\n }\n return z.array(convertToZodSchema(items));\n case 'object': {\n if (!properties) {\n throw new Error(\"Object type must have 'properties' property.\");\n }\n const shape: Record<string, AnyZod> = {};\n\n for (const [key, value] of Object.entries(properties)) {\n const schema = convertToZodSchema(value);\n let val = required?.includes(key) ? schema : schema.optional();\n val = value.description ? val.describe(value.description) : val;\n shape[key] = val;\n }\n return z.object(shape);\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ax-llm/ax-ai-sdk-provider",
3
- "version": "22.0.7",
3
+ "version": "22.0.8",
4
4
  "type": "module",
5
5
  "description": "Ax AI SDK Provider for the Vercel AI SDK",
6
6
  "repository": {
@@ -12,11 +12,15 @@
12
12
  },
13
13
  "license": "Apache-2.0",
14
14
  "keywords": [],
15
+ "engines": {
16
+ "node": ">=22"
17
+ },
15
18
  "dependencies": {
16
- "@ai-sdk/provider-utils": "^3.0.10",
17
- "@ax-llm/ax": "22.0.7",
18
- "ai": "^5.0.100",
19
- "zod": "^3.23.8"
19
+ "@ai-sdk/provider": "^4.0.0",
20
+ "@ai-sdk/provider-utils": "^5.0.0",
21
+ "@ax-llm/ax": "22.0.8",
22
+ "ai": "^7.0.2",
23
+ "zod": "^3.25.76"
20
24
  },
21
25
  "bugs": {
22
26
  "url": "https://github.com/@ax-llm/ax/issues"
@@ -32,7 +36,6 @@
32
36
  "import": "./index.js",
33
37
  "require": "./index.cjs"
34
38
  },
35
- "./index.global.js": "./index.global.js",
36
39
  "./*": {
37
40
  "types": "./*.d.ts",
38
41
  "import": "./*.js",