UNPKG

@langchain/community

Version:
1 lines • 3.68 kB
{"version":3,"file":"send_message.cjs","names":["z","GmailBaseTool","GET_MESSAGE_DESCRIPTION","fields?: GmailBaseToolParams","emailLines: string[]","emails: string | string[]"],"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,SAAE,OAAO;CACjC,SAASA,SAAE,QAAQ;CACnB,IAAIA,SAAE,MAAMA,SAAE,QAAQ,CAAC;CACvB,SAASA,SAAE,QAAQ;CACnB,IAAIA,SAAE,MAAMA,SAAE,QAAQ,CAAC,CAAC,UAAU;CAClC,KAAKA,SAAE,MAAMA,SAAE,QAAQ,CAAC,CAAC,UAAU;AACpC,EAAC;AAGF,IAAa,mBAAb,cAAsCC,2BAAc;CAClD,OAAO;CAEP,SAAS;CAET,cAAcC;CAEd,YAAYC,QAA8B;EACxC,MAAM,OAAO;CACd;CAED,AAAQ,mBAAmB,EACzB,SACA,IACA,SACA,IACA,KACkB,EAAU;EAC5B,MAAMC,aAAuB,CAAE;EAG/B,MAAM,kBAAkB,CAACC,WACvB,MAAM,QAAQ,OAAO,GAAG,OAAO,KAAK,IAAI,GAAG;EAE7C,WAAW,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,EAAE,CAAC;AAC7C,MAAI,IAAI,WAAW,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,EAAE,CAAC;AACrD,MAAI,KAAK,WAAW,KAAK,CAAC,KAAK,EAAE,gBAAgB,IAAI,EAAE,CAAC;EACxD,WAAW,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;EACtC,WAAW,KAAK,GAAG;EACnB,WAAW,KAAK,QAAQ;EAGxB,MAAM,QAAQ,WAAW,KAAK,OAAO,CAAC,MAAM;AAE5C,SAAO,OAAO,KAAK,MAAM,CAAC,SAAS,YAAY;CAChD;CAED,MAAM,MAAM,EACV,SACA,IACA,SACA,IACA,KACyC,EAAmB;EAC5D,MAAM,aAAa,KAAK,mBAAmB;GACzC;GACA;GACA;GACA;GACA;EACD,EAAC;AAEF,MAAI;GACF,MAAM,QAAQ,MAAM,KAAK,gBAAgB;GAEzC,MAAM,WAAW,MAAM,MAAM,MAAM,SAAS,KAAK;IAC/C,QAAQ;IACR,aAAa,EACX,KAAK,WACN;GACF,EAAC;AAEF,UAAO,CAAC,0BAA0B,EAAE,SAAS,KAAK,IAAI;EACvD,SAAQ,OAAO;AACd,SAAM,IAAI,MAAM,CAAC,6CAA6C,EAAE,OAAO;EACxE;CACF;AACF"}