{"version":3,"sources":["../../../src/adapters/watsonx/chat.ts"],"names":["WatsonXChatLLMOutput","ChatLLMOutput","raw","constructor","rawOutput","messages","text","getTextContent","BaseMessage","of","role","Role","ASSISTANT","meta","merge","other","Cache","getInstance","clear","message","toString","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign","WatsonXChatLLM","ChatLLM","emitter","Emitter","root","child","namespace","creator","llm","config","parameters","cache","modelId","executionOptions","register","embed","input","options","inputs","map","messagesToPrompt","data","tokenize","prompt","_generate","run","rawResponse","_stream","response","transformAsyncIterable","output","fromPreset","overrides","preset","WatsonXChatLLMPreset","LLMError","base","isFunction","isObjectType","chat","WatsonXLLM"],"mappings":"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","file":"chat.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 { AsyncStream, EmbeddingOptions, EmbeddingOutput, LLMCache, LLMError } from \"@/llms/base.js\";\nimport {\n  WatsonXLLM,\n  WatsonXLLMGenerateOptions,\n  WatsonXLLMParameters,\n  WatsonXLLMOutput,\n  WatsonXLLMInput,\n} from \"@/adapters/watsonx/llm.js\";\nimport { ChatLLM, ChatLLMGenerateEvents, ChatLLMOutput } from \"@/llms/chat.js\";\nimport { BaseMessage, Role } from \"@/llms/primitives/message.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { transformAsyncIterable } from \"@/internals/helpers/stream.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { isFunction, isObjectType } from \"remeda\";\nimport { WatsonXChatLLMPreset, WatsonXChatLLMPresetModel } from \"@/adapters/watsonx/chatPreset.js\";\n\nexport class WatsonXChatLLMOutput extends ChatLLMOutput {\n  public readonly raw: WatsonXLLMOutput;\n\n  constructor(rawOutput: WatsonXLLMOutput) {\n    super();\n    this.raw = rawOutput;\n  }\n\n  @Cache()\n  get messages(): BaseMessage[] {\n    const text = this.raw.getTextContent();\n    return [\n      BaseMessage.of({\n        role: Role.ASSISTANT,\n        text,\n        meta: this.raw.meta,\n      }),\n    ];\n  }\n\n  merge(other: WatsonXChatLLMOutput): void {\n    Cache.getInstance(this, \"messages\").clear();\n    this.raw.merge(other.raw);\n  }\n\n  getTextContent(): string {\n    const [message] = this.messages;\n    return message.text;\n  }\n\n  toString(): string {\n    return this.getTextContent();\n  }\n\n  createSnapshot() {\n    return {\n      raw: shallowCopy(this.raw),\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n}\n\nexport interface WatsonXChatLLMInputConfig {\n  messagesToPrompt: (messages: BaseMessage[]) => string;\n}\n\nexport interface WatsonXChatLLMInput {\n  llm: WatsonXLLM;\n  config: WatsonXChatLLMInputConfig;\n  cache?: LLMCache<WatsonXChatLLMOutput>;\n}\n\nexport type WatsonXChatLLMEvents = ChatLLMGenerateEvents<WatsonXChatLLMOutput>;\n\nexport class WatsonXChatLLM extends ChatLLM<WatsonXChatLLMOutput> {\n  public readonly emitter = Emitter.root.child<WatsonXChatLLMEvents>({\n    namespace: [\"watsonx\", \"chat_llm\"],\n    creator: this,\n  });\n\n  public readonly llm: WatsonXLLM;\n  protected readonly config: WatsonXChatLLMInputConfig;\n  public readonly parameters: WatsonXLLMParameters;\n\n  constructor({ llm, config, cache }: WatsonXChatLLMInput) {\n    super(llm.modelId, llm.executionOptions, cache);\n    this.parameters = llm.parameters ?? {};\n    this.llm = llm;\n    this.config = config;\n  }\n\n  static {\n    this.register();\n  }\n\n  async meta() {\n    return this.llm.meta();\n  }\n\n  async embed(input: BaseMessage[][], options?: EmbeddingOptions): Promise<EmbeddingOutput> {\n    const inputs = input.map((messages) => this.messagesToPrompt(messages));\n    return this.llm.embed(inputs, options);\n  }\n\n  createSnapshot() {\n    return {\n      ...super.createSnapshot(),\n      modelId: this.modelId,\n      parameters: this.parameters,\n      executionOptions: this.executionOptions,\n      llm: this.llm,\n      config: shallowCopy(this.config),\n    };\n  }\n\n  loadSnapshot(data: ReturnType<typeof this.createSnapshot>): void {\n    super.loadSnapshot(data);\n  }\n\n  async tokenize(messages: BaseMessage[]) {\n    const prompt = this.messagesToPrompt(messages);\n    return this.llm.tokenize(prompt);\n  }\n\n  protected async _generate(\n    messages: BaseMessage[],\n    options: WatsonXLLMGenerateOptions | undefined,\n    run: GetRunContext<this>,\n  ): Promise<WatsonXChatLLMOutput> {\n    const prompt = this.messagesToPrompt(messages);\n    // @ts-expect-error protected property\n    const rawResponse = await this.llm._generate(prompt, options, run);\n    return new WatsonXChatLLMOutput(rawResponse);\n  }\n\n  protected async *_stream(\n    messages: BaseMessage[],\n    options: WatsonXLLMGenerateOptions | undefined,\n    run: GetRunContext<this>,\n  ): AsyncStream<WatsonXChatLLMOutput, void> {\n    const prompt = this.messagesToPrompt(messages);\n    // @ts-expect-error protected property\n    const response = this.llm._stream(prompt, options, run);\n    return yield* transformAsyncIterable(response, (output) => new WatsonXChatLLMOutput(output));\n  }\n\n  messagesToPrompt(messages: BaseMessage[]) {\n    return this.config.messagesToPrompt(messages);\n  }\n\n  static fromPreset(\n    modelId: WatsonXChatLLMPresetModel,\n    overrides: Omit<WatsonXLLMInput, \"parameters\" | \"modelId\"> & {\n      parameters?: WatsonXLLMParameters | ((value: WatsonXLLMParameters) => WatsonXLLMParameters);\n    },\n  ) {\n    const preset = WatsonXChatLLMPreset[modelId]?.();\n    if (!preset) {\n      throw new LLMError(`Model \"${modelId}\" does not exist in preset.`);\n    }\n\n    let parameters = preset.base.parameters ?? {};\n    if (isFunction(overrides?.parameters)) {\n      parameters = overrides?.parameters(parameters);\n    } else if (isObjectType(overrides?.parameters)) {\n      parameters = overrides?.parameters;\n    }\n\n    return new WatsonXChatLLM({\n      config: preset.chat,\n      llm: new WatsonXLLM({\n        ...preset.base,\n        ...overrides,\n        parameters,\n        modelId,\n      }),\n    });\n  }\n}\n"]}