{"version":3,"sources":["../../../../src/adapters/vercel/backend/chat.ts"],"names":["globalThis","AI_SDK_LOG_WARNINGS","VercelChatModel","ChatModel","emitter","supportsToolStreaming","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","id","generateText","temperature","transformInput","abortSignal","signal","ChatModelOutput","transformMessages","extractTokenUsage","name","description","target","_input","ZodArray","Output","array","element","ZodEnum","choice","options","object","jsonSchema","json","AssistantMessage","JSON","stringify","undefined","_createStream","isEmpty","tools","fullStream","usagePromise","finishReasonPromise","responsePromise","streamText","streamEmpty","streamedToolCalls","Map","event","message","type","text","streamPartialToolCalls","chunk","toolName","toolCallId","set","delta","get","existingToolCall","delete","ChatModelError","error","ToolMessage","aborted","_","Promise","all","lastChunk","e","map","tool","inputSchema","getInputJsonSchema","msg","CustomMessage","encodeCustomMessage","role","content","UserMessage","SystemMessage","part","join","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","parameters","mapToObj","length","flatMap","filter","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n  ChatModelInput,\n  ChatModel,\n  ChatModelOutput,\n  ChatModelEvents,\n  ChatModelObjectInput,\n  ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n  AssistantModelMessage,\n  ModelMessage,\n  ToolModelMessage,\n  generateText,\n  jsonSchema,\n  LanguageModel as _LanguageModel,\n  streamText,\n  TextPart,\n  ToolCallPart,\n  ToolChoice,\n  Output,\n} from \"ai\";\ntype LanguageModelV2 = Exclude<_LanguageModel, string>;\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n  AssistantMessage,\n  CustomMessage,\n  Message,\n  SystemMessage,\n  ToolMessage,\n  UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\nimport { encodeCustomMessage, extractTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\n\ntry {\n  globalThis.AI_SDK_LOG_WARNINGS = false;\n} catch {\n  /* empty */\n}\n\nexport abstract class VercelChatModel<\n  M extends LanguageModelV2 = LanguageModelV2,\n> extends ChatModel {\n  public readonly emitter: Emitter<ChatModelEvents>;\n  public readonly supportsToolStreaming: boolean = true;\n\n  constructor(private readonly model: M) {\n    super();\n    if (!this.modelId) {\n      throw new ValueError(\"No modelId has been provided!\");\n    }\n    this.emitter = Emitter.root.child({\n      namespace: [\"backend\", this.providerId, \"chat\"],\n      creator: this,\n    });\n  }\n\n  get modelId(): string {\n    return this.model.modelId;\n  }\n\n  get providerId(): string {\n    const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n    return toCamelCase(provider);\n  }\n\n  protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n    const responseFormat = input.responseFormat;\n    if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n      const { output } = await this._createStructure(\n        {\n          ...input,\n          schema: responseFormat,\n        },\n        run,\n      );\n      return output;\n    }\n\n    const {\n      finishReason,\n      usage,\n      response: { messages, id },\n    } = await generateText({\n      temperature: 0,\n      ...(await this.transformInput(input)),\n      abortSignal: run.signal,\n    });\n\n    return new ChatModelOutput(\n      this.transformMessages(messages, id),\n      extractTokenUsage(usage),\n      finishReason,\n    );\n  }\n\n  protected async _createStructure<T>(\n    { schema, ...input }: ChatModelObjectInput<T>,\n    run: GetRunContext<this>,\n  ): Promise<ChatModelObjectOutput<T>> {\n    const { output, response, finishReason, usage } = await generateText({\n      temperature: 0,\n      ...(await this.transformInput(input)),\n      abortSignal: run.signal,\n      output: ((): Output.Output => {\n        if (schema instanceof ZodSchema) {\n          const [name, description] = [\"Schema\", schema.description];\n          const target = schema._input || schema;\n          if (target instanceof ZodArray) {\n            return Output.array({ element: schema, name, description });\n          }\n          if (target instanceof ZodEnum) {\n            return Output.choice({\n              options: target.options,\n              name: \"\",\n              description: schema.description,\n            });\n          }\n          return Output.object({ schema, name, description });\n        }\n        if (schema.schema) {\n          return Output.object({\n            schema: jsonSchema<T>(schema.schema),\n            name: schema.name,\n            description: schema.description,\n          });\n        }\n        return Output.json({ name: schema.name, description: schema.description });\n      })(),\n    });\n\n    return {\n      object: output as T,\n      output: new ChatModelOutput(\n        [new AssistantMessage(JSON.stringify(output, null, 2), undefined, response.id)],\n        extractTokenUsage(usage),\n        finishReason,\n      ),\n    };\n  }\n\n  async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n    const responseFormat = input.responseFormat;\n    if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n      const { output } = await this._createStructure(\n        {\n          ...input,\n          schema: responseFormat,\n        },\n        run,\n      );\n      yield output;\n      return;\n    }\n\n    if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n      const response = await this._create(input, run);\n      yield response;\n      return;\n    }\n\n    const {\n      fullStream,\n      usage: usagePromise,\n      finishReason: finishReasonPromise,\n      response: responsePromise,\n    } = streamText({\n      temperature: 0,\n      ...(await this.transformInput(input)),\n      abortSignal: run.signal,\n    });\n\n    let streamEmpty = true;\n    const streamedToolCalls = new Map<string, ToolCallPart>();\n    for await (const event of fullStream) {\n      let message: Message;\n      switch (event.type) {\n        case \"text-delta\":\n          streamEmpty = false;\n          message = new AssistantMessage(event.text, {}, event.id);\n          yield new ChatModelOutput([message]);\n          break;\n        case \"text-end\":\n          streamEmpty = false;\n          break;\n        case \"tool-input-start\": {\n          if (!input.streamPartialToolCalls) {\n            break;\n          }\n\n          const chunk: ToolCallPart = {\n            type: \"tool-call\",\n            toolName: event.toolName,\n            toolCallId: event.id,\n            input: \"\",\n          };\n          streamedToolCalls.set(event.id, chunk);\n          const message = new AssistantMessage(chunk, {}, event.id);\n          yield new ChatModelOutput([message]);\n          break;\n        }\n        case \"tool-input-delta\": {\n          if (!input.streamPartialToolCalls) {\n            break;\n          }\n\n          if (event.delta) {\n            const chunk = streamedToolCalls.get(event.id)!;\n            const message = new AssistantMessage({ ...chunk, input: event.delta }, {}, event.id);\n            yield new ChatModelOutput([message]);\n          }\n          break;\n        }\n        case \"tool-call\": {\n          streamEmpty = false;\n          const existingToolCall = streamedToolCalls.get(event.toolCallId);\n          if (existingToolCall) {\n            streamedToolCalls.delete(event.toolCallId);\n            break;\n          }\n          message = new AssistantMessage(\n            {\n              type: event.type,\n              toolCallId: event.toolCallId,\n              toolName: event.toolName,\n              input: event.input,\n            },\n            {},\n            event.toolCallId,\n          );\n          yield new ChatModelOutput([message]);\n          break;\n        }\n        case \"error\":\n          throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n        case \"tool-result\":\n          streamEmpty = false;\n          message = new ToolMessage(\n            {\n              type: event.type,\n              toolCallId: event.toolCallId,\n              toolName: event.toolName,\n              output: event.output as any,\n            },\n            {},\n            `tool_result_${event.toolCallId}`,\n          );\n          yield new ChatModelOutput([message]);\n          break;\n        case \"abort\":\n          break;\n        default:\n          break;\n      }\n    }\n\n    if (streamEmpty && !run.signal.aborted) {\n      throw new ChatModelError(\"No chunks have been received!\");\n    }\n\n    try {\n      const [usage, finishReason, _] = await Promise.all([\n        usagePromise,\n        finishReasonPromise,\n        responsePromise,\n      ]);\n      const lastChunk = new ChatModelOutput([]);\n      lastChunk.usage = extractTokenUsage(usage);\n      lastChunk.finishReason = finishReason;\n      yield lastChunk;\n    } catch (e) {\n      if (!run.signal.aborted) {\n        throw e;\n      }\n    }\n  }\n\n  protected async transformInput(\n    input: ChatModelInput,\n  ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n    const tools = await Promise.all(\n      (input.tools ?? []).map(async (tool) => ({\n        name: tool.name,\n        description: tool.description,\n        inputSchema: jsonSchema(await tool.getInputJsonSchema()),\n      })),\n    );\n\n    const messages = input.messages.map((msg): ModelMessage => {\n      if (msg instanceof CustomMessage) {\n        msg = encodeCustomMessage(msg);\n      }\n\n      if (msg instanceof AssistantMessage) {\n        return { role: \"assistant\", content: msg.content };\n      } else if (msg instanceof ToolMessage) {\n        return { role: \"tool\", content: msg.content };\n      } else if (msg instanceof UserMessage) {\n        return { role: \"user\", content: msg.content };\n      } else if (msg instanceof SystemMessage) {\n        return { role: \"system\", content: msg.content.map((part) => part.text).join(\"\\n\") };\n      }\n      return { role: msg.role, content: msg.content } as ModelMessage;\n    });\n\n    let toolChoice: ToolChoice<Record<string, any>> | undefined;\n    if (input.toolChoice && input.toolChoice instanceof Tool) {\n      if (this.toolChoiceSupport.includes(\"single\")) {\n        toolChoice = {\n          type: \"tool\",\n          toolName: input.toolChoice.name,\n        };\n      } else {\n        this.logger.warn(`The single tool choice is not supported.`);\n      }\n    } else if (input.toolChoice) {\n      if (this.toolChoiceSupport.includes(input.toolChoice)) {\n        toolChoice = input.toolChoice;\n      } else {\n        this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n      }\n    }\n\n    return {\n      ...this.parameters,\n      ...input,\n      toolChoice,\n      model: this.model,\n      tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n      messages,\n    };\n  }\n\n  protected transformMessages(\n    messages: (AssistantModelMessage | ToolModelMessage)[],\n    id: string | undefined,\n  ): Message[] {\n    if (messages.length > 1) {\n      id = undefined;\n    }\n    return messages.flatMap((msg) => {\n      if (msg.role === \"tool\") {\n        return new ToolMessage(\n          msg.content.filter((part) => part.type === \"tool-result\"),\n          msg.providerOptions,\n          id,\n        );\n      }\n      return new AssistantMessage(\n        msg.content as TextPart | ToolCallPart | string,\n        msg.providerOptions,\n        id,\n      );\n    });\n  }\n\n  createSnapshot() {\n    return {\n      ...super.createSnapshot(),\n      providerId: this.providerId,\n      modelId: this.modelId,\n      supportsToolStreaming: this.supportsToolStreaming,\n    };\n  }\n\n  async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n    const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n    if (!(instance instanceof VercelChatModel)) {\n      throw new Error(\"Incorrect deserialization!\");\n    }\n    instance.destroy();\n    Object.assign(this, {\n      ...snapshot,\n      model: instance.model,\n    });\n  }\n}\n"]}