agentmail-toolkit 0.1.35 → 0.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ai-sdk.cjs CHANGED
@@ -45,33 +45,33 @@ var MessageIdSchema = import_zod.z.string().describe("ID of message");
45
45
  var AttachmentIdSchema = import_zod.z.string().describe("ID of attachment");
46
46
  var ListItemsParams = import_zod.z.object({
47
47
  limit: import_zod.z.number().optional().default(10).describe("Max number of items to return"),
48
- page_token: import_zod.z.string().optional().describe("Page token for pagination")
48
+ pageToken: import_zod.z.string().optional().describe("Page token for pagination")
49
49
  });
50
50
  var GetInboxParams = import_zod.z.object({
51
- inbox_id: InboxIdSchema
51
+ inboxId: InboxIdSchema
52
52
  });
53
53
  var CreateInboxParams = import_zod.z.object({
54
54
  username: import_zod.z.string().optional().describe("Username"),
55
55
  domain: import_zod.z.string().optional().describe("Domain"),
56
- display_name: import_zod.z.string().optional().describe("Display name")
56
+ displayName: import_zod.z.string().optional().describe("Display name")
57
57
  });
58
58
  var ListInboxItemsParams = ListItemsParams.extend({
59
- inbox_id: InboxIdSchema,
59
+ inboxId: InboxIdSchema,
60
60
  labels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to filter items by"),
61
- before: import_zod.z.string().optional().describe("Filter items before datetime"),
62
- after: import_zod.z.string().optional().describe("Filter items after datetime")
61
+ before: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items before datetime"),
62
+ after: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items after datetime")
63
63
  });
64
64
  var GetThreadParams = import_zod.z.object({
65
- inbox_id: InboxIdSchema,
66
- thread_id: ThreadIdSchema
65
+ inboxId: InboxIdSchema,
66
+ threadId: ThreadIdSchema
67
67
  });
68
68
  var GetAttachmentParams = import_zod.z.object({
69
- inbox_id: InboxIdSchema,
70
- thread_id: ThreadIdSchema,
71
- attachment_id: AttachmentIdSchema
69
+ inboxId: InboxIdSchema,
70
+ threadId: ThreadIdSchema,
71
+ attachmentId: AttachmentIdSchema
72
72
  });
