{"version":3,"file":"send_message.cjs","names":["z","GmailBaseTool","GET_MESSAGE_DESCRIPTION"],"sources":["../../../src/tools/gmail/send_message.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { InferInteropZodOutput } from \"@langchain/core/utils/types\";\nimport { GmailBaseTool, GmailBaseToolParams } from \"./base.js\";\nimport { GET_MESSAGE_DESCRIPTION } from \"./descriptions.js\";\n\nconst sendMessageSchema = z.object({\n  message: z.string(),\n  to: z.array(z.string()),\n  subject: z.string(),\n  cc: z.array(z.string()).optional(),\n  bcc: z.array(z.string()).optional(),\n});\nexport type SendMessageSchema = z.infer<typeof sendMessageSchema>;\n\nexport class GmailSendMessage extends GmailBaseTool {\n  name = \"gmail_send_message\";\n\n  schema = sendMessageSchema;\n\n  description = GET_MESSAGE_DESCRIPTION;\n\n  constructor(fields?: GmailBaseToolParams) {\n    super(fields);\n  }\n\n  private createEmailMessage({\n    message,\n    to,\n    subject,\n    cc,\n    bcc,\n  }: SendMessageSchema): string {\n    const emailLines: string[] = [];\n\n    // Format the recipient(s)\n    const formatEmailList = (emails: string | string[]): string =>\n      Array.isArray(emails) ? emails.join(\",\") : emails;\n\n    emailLines.push(`To: ${formatEmailList(to)}`);\n    if (cc) emailLines.push(`Cc: ${formatEmailList(cc)}`);\n    if (bcc) emailLines.push(`Bcc: ${formatEmailList(bcc)}`);\n    emailLines.push(`Subject: ${subject}`);\n    emailLines.push(\"\");\n    emailLines.push(message);\n\n    // Convert the email message to base64url string\n    const email = emailLines.join(\"\\r\\n\").trim();\n    // this encode may be an issue\n    return Buffer.from(email).toString(\"base64url\");\n  }\n\n  async _call({\n    message,\n    to,\n    subject,\n    cc,\n    bcc,\n  }: InferInteropZodOutput<SendMessageSchema>): Promise<string> {\n    const rawMessage = this.createEmailMessage({\n      message,\n      to,\n      subject,\n      cc,\n      bcc,\n    });\n\n    try {\n      const gmail = await this.getGmailClient();\n\n      const response = await gmail.users.messages.send({\n        userId: \"me\",\n        requestBody: {\n          raw: rawMessage,\n        },\n      });\n\n      return `Message sent. Message Id: ${response.data.id}`;\n    } catch (error) {\n      throw new Error(`An error occurred while sending the message: ${error}`);\n    }\n  }\n}\n"],"mappings":";;;;;AAKA,MAAM,oBAAoBA,OAAAA,EAAE,OAAO;CACjC,SAASA,OAAAA,EAAE,QAAQ;CACnB,IAAIA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,QAAQ,CAAC;CACvB,SAASA,OAAAA,EAAE,QAAQ;CACnB,IAAIA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,QAAQ,CAAC,CAAC,UAAU;CAClC,KAAKA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,QAAQ,CAAC,CAAC,UAAU;CACpC,CAAC;AAGF,IAAa,mBAAb,cAAsCC,aAAAA,cAAc;CAClD,OAAO;CAEP,SAAS;CAET,cAAcC,qBAAAA;CAEd,YAAY,QAA8B;AACxC,QAAM,OAAO;;CAGf,mBAA2B,EACzB,SACA,IACA,SACA,IACA,OAC4B;EAC5B,MAAM,aAAuB,EAAE;EAG/B,MAAM,mBAAmB,WACvB,MAAM,QAAQ,OAAO,GAAG,OAAO,KAAK,IAAI,GAAG;AAE7C,aAAW,KAAK,OAAO,gBAAgB,GAAG,GAAG;AAC7C,MAAI,GAAI,YAAW,KAAK,OAAO,gBAAgB,GAAG,GAAG;AACrD,MAAI,IAAK,YAAW,KAAK,QAAQ,gBAAgB,IAAI,GAAG;AACxD,aAAW,KAAK,YAAY,UAAU;AACtC,aAAW,KAAK,GAAG;AACnB,aAAW,KAAK,QAAQ;EAGxB,MAAM,QAAQ,WAAW,KAAK,OAAO,CAAC,MAAM;AAE5C,SAAO,OAAO,KAAK,MAAM,CAAC,SAAS,YAAY;;CAGjD,MAAM,MAAM,EACV,SACA,IACA,SACA,IACA,OAC4D;EAC5D,MAAM,aAAa,KAAK,mBAAmB;GACzC;GACA;GACA;GACA;GACA;GACD,CAAC;AAEF,MAAI;AAUF,UAAO,8BAPU,OAFH,MAAM,KAAK,gBAAgB,EAEZ,MAAM,SAAS,KAAK;IAC/C,QAAQ;IACR,aAAa,EACX,KAAK,YACN;IACF,CAAC,EAE2C,KAAK;WAC3C,OAAO;AACd,SAAM,IAAI,MAAM,gDAAgD,QAAQ"}