agentmail-toolkit 0.2.6 → 0.3.0

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.
Files changed (75) hide show
  1. package/dist/ai-sdk.cjs +128 -1
  2. package/dist/ai-sdk.cjs.map +1 -1
  3. package/dist/ai-sdk.js +1 -1
  4. package/dist/{chunk-NNUCWEGE.js → chunk-OXSQD7CN.js} +139 -8
  5. package/dist/chunk-OXSQD7CN.js.map +1 -0
  6. package/dist/{chunk-Z66OQEWT.js → chunk-SS4BEACW.js} +129 -2
  7. package/dist/chunk-SS4BEACW.js.map +1 -0
  8. package/dist/clawdbot.cjs +128 -1
  9. package/dist/clawdbot.cjs.map +1 -1
  10. package/dist/clawdbot.js +1 -1
  11. package/dist/index.cjs +128 -1
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.js +1 -1
  14. package/dist/langchain.cjs +128 -1
  15. package/dist/langchain.cjs.map +1 -1
  16. package/dist/langchain.js +1 -1
  17. package/dist/mcp.cjs +128 -2
  18. package/dist/mcp.cjs.map +1 -1
  19. package/dist/mcp.js +1 -2
  20. package/dist/mcp.js.map +1 -1
  21. package/package.json +88 -89
  22. package/dist/chunk-44OTSXCQ.js +0 -320
  23. package/dist/chunk-44OTSXCQ.js.map +0 -1
  24. package/dist/chunk-4T5LKBWD.js +0 -223
  25. package/dist/chunk-4T5LKBWD.js.map +0 -1
  26. package/dist/chunk-7FZ6E4MD.js +0 -273
  27. package/dist/chunk-7FZ6E4MD.js.map +0 -1
  28. package/dist/chunk-C26Y3CI4.js +0 -14
  29. package/dist/chunk-C26Y3CI4.js.map +0 -1
  30. package/dist/chunk-CVZ55VXA.js +0 -280
  31. package/dist/chunk-CVZ55VXA.js.map +0 -1
  32. package/dist/chunk-FBC74QBQ.js +0 -295
  33. package/dist/chunk-FBC74QBQ.js.map +0 -1
  34. package/dist/chunk-FG6GNX6W.js +0 -325
  35. package/dist/chunk-FG6GNX6W.js.map +0 -1
  36. package/dist/chunk-H5W3ICJE.js +0 -224
  37. package/dist/chunk-H5W3ICJE.js.map +0 -1
  38. package/dist/chunk-IFKSKRIK.js +0 -281
  39. package/dist/chunk-IFKSKRIK.js.map +0 -1
  40. package/dist/chunk-IWMMDYII.js +0 -275
  41. package/dist/chunk-IWMMDYII.js.map +0 -1
  42. package/dist/chunk-JED4VZY5.js +0 -274
  43. package/dist/chunk-JED4VZY5.js.map +0 -1
  44. package/dist/chunk-KA5XTT6R.js +0 -278
  45. package/dist/chunk-KA5XTT6R.js.map +0 -1
  46. package/dist/chunk-KMHACGIU.js +0 -318
  47. package/dist/chunk-KMHACGIU.js.map +0 -1
  48. package/dist/chunk-NFGFCOTN.js +0 -321
  49. package/dist/chunk-NFGFCOTN.js.map +0 -1
  50. package/dist/chunk-NNUCWEGE.js.map +0 -1
  51. package/dist/chunk-P7RN2O7K.js +0 -318
  52. package/dist/chunk-P7RN2O7K.js.map +0 -1
  53. package/dist/chunk-QYA36A47.js +0 -288
  54. package/dist/chunk-QYA36A47.js.map +0 -1
  55. package/dist/chunk-S7RI6KPK.js +0 -274
  56. package/dist/chunk-S7RI6KPK.js.map +0 -1
  57. package/dist/chunk-SDHZGC5B.js +0 -321
  58. package/dist/chunk-SDHZGC5B.js.map +0 -1
  59. package/dist/chunk-UTCUBB2I.js +0 -275
  60. package/dist/chunk-UTCUBB2I.js.map +0 -1
  61. package/dist/chunk-UWBHHJ2Z.js +0 -274
  62. package/dist/chunk-UWBHHJ2Z.js.map +0 -1
  63. package/dist/chunk-V3FHAZGX.js +0 -299
  64. package/dist/chunk-V3FHAZGX.js.map +0 -1
  65. package/dist/chunk-VHGNGEKG.js +0 -298
  66. package/dist/chunk-VHGNGEKG.js.map +0 -1
  67. package/dist/chunk-WQZOY77M.js +0 -288
  68. package/dist/chunk-WQZOY77M.js.map +0 -1
  69. package/dist/chunk-YCULFZ43.js +0 -280
  70. package/dist/chunk-YCULFZ43.js.map +0 -1
  71. package/dist/chunk-YUPZCTEU.js +0 -318
  72. package/dist/chunk-YUPZCTEU.js.map +0 -1
  73. package/dist/chunk-Z66OQEWT.js.map +0 -1
  74. package/dist/toolkit-CzHjKNIf.d.cts +0 -26
  75. package/dist/toolkit-CzHjKNIf.d.ts +0 -26
