{"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"]}