73
73
  var BaseMessageParams = import_zod.z.object({
74
- inbox_id: InboxIdSchema,
74
+ inboxId: InboxIdSchema,
75
75
  text: import_zod.z.string().optional().describe("Plain text body"),
76
76
  html: import_zod.z.string().optional().describe("HTML body"),
77
77
  labels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels")
@@ -83,16 +83,17 @@ var SendMessageParams = BaseMessageParams.extend({
83
83
  subject: import_zod.z.string().optional().describe("Subject")
84
84
  });
85
85
  var ReplyToMessageParams = BaseMessageParams.extend({
86
- message_id: MessageIdSchema
86
+ messageId: MessageIdSchema
87
87
  });
88
88
  var UpdateMessageParams = import_zod.z.object({
89
- inbox_id: InboxIdSchema,
90
- message_id: MessageIdSchema,
91
- add_labels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to add"),
92
- remove_labels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to remove")
89
+ inboxId: InboxIdSchema,
90
+ messageId: MessageIdSchema,
91
+ addLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to add"),
92
+ removeLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to remove")
93
93
  });
94
94
 
95
95
  // src/functions.ts
96
+ var import_worker = require("pdf-parse/worker");
96
97
  var import_pdf_parse = require("pdf-parse");
97
98
  var import_mammoth = __toESM(require("mammoth"), 1);
98
99
  var import_file_type = require("file-type");
@@ -100,57 +101,54 @@ async function listInboxes(client, args) {
100
101
  return client.inboxes.list(args);
101
102
  }
102
103
  async function getInbox(client, args) {
103
- const { inbox_id, ...options } = args;
104
- return client.inboxes.get(inbox_id, options);
104
+ const { inboxId, ...options } = args;
105
+ return client.inboxes.get(inboxId, options);
105
106
  }
106
107
  async function createInbox(client, args) {
107
108
  return client.inboxes.create(args);
108
109
  }
109
110
  async function deleteInbox(client, args) {
110
- const { inbox_id } = args;
111
- return client.inboxes.delete(inbox_id);
111
+ const { inboxId } = args;
112
+ return client.inboxes.delete(inboxId);
112
113
  }
113
114
  async function listThreads(client, args) {
114
- const { inbox_id, ...options } = args;
115
- return client.inboxes.threads.list(inbox_id, options);
115
+ const { inboxId, ...options } = args;
116
+ return client.inboxes.threads.list(inboxId, options);
116
117
  }
117
118
  async function getThread(client, args) {
118
- const { inbox_id, thread_id, ...options } = args;
119
- return client.inboxes.threads.get(inbox_id, thread_id, options);
119
+ const { inboxId, threadId, ...options } = args;
120
+ return client.inboxes.threads.get(inboxId, threadId, options);
120
121
  }
121
122
  async function getAttachment(client, args) {
122
- const { thread_id, attachment_id } = args;
123
- const response = await client.threads.getAttachment(thread_id, attachment_id);
123
+ const { threadId, attachmentId } = args;
124
+ const response = await client.threads.getAttachment(threadId, attachmentId);
124
125
  const fileBytes = Buffer.from(await response.arrayBuffer());
125
126
  const fileKind = await (0, import_file_type.fileTypeFromBuffer)(fileBytes);
126
127
  const fileType = fileKind?.mime;
127
128
  let text = void 0;
128
129
  if (fileType === "application/pdf") {
129
- const parser = new import_pdf_parse.PDFParse({ data: fileBytes });
130
+ const parser = new import_pdf_parse.PDFParse({ data: fileBytes, CanvasFactory: import_worker.CanvasFactory });
130
131
  const pdfData = await parser.getText();
131
132
  text = pdfData.text;
132
133
  } else if (fileType === "application/vnd.openxmlformats-officedocument.wordprocessingml.document") {
133
134
  const result = await import_mammoth.default.extractRawText({ buffer: fileBytes });
134
135
  text = result.value;
135
136
  } else {
136
- return {
137
- error: `Unsupported file type: ${fileType || "unknown"}`,
138
- file_type: fileType
139
- };
137
+ return { error: `Unsupported file type: ${fileType || "unknown"}`, fileType };
140
138
  }
141
- return { text, file_type: fileType };
139
+ return { text, fileType };
142
140
  }
143
141
  async function sendMessage(client, args) {
144
- const { inbox_id, ...options } = args;
145
- return client.inboxes.messages.send(inbox_id, options);
142
+ const { inboxId, ...options } = args;
143
+ return client.inboxes.messages.send(inboxId, options);
146
144
  }
147
145
  async function replyToMessage(client, args) {
148
- const { inbox_id, message_id, ...options } = args;
149
- return client.inboxes.messages.reply(inbox_id, message_id, options);
146
+ const { inboxId, messageId, ...options } = args;
147
+ return client.inboxes.messages.reply(inboxId, messageId, options);
150
148
  }
151
149
  async function updateMessage(client, args) {
152
- const { inbox_id, message_id, ...options } = args;
153
- return client.inboxes.messages.update(inbox_id, message_id, options);
150
+ const { inboxId, messageId, ...options } = args;
151
+ return client.inboxes.messages.update(inboxId, messageId, options);
154
152
  }
155
153
 
156
154
  // src/tools.ts
@@ -158,61 +156,61 @@ var tools = [
158
156
  {
159
157
  name: "list_inboxes",
160
158
  description: "List inboxes",
161
- params_schema: ListItemsParams,
159
+ paramsSchema: ListItemsParams,
162
160
  func: listInboxes
163
161
  },
164
162
  {
165
163
  name: "get_inbox",
166
164
  description: "Get inbox",
167
- params_schema: GetInboxParams,
165
+ paramsSchema: GetInboxParams,
168
166
  func: getInbox
169
167
  },
170
168
  {
171
169
  name: "create_inbox",
172
170
  description: "Create inbox",
173
- params_schema: CreateInboxParams,
171
+ paramsSchema: CreateInboxParams,
174
172
  func: createInbox
175
173
  },
176
174
  {
177
175
  name: "delete_inbox",
178
176
  description: "Delete inbox",
179
- params_schema: GetInboxParams,
177
+ paramsSchema: GetInboxParams,
180
178
  func: deleteInbox
181
179
  },
182
180
  {
183
181
  name: "list_threads",
184
182
  description: "List threads in inbox",
185
- params_schema: ListInboxItemsParams,
183
+ paramsSchema: ListInboxItemsParams,
186
184
  func: listThreads
187
185
  },
188
186
  {
189
187
  name: "get_thread",
190
188
  description: "Get thread",
191
- params_schema: GetThreadParams,
189
+ paramsSchema: GetThreadParams,
192
190
  func: getThread
193
191
  },
194
192
  {
195
193
  name: "get_attachment",
196
194
  description: "Get attachment",
197
- params_schema: GetAttachmentParams,
195
+ paramsSchema: GetAttachmentParams,
198
196
  func: getAttachment
199
197
  },
200
198
  {
201
199
  name: "send_message",
202
200
  description: "Send message",
203
- params_schema: SendMessageParams,
201
+ paramsSchema: SendMessageParams,
204
202
  func: sendMessage
205
203
  },
206
204
  {
207
205
  name: "reply_to_message",
208
206
  description: "Reply to message",
209
- params_schema: ReplyToMessageParams,
207
+ paramsSchema: ReplyToMessageParams,
210
208
  func: replyToMessage
211
209
  },
212
210
  {
213
211
  name: "update_message",
214
212
  description: "Update message",
215
- params_schema: UpdateMessageParams,
213
+ paramsSchema: UpdateMessageParams,
216
214
  func: updateMessage
217
215
  }
218
216
  ];
@@ -260,7 +258,7 @@ var AgentMailToolkit = class extends MapToolkit {
260
258
  buildTool(tool) {
261
259
  return {
262
260
  description: tool.description,
263
- inputSchema: tool.params_schema,
261
+ inputSchema: tool.paramsSchema,
264
262
  execute: async (args) => (await safeFunc(tool.func, this.client, args)).result
265
263
  };
266
264
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ai-sdk.ts","../src/toolkit.ts","../src/schemas.ts","../src/functions.ts","../src/tools.ts","../src/util.ts"],"sourcesContent":["import { type Tool as AiSdkTool } from 'ai'\n\nimport { MapToolkit } from './toolkit.js'\nimport { type Tool } from './tools.js'\nimport { safeFunc } from './util.js'\n\nexport class AgentMailToolkit extends MapToolkit<AiSdkTool> {\n protected buildTool(tool: Tool): AiSdkTool {\n return {\n description: tool.description,\n inputSchema: tool.params_schema,\n execute: async (args) => (await safeFunc(tool.func, this.client, args)).result,\n }\n }\n}\n","import { AgentMailClient } from 'agentmail'\n\nimport { type Tool, tools } from './tools.js'\n\nexport abstract class BaseToolkit<T> {\n protected readonly client: AgentMailClient\n protected readonly tools: Record<string, T> = {}\n\n constructor(client?: AgentMailClient) {\n this.client = client ?? new AgentMailClient()\n\n this.tools = tools.reduce(\n (acc, tool) => {\n acc[tool.name] = this.buildTool(tool)\n return acc\n },\n {} as Record<string, T>\n )\n }\n\n protected abstract buildTool(tool: Tool): T\n}\n\nexport abstract class ListToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return Object.values(this.tools)\n\n return names.reduce((acc, name) => {\n if (name in this.tools) acc.push(this.tools[name])\n return acc\n }, [] as T[])\n }\n}\n\nexport abstract class MapToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return this.tools\n\n return names.reduce(\n (acc, name) => {\n if (name in this.tools) acc[name] = this.tools[name]\n return acc\n },\n {} as Record<string, T>\n )\n }\n}\n","import { z } from 'zod'\n\nconst InboxIdSchema = z.string().describe('ID of inbox')\nconst ThreadIdSchema = z.string().describe('ID of thread')\nconst MessageIdSchema = z.string().describe('ID of message')\nconst AttachmentIdSchema = z.string().describe('ID of attachment')\n\nexport const ListItemsParams = z.object({\n limit: z.number().optional().default(10).describe('Max number of items to return'),\n page_token: z.string().optional().describe('Page token for pagination'),\n})\n\nexport const GetInboxParams = z.object({\n inbox_id: InboxIdSchema,\n})\n\nexport const CreateInboxParams = z.object({\n username: z.string().optional().describe('Username'),\n domain: z.string().optional().describe('Domain'),\n display_name: z.string().optional().describe('Display name'),\n})\n\nexport const ListInboxItemsParams = ListItemsParams.extend({\n inbox_id: InboxIdSchema,\n labels: z.array(z.string()).optional().describe('Labels to filter items by'),\n before: z.string().optional().describe('Filter items before datetime'),\n after: z.string().optional().describe('Filter items after datetime'),\n})\n\nexport const GetThreadParams = z.object({\n inbox_id: InboxIdSchema,\n thread_id: ThreadIdSchema,\n})\n\nexport const GetAttachmentParams = z.object({\n inbox_id: InboxIdSchema,\n thread_id: ThreadIdSchema,\n attachment_id: AttachmentIdSchema,\n})\n\nconst BaseMessageParams = z.object({\n inbox_id: InboxIdSchema,\n text: z.string().optional().describe('Plain text body'),\n html: z.string().optional().describe('HTML body'),\n labels: z.array(z.string()).optional().describe('Labels'),\n})\n\nexport const SendMessageParams = BaseMessageParams.extend({\n to: z.array(z.string()).describe('Recipients'),\n cc: z.array(z.string()).optional().describe('CC recipients'),\n bcc: z.array(z.string()).optional().describe('BCC recipients'),\n subject: z.string().optional().describe('Subject'),\n})\n\nexport const ReplyToMessageParams = BaseMessageParams.extend({\n message_id: MessageIdSchema,\n})\n\nexport const UpdateMessageParams = z.object({\n inbox_id: InboxIdSchema,\n message_id: MessageIdSchema,\n add_labels: z.array(z.string()).optional().describe('Labels to add'),\n remove_labels: z.array(z.string()).optional().describe('Labels to remove'),\n})\n","import { AgentMailClient } from 'agentmail'\nimport { PDFParse } from 'pdf-parse'\nimport mammoth from 'mammoth'\nimport { fileTypeFromBuffer } from 'file-type'\n\nexport type Args = Record<string, any>\n\ninterface Attachment {\n text?: string\n error?: string\n file_type?: string\n}\n\nexport async function listInboxes(client: AgentMailClient, args: Args) {\n return client.inboxes.list(args)\n}\n\nexport async function getInbox(client: AgentMailClient, args: Args) {\n const { inbox_id, ...options } = args\n return client.inboxes.get(inbox_id, options)\n}\n\nexport async function createInbox(client: AgentMailClient, args: Args) {\n return client.inboxes.create(args)\n}\n\nexport async function deleteInbox(client: AgentMailClient, args: Args) {\n const { inbox_id } = args\n return client.inboxes.delete(inbox_id)\n}\n\nexport async function listThreads(client: AgentMailClient, args: Args) {\n const { inbox_id, ...options } = args\n return client.inboxes.threads.list(inbox_id, options)\n}\n\nexport async function getThread(client: AgentMailClient, args: Args) {\n const { inbox_id, thread_id, ...options } = args\n return client.inboxes.threads.get(inbox_id, thread_id, options)\n}\n\nexport async function getAttachment(client: AgentMailClient, args: Args): Promise<Attachment> {\n const { thread_id, attachment_id } = args\n\n const response = await client.threads.getAttachment(thread_id, attachment_id)\n const fileBytes = Buffer.from(await response.arrayBuffer())\n\n const fileKind = await fileTypeFromBuffer(fileBytes)\n const fileType = fileKind?.mime\n\n let text = undefined\n\n if (fileType === 'application/pdf') {\n const parser = new PDFParse({ data: fileBytes })\n const pdfData = await parser.getText()\n text = pdfData.text\n } else if (fileType === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {\n const result = await mammoth.extractRawText({ buffer: fileBytes })\n text = result.value\n } else {\n return {\n error: `Unsupported file type: ${fileType || 'unknown'}`,\n file_type: fileType,\n }\n }\n\n return { text, file_type: fileType }\n}\n\nexport async function sendMessage(client: AgentMailClient, args: Args) {\n const { inbox_id, ...options } = args\n return client.inboxes.messages.send(inbox_id, options)\n}\n\nexport async function replyToMessage(client: AgentMailClient, args: Args) {\n const { inbox_id, message_id, ...options } = args\n return client.inboxes.messages.reply(inbox_id, message_id, options)\n}\n\nexport async function updateMessage(client: AgentMailClient, args: Args) {\n const { inbox_id, message_id, ...options } = args\n return client.inboxes.messages.update(inbox_id, message_id, options)\n}\n","import { z } from 'zod'\nimport { AgentMailClient } from 'agentmail'\n\nimport {\n ListItemsParams,\n ListInboxItemsParams,\n GetInboxParams,\n CreateInboxParams,\n GetThreadParams,\n GetAttachmentParams,\n SendMessageParams,\n ReplyToMessageParams,\n UpdateMessageParams,\n} from './schemas.js'\nimport {\n type Args,\n listInboxes,\n getInbox,\n createInbox,\n deleteInbox,\n listThreads,\n getThread,\n getAttachment,\n sendMessage,\n replyToMessage,\n updateMessage,\n} from './functions.js'\nexport interface Tool {\n name: string\n description: string\n params_schema: z.ZodObject<any>\n func: (client: AgentMailClient, args: Args) => Promise<any>\n}\n\nexport const tools: Tool[] = [\n {\n name: 'list_inboxes',\n description: 'List inboxes',\n params_schema: ListItemsParams,\n func: listInboxes,\n },\n {\n name: 'get_inbox',\n description: 'Get inbox',\n params_schema: GetInboxParams,\n func: getInbox,\n },\n {\n name: 'create_inbox',\n description: 'Create inbox',\n params_schema: CreateInboxParams,\n func: createInbox,\n },\n {\n name: 'delete_inbox',\n description: 'Delete inbox',\n params_schema: GetInboxParams,\n func: deleteInbox,\n },\n {\n name: 'list_threads',\n description: 'List threads in inbox',\n params_schema: ListInboxItemsParams,\n func: listThreads,\n },\n {\n name: 'get_thread',\n description: 'Get thread',\n params_schema: GetThreadParams,\n func: getThread,\n },\n {\n name: 'get_attachment',\n description: 'Get attachment',\n params_schema: GetAttachmentParams,\n func: getAttachment,\n },\n {\n name: 'send_message',\n description: 'Send message',\n params_schema: SendMessageParams,\n func: sendMessage,\n },\n {\n name: 'reply_to_message',\n description: 'Reply to message',\n params_schema: ReplyToMessageParams,\n func: replyToMessage,\n },\n {\n name: 'update_message',\n description: 'Update message',\n params_schema: UpdateMessageParams,\n func: updateMessage,\n },\n]\n","import { AgentMailClient } from 'agentmail'\n\nexport const safeFunc = async <T>(\n func: (client: AgentMailClient, args: Record<string, any>) => Promise<T>,\n client: AgentMailClient,\n args: Record<string, any>\n) => {\n try {\n return { isError: false, result: await func(client, args) }\n } catch (error) {\n if (error instanceof Error) return { isError: true, result: error.message }\n else return { isError: true, result: 'Unknown error' }\n }\n}\n"],"mappings":"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","names":["mammoth"]}
1
+ {"version":3,"sources":["../src/ai-sdk.ts","../src/toolkit.ts","../src/schemas.ts","../src/functions.ts","../src/tools.ts","../src/util.ts"],"sourcesContent":["import { type Tool as AiSdkTool } from 'ai'\n\nimport { MapToolkit } from './toolkit.js'\nimport { type Tool } from './tools.js'\nimport { safeFunc } from './util.js'\n\nexport class AgentMailToolkit extends MapToolkit<AiSdkTool> {\n protected buildTool(tool: Tool): AiSdkTool {\n return {\n description: tool.description,\n inputSchema: tool.paramsSchema,\n execute: async (args) => (await safeFunc(tool.func, this.client, args)).result,\n }\n }\n}\n","import { AgentMailClient } from 'agentmail'\n\nimport { type Tool, tools } from './tools.js'\n\nexport abstract class BaseToolkit<T> {\n protected readonly client: AgentMailClient\n protected readonly tools: Record<string, T> = {}\n\n constructor(client?: AgentMailClient) {\n this.client = client ?? new AgentMailClient()\n\n this.tools = tools.reduce(\n (acc, tool) => {\n acc[tool.name] = this.buildTool(tool)\n return acc\n },\n {} as Record<string, T>\n )\n }\n\n protected abstract buildTool(tool: Tool): T\n}\n\nexport abstract class ListToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return Object.values(this.tools)\n\n return names.reduce((acc, name) => {\n if (name in this.tools) acc.push(this.tools[name])\n return acc\n }, [] as T[])\n }\n}\n\nexport abstract class MapToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return this.tools\n\n return names.reduce(\n (acc, name) => {\n if (name in this.tools) acc[name] = this.tools[name]\n return acc\n },\n {} as Record<string, T>\n )\n }\n}\n","import { z } from 'zod'\n\nconst InboxIdSchema = z.string().describe('ID of inbox')\nconst ThreadIdSchema = z.string().describe('ID of thread')\nconst MessageIdSchema = z.string().describe('ID of message')\nconst AttachmentIdSchema = z.string().describe('ID of attachment')\n\nexport const ListItemsParams = z.object({\n limit: z.number().optional().default(10).describe('Max number of items to return'),\n pageToken: z.string().optional().describe('Page token for pagination'),\n})\n\nexport const GetInboxParams = z.object({\n inboxId: InboxIdSchema,\n})\n\nexport const CreateInboxParams = z.object({\n username: z.string().optional().describe('Username'),\n domain: z.string().optional().describe('Domain'),\n displayName: z.string().optional().describe('Display name'),\n})\n\nexport const ListInboxItemsParams = ListItemsParams.extend({\n inboxId: InboxIdSchema,\n labels: z.array(z.string()).optional().describe('Labels to filter items by'),\n before: z.string().pipe(z.coerce.date()).optional().describe('Filter items before datetime'),\n after: z.string().pipe(z.coerce.date()).optional().describe('Filter items after datetime'),\n})\n\nexport const GetThreadParams = z.object({\n inboxId: InboxIdSchema,\n threadId: ThreadIdSchema,\n})\n\nexport const GetAttachmentParams = z.object({\n inboxId: InboxIdSchema,\n threadId: ThreadIdSchema,\n attachmentId: AttachmentIdSchema,\n})\n\nconst BaseMessageParams = z.object({\n inboxId: InboxIdSchema,\n text: z.string().optional().describe('Plain text body'),\n html: z.string().optional().describe('HTML body'),\n labels: z.array(z.string()).optional().describe('Labels'),\n})\n\nexport const SendMessageParams = BaseMessageParams.extend({\n to: z.array(z.string()).describe('Recipients'),\n cc: z.array(z.string()).optional().describe('CC recipients'),\n bcc: z.array(z.string()).optional().describe('BCC recipients'),\n subject: z.string().optional().describe('Subject'),\n})\n\nexport const ReplyToMessageParams = BaseMessageParams.extend({\n messageId: MessageIdSchema,\n})\n\nexport const UpdateMessageParams = z.object({\n inboxId: InboxIdSchema,\n messageId: MessageIdSchema,\n addLabels: z.array(z.string()).optional().describe('Labels to add'),\n removeLabels: z.array(z.string()).optional().describe('Labels to remove'),\n})\n","import { AgentMailClient } from 'agentmail'\nimport { CanvasFactory } from 'pdf-parse/worker'\nimport { PDFParse } from 'pdf-parse'\nimport mammoth from 'mammoth'\nimport { fileTypeFromBuffer } from 'file-type'\n\nexport type Args = Record<string, any>\n\ninterface Attachment {\n text?: string\n error?: string\n fileType?: string\n}\n\nexport async function listInboxes(client: AgentMailClient, args: Args) {\n return client.inboxes.list(args)\n}\n\nexport async function getInbox(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.get(inboxId, options)\n}\n\nexport async function createInbox(client: AgentMailClient, args: Args) {\n return client.inboxes.create(args)\n}\n\nexport async function deleteInbox(client: AgentMailClient, args: Args) {\n const { inboxId } = args\n return client.inboxes.delete(inboxId)\n}\n\nexport async function listThreads(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.threads.list(inboxId, options)\n}\n\nexport async function getThread(client: AgentMailClient, args: Args) {\n const { inboxId, threadId, ...options } = args\n return client.inboxes.threads.get(inboxId, threadId, options)\n}\n\nexport async function getAttachment(client: AgentMailClient, args: Args): Promise<Attachment> {\n const { threadId, attachmentId } = args\n\n const response = await client.threads.getAttachment(threadId, attachmentId)\n const fileBytes = Buffer.from(await response.arrayBuffer())\n\n const fileKind = await fileTypeFromBuffer(fileBytes)\n const fileType = fileKind?.mime\n\n let text = undefined\n\n if (fileType === 'application/pdf') {\n const parser = new PDFParse({ data: fileBytes, CanvasFactory })\n const pdfData = await parser.getText()\n text = pdfData.text\n } else if (fileType === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {\n const result = await mammoth.extractRawText({ buffer: fileBytes })\n text = result.value\n } else {\n return { error: `Unsupported file type: ${fileType || 'unknown'}`, fileType }\n }\n\n return { text, fileType }\n}\n\nexport async function sendMessage(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.messages.send(inboxId, options)\n}\n\nexport async function replyToMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.reply(inboxId, messageId, options)\n}\n\nexport async function updateMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.update(inboxId, messageId, options)\n}\n","import { z } from 'zod'\nimport { AgentMailClient } from 'agentmail'\n\nimport {\n ListItemsParams,\n ListInboxItemsParams,\n GetInboxParams,\n CreateInboxParams,\n GetThreadParams,\n GetAttachmentParams,\n SendMessageParams,\n ReplyToMessageParams,\n UpdateMessageParams,\n} from './schemas.js'\nimport {\n type Args,\n listInboxes,\n getInbox,\n createInbox,\n deleteInbox,\n listThreads,\n getThread,\n getAttachment,\n sendMessage,\n replyToMessage,\n updateMessage,\n} from './functions.js'\nexport interface Tool {\n name: string\n description: string\n paramsSchema: z.ZodObject<any>\n func: (client: AgentMailClient, args: Args) => Promise<any>\n}\n\nexport const tools: Tool[] = [\n {\n name: 'list_inboxes',\n description: 'List inboxes',\n paramsSchema: ListItemsParams,\n func: listInboxes,\n },\n {\n name: 'get_inbox',\n description: 'Get inbox',\n paramsSchema: GetInboxParams,\n func: getInbox,\n },\n {\n name: 'create_inbox',\n description: 'Create inbox',\n paramsSchema: CreateInboxParams,\n func: createInbox,\n },\n {\n name: 'delete_inbox',\n description: 'Delete inbox',\n paramsSchema: GetInboxParams,\n func: deleteInbox,\n },\n {\n name: 'list_threads',\n description: 'List threads in inbox',\n paramsSchema: ListInboxItemsParams,\n func: listThreads,\n },\n {\n name: 'get_thread',\n description: 'Get thread',\n paramsSchema: GetThreadParams,\n func: getThread,\n },\n {\n name: 'get_attachment',\n description: 'Get attachment',\n paramsSchema: GetAttachmentParams,\n func: getAttachment,\n },\n {\n name: 'send_message',\n description: 'Send message',\n paramsSchema: SendMessageParams,\n func: sendMessage,\n },\n {\n name: 'reply_to_message',\n description: 'Reply to message',\n paramsSchema: ReplyToMessageParams,\n func: replyToMessage,\n },\n {\n name: 'update_message',\n description: 'Update message',\n paramsSchema: UpdateMessageParams,\n func: updateMessage,\n },\n]\n","import { AgentMailClient } from 'agentmail'\n\nexport const safeFunc = async <T>(\n func: (client: AgentMailClient, args: Record<string, any>) => Promise<T>,\n client: AgentMailClient,\n args: Record<string, any>\n) => {\n try {\n return { isError: false, result: await func(client, args) }\n } catch (error) {\n if (error instanceof Error) return { isError: true, result: error.message }\n else return { isError: true, result: 'Unknown error' }\n }\n}\n"],"mappings":"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","names":["mammoth"]}
package/dist/ai-sdk.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Tool } from 'ai';
2
- import { M as MapToolkit, T as Tool$1 } from './toolkit--KYFOIry.cjs';
2
+ import { M as MapToolkit, T as Tool$1 } from './toolkit-CzHjKNIf.cjs';
3
3
  import 'agentmail';
