{"version":3,"file":"chat.cjs","names":["BaseMessage","BaseMessageChunk","mergeContent","_mergeDicts"],"sources":["../../src/messages/chat.ts"],"sourcesContent":["import {\n  BaseMessage,\n  BaseMessageChunk,\n  type BaseMessageFields,\n  mergeContent,\n  _mergeDicts,\n} from \"./base.js\";\nimport { $InferMessageContent, MessageStructure } from \"./message.js\";\nimport { Constructor } from \"./utils.js\";\n\nexport interface ChatMessageFields<\n  TStructure extends MessageStructure = MessageStructure,\n> extends BaseMessageFields<TStructure, \"generic\"> {\n  role: string;\n}\n\n/**\n * Represents a chat message in a conversation.\n */\nexport class ChatMessage<TStructure extends MessageStructure = MessageStructure>\n  extends BaseMessage<TStructure, \"generic\">\n  implements ChatMessageFields<TStructure>\n{\n  static lc_name() {\n    return \"ChatMessage\";\n  }\n\n  readonly type = \"generic\" as const;\n\n  role: string;\n\n  static _chatMessageClass(): typeof ChatMessage {\n    return ChatMessage;\n  }\n\n  constructor(\n    content: $InferMessageContent<TStructure, \"generic\">,\n    role: string\n  );\n\n  constructor(fields: ChatMessageFields<TStructure>);\n\n  constructor(\n    fields:\n      | $InferMessageContent<TStructure, \"generic\">\n      | ChatMessageFields<TStructure>,\n    role?: string\n  ) {\n    if (typeof fields === \"string\" || Array.isArray(fields)) {\n      // oxlint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion\n      fields = { content: fields, role: role! };\n    }\n    super(fields);\n    this.role = fields.role;\n  }\n\n  static isInstance(obj: unknown): obj is ChatMessage {\n    return super.isInstance(obj) && obj.type === \"generic\";\n  }\n\n  override get _printableFields(): Record<string, unknown> {\n    return {\n      ...super._printableFields,\n      role: this.role,\n    };\n  }\n}\n\n/**\n * Represents a chunk of a chat message, which can be concatenated with\n * other chat message chunks.\n */\nexport class ChatMessageChunk<\n  TStructure extends MessageStructure = MessageStructure,\n> extends BaseMessageChunk<TStructure, \"generic\"> {\n  static lc_name() {\n    return \"ChatMessageChunk\";\n  }\n\n  readonly type = \"generic\" as const;\n\n  role: string;\n\n  constructor(\n    content: $InferMessageContent<TStructure, \"generic\">,\n    role: string\n  );\n\n  constructor(fields: ChatMessageFields<TStructure>);\n\n  constructor(\n    fields:\n      | $InferMessageContent<TStructure, \"generic\">\n      | ChatMessageFields<TStructure>,\n    role?: string\n  ) {\n    if (typeof fields === \"string\" || Array.isArray(fields)) {\n      // oxlint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion\n      fields = { content: fields, role: role! };\n    }\n    super(fields);\n    this.role = fields.role;\n  }\n\n  concat(chunk: ChatMessageChunk<TStructure>) {\n    const Cls = this.constructor as Constructor<this>;\n    return new Cls({\n      content: mergeContent(this.content, chunk.content),\n      additional_kwargs: _mergeDicts(\n        this.additional_kwargs,\n        chunk.additional_kwargs\n      ),\n      response_metadata: _mergeDicts(\n        this.response_metadata,\n        chunk.response_metadata\n      ),\n      role: this.role,\n      id: this.id ?? chunk.id,\n    });\n  }\n\n  static isInstance(obj: unknown): obj is ChatMessageChunk {\n    return super.isInstance(obj) && obj.type === \"generic\";\n  }\n\n  override get _printableFields(): Record<string, unknown> {\n    return {\n      ...super._printableFields,\n      role: this.role,\n    };\n  }\n}\n\n/**\n * @deprecated Use {@link ChatMessage.isInstance} instead\n */\nexport function isChatMessage(x: BaseMessage): x is ChatMessage {\n  return x._getType() === \"generic\";\n}\n\n/**\n * @deprecated Use {@link ChatMessageChunk.isInstance} instead\n */\nexport function isChatMessageChunk(x: BaseMessageChunk): x is ChatMessageChunk {\n  return x._getType() === \"generic\";\n}\n"],"mappings":";;;;;AAmBA,IAAa,cAAb,MAAa,oBACHA,aAAAA,YAEV;CACE,OAAO,UAAU;AACf,SAAO;;CAGT,OAAgB;CAEhB;CAEA,OAAO,oBAAwC;AAC7C,SAAO;;CAUT,YACE,QAGA,MACA;AACA,MAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,CAErD,UAAS;GAAE,SAAS;GAAc;GAAO;AAE3C,QAAM,OAAO;AACb,OAAK,OAAO,OAAO;;CAGrB,OAAO,WAAW,KAAkC;AAClD,SAAO,MAAM,WAAW,IAAI,IAAI,IAAI,SAAS;;CAG/C,IAAa,mBAA4C;AACvD,SAAO;GACL,GAAG,MAAM;GACT,MAAM,KAAK;GACZ;;;;;;;AAQL,IAAa,mBAAb,cAEUC,aAAAA,iBAAwC;CAChD,OAAO,UAAU;AACf,SAAO;;CAGT,OAAgB;CAEhB;CASA,YACE,QAGA,MACA;AACA,MAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,CAErD,UAAS;GAAE,SAAS;GAAc;GAAO;AAE3C,QAAM,OAAO;AACb,OAAK,OAAO,OAAO;;CAGrB,OAAO,OAAqC;EAC1C,MAAM,MAAM,KAAK;AACjB,SAAO,IAAI,IAAI;GACb,SAASC,aAAAA,aAAa,KAAK,SAAS,MAAM,QAAQ;GAClD,mBAAmBC,aAAAA,YACjB,KAAK,mBACL,MAAM,kBACP;GACD,mBAAmBA,aAAAA,YACjB,KAAK,mBACL,MAAM,kBACP;GACD,MAAM,KAAK;GACX,IAAI,KAAK,MAAM,MAAM;GACtB,CAAC;;CAGJ,OAAO,WAAW,KAAuC;AACvD,SAAO,MAAM,WAAW,IAAI,IAAI,IAAI,SAAS;;CAG/C,IAAa,mBAA4C;AACvD,SAAO;GACL,GAAG,MAAM;GACT,MAAM,KAAK;GACZ;;;;;;AAOL,SAAgB,cAAc,GAAkC;AAC9D,QAAO,EAAE,UAAU,KAAK;;;;;AAM1B,SAAgB,mBAAmB,GAA4C;AAC7E,QAAO,EAAE,UAAU,KAAK"}