@ax-llm/ax-ai-sdk-provider 21.0.9 → 21.0.10
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/index.cjs +93 -4
- package/index.cjs.map +1 -1
- package/index.js +93 -4
- package/index.js.map +1 -1
- package/package.json +2 -2
package/index.cjs
CHANGED
|
@@ -77,6 +77,70 @@ var customAlphabet = (alphabet, size = 21) => customRandom(alphabet, size, rando
|
|
|
77
77
|
|
|
78
78
|
// provider.ts
|
|
79
79
|
var import_zod = require("zod");
|
|
80
|
+
function toJSONValue(value) {
|
|
81
|
+
if (value === null) return null;
|
|
82
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
83
|
+
return value;
|
|
84
|
+
}
|
|
85
|
+
if (Array.isArray(value)) {
|
|
86
|
+
return value.map((item) => toJSONValue(item)).filter((item) => item !== void 0);
|
|
87
|
+
}
|
|
88
|
+
if (value && typeof value === "object") {
|
|
89
|
+
const entries = Object.entries(value).map(([key, nested]) => [key, toJSONValue(nested)]).filter((entry) => {
|
|
90
|
+
return entry[1] !== void 0;
|
|
91
|
+
});
|
|
92
|
+
return Object.fromEntries(entries);
|
|
93
|
+
}
|
|
94
|
+
return void 0;
|
|
95
|
+
}
|
|
96
|
+
function mergeProviderMetadata(base, next) {
|
|
97
|
+
if (!base && !next) return void 0;
|
|
98
|
+
const merged = {};
|
|
99
|
+
for (const source of [base, next]) {
|
|
100
|
+
if (!source) continue;
|
|
101
|
+
for (const [provider, metadata] of Object.entries(source)) {
|
|
102
|
+
merged[provider] = {
|
|
103
|
+
...merged[provider] ?? {},
|
|
104
|
+
...metadata
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return merged;
|
|
109
|
+
}
|
|
110
|
+
function createProviderMetadata(res, provider) {
|
|
111
|
+
let metadata;
|
|
112
|
+
if (res.providerMetadata) {
|
|
113
|
+
metadata = {};
|
|
114
|
+
for (const [providerName, providerMetadata] of Object.entries(
|
|
115
|
+
res.providerMetadata
|
|
116
|
+
)) {
|
|
117
|
+
const jsonProviderMetadata = toJSONValue(providerMetadata);
|
|
118
|
+
if (jsonProviderMetadata && typeof jsonProviderMetadata === "object" && !Array.isArray(jsonProviderMetadata)) {
|
|
119
|
+
metadata[providerName] = jsonProviderMetadata;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const axMetadata = {
|
|
124
|
+
...res.sessionId ? { sessionId: res.sessionId } : {},
|
|
125
|
+
...res.remoteRequestId ? { requestId: res.remoteRequestId } : {},
|
|
126
|
+
...res.remoteSessionId ? { remoteSessionId: res.remoteSessionId } : {}
|
|
127
|
+
};
|
|
128
|
+
if (Object.keys(axMetadata).length > 0) {
|
|
129
|
+
metadata = mergeProviderMetadata(metadata, {
|
|
130
|
+
[provider]: axMetadata
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return metadata;
|
|
134
|
+
}
|
|
135
|
+
function createResponseMetadata(res) {
|
|
136
|
+
if (!res.remoteId && !res.modelUsage?.model) {
|
|
137
|
+
return void 0;
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
...res.remoteId ? { id: res.remoteId } : {},
|
|
141
|
+
...res.modelUsage?.model ? { modelId: res.modelUsage.model } : {}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
80
144
|
var nanoid = customAlphabet(
|
|
81
145
|
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
|
82
146
|
7
|
|
@@ -177,6 +241,8 @@ var AxAIProvider = class {
|
|
|
177
241
|
});
|
|
178
242
|
}
|
|
179
243
|
}
|
|
244
|
+
const providerMetadata = createProviderMetadata(res, this.provider);
|
|
245
|
+
const response = createResponseMetadata(res);
|
|
180
246
|
return {
|
|
181
247
|
content,
|
|
182
248
|
finishReason: mapAxFinishReason(choice.finishReason),
|
|
@@ -185,6 +251,8 @@ var AxAIProvider = class {
|
|
|
185
251
|
outputTokens: res.modelUsage?.tokens?.completionTokens ?? 0,
|
|
186
252
|
totalTokens: (res.modelUsage?.tokens?.promptTokens ?? 0) + (res.modelUsage?.tokens?.completionTokens ?? 0)
|
|
187
253
|
},
|
|
254
|
+
...providerMetadata ? { providerMetadata } : {},
|
|
255
|
+
...response ? { response } : {},
|
|
188
256
|
warnings: []
|
|
189
257
|
};
|
|
190
258
|
}
|
|
@@ -194,7 +262,7 @@ var AxAIProvider = class {
|
|
|
194
262
|
stream: true
|
|
195
263
|
});
|
|
196
264
|
return {
|
|
197
|
-
stream: res.pipeThrough(new AxToSDKTransformer())
|
|
265
|
+
stream: res.pipeThrough(new AxToSDKTransformer(this.provider))
|
|
198
266
|
};
|
|
199
267
|
}
|
|
200
268
|
};
|
|
@@ -374,9 +442,12 @@ var AxToSDKTransformer = class extends import_web.TransformStream {
|
|
|
374
442
|
};
|
|
375
443
|
finishReason = "other";
|
|
376
444
|
functionCalls = [];
|
|
445
|
+
providerMetadata;
|
|
446
|
+
responseMetadataSent = false;
|
|
377
447
|
hasStarted = false;
|
|
378
448
|
textStarted = false;
|
|
379
|
-
constructor() {
|
|
449
|
+
constructor(provider) {
|
|
450
|
+
const providerName = provider;
|
|
380
451
|
const transformer = {
|
|
381
452
|
transform: (chunk, controller) => {
|
|
382
453
|
if (!this.hasStarted) {
|
|
@@ -386,6 +457,22 @@ var AxToSDKTransformer = class extends import_web.TransformStream {
|
|
|
386
457
|
});
|
|
387
458
|
this.hasStarted = true;
|
|
388
459
|
}
|
|
460
|
+
const chunkProviderMetadata = createProviderMetadata(
|
|
461
|
+
chunk,
|
|
462
|
+
providerName
|
|
463
|
+
);
|
|
464
|
+
this.providerMetadata = mergeProviderMetadata(
|
|
465
|
+
this.providerMetadata,
|
|
466
|
+
chunkProviderMetadata
|
|
467
|
+
);
|
|
468
|
+
const responseMetadata = createResponseMetadata(chunk);
|
|
469
|
+
if (!this.responseMetadataSent && responseMetadata) {
|
|
470
|
+
controller.enqueue({
|
|
471
|
+
type: "response-metadata",
|
|
472
|
+
...responseMetadata
|
|
473
|
+
});
|
|
474
|
+
this.responseMetadataSent = true;
|
|
475
|
+
}
|
|
389
476
|
const choice = chunk.results.at(0);
|
|
390
477
|
if (!choice) {
|
|
391
478
|
if (this.textStarted) {
|
|
@@ -397,7 +484,8 @@ var AxToSDKTransformer = class extends import_web.TransformStream {
|
|
|
397
484
|
const val = {
|
|
398
485
|
type: "finish",
|
|
399
486
|
finishReason: this.finishReason,
|
|
400
|
-
usage: this.usage
|
|
487
|
+
usage: this.usage,
|
|
488
|
+
...this.providerMetadata ? { providerMetadata: this.providerMetadata } : {}
|
|
401
489
|
};
|
|
402
490
|
controller.enqueue(val);
|
|
403
491
|
return;
|
|
@@ -464,7 +552,8 @@ var AxToSDKTransformer = class extends import_web.TransformStream {
|
|
|
464
552
|
const val = {
|
|
465
553
|
type: "finish",
|
|
466
554
|
finishReason: this.finishReason,
|
|
467
|
-
usage: this.usage
|
|
555
|
+
usage: this.usage,
|
|
556
|
+
...this.providerMetadata ? { providerMetadata: this.providerMetadata } : {}
|
|
468
557
|
};
|
|
469
558
|
controller.enqueue(val);
|
|
470
559
|
controller.terminate();
|
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 LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2FunctionTool,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2ToolCall,\n LanguageModelV2ToolChoice,\n LanguageModelV2Usage,\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 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 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 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()) 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 hasStarted = false;\n private textStarted = false;\n\n constructor() {\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 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 };\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 };\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","../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"]}
|
package/index.js
CHANGED
|
@@ -42,6 +42,70 @@ var customAlphabet = (alphabet, size = 21) => customRandom(alphabet, size, rando
|
|
|
42
42
|
|
|
43
43
|
// provider.ts
|
|
44
44
|
import { z } from "zod";
|
|
45
|
+
function toJSONValue(value) {
|
|
46
|
+
if (value === null) return null;
|
|
47
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
if (Array.isArray(value)) {
|
|
51
|
+
return value.map((item) => toJSONValue(item)).filter((item) => item !== void 0);
|
|
52
|
+
}
|
|
53
|
+
if (value && typeof value === "object") {
|
|
54
|
+
const entries = Object.entries(value).map(([key, nested]) => [key, toJSONValue(nested)]).filter((entry) => {
|
|
55
|
+
return entry[1] !== void 0;
|
|
56
|
+
});
|
|
57
|
+
return Object.fromEntries(entries);
|
|
58
|
+
}
|
|
59
|
+
return void 0;
|
|
60
|
+
}
|
|
61
|
+
function mergeProviderMetadata(base, next) {
|
|
62
|
+
if (!base && !next) return void 0;
|
|
63
|
+
const merged = {};
|
|
64
|
+
for (const source of [base, next]) {
|
|
65
|
+
if (!source) continue;
|
|
66
|
+
for (const [provider, metadata] of Object.entries(source)) {
|
|
67
|
+
merged[provider] = {
|
|
68
|
+
...merged[provider] ?? {},
|
|
69
|
+
...metadata
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return merged;
|
|
74
|
+
}
|
|
75
|
+
function createProviderMetadata(res, provider) {
|
|
76
|
+
let metadata;
|
|
77
|
+
if (res.providerMetadata) {
|
|
78
|
+
metadata = {};
|
|
79
|
+
for (const [providerName, providerMetadata] of Object.entries(
|
|
80
|
+
res.providerMetadata
|
|
81
|
+
)) {
|
|
82
|
+
const jsonProviderMetadata = toJSONValue(providerMetadata);
|
|
83
|
+
if (jsonProviderMetadata && typeof jsonProviderMetadata === "object" && !Array.isArray(jsonProviderMetadata)) {
|
|
84
|
+
metadata[providerName] = jsonProviderMetadata;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const axMetadata = {
|
|
89
|
+
...res.sessionId ? { sessionId: res.sessionId } : {},
|
|
90
|
+
...res.remoteRequestId ? { requestId: res.remoteRequestId } : {},
|
|
91
|
+
...res.remoteSessionId ? { remoteSessionId: res.remoteSessionId } : {}
|
|
92
|
+
};
|
|
93
|
+
if (Object.keys(axMetadata).length > 0) {
|
|
94
|
+
metadata = mergeProviderMetadata(metadata, {
|
|
95
|
+
[provider]: axMetadata
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return metadata;
|
|
99
|
+
}
|
|
100
|
+
function createResponseMetadata(res) {
|
|
101
|
+
if (!res.remoteId && !res.modelUsage?.model) {
|
|
102
|
+
return void 0;
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
...res.remoteId ? { id: res.remoteId } : {},
|
|
106
|
+
...res.modelUsage?.model ? { modelId: res.modelUsage.model } : {}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
45
109
|
var nanoid = customAlphabet(
|
|
46
110
|
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
|
47
111
|
7
|
|
@@ -142,6 +206,8 @@ var AxAIProvider = class {
|
|
|
142
206
|
});
|
|
143
207
|
}
|
|
144
208
|
}
|
|
209
|
+
const providerMetadata = createProviderMetadata(res, this.provider);
|
|
210
|
+
const response = createResponseMetadata(res);
|
|
145
211
|
return {
|
|
146
212
|
content,
|
|
147
213
|
finishReason: mapAxFinishReason(choice.finishReason),
|
|
@@ -150,6 +216,8 @@ var AxAIProvider = class {
|
|
|
150
216
|
outputTokens: res.modelUsage?.tokens?.completionTokens ?? 0,
|
|
151
217
|
totalTokens: (res.modelUsage?.tokens?.promptTokens ?? 0) + (res.modelUsage?.tokens?.completionTokens ?? 0)
|
|
152
218
|
},
|
|
219
|
+
...providerMetadata ? { providerMetadata } : {},
|
|
220
|
+
...response ? { response } : {},
|
|
153
221
|
warnings: []
|
|
154
222
|
};
|
|
155
223
|
}
|
|
@@ -159,7 +227,7 @@ var AxAIProvider = class {
|
|
|
159
227
|
stream: true
|
|
160
228
|
});
|
|
161
229
|
return {
|
|
162
|
-
stream: res.pipeThrough(new AxToSDKTransformer())
|
|
230
|
+
stream: res.pipeThrough(new AxToSDKTransformer(this.provider))
|
|
163
231
|
};
|
|
164
232
|
}
|
|
165
233
|
};
|
|
@@ -339,9 +407,12 @@ var AxToSDKTransformer = class extends TransformStream {
|
|
|
339
407
|
};
|
|
340
408
|
finishReason = "other";
|
|
341
409
|
functionCalls = [];
|
|
410
|
+
providerMetadata;
|
|
411
|
+
responseMetadataSent = false;
|
|
342
412
|
hasStarted = false;
|
|
343
413
|
textStarted = false;
|
|
344
|
-
constructor() {
|
|
414
|
+
constructor(provider) {
|
|
415
|
+
const providerName = provider;
|
|
345
416
|
const transformer = {
|
|
346
417
|
transform: (chunk, controller) => {
|
|
347
418
|
if (!this.hasStarted) {
|
|
@@ -351,6 +422,22 @@ var AxToSDKTransformer = class extends TransformStream {
|
|
|
351
422
|
});
|
|
352
423
|
this.hasStarted = true;
|
|
353
424
|
}
|
|
425
|
+
const chunkProviderMetadata = createProviderMetadata(
|
|
426
|
+
chunk,
|
|
427
|
+
providerName
|
|
428
|
+
);
|
|
429
|
+
this.providerMetadata = mergeProviderMetadata(
|
|
430
|
+
this.providerMetadata,
|
|
431
|
+
chunkProviderMetadata
|
|
432
|
+
);
|
|
433
|
+
const responseMetadata = createResponseMetadata(chunk);
|
|
434
|
+
if (!this.responseMetadataSent && responseMetadata) {
|
|
435
|
+
controller.enqueue({
|
|
436
|
+
type: "response-metadata",
|
|
437
|
+
...responseMetadata
|
|
438
|
+
});
|
|
439
|
+
this.responseMetadataSent = true;
|
|
440
|
+
}
|
|
354
441
|
const choice = chunk.results.at(0);
|
|
355
442
|
if (!choice) {
|
|
356
443
|
if (this.textStarted) {
|
|
@@ -362,7 +449,8 @@ var AxToSDKTransformer = class extends TransformStream {
|
|
|
362
449
|
const val = {
|
|
363
450
|
type: "finish",
|
|
364
451
|
finishReason: this.finishReason,
|
|
365
|
-
usage: this.usage
|
|
452
|
+
usage: this.usage,
|
|
453
|
+
...this.providerMetadata ? { providerMetadata: this.providerMetadata } : {}
|
|
366
454
|
};
|
|
367
455
|
controller.enqueue(val);
|
|
368
456
|
return;
|
|
@@ -429,7 +517,8 @@ var AxToSDKTransformer = class extends TransformStream {
|
|
|
429
517
|
const val = {
|
|
430
518
|
type: "finish",
|
|
431
519
|
finishReason: this.finishReason,
|
|
432
|
-
usage: this.usage
|
|
520
|
+
usage: this.usage,
|
|
521
|
+
...this.providerMetadata ? { providerMetadata: this.providerMetadata } : {}
|
|
433
522
|
};
|
|
434
523
|
controller.enqueue(val);
|
|
435
524
|
controller.terminate();
|
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 LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2FunctionTool,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2ToolCall,\n LanguageModelV2ToolChoice,\n LanguageModelV2Usage,\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 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 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 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()) 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 hasStarted = false;\n private textStarted = false;\n\n constructor() {\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 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 };\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 };\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":["../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":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ax-llm/ax-ai-sdk-provider",
|
|
3
|
-
"version": "21.0.
|
|
3
|
+
"version": "21.0.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Ax AI SDK Provider for the Vercel AI SDK",
|
|
6
6
|
"repository": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"keywords": [],
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@ai-sdk/provider-utils": "^3.0.10",
|
|
17
|
-
"@ax-llm/ax": "21.0.
|
|
17
|
+
"@ax-llm/ax": "21.0.10",
|
|
18
18
|
"ai": "^5.0.100",
|
|
19
19
|
"zod": "^3.23.8"
|
|
20
20
|
},
|