4
4
  import 'zod';
5
5
 
package/dist/ai-sdk.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Tool } from 'ai';
2
- import { M as MapToolkit, T as Tool$1 } from './toolkit--KYFOIry.js';
2
+ import { M as MapToolkit, T as Tool$1 } from './toolkit-CzHjKNIf.js';
3
3
  import 'agentmail';
4
4
  import 'zod';
5
5
 
package/dist/ai-sdk.js CHANGED
@@ -3,14 +3,14 @@ import {
3
3
  } from "./chunk-C26Y3CI4.js";
4
4
  import {
5
5
  MapToolkit
6
- } from "./chunk-4RMN5TYL.js";
6
+ } from "./chunk-4T5LKBWD.js";
7
7
 
8
8
  // src/ai-sdk.ts
9
9
  var AgentMailToolkit = class extends MapToolkit {
10
10
  buildTool(tool) {
11
11
  return {
12
12
  description: tool.description,
13
- inputSchema: tool.params_schema,
13
+ inputSchema: tool.paramsSchema,
14
14
  execute: async (args) => (await safeFunc(tool.func, this.client, args)).result
15
15
  };
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ai-sdk.ts"],"sourcesContent":["import { type Tool as AiSdkTool } from 'ai'\n\nimport { MapToolkit } from './toolkit.js'\nimport { type Tool } from './tools.js'\nimport { safeFunc } from './util.js'\n\nexport class AgentMailToolkit extends MapToolkit<AiSdkTool> {\n protected buildTool(tool: Tool): AiSdkTool {\n return {\n description: tool.description,\n inputSchema: tool.params_schema,\n execute: async (args) => (await safeFunc(tool.func, this.client, args)).result,\n }\n }\n}\n"],"mappings":";;;;;;;;AAMO,IAAM,mBAAN,cAA+B,WAAsB;AAAA,EAC9C,UAAU,MAAuB;AACvC,WAAO;AAAA,MACH,aAAa,KAAK;AAAA,MAClB,aAAa,KAAK;AAAA,MAClB,SAAS,OAAO,UAAU,MAAM,SAAS,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAG;AAAA,IAC5E;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/ai-sdk.ts"],"sourcesContent":["import { type Tool as AiSdkTool } from 'ai'\n\nimport { MapToolkit } from './toolkit.js'\nimport { type Tool } from './tools.js'\nimport { safeFunc } from './util.js'\n\nexport class AgentMailToolkit extends MapToolkit<AiSdkTool> {\n protected buildTool(tool: Tool): AiSdkTool {\n return {\n description: tool.description,\n inputSchema: tool.paramsSchema,\n execute: async (args) => (await safeFunc(tool.func, this.client, args)).result,\n }\n }\n}\n"],"mappings":";;;;;;;;AAMO,IAAM,mBAAN,cAA+B,WAAsB;AAAA,EAC9C,UAAU,MAAuB;AACvC,WAAO;AAAA,MACH,aAAa,KAAK;AAAA,MAClB,aAAa,KAAK;AAAA,MAClB,SAAS,OAAO,UAAU,MAAM,SAAS,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAG;AAAA,IAC5E;AAAA,EACJ;AACJ;","names":[]}
@@ -9,33 +9,33 @@ var MessageIdSchema = z.string().describe("ID of message");
9
9
  var AttachmentIdSchema = z.string().describe("ID of attachment");
10
10
  var ListItemsParams = z.object({
11
11
  limit: z.number().optional().default(10).describe("Max number of items to return"),
12
- page_token: z.string().optional().describe("Page token for pagination")
12
+ pageToken: z.string().optional().describe("Page token for pagination")
13
13
  });
14
14
  var GetInboxParams = z.object({
15
- inbox_id: InboxIdSchema
15
+ inboxId: InboxIdSchema
16
16
  });
17
17
  var CreateInboxParams = z.object({
18
18
  username: z.string().optional().describe("Username"),
19
19
  domain: z.string().optional().describe("Domain"),
20
- display_name: z.string().optional().describe("Display name")
20
+ displayName: z.string().optional().describe("Display name")
21
21
  });
22
22
  var ListInboxItemsParams = ListItemsParams.extend({
23
- inbox_id: InboxIdSchema,
23
+ inboxId: InboxIdSchema,
24
24
  labels: z.array(z.string()).optional().describe("Labels to filter items by"),
25
- before: z.string().optional().describe("Filter items before datetime"),
26
- after: z.string().optional().describe("Filter items after datetime")
25
+ before: z.string().pipe(z.coerce.date()).optional().describe("Filter items before datetime"),
26
+ after: z.string().pipe(z.coerce.date()).optional().describe("Filter items after datetime")
27
27
  });
28
28
  var GetThreadParams = z.object({
29
- inbox_id: InboxIdSchema,
30
- thread_id: ThreadIdSchema
29
+ inboxId: InboxIdSchema,
30
+ threadId: ThreadIdSchema
31
31
  });
32
32
  var GetAttachmentParams = z.object({
33
- inbox_id: InboxIdSchema,
34
- thread_id: ThreadIdSchema,
35
- attachment_id: AttachmentIdSchema
33
+ inboxId: InboxIdSchema,
34
+ threadId: ThreadIdSchema,
35
+ attachmentId: AttachmentIdSchema
36
36
  });
37
37
  var BaseMessageParams = z.object({
38
- inbox_id: InboxIdSchema,
38
+ inboxId: InboxIdSchema,
39
39
  text: z.string().optional().describe("Plain text body"),
40
40
  html: z.string().optional().describe("HTML body"),
41
41
  labels: z.array(z.string()).optional().describe("Labels")
@@ -47,16 +47,17 @@ var SendMessageParams = BaseMessageParams.extend({
47
47
  subject: z.string().optional().describe("Subject")
48
48
  });
49
49
  var ReplyToMessageParams = BaseMessageParams.extend({
50
- message_id: MessageIdSchema
50
+ messageId: MessageIdSchema
51
51
  });
52
52
  var UpdateMessageParams = z.object({
53
- inbox_id: InboxIdSchema,
54
- message_id: MessageIdSchema,
55
- add_labels: z.array(z.string()).optional().describe("Labels to add"),
56
- remove_labels: z.array(z.string()).optional().describe("Labels to remove")
53
+ inboxId: InboxIdSchema,
54
+ messageId: MessageIdSchema,
55
+ addLabels: z.array(z.string()).optional().describe("Labels to add"),
56
+ removeLabels: z.array(z.string()).optional().describe("Labels to remove")
57
57
  });
58
58
 
59
59
  // src/functions.ts
60
+ import { CanvasFactory } from "pdf-parse/worker";
60
61
  import { PDFParse } from "pdf-parse";
61
62
  import mammoth from "mammoth";
62
63
  import { fileTypeFromBuffer } from "file-type";
@@ -64,57 +65,54 @@ async function listInboxes(client, args) {
64
65
  return client.inboxes.list(args);
65
66
  }
66
67
  async function getInbox(client, args) {
67
- const { inbox_id, ...options } = args;
68
- return client.inboxes.get(inbox_id, options);
68
+ const { inboxId, ...options } = args;
69
+ return client.inboxes.get(inboxId, options);
69
70
  }
70
71
  async function createInbox(client, args) {
71
72
  return client.inboxes.create(args);
72
73
  }
73
74
  async function deleteInbox(client, args) {
74
- const { inbox_id } = args;
75
- return client.inboxes.delete(inbox_id);
75
+ const { inboxId } = args;
76
+ return client.inboxes.delete(inboxId);
76
77
  }
77
78
  async function listThreads(client, args) {
78
- const { inbox_id, ...options } = args;
79
- return client.inboxes.threads.list(inbox_id, options);
79
+ const { inboxId, ...options } = args;
80
+ return client.inboxes.threads.list(inboxId, options);
80
81
  }
81
82
  async function getThread(client, args) {
82
- const { inbox_id, thread_id, ...options } = args;
83
- return client.inboxes.threads.get(inbox_id, thread_id, options);
83
+ const { inboxId, threadId, ...options } = args;
84
+ return client.inboxes.threads.get(inboxId, threadId, options);
84
85
  }
85
86
  async function getAttachment(client, args) {
86
- const { thread_id, attachment_id } = args;
87
- const response = await client.threads.getAttachment(thread_id, attachment_id);
87
+ const { threadId, attachmentId } = args;
88
+ const response = await client.threads.getAttachment(threadId, attachmentId);
88
89
  const fileBytes = Buffer.from(await response.arrayBuffer());
89
90
  const fileKind = await fileTypeFromBuffer(fileBytes);
90
91
  const fileType = fileKind?.mime;
91
92
  let text = void 0;
92
93
  if (fileType === "application/pdf") {
93
- const parser = new PDFParse({ data: fileBytes });
94
+ const parser = new PDFParse({ data: fileBytes, CanvasFactory });
94
95
  const pdfData = await parser.getText();
95
96
  text = pdfData.text;
96
97
  } else if (fileType === "application/vnd.openxmlformats-officedocument.wordprocessingml.document") {
97
98
  const result = await mammoth.extractRawText({ buffer: fileBytes });
98
99
  text = result.value;
99
100
  } else {
100
- return {
101
- error: `Unsupported file type: ${fileType || "unknown"}`,
102
- file_type: fileType
103
- };
101
+ return { error: `Unsupported file type: ${fileType || "unknown"}`, fileType };
104
102
  }
105
- return { text, file_type: fileType };
103
+ return { text, fileType };
106
104
  }
107
105
  async function sendMessage(client, args) {
108
- const { inbox_id, ...options } = args;
109
- return client.inboxes.messages.send(inbox_id, options);
106
+ const { inboxId, ...options } = args;
107
+ return client.inboxes.messages.send(inboxId, options);
110
108
  }
111
109
  async function replyToMessage(client, args) {
112
- const { inbox_id, message_id, ...options } = args;
113
- return client.inboxes.messages.reply(inbox_id, message_id, options);
110
+ const { inboxId, messageId, ...options } = args;
111
+ return client.inboxes.messages.reply(inboxId, messageId, options);
114
112
  }
115
113
  async function updateMessage(client, args) {
116
- const { inbox_id, message_id, ...options } = args;
117
- return client.inboxes.messages.update(inbox_id, message_id, options);
114
+ const { inboxId, messageId, ...options } = args;
115
+ return client.inboxes.messages.update(inboxId, messageId, options);
118
116
  }
119
117
 
120
118
  // src/tools.ts
@@ -122,61 +120,61 @@ var tools = [
122
120
  {
123
121
  name: "list_inboxes",
124
122
  description: "List inboxes",
125
- params_schema: ListItemsParams,
123
+ paramsSchema: ListItemsParams,
126
124
  func: listInboxes
127
125
  },
128
126
  {
129
127
  name: "get_inbox",
130
128
  description: "Get inbox",
131
- params_schema: GetInboxParams,
129
+ paramsSchema: GetInboxParams,
132
130
  func: getInbox
133
131
  },
134
132
  {
135
133
  name: "create_inbox",
136
134
  description: "Create inbox",
137
- params_schema: CreateInboxParams,
135
+ paramsSchema: CreateInboxParams,
138
136
  func: createInbox
139
137
  },
140
138
  {
141
139
  name: "delete_inbox",
142
140
  description: "Delete inbox",
143
- params_schema: GetInboxParams,
141
+ paramsSchema: GetInboxParams,
144
142
  func: deleteInbox
145
143
  },
146
144
  {
147
145
  name: "list_threads",
148
146
  description: "List threads in inbox",
149
- params_schema: ListInboxItemsParams,
147
+ paramsSchema: ListInboxItemsParams,
150
148
  func: listThreads
151
149
  },
152
150
  {
153
151
  name: "get_thread",
154
152
  description: "Get thread",
155
- params_schema: GetThreadParams,
153
+ paramsSchema: GetThreadParams,
156
154
  func: getThread
157
155
  },
158
156
  {
159
157
  name: "get_attachment",
160
158
  description: "Get attachment",
161
- params_schema: GetAttachmentParams,
159
+ paramsSchema: GetAttachmentParams,
162
160
  func: getAttachment
163
161
  },
164
162
  {
165
163
  name: "send_message",
166
164
  description: "Send message",
167
- params_schema: SendMessageParams,
165
+ paramsSchema: SendMessageParams,
168
166
  func: sendMessage
169
167
  },
170
168
  {
171
169
  name: "reply_to_message",
172
170
  description: "Reply to message",
173
- params_schema: ReplyToMessageParams,
171
+ paramsSchema: ReplyToMessageParams,
174
172
  func: replyToMessage
175
173
  },
176
174
  {
177
175
  name: "update_message",
178
176
  description: "Update message",
179
- params_schema: UpdateMessageParams,
177
+ paramsSchema: UpdateMessageParams,
180
178
  func: updateMessage
181
179
  }
182
180
  ];
@@ -222,4 +220,4 @@ export {
222
220
  ListToolkit,
223
221
  MapToolkit
224
222
  };
225
- //# sourceMappingURL=chunk-4RMN5TYL.js.map
223
+ //# sourceMappingURL=chunk-4T5LKBWD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/toolkit.ts","../src/schemas.ts","../src/functions.ts","../src/tools.ts"],"sourcesContent":["import { AgentMailClient } from 'agentmail'\n\nimport { type Tool, tools } from './tools.js'\n\nexport abstract class BaseToolkit<T> {\n protected readonly client: AgentMailClient\n protected readonly tools: Record<string, T> = {}\n\n constructor(client?: AgentMailClient) {\n this.client = client ?? new AgentMailClient()\n\n this.tools = tools.reduce(\n (acc, tool) => {\n acc[tool.name] = this.buildTool(tool)\n return acc\n },\n {} as Record<string, T>\n )\n }\n\n protected abstract buildTool(tool: Tool): T\n}\n\nexport abstract class ListToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return Object.values(this.tools)\n\n return names.reduce((acc, name) => {\n if (name in this.tools) acc.push(this.tools[name])\n return acc\n }, [] as T[])\n }\n}\n\nexport abstract class MapToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return this.tools\n\n return names.reduce(\n (acc, name) => {\n if (name in this.tools) acc[name] = this.tools[name]\n return acc\n },\n {} as Record<string, T>\n )\n }\n}\n","import { z } from 'zod'\n\nconst InboxIdSchema = z.string().describe('ID of inbox')\nconst ThreadIdSchema = z.string().describe('ID of thread')\nconst MessageIdSchema = z.string().describe('ID of message')\nconst AttachmentIdSchema = z.string().describe('ID of attachment')\n\nexport const ListItemsParams = z.object({\n limit: z.number().optional().default(10).describe('Max number of items to return'),\n pageToken: z.string().optional().describe('Page token for pagination'),\n})\n\nexport const GetInboxParams = z.object({\n inboxId: InboxIdSchema,\n})\n\nexport const CreateInboxParams = z.object({\n username: z.string().optional().describe('Username'),\n domain: z.string().optional().describe('Domain'),\n displayName: z.string().optional().describe('Display name'),\n})\n\nexport const ListInboxItemsParams = ListItemsParams.extend({\n inboxId: InboxIdSchema,\n labels: z.array(z.string()).optional().describe('Labels to filter items by'),\n before: z.string().pipe(z.coerce.date()).optional().describe('Filter items before datetime'),\n after: z.string().pipe(z.coerce.date()).optional().describe('Filter items after datetime'),\n})\n\nexport const GetThreadParams = z.object({\n inboxId: InboxIdSchema,\n threadId: ThreadIdSchema,\n})\n\nexport const GetAttachmentParams = z.object({\n inboxId: InboxIdSchema,\n threadId: ThreadIdSchema,\n attachmentId: AttachmentIdSchema,\n})\n\nconst BaseMessageParams = z.object({\n inboxId: InboxIdSchema,\n text: z.string().optional().describe('Plain text body'),\n html: z.string().optional().describe('HTML body'),\n labels: z.array(z.string()).optional().describe('Labels'),\n})\n\nexport const SendMessageParams = BaseMessageParams.extend({\n to: z.array(z.string()).describe('Recipients'),\n cc: z.array(z.string()).optional().describe('CC recipients'),\n bcc: z.array(z.string()).optional().describe('BCC recipients'),\n subject: z.string().optional().describe('Subject'),\n})\n\nexport const ReplyToMessageParams = BaseMessageParams.extend({\n messageId: MessageIdSchema,\n})\n\nexport const UpdateMessageParams = z.object({\n inboxId: InboxIdSchema,\n messageId: MessageIdSchema,\n addLabels: z.array(z.string()).optional().describe('Labels to add'),\n removeLabels: z.array(z.string()).optional().describe('Labels to remove'),\n})\n","import { AgentMailClient } from 'agentmail'\nimport { CanvasFactory } from 'pdf-parse/worker'\nimport { PDFParse } from 'pdf-parse'\nimport mammoth from 'mammoth'\nimport { fileTypeFromBuffer } from 'file-type'\n\nexport type Args = Record<string, any>\n\ninterface Attachment {\n text?: string\n error?: string\n fileType?: string\n}\n\nexport async function listInboxes(client: AgentMailClient, args: Args) {\n return client.inboxes.list(args)\n}\n\nexport async function getInbox(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.get(inboxId, options)\n}\n\nexport async function createInbox(client: AgentMailClient, args: Args) {\n return client.inboxes.create(args)\n}\n\nexport async function deleteInbox(client: AgentMailClient, args: Args) {\n const { inboxId } = args\n return client.inboxes.delete(inboxId)\n}\n\nexport async function listThreads(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.threads.list(inboxId, options)\n}\n\nexport async function getThread(client: AgentMailClient, args: Args) {\n const { inboxId, threadId, ...options } = args\n return client.inboxes.threads.get(inboxId, threadId, options)\n}\n\nexport async function getAttachment(client: AgentMailClient, args: Args): Promise<Attachment> {\n const { threadId, attachmentId } = args\n\n const response = await client.threads.getAttachment(threadId, attachmentId)\n const fileBytes = Buffer.from(await response.arrayBuffer())\n\n const fileKind = await fileTypeFromBuffer(fileBytes)\n const fileType = fileKind?.mime\n\n let text = undefined\n\n if (fileType === 'application/pdf') {\n const parser = new PDFParse({ data: fileBytes, CanvasFactory })\n const pdfData = await parser.getText()\n text = pdfData.text\n } else if (fileType === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {\n const result = await mammoth.extractRawText({ buffer: fileBytes })\n text = result.value\n } else {\n return { error: `Unsupported file type: ${fileType || 'unknown'}`, fileType }\n }\n\n return { text, fileType }\n}\n\nexport async function sendMessage(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.messages.send(inboxId, options)\n}\n\nexport async function replyToMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.reply(inboxId, messageId, options)\n}\n\nexport async function updateMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.update(inboxId, messageId, options)\n}\n","import { z } from 'zod'\nimport { AgentMailClient } from 'agentmail'\n\nimport {\n ListItemsParams,\n ListInboxItemsParams,\n GetInboxParams,\n CreateInboxParams,\n GetThreadParams,\n GetAttachmentParams,\n SendMessageParams,\n ReplyToMessageParams,\n UpdateMessageParams,\n} from './schemas.js'\nimport {\n type Args,\n listInboxes,\n getInbox,\n createInbox,\n deleteInbox,\n listThreads,\n getThread,\n getAttachment,\n sendMessage,\n replyToMessage,\n updateMessage,\n} from './functions.js'\nexport interface Tool {\n name: string\n description: string\n paramsSchema: z.ZodObject<any>\n func: (client: AgentMailClient, args: Args) => Promise<any>\n}\n\nexport const tools: Tool[] = [\n {\n name: 'list_inboxes',\n description: 'List inboxes',\n paramsSchema: ListItemsParams,\n func: listInboxes,\n },\n {\n name: 'get_inbox',\n description: 'Get inbox',\n paramsSchema: GetInboxParams,\n func: getInbox,\n },\n {\n name: 'create_inbox',\n description: 'Create inbox',\n paramsSchema: CreateInboxParams,\n func: createInbox,\n },\n {\n name: 'delete_inbox',\n description: 'Delete inbox',\n paramsSchema: GetInboxParams,\n func: deleteInbox,\n },\n {\n name: 'list_threads',\n description: 'List threads in inbox',\n paramsSchema: ListInboxItemsParams,\n func: listThreads,\n },\n {\n name: 'get_thread',\n description: 'Get thread',\n paramsSchema: GetThreadParams,\n func: getThread,\n },\n {\n name: 'get_attachment',\n description: 'Get attachment',\n paramsSchema: GetAttachmentParams,\n func: getAttachment,\n },\n {\n name: 'send_message',\n description: 'Send message',\n paramsSchema: SendMessageParams,\n func: sendMessage,\n },\n {\n name: 'reply_to_message',\n description: 'Reply to message',\n paramsSchema: ReplyToMessageParams,\n func: replyToMessage,\n },\n {\n name: 'update_message',\n description: 'Update message',\n paramsSchema: UpdateMessageParams,\n func: updateMessage,\n },\n]\n"],"mappings":";AAAA,SAAS,uBAAuB;;;ACAhC,SAAS,SAAS;AAElB,IAAM,gBAAgB,EAAE,OAAO,EAAE,SAAS,aAAa;AACvD,IAAM,iBAAiB,EAAE,OAAO,EAAE,SAAS,cAAc;AACzD,IAAM,kBAAkB,EAAE,OAAO,EAAE,SAAS,eAAe;AAC3D,IAAM,qBAAqB,EAAE,OAAO,EAAE,SAAS,kBAAkB;AAE1D,IAAM,kBAAkB,EAAE,OAAO;AAAA,EACpC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,SAAS,+BAA+B;AAAA,EACjF,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,2BAA2B;AACzE,CAAC;AAEM,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACnC,SAAS;AACb,CAAC;AAEM,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACtC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,UAAU;AAAA,EACnD,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,QAAQ;AAAA,EAC/C,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,cAAc;AAC9D,CAAC;AAEM,IAAM,uBAAuB,gBAAgB,OAAO;AAAA,EACvD,SAAS;AAAA,EACT,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,2BAA2B;AAAA,EAC3E,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,8BAA8B;AAAA,EAC3F,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,6BAA6B;AAC7F,CAAC;AAEM,IAAM,kBAAkB,EAAE,OAAO;AAAA,EACpC,SAAS;AAAA,EACT,UAAU;AACd,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EACxC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAClB,CAAC;AAED,IAAM,oBAAoB,EAAE,OAAO;AAAA,EAC/B,SAAS;AAAA,EACT,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,iBAAiB;AAAA,EACtD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,WAAW;AAAA,EAChD,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,QAAQ;AAC5D,CAAC;AAEM,IAAM,oBAAoB,kBAAkB,OAAO;AAAA,EACtD,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,YAAY;AAAA,EAC7C,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,eAAe;AAAA,EAC3D,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,gBAAgB;AAAA,EAC7D,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,SAAS;AACrD,CAAC;AAEM,IAAM,uBAAuB,kBAAkB,OAAO;AAAA,EACzD,WAAW;AACf,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EACxC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,eAAe;AAAA,EAClE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,kBAAkB;AAC5E,CAAC;;;AC9DD,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AACzB,OAAO,aAAa;AACpB,SAAS,0BAA0B;AAUnC,eAAsB,YAAY,QAAyB,MAAY;AACnE,SAAO,OAAO,QAAQ,KAAK,IAAI;AACnC;AAEA,eAAsB,SAAS,QAAyB,MAAY;AAChE,QAAM,EAAE,SAAS,GAAG,QAAQ,IAAI;AAChC,SAAO,OAAO,QAAQ,IAAI,SAAS,OAAO;AAC9C;AAEA,eAAsB,YAAY,QAAyB,MAAY;AACnE,SAAO,OAAO,QAAQ,OAAO,IAAI;AACrC;AAEA,eAAsB,YAAY,QAAyB,MAAY;AACnE,QAAM,EAAE,QAAQ,IAAI;AACpB,SAAO,OAAO,QAAQ,OAAO,OAAO;AACxC;AAEA,eAAsB,YAAY,QAAyB,MAAY;AACnE,QAAM,EAAE,SAAS,GAAG,QAAQ,IAAI;AAChC,SAAO,OAAO,QAAQ,QAAQ,KAAK,SAAS,OAAO;AACvD;AAEA,eAAsB,UAAU,QAAyB,MAAY;AACjE,QAAM,EAAE,SAAS,UAAU,GAAG,QAAQ,IAAI;AAC1C,SAAO,OAAO,QAAQ,QAAQ,IAAI,SAAS,UAAU,OAAO;AAChE;AAEA,eAAsB,cAAc,QAAyB,MAAiC;AAC1F,QAAM,EAAE,UAAU,aAAa,IAAI;AAEnC,QAAM,WAAW,MAAM,OAAO,QAAQ,cAAc,UAAU,YAAY;AAC1E,QAAM,YAAY,OAAO,KAAK,MAAM,SAAS,YAAY,CAAC;AAE1D,QAAM,WAAW,MAAM,mBAAmB,SAAS;AACnD,QAAM,WAAW,UAAU;AAE3B,MAAI,OAAO;AAEX,MAAI,aAAa,mBAAmB;AAChC,UAAM,SAAS,IAAI,SAAS,EAAE,MAAM,WAAW,cAAc,CAAC;AAC9D,UAAM,UAAU,MAAM,OAAO,QAAQ;AACrC,WAAO,QAAQ;AAAA,EACnB,WAAW,aAAa,2EAA2E;AAC/F,UAAM,SAAS,MAAM,QAAQ,eAAe,EAAE,QAAQ,UAAU,CAAC;AACjE,WAAO,OAAO;AAAA,EAClB,OAAO;AACH,WAAO,EAAE,OAAO,0BAA0B,YAAY,SAAS,IAAI,SAAS;AAAA,EAChF;AAEA,SAAO,EAAE,MAAM,SAAS;AAC5B;AAEA,eAAsB,YAAY,QAAyB,MAAY;AACnE,QAAM,EAAE,SAAS,GAAG,QAAQ,IAAI;AAChC,SAAO,OAAO,QAAQ,SAAS,KAAK,SAAS,OAAO;AACxD;AAEA,eAAsB,eAAe,QAAyB,MAAY;AACtE,QAAM,EAAE,SAAS,WAAW,GAAG,QAAQ,IAAI;AAC3C,SAAO,OAAO,QAAQ,SAAS,MAAM,SAAS,WAAW,OAAO;AACpE;AAEA,eAAsB,cAAc,QAAyB,MAAY;AACrE,QAAM,EAAE,SAAS,WAAW,GAAG,QAAQ,IAAI;AAC3C,SAAO,OAAO,QAAQ,SAAS,OAAO,SAAS,WAAW,OAAO;AACrE;;;AC9CO,IAAM,QAAgB;AAAA,EACzB;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM;AAAA,EACV;AACJ;;;AH3FO,IAAe,cAAf,MAA8B;AAAA,EACd;AAAA,EACA,QAA2B,CAAC;AAAA,EAE/C,YAAY,QAA0B;AAClC,SAAK,SAAS,UAAU,IAAI,gBAAgB;AAE5C,SAAK,QAAQ,MAAM;AAAA,MACf,CAAC,KAAK,SAAS;AACX,YAAI,KAAK,IAAI,IAAI,KAAK,UAAU,IAAI;AACpC,eAAO;AAAA,MACX;AAAA,MACA,CAAC;AAAA,IACL;AAAA,EACJ;AAGJ;AAEO,IAAe,cAAf,cAAsC,YAAe;AAAA,EACjD,SAAS,OAAkB;AAC9B,QAAI,CAAC,MAAO,QAAO,OAAO,OAAO,KAAK,KAAK;AAE3C,WAAO,MAAM,OAAO,CAAC,KAAK,SAAS;AAC/B,UAAI,QAAQ,KAAK,MAAO,KAAI,KAAK,KAAK,MAAM,IAAI,CAAC;AACjD,aAAO;AAAA,IACX,GAAG,CAAC,CAAQ;AAAA,EAChB;AACJ;AAEO,IAAe,aAAf,cAAqC,YAAe;AAAA,EAChD,SAAS,OAAkB;AAC9B,QAAI,CAAC,MAAO,QAAO,KAAK;AAExB,WAAO,MAAM;AAAA,MACT,CAAC,KAAK,SAAS;AACX,YAAI,QAAQ,KAAK,MAAO,KAAI,IAAI,IAAI,KAAK,MAAM,IAAI;AACnD,eAAO;AAAA,MACX;AAAA,MACA,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;","names":[]}