UNPKG

@langchain/community

Version:
1 lines 3.49 kB
{"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"}