{"version":3,"file":"chat.cjs","names":["BaseMessage","fields:\n      | $InferMessageContent<TStructure, \"generic\">\n      | ChatMessageFields<TStructure>","role?: string","obj: unknown","BaseMessageChunk","chunk: ChatMessageChunk<TStructure>","mergeContent","_mergeDicts","x: BaseMessage","x: BaseMessageChunk"],"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      // eslint-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      // eslint-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,yBAEV;CACE,OAAO,UAAU;AACf,SAAO;CACR;CAED,AAAS,OAAO;CAEhB;CAEA,OAAO,oBAAwC;AAC7C,SAAO;CACR;CASD,YACEC,QAGAC,MACA;AACA,MAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,EAErD,SAAS;GAAE,SAAS;GAAc;EAAO;EAE3C,MAAM,OAAO;EACb,KAAK,OAAO,OAAO;CACpB;CAED,OAAO,WAAWC,KAAkC;AAClD,SAAO,MAAM,WAAW,IAAI,IAAI,IAAI,SAAS;CAC9C;CAED,IAAa,mBAA4C;AACvD,SAAO;GACL,GAAG,MAAM;GACT,MAAM,KAAK;EACZ;CACF;AACF;;;;;AAMD,IAAa,mBAAb,cAEUC,8BAAwC;CAChD,OAAO,UAAU;AACf,SAAO;CACR;CAED,AAAS,OAAO;CAEhB;CASA,YACEH,QAGAC,MACA;AACA,MAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,EAErD,SAAS;GAAE,SAAS;GAAc;EAAO;EAE3C,MAAM,OAAO;EACb,KAAK,OAAO,OAAO;CACpB;CAED,OAAOG,OAAqC;EAC1C,MAAM,MAAM,KAAK;AACjB,SAAO,IAAI,IAAI;GACb,SAASC,0BAAa,KAAK,SAAS,MAAM,QAAQ;GAClD,mBAAmBC,yBACjB,KAAK,mBACL,MAAM,kBACP;GACD,mBAAmBA,yBACjB,KAAK,mBACL,MAAM,kBACP;GACD,MAAM,KAAK;GACX,IAAI,KAAK,MAAM,MAAM;EACtB;CACF;CAED,OAAO,WAAWJ,KAAuC;AACvD,SAAO,MAAM,WAAW,IAAI,IAAI,IAAI,SAAS;CAC9C;CAED,IAAa,mBAA4C;AACvD,SAAO;GACL,GAAG,MAAM;GACT,MAAM,KAAK;EACZ;CACF;AACF;;;;AAKD,SAAgB,cAAcK,GAAkC;AAC9D,QAAO,EAAE,UAAU,KAAK;AACzB;;;;AAKD,SAAgB,mBAAmBC,GAA4C;AAC7E,QAAO,EAAE,UAAU,KAAK;AACzB"}