{"version":3,"sources":["../../../../src/adapters/langchain/backend/chat.ts"],"names":["LangChainChatModel","ChatModel","emitter","lcLLM","parameters","Emitter","root","child","namespace","creator","modelId","_modelType","providerId","_create","input","run","preparedInput","prepareInput","response","bindTools","tools","invoke","messages","options","prepareOutput","_createStream","stream","chunk","toLCMessages","runId","stop","stopSequences","signal","tool_choice","toolChoice","output","toBeeAIMessages","response_metadata","stop_sequence","ChatModelOutput","totalTokens","usage_metadata","total_tokens","promptTokens","input_tokens","completionTokens","output_tokens","reasoningTokens","output_token_details","reasoning","cachedPromptTokens","input_token_details","cache_read","_createStructure","raw","parsed","withStructuredOutput","schema","method","strict","includeRaw","object","createSnapshot","loadSnapshot","snapshot","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  ChatModel,\n  ChatModelEmitter,\n  ChatModelFinishReason,\n  ChatModelInput,\n  ChatModelObjectInput,\n  ChatModelObjectOutput,\n  ChatModelOutput,\n  ChatModelParameters,\n} from \"@/backend/chat.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n  BaseChatModel,\n  BaseChatModelCallOptions,\n} from \"@langchain/core/language_models/chat_models\";\nimport { AIMessageChunk } from \"@langchain/core/messages\";\nimport { toBeeAIMessages, toLCMessages } from \"./utils.js\";\n\nexport class LangChainChatModel extends ChatModel {\n  public readonly emitter: ChatModelEmitter;\n\n  constructor(\n    protected readonly lcLLM: BaseChatModel,\n    public readonly parameters: ChatModelParameters = {},\n  ) {\n    super();\n    this.emitter = Emitter.root.child({\n      namespace: [\"backend\", \"langchain\", \"chat\"],\n      creator: this,\n    });\n  }\n\n  get modelId(): string {\n    return this.lcLLM._modelType();\n  }\n\n  get providerId() {\n    return \"langchain\";\n  }\n\n  protected async _create(input: ChatModelInput, run: RunContext<this>): Promise<ChatModelOutput> {\n    const preparedInput = this.prepareInput(input, run);\n    const response = this.lcLLM.bindTools\n      ? await this.lcLLM\n          .bindTools(input.tools ?? [])\n          .invoke(preparedInput.messages, preparedInput.options)\n      : await this.lcLLM.invoke(preparedInput.messages, preparedInput.options);\n\n    return this.prepareOutput(response);\n  }\n\n  protected async *_createStream(\n    input: ChatModelInput,\n    run: RunContext<this>,\n  ): AsyncGenerator<ChatModelOutput> {\n    const preparedInput = this.prepareInput(input, run);\n\n    const stream = this.lcLLM.bindTools\n      ? await this.lcLLM\n          .bindTools(input.tools ?? [])\n          .stream(preparedInput.messages, preparedInput.options)\n      : await this.lcLLM.stream(preparedInput.messages, preparedInput.options);\n\n    for await (const response of stream) {\n      const chunk = this.prepareOutput(response);\n      yield chunk;\n    }\n  }\n\n  protected prepareInput(input: ChatModelInput, run: RunContext<this>) {\n    const messages = toLCMessages(input.messages);\n\n    const options: BaseChatModelCallOptions = {\n      runId: run.runId,\n      stop: input.stopSequences,\n      signal: run.signal,\n      tool_choice: input.toolChoice,\n    };\n\n    return { messages, options };\n  }\n\n  protected prepareOutput(output: AIMessageChunk) {\n    const messages = toBeeAIMessages([output]);\n\n    const stop: ChatModelFinishReason =\n      (output.response_metadata?.stop_sequence as ChatModelFinishReason) || \"stop\";\n    return new ChatModelOutput(\n      messages,\n      {\n        totalTokens: output.usage_metadata?.total_tokens ?? 0,\n        promptTokens: output.usage_metadata?.input_tokens ?? 0,\n        completionTokens: output.usage_metadata?.output_tokens ?? 0,\n        reasoningTokens: output.usage_metadata?.output_token_details?.reasoning,\n        cachedPromptTokens: output.usage_metadata?.input_token_details?.cache_read,\n      },\n      stop,\n    );\n  }\n\n  protected async _createStructure<T>(\n    input: ChatModelObjectInput<T>,\n    run: RunContext<this>,\n  ): Promise<ChatModelObjectOutput<T>> {\n    const { messages, options } = this.prepareInput(input, run);\n    const { raw, parsed } = await this.lcLLM\n      .withStructuredOutput<any>(input.schema, {\n        method: \"jsonSchema\",\n        strict: false,\n        includeRaw: true,\n      })\n      .invoke(messages, options);\n\n    return { object: parsed as T, output: this.prepareOutput(raw as AIMessageChunk) };\n  }\n\n  createSnapshot() {\n    return { ...super.createSnapshot(), emitter: this.emitter, lcLLM: this.lcLLM };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void {\n    Object.assign(this, snapshot);\n  }\n}\n"]}