{"version":3,"sources":["../../../../src/adapters/langchain/llms/llm.ts"],"names":["LangChainLLMOutput","BaseLLMOutput","constructor","text","meta","register","merge","other","assign","getTextContent","toString","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","LangChainLLM","LLM","emitter","parameters","lcLLM","modelMeta","executionOptions","cache","_modelType","Emitter","root","child","namespace","creator","invocationParams","tokenLimit","Infinity","embed","input","options","NotImplementedError","tokenize","tokensCount","getNumTokens","_generate","_options","run","generations","generate","signal","generationInfo","_stream","response","_streamResponseChunks","chunk","modelId","JSON","stringify","toJSON"],"mappings":"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","file":"llm.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { LLM, LLMEvents, LLMInput } from \"@/llms/llm.js\";\nimport { BaseLLM as LCBaseLLM } from \"@langchain/core/language_models/llms\";\nimport {\n  AsyncStream,\n  BaseLLMOutput,\n  BaseLLMTokenizeOutput,\n  EmbeddingOptions,\n  EmbeddingOutput,\n  ExecutionOptions,\n  GenerateOptions,\n  LLMCache,\n  LLMMeta,\n  StreamGenerateOptions,\n} from \"@/llms/base.js\";\nimport { assign } from \"@/internals/helpers/object.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { NotImplementedError } from \"@/errors.js\";\n\nexport class LangChainLLMOutput extends BaseLLMOutput {\n  constructor(\n    public text: string,\n    public readonly meta: Record<string, any>,\n  ) {\n    super();\n  }\n\n  static {\n    this.register();\n  }\n\n  merge(other: LangChainLLMOutput): void {\n    this.text += other.text;\n    assign(this.meta, other.meta);\n  }\n\n  getTextContent(): string {\n    return this.text;\n  }\n\n  toString(): string {\n    return this.getTextContent();\n  }\n\n  createSnapshot() {\n    return {\n      text: this.text,\n      meta: shallowCopy(this.meta),\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n}\n\nexport type LangChainLLMEvents = LLMEvents<LangChainLLMOutput>;\n\nexport class LangChainLLM extends LLM<LangChainLLMOutput> {\n  public readonly emitter = Emitter.root.child<LangChainLLMEvents>({\n    namespace: [\"langchain\", \"llm\"],\n    creator: this,\n  });\n  protected readonly parameters: any;\n\n  constructor(\n    public readonly lcLLM: LCBaseLLM,\n    private modelMeta?: LLMMeta,\n    executionOptions?: ExecutionOptions,\n    cache?: LLMCache<LangChainLLMOutput>,\n  ) {\n    super(lcLLM._modelType(), executionOptions, cache);\n    this.parameters = lcLLM.invocationParams();\n  }\n\n  static {\n    this.register();\n  }\n\n  async meta() {\n    if (this.modelMeta) {\n      return this.modelMeta;\n    }\n\n    return {\n      tokenLimit: Infinity,\n    };\n  }\n\n  // eslint-disable-next-line unused-imports/no-unused-vars\n  async embed(input: LLMInput[], options?: EmbeddingOptions): Promise<EmbeddingOutput> {\n    throw new NotImplementedError();\n  }\n\n  async tokenize(input: LLMInput): Promise<BaseLLMTokenizeOutput> {\n    return {\n      tokensCount: await this.lcLLM.getNumTokens(input),\n    };\n  }\n\n  protected async _generate(\n    input: LLMInput,\n    _options: Partial<GenerateOptions>,\n    run: GetRunContext<this>,\n  ): Promise<LangChainLLMOutput> {\n    const { generations } = await this.lcLLM.generate([input], {\n      signal: run.signal,\n    });\n    return new LangChainLLMOutput(generations[0][0].text, generations[0][0].generationInfo || {});\n  }\n\n  protected async *_stream(\n    input: string,\n    _options: StreamGenerateOptions | undefined,\n    run: GetRunContext<this>,\n  ): AsyncStream<LangChainLLMOutput> {\n    const response = this.lcLLM._streamResponseChunks(input, {\n      signal: run.signal,\n    });\n    for await (const chunk of response) {\n      yield new LangChainLLMOutput(chunk.text, chunk.generationInfo || {});\n    }\n  }\n\n  createSnapshot() {\n    return {\n      ...super.createSnapshot(),\n      modelId: this.modelId,\n      modelMeta: this.modelMeta,\n      parameters: shallowCopy(this.parameters),\n      executionOptions: shallowCopy(this.executionOptions),\n      lcLLM: JSON.stringify(this.lcLLM.toJSON()),\n    };\n  }\n}\n"]}