@@ -1,295 +0,0 @@
1
- // src/toolkit.ts
2
- import { AgentMailClient } from "agentmail";
3
-
4
- // src/schemas.ts
5
- import { z } from "zod";
6
- var InboxIdSchema = z.string().describe("ID of inbox");
7
- var ThreadIdSchema = z.string().describe("ID of thread");
8
- var MessageIdSchema = z.string().describe("ID of message");
9
- var AttachmentIdSchema = z.string().describe("ID of attachment");
10
- var ListItemsParams = z.object({
11
- limit: z.number().optional().default(10).describe("Max number of items to return"),
12
- pageToken: z.string().optional().describe("Page token for pagination")
13
- });
14
- var GetInboxParams = z.object({
15
- inboxId: InboxIdSchema
16
- });
17
- var CreateInboxParams = z.object({
18
- username: z.string().optional().describe("Username"),
19
- domain: z.string().optional().describe("Domain"),
20
- displayName: z.string().optional().describe("Display name")
21
- });
22
- var ListInboxItemsParams = ListItemsParams.extend({
23
- inboxId: InboxIdSchema,
24
- labels: z.array(z.string()).optional().describe("Labels to filter items by"),
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
- });
28
- var GetThreadParams = z.object({
29
- inboxId: InboxIdSchema,
30
- threadId: ThreadIdSchema
31
- });
32
- var GetAttachmentParams = z.object({
33
- inboxId: InboxIdSchema,
34
- threadId: ThreadIdSchema,
35
- attachmentId: AttachmentIdSchema
36
- });
37
- var BaseMessageParams = z.object({
38
- inboxId: InboxIdSchema,
39
- text: z.string().optional().describe("Plain text body"),
40
- html: z.string().optional().describe("HTML body"),
41
- labels: z.array(z.string()).optional().describe("Labels")
42
- });
43
- var SendMessageParams = BaseMessageParams.extend({
44
- to: z.array(z.string()).describe("Recipients"),
45
- cc: z.array(z.string()).optional().describe("CC recipients"),
46
- bcc: z.array(z.string()).optional().describe("BCC recipients"),
47
- subject: z.string().optional().describe("Subject")
48
- });
49
- var ReplyToMessageParams = BaseMessageParams.extend({
50
- messageId: MessageIdSchema,
51
- replyAll: z.boolean().optional().describe("Reply to all recipients")
52
- });
53
- var UpdateMessageParams = z.object({
54
- inboxId: InboxIdSchema,
55
- messageId: MessageIdSchema,
56
- addLabels: z.array(z.string()).optional().describe("Labels to add"),
57
- removeLabels: z.array(z.string()).optional().describe("Labels to remove")
58
- });
59
-
60
- // src/functions.ts
61
- import { extractText, getDocumentProxy } from "unpdf";
62
- import JSZip from "jszip";
63
- function detectFileType(bytes) {
64
- if (bytes[0] === 37 && bytes[1] === 80 && bytes[2] === 68 && bytes[3] === 70) {
65
- return "application/pdf";
66
- }
67
- if (bytes[0] === 80 && bytes[1] === 75 && bytes[2] === 3 && bytes[3] === 4) {
68
- return "application/zip";
69
- }
70
- return void 0;
71
- }
72
- async function extractPdfText(bytes) {
73
- const pdf = await getDocumentProxy(bytes);
74
- const { text } = await extractText(pdf);
75
- return Array.isArray(text) ? text.join("\n") : text;
76
- }
77
- async function extractDocxText(bytes) {
78
- const zip = await JSZip.loadAsync(bytes);
79
- const documentXml = await zip.file("word/document.xml")?.async("string");
80
- if (!documentXml) return void 0;
81
- return documentXml.replace(/<w:p[^>]*>/g, "\n").replace(/<[^>]+>/g, "").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&").replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/\n{3,}/g, "\n\n").trim();
82
- }
83
- async function listInboxes(client, args) {
84
- return client.inboxes.list(args);
85
- }
86
- async function getInbox(client, args) {
87
- const { inboxId, ...options } = args;
88
- return client.inboxes.get(inboxId, options);
89
- }
90
- async function createInbox(client, args) {
91
- return client.inboxes.create(args);
92
- }
93
- async function deleteInbox(client, args) {
94
- const { inboxId } = args;
95
- return client.inboxes.delete(inboxId);
96
- }
97
- async function listThreads(client, args) {
98
- const { inboxId, ...options } = args;
99
- return client.inboxes.threads.list(inboxId, options);
100
- }
101
- async function getThread(client, args) {
102
- const { inboxId, threadId, ...options } = args;
103
- return client.inboxes.threads.get(inboxId, threadId, options);
104
- }
105
- async function getAttachment(client, args) {
106
- const { threadId, attachmentId } = args;
107
- const response = await client.threads.getAttachment(threadId, attachmentId);
108
- const arrayBuffer = await response.arrayBuffer();
109
- const fileBytes = new Uint8Array(arrayBuffer);
110
- const detectedType = detectFileType(fileBytes);
111
- let text = void 0;
112
- let fileType = detectedType;
113
- if (detectedType === "application/pdf") {
114
- text = await extractPdfText(fileBytes);
115
- } else if (detectedType === "application/zip") {
116
- text = await extractDocxText(fileBytes);
117
- if (text) {
118
- fileType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
119
- } else {
120
- return { error: "Unsupported file type: ZIP archive (not a DOCX)", fileType };
121
- }
122
- } else {
123
- return { error: `Unsupported file type: ${detectedType || "unknown"}`, fileType };
124
- }
125
- return { text, fileType };
126
- }
127
- async function sendMessage(client, args) {
128
- const { inboxId, ...options } = args;
129
- return client.inboxes.messages.send(inboxId, options);
130
- }
131
- async function replyToMessage(client, args) {
132
- const { inboxId, messageId, ...options } = args;
133
- return client.inboxes.messages.reply(inboxId, messageId, options);
134
- }
135
- async function updateMessage(client, args) {
136
- const { inboxId, messageId, ...options } = args;
137
- return client.inboxes.messages.update(inboxId, messageId, options);
138
- }
139
-
140
- // src/tools.ts
141
- var tools = [
142
- {
143
- name: "list_inboxes",
144
- description: "List inboxes",
145
- paramsSchema: ListItemsParams,
146
- func: listInboxes,
147
- annotations: {
148
- readOnlyHint: true,
149
- openWorldHint: false
150
- }
151
- },
152
- {
153
- name: "get_inbox",
154
- description: "Get inbox",
155
- paramsSchema: GetInboxParams,
156
- func: getInbox,
157
- annotations: {
158
- readOnlyHint: true,
159
- openWorldHint: false
160
- }
161
- },
162
- {
163
- name: "create_inbox",
164
- description: "Create inbox",
165
- paramsSchema: CreateInboxParams,
166
- func: createInbox,
167
- annotations: {
168
- readOnlyHint: false,
169
- destructiveHint: false,
170
- idempotentHint: false,
171
- openWorldHint: false
172
- }
173
- },
174
- {
175
- name: "delete_inbox",
176
- description: "Delete inbox",
177
- paramsSchema: GetInboxParams,
178
- func: deleteInbox,
179
- annotations: {
180
- readOnlyHint: false,
181
- destructiveHint: true,
182
- idempotentHint: true,
183
- openWorldHint: false
184
- }
185
- },
186
- {
187
- name: "list_threads",
188
- description: "List threads in inbox",
189
- paramsSchema: ListInboxItemsParams,
190
- func: listThreads,
191
- annotations: {
192
- readOnlyHint: true,
193
- openWorldHint: true
194
- }
195
- },
196
- {
197
- name: "get_thread",
198
- description: "Get thread",
199
- paramsSchema: GetThreadParams,
200
- func: getThread,
201
- annotations: {
202
- readOnlyHint: true,
203
- openWorldHint: true
204
- }
205
- },
206
- {
207
- name: "get_attachment",
208
- description: "Get attachment",
209
- paramsSchema: GetAttachmentParams,
210
- func: getAttachment,
211
- annotations: {
212
- readOnlyHint: true,
213
- openWorldHint: true
214
- }
215
- },
216
- {
217
- name: "send_message",
218
- description: "Send message",
219
- paramsSchema: SendMessageParams,
220
- func: sendMessage,
221
- annotations: {
222
- readOnlyHint: false,
223
- destructiveHint: false,
224
- idempotentHint: false,
225
- openWorldHint: true
226
- }
227
- },
228
- {
229
- name: "reply_to_message",
230
- description: "Reply to message",
231
- paramsSchema: ReplyToMessageParams,
232
- func: replyToMessage,
233
- annotations: {
234
- readOnlyHint: false,
235
- destructiveHint: false,
236
- idempotentHint: false,
237
- openWorldHint: true
238
- }
239
- },
240
- {
241
- name: "update_message",
242
- description: "Update message",
243
- paramsSchema: UpdateMessageParams,
244
- func: updateMessage,
245
- annotations: {
246
- readOnlyHint: false,
247
- destructiveHint: false,
248
- idempotentHint: true,
249
- openWorldHint: false
250
- }
251
- }
252
- ];
253
-
254
- // src/toolkit.ts
255
- var BaseToolkit = class {
256
- client;
257
- tools = {};
258
- constructor(client) {
259
- this.client = client ?? new AgentMailClient();
260
- this.tools = tools.reduce(
261
- (acc, tool) => {
262
- acc[tool.name] = this.buildTool(tool);
263
- return acc;
264
- },
265
- {}
266
- );
267
- }
268
- };
269
- var ListToolkit = class extends BaseToolkit {
270
- getTools(names) {
271
- if (!names) return Object.values(this.tools);
272
- return names.reduce((acc, name) => {
273
- if (name in this.tools) acc.push(this.tools[name]);
274
- return acc;
275
- }, []);
276
- }
277
- };
278
- var MapToolkit = class extends BaseToolkit {
279
- getTools(names) {
280
- if (!names) return this.tools;
281
- return names.reduce(
282
- (acc, name) => {
283
- if (name in this.tools) acc[name] = this.tools[name];
284
- return acc;
285
- },
286
- {}
287
- );
288
- }
289
- };
290
-
291
- export {
292
- ListToolkit,
293
- MapToolkit
294
- };
295
- //# sourceMappingURL=chunk-FBC74QBQ.js.map
@@ -1 +0,0 @@
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 replyAll: z.boolean().optional().describe('Reply to all recipients'),\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 { extractText, getDocumentProxy } from 'unpdf'\nimport JSZip from 'jszip'\n\nexport type Args = Record<string, any>\n\ninterface Attachment {\n text?: string\n error?: string\n fileType?: string\n}\n\nfunction detectFileType(bytes: Uint8Array): string | undefined {\n // PDF: starts with %PDF (0x25 0x50 0x44 0x46)\n if (bytes[0] === 0x25 && bytes[1] === 0x50 && bytes[2] === 0x44 && bytes[3] === 0x46) {\n return 'application/pdf'\n }\n // ZIP (DOCX is a ZIP): starts with PK\\x03\\x04 (0x50 0x4B 0x03 0x04)\n if (bytes[0] === 0x50 && bytes[1] === 0x4b && bytes[2] === 0x03 && bytes[3] === 0x04) {\n return 'application/zip'\n }\n return undefined\n}\n\nasync function extractPdfText(bytes: Uint8Array): Promise<string> {\n const pdf = await getDocumentProxy(bytes)\n const { text } = await extractText(pdf)\n return Array.isArray(text) ? text.join('\\n') : text\n}\n\nasync function extractDocxText(bytes: Uint8Array): Promise<string | undefined> {\n const zip = await JSZip.loadAsync(bytes)\n const documentXml = await zip.file('word/document.xml')?.async('string')\n if (!documentXml) return undefined\n return documentXml\n .replace(/<w:p[^>]*>/g, '\\n')\n .replace(/<[^>]+>/g, '')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&')\n .replace(/&quot;/g, '\"')\n .replace(/&apos;/g, \"'\")\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim()\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 arrayBuffer = await response.arrayBuffer()\n const fileBytes = new Uint8Array(arrayBuffer)\n\n const detectedType = detectFileType(fileBytes)\n let text = undefined\n let fileType = detectedType\n\n if (detectedType === 'application/pdf') {\n text = await extractPdfText(fileBytes)\n } else if (detectedType === 'application/zip') {\n text = await extractDocxText(fileBytes)\n if (text) {\n fileType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n } else {\n return { error: 'Unsupported file type: ZIP archive (not a DOCX)', fileType }\n }\n } else {\n return { error: `Unsupported file type: ${detectedType || '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'\nimport { type ToolAnnotations } from '@modelcontextprotocol/sdk/types.js'\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 annotations?: ToolAnnotations\n}\n\nexport const tools: Tool[] = [\n {\n name: 'list_inboxes',\n description: 'List inboxes',\n paramsSchema: ListItemsParams,\n func: listInboxes,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'get_inbox',\n description: 'Get inbox',\n paramsSchema: GetInboxParams,\n func: getInbox,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'create_inbox',\n description: 'Create inbox',\n paramsSchema: CreateInboxParams,\n func: createInbox,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: false,\n },\n },\n {\n name: 'delete_inbox',\n description: 'Delete inbox',\n paramsSchema: GetInboxParams,\n func: deleteInbox,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'list_threads',\n description: 'List threads in inbox',\n paramsSchema: ListInboxItemsParams,\n func: listThreads,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'get_thread',\n description: 'Get thread',\n paramsSchema: GetThreadParams,\n func: getThread,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'get_attachment',\n description: 'Get attachment',\n paramsSchema: GetAttachmentParams,\n func: getAttachment,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'send_message',\n description: 'Send message',\n paramsSchema: SendMessageParams,\n func: sendMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'reply_to_message',\n description: 'Reply to message',\n paramsSchema: ReplyToMessageParams,\n func: replyToMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'update_message',\n description: 'Update message',\n paramsSchema: UpdateMessageParams,\n func: updateMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n]\n"],"mappings":"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","names":[]}
@@ -1,325 +0,0 @@
1
- // src/util.ts
2
- import { getDocumentProxy, extractText } from "unpdf";
3
- import JSZip from "jszip";
4
- var safeFunc = async (func, client, args) => {
5
- try {
6
- return { isError: false, result: await func(client, args) };
7
- } catch (error) {
8
- if (error instanceof Error) return { isError: true, result: error.message };
9
- else return { isError: true, result: "Unknown error" };
10
- }
11
- };
12
- function detectFileType(bytes) {
13
- if (bytes[0] === 37 && bytes[1] === 80 && bytes[2] === 68 && bytes[3] === 70) {
14
- return "application/pdf";
15
- }
16
- if (bytes[0] === 80 && bytes[1] === 75 && bytes[2] === 3 && bytes[3] === 4) {
17
- return "application/zip";
18
- }
19
- return void 0;
20
- }
21
- async function extractPdfText(bytes) {
22
- const pdf = await getDocumentProxy(bytes);
23
- const { text } = await extractText(pdf);
24
- return Array.isArray(text) ? text.join("\n") : text;
25
- }
26
- async function extractDocxText(bytes) {
27
- const zip = await JSZip.loadAsync(bytes);
28
- const documentXml = await zip.file("word/document.xml")?.async("string");
29
- if (!documentXml) return void 0;
30
- return documentXml.replace(/<w:p[^>]*>/g, "\n").replace(/<[^>]+>/g, "").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&").replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/\n{3,}/g, "\n\n").trim();
31
- }
32
-
33
- // src/toolkit.ts
34
- import { AgentMailClient } from "agentmail";
35
-
36
- // src/schemas.ts
37
- import { z } from "zod";
38
- var InboxIdSchema = z.string().describe("ID of inbox");
39
- var ThreadIdSchema = z.string().describe("ID of thread");
40
- var MessageIdSchema = z.string().describe("ID of message");
41
- var AttachmentIdSchema = z.string().describe("ID of attachment");
42
- var ListItemsParams = z.object({
43
- limit: z.number().optional().default(10).describe("Max number of items to return"),
44
- pageToken: z.string().optional().describe("Page token for pagination")
45
- });
46
- var GetInboxParams = z.object({
47
- inboxId: InboxIdSchema
48
- });
49
- var CreateInboxParams = z.object({
50
- username: z.string().optional().describe("Username"),
51
- domain: z.string().optional().describe("Domain"),
52
- displayName: z.string().optional().describe("Display name")
53
- });
54
- var ListInboxItemsParams = ListItemsParams.extend({
55
- inboxId: InboxIdSchema,
56
- labels: z.array(z.string()).optional().describe("Labels to filter items by"),
57
- before: z.string().pipe(z.coerce.date()).optional().describe("Filter items before datetime"),
58
- after: z.string().pipe(z.coerce.date()).optional().describe("Filter items after datetime")
59
- });
60
- var GetThreadParams = z.object({
61
- inboxId: InboxIdSchema,
62
- threadId: ThreadIdSchema
63
- });
64
- var GetAttachmentParams = z.object({
65
- inboxId: InboxIdSchema,
66
- threadId: ThreadIdSchema,
67
- attachmentId: AttachmentIdSchema
68
- });
69
- var BaseMessageParams = z.object({
70
- inboxId: InboxIdSchema,
71
- text: z.string().optional().describe("Plain text body"),
72
- html: z.string().optional().describe("HTML body"),
73
- labels: z.array(z.string()).optional().describe("Labels")
74
- });
75
- var SendMessageParams = BaseMessageParams.extend({
76
- to: z.array(z.string()).describe("Recipients"),
77
- cc: z.array(z.string()).optional().describe("CC recipients"),
78
- bcc: z.array(z.string()).optional().describe("BCC recipients"),
79
- subject: z.string().optional().describe("Subject")
80
- });
81
- var ReplyToMessageParams = BaseMessageParams.extend({
82
- messageId: MessageIdSchema,
83
- replyAll: z.boolean().optional().describe("Reply to all recipients")
84
- });
85
- var UpdateMessageParams = z.object({
86
- inboxId: InboxIdSchema,
87
- messageId: MessageIdSchema,
88
- addLabels: z.array(z.string()).optional().describe("Labels to add"),
89
- removeLabels: z.array(z.string()).optional().describe("Labels to remove")
90
- });
91
- var ForwardMessageParams = z.object({
92
- inboxId: InboxIdSchema,
93
- messageId: MessageIdSchema,
94
- to: z.array(z.string()).describe("Recipients to forward to"),
95
- cc: z.array(z.string()).optional().describe("CC recipients"),
96
- bcc: z.array(z.string()).optional().describe("BCC recipients"),
97
- text: z.string().optional().describe("Additional plain text to include"),
98
- html: z.string().optional().describe("Additional HTML to include"),
99
- labels: z.array(z.string()).optional().describe("Labels")
100
- });
101
-
102
- // src/functions.ts
103
- async function listInboxes(client, args) {
104
- return client.inboxes.list(args);
105
- }
106
- async function getInbox(client, args) {
107
- const { inboxId, ...options } = args;
108
- return client.inboxes.get(inboxId, options);
109
- }
110
- async function createInbox(client, args) {
111
- return client.inboxes.create(args);
112
- }
113
- async function deleteInbox(client, args) {
114
- const { inboxId } = args;
115
- return client.inboxes.delete(inboxId);
116
- }
117
- async function listThreads(client, args) {
118
- const { inboxId, ...options } = args;
119
- return client.inboxes.threads.list(inboxId, options);
120
- }
121
- async function getThread(client, args) {
122
- const { inboxId, threadId, ...options } = args;
123
- return client.inboxes.threads.get(inboxId, threadId, options);
124
- }
125
- async function getAttachment(client, args) {
126
- const { threadId, attachmentId } = args;
127
- const { downloadUrl } = await client.threads.getAttachment(threadId, attachmentId);
128
- const response = await fetch(downloadUrl);
129
- const arrayBuffer = await response.arrayBuffer();
130
- const fileBytes = new Uint8Array(arrayBuffer);
131
- const detectedType = detectFileType(fileBytes);
132
- if (detectedType === "application/pdf") {
133
- return { text: await extractPdfText(fileBytes), fileType: detectedType };
134
- } else if (detectedType === "application/zip") {
135
- const text = await extractDocxText(fileBytes);
136
- if (text) return { text, fileType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" };
137
- }
138
- return { error: "Unsupported file type", fileType: detectedType || "unknown" };
139
- }
140
- async function sendMessage(client, args) {
141
- const { inboxId, ...options } = args;
142
- return client.inboxes.messages.send(inboxId, options);
143
- }
144
- async function replyToMessage(client, args) {
145
- const { inboxId, messageId, ...options } = args;
146
- return client.inboxes.messages.reply(inboxId, messageId, options);
147
- }
148
- async function updateMessage(client, args) {
149
- const { inboxId, messageId, ...options } = args;
150
- return client.inboxes.messages.update(inboxId, messageId, options);
151
- }
152
- async function forwardMessage(client, args) {
153
- const { inboxId, messageId, ...options } = args;
154
- return client.inboxes.messages.forward(inboxId, messageId, options);
155
- }
156
-
157
- // src/tools.ts
158
- var tools = [
159
- {
160
- name: "list_inboxes",
161
- description: "List inboxes",
162
- paramsSchema: ListItemsParams,
163
- func: listInboxes,
164
- annotations: {
165
- readOnlyHint: true,
166
- openWorldHint: false
167
- }
168
- },
169
- {
170
- name: "get_inbox",
171
- description: "Get inbox",
172
- paramsSchema: GetInboxParams,
173
- func: getInbox,
174
- annotations: {
175
- readOnlyHint: true,
176
- openWorldHint: false
177
- }
178
- },
179
- {
180
- name: "create_inbox",
181
- description: "Create inbox",
182
- paramsSchema: CreateInboxParams,
183
- func: createInbox,
184
- annotations: {
185
- readOnlyHint: false,
186
- destructiveHint: false,
187
- idempotentHint: false,
188
- openWorldHint: false
189
- }
190
- },
191
- {
192
- name: "delete_inbox",
193
- description: "Delete inbox",
194
- paramsSchema: GetInboxParams,
195
- func: deleteInbox,
196
- annotations: {
197
- readOnlyHint: false,
198
- destructiveHint: true,
199
- idempotentHint: true,
200
- openWorldHint: false
201
- }
202
- },
203
- {
204
- name: "list_threads",
205
- description: "List threads in inbox",
206
- paramsSchema: ListInboxItemsParams,
207
- func: listThreads,
208
- annotations: {
209
- readOnlyHint: true,
210
- openWorldHint: true
211
- }
212
- },
213
- {
214
- name: "get_thread",
215
- description: "Get thread",
216
- paramsSchema: GetThreadParams,
217
- func: getThread,
218
- annotations: {
219
- readOnlyHint: true,
220
- openWorldHint: true
221
- }
222
- },
223
- {
224
- name: "get_attachment",
225
- description: "Get attachment",
226
- paramsSchema: GetAttachmentParams,
227
- func: getAttachment,
228
- annotations: {
229
- readOnlyHint: true,
230
- openWorldHint: true
231
- }
232
- },
233
- {
234
- name: "send_message",
235
- description: "Send message",
236
- paramsSchema: SendMessageParams,
237
- func: sendMessage,
238
- annotations: {
239
- readOnlyHint: false,
240
- destructiveHint: false,
241
- idempotentHint: false,
242
- openWorldHint: true
243
- }
244
- },
245
- {
246
- name: "reply_to_message",
247
- description: "Reply to message",
248
- paramsSchema: ReplyToMessageParams,
249
- func: replyToMessage,
250
- annotations: {
251
- readOnlyHint: false,
252
- destructiveHint: false,
253
- idempotentHint: false,
254
- openWorldHint: true
255
- }
256
- },
257
- {
258
- name: "update_message",
259
- description: "Update message",
260
- paramsSchema: UpdateMessageParams,
261
- func: updateMessage,
262
- annotations: {
263
- readOnlyHint: false,
264
- destructiveHint: false,
265
- idempotentHint: true,
266
- openWorldHint: false
267
- }
268
- },
269
- {
270
- name: "forward_message",
271
- description: "Forward message",
272
- paramsSchema: ForwardMessageParams,
273
- func: forwardMessage,
274
- annotations: {
275
- readOnlyHint: false,
276
- destructiveHint: false,
277
- idempotentHint: false,
278
- openWorldHint: true
279
- }
280
- }
281
- ];
282
-
283
- // src/toolkit.ts
284
- var BaseToolkit = class {
285
- client;
286
- tools = {};
287
- constructor(client) {
288
- this.client = client ?? new AgentMailClient();
289
- this.tools = tools.reduce(
290
- (acc, tool) => {
291
- acc[tool.name] = this.buildTool(tool);
292
- return acc;
293
- },
294
- {}
295
- );
296
- }
297
- };
298
- var ListToolkit = class extends BaseToolkit {
299
- getTools(names) {
300
- if (!names) return Object.values(this.tools);
301
- return names.reduce((acc, name) => {
302
- if (name in this.tools) acc.push(this.tools[name]);
303
- return acc;
304
- }, []);
305
- }
306
- };
307
- var MapToolkit = class extends BaseToolkit {
308
- getTools(names) {
309
- if (!names) return this.tools;
310
- return names.reduce(
311
- (acc, name) => {
312
- if (name in this.tools) acc[name] = this.tools[name];
313
- return acc;
314
- },
315
- {}
316
- );
317
- }
318
- };
319
-
320
- export {
321
- safeFunc,
322
- ListToolkit,
323
- MapToolkit
324
- };
325
- //# sourceMappingURL=chunk-FG6GNX6W.js.map