@rnsk/toolkits 0.0.2 → 0.0.3

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 (72) hide show
  1. package/README.md +104 -0
  2. package/dist/core/index.d.ts +1 -0
  3. package/dist/core/index.js +1 -0
  4. package/dist/core/schema-helpers.d.ts +20 -0
  5. package/dist/core/schema-helpers.js +157 -0
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.js +0 -1
  8. package/dist/toolkits/github/tools/Actions/list-workflow-jobs.d.ts +1 -1
  9. package/dist/toolkits/github/tools/Activity/list-notifications.d.ts +1 -1
  10. package/dist/toolkits/github/tools/Issues/add-issue-labels.d.ts +1 -1
  11. package/dist/toolkits/github/tools/Issues/list-authenticated-user-issues.d.ts +1 -1
  12. package/dist/toolkits/github/tools/Issues/list-org-issues.d.ts +1 -1
  13. package/dist/toolkits/github/tools/Issues/list-user-account-issues.d.ts +1 -1
  14. package/dist/toolkits/github/tools/Organizations/list-org-repositories.d.ts +1 -1
  15. package/dist/toolkits/github/tools/Webhooks/create-repo-webhook.d.ts +1 -1
  16. package/dist/toolkits/gmail/icon.js +14 -14
  17. package/dist/toolkits/gmail/manifest.js +78 -5
  18. package/dist/toolkits/gmail/tools/create-draft.d.ts +34 -0
  19. package/dist/toolkits/gmail/tools/create-draft.js +60 -0
  20. package/dist/toolkits/gmail/tools/delete-draft.d.ts +23 -0
  21. package/dist/toolkits/gmail/tools/delete-draft.js +34 -0
  22. package/dist/toolkits/gmail/tools/get-draft.d.ts +32 -0
  23. package/dist/toolkits/gmail/tools/get-draft.js +36 -0
  24. package/dist/toolkits/gmail/tools/get-message.d.ts +12 -12
  25. package/dist/toolkits/gmail/tools/get-message.js +3 -24
  26. package/dist/toolkits/gmail/tools/get-thread.d.ts +29 -0
  27. package/dist/toolkits/gmail/tools/get-thread.js +39 -0
  28. package/dist/toolkits/gmail/tools/index.d.ts +17 -0
  29. package/dist/toolkits/gmail/tools/index.js +17 -0
  30. package/dist/toolkits/gmail/tools/list-drafts.d.ts +28 -0
  31. package/dist/toolkits/gmail/tools/list-drafts.js +43 -0
  32. package/dist/toolkits/gmail/tools/list-labels.d.ts +20 -0
  33. package/dist/toolkits/gmail/tools/list-labels.js +46 -0
  34. package/dist/toolkits/gmail/tools/list-threads.d.ts +28 -0
  35. package/dist/toolkits/gmail/tools/list-threads.js +43 -0
  36. package/dist/toolkits/gmail/tools/modify-message-labels.d.ts +31 -0
  37. package/dist/toolkits/gmail/tools/modify-message-labels.js +44 -0
  38. package/dist/toolkits/gmail/tools/reply-to-thread.d.ts +33 -0
  39. package/dist/toolkits/gmail/tools/reply-to-thread.js +58 -0
  40. package/dist/toolkits/gmail/tools/send-draft.d.ts +29 -0
  41. package/dist/toolkits/gmail/tools/send-draft.js +41 -0
  42. package/dist/toolkits/gmail/tools/send-message.d.ts +4 -1
  43. package/dist/toolkits/gmail/tools/send-message.js +18 -16
  44. package/dist/toolkits/gmail/tools/trash-message.d.ts +29 -0
  45. package/dist/toolkits/gmail/tools/trash-message.js +37 -0
  46. package/dist/toolkits/gmail/tools/untrash-message.d.ts +29 -0
  47. package/dist/toolkits/gmail/tools/untrash-message.js +37 -0
  48. package/dist/toolkits/gmail/tools/utils.d.ts +41 -0
  49. package/dist/toolkits/gmail/tools/utils.js +97 -0
  50. package/dist/toolkits/google-calendar/manifest.js +1 -1
  51. package/dist/toolkits/google-calendar/tools/delete-event.d.ts +27 -0
  52. package/dist/toolkits/google-calendar/tools/delete-event.js +38 -0
  53. package/dist/toolkits/google-calendar/tools/get-event.d.ts +24 -0
  54. package/dist/toolkits/google-calendar/tools/get-event.js +37 -0
  55. package/dist/toolkits/google-calendar/tools/index.d.ts +181 -3
  56. package/dist/toolkits/google-calendar/tools/index.js +31 -2
  57. package/dist/toolkits/google-calendar/tools/search-events.d.ts +27 -0
  58. package/dist/toolkits/google-calendar/tools/search-events.js +49 -0
  59. package/dist/toolkits/google-calendar/tools/update-event.d.ts +29 -0
  60. package/dist/toolkits/google-calendar/tools/update-event.js +56 -0
  61. package/dist/toolkits/google-sheets/manifest.js +2 -2
  62. package/dist/toolkits/google-sheets/tools/append-values.d.ts +41 -0
  63. package/dist/toolkits/google-sheets/tools/append-values.js +51 -0
  64. package/dist/toolkits/google-sheets/tools/clear-values.d.ts +27 -0
  65. package/dist/toolkits/google-sheets/tools/clear-values.js +41 -0
  66. package/dist/toolkits/google-sheets/tools/create-spreadsheet.d.ts +33 -0
  67. package/dist/toolkits/google-sheets/tools/create-spreadsheet.js +59 -0
  68. package/dist/toolkits/google-sheets/tools/index.d.ts +205 -7
  69. package/dist/toolkits/google-sheets/tools/index.js +39 -4
  70. package/dist/toolkits/google-sheets/tools/update-values.d.ts +38 -0
  71. package/dist/toolkits/google-sheets/tools/update-values.js +50 -0
  72. package/package.json +2 -5
@@ -0,0 +1,23 @@
1
+ export declare const deleteDraft: import("ai").Tool<{
2
+ id: string;
3
+ gmailToken?: string | undefined;
4
+ }, {
5
+ error: string;
6
+ details: any;
7
+ success?: undefined;
8
+ draftId?: undefined;
9
+ message?: undefined;
10
+ } | {
11
+ success: boolean;
12
+ draftId: string;
13
+ error?: undefined;
14
+ details?: undefined;
15
+ message?: undefined;
16
+ } | {
17
+ error: string;
18
+ message: string;
19
+ details?: undefined;
20
+ success?: undefined;
21
+ draftId?: undefined;
22
+ }>;
23
+ //# sourceMappingURL=delete-draft.d.ts.map
@@ -0,0 +1,34 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export const deleteDraft = tool({
4
+ description: 'Permanently delete an existing Gmail draft by its draft ID.',
5
+ inputSchema: z.object({
6
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
7
+ id: z.string().describe('The ID of the draft to delete'),
8
+ }),
9
+ execute: async ({ gmailToken, id }) => {
10
+ try {
11
+ const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/drafts/${id}`, {
12
+ method: 'DELETE',
13
+ headers: {
14
+ Authorization: `Bearer ${gmailToken}`,
15
+ },
16
+ });
17
+ if (!response.ok && response.status !== 204) {
18
+ const error = await response.json().catch(() => ({ status: response.status }));
19
+ return { error: 'Failed to delete draft', details: error };
20
+ }
21
+ return {
22
+ success: true,
23
+ draftId: id,
24
+ };
25
+ }
26
+ catch (error) {
27
+ return {
28
+ error: 'Error deleting draft',
29
+ message: error instanceof Error ? error.message : 'Unknown error',
30
+ };
31
+ }
32
+ },
33
+ });
34
+ //# sourceMappingURL=delete-draft.js.map
@@ -0,0 +1,32 @@
1
+ export declare const getDraft: import("ai").Tool<{
2
+ id: string;
3
+ gmailToken?: string | undefined;
4
+ }, {
5
+ error: string;
6
+ details: any;
7
+ id?: undefined;
8
+ message?: undefined;
9
+ } | {
10
+ id: any;
11
+ message: {
12
+ id: any;
13
+ threadId: any;
14
+ labelIds: any;
15
+ snippet: any;
16
+ subject: any;
17
+ from: any;
18
+ to: any;
19
+ cc: any;
20
+ date: any;
21
+ messageIdHeader: any;
22
+ body: string;
23
+ } | null;
24
+ error?: undefined;
25
+ details?: undefined;
26
+ } | {
27
+ error: string;
28
+ message: string;
29
+ details?: undefined;
30
+ id?: undefined;
31
+ }>;
32
+ //# sourceMappingURL=get-draft.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ import { extractMessageDetails } from './utils.js';
4
+ export const getDraft = tool({
5
+ description: 'Get details, headers, and content of a specific Gmail draft by draft ID.',
6
+ inputSchema: z.object({
7
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
8
+ id: z.string().describe('The ID of the draft to retrieve'),
9
+ }),
10
+ execute: async ({ gmailToken, id }) => {
11
+ try {
12
+ const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/drafts/${id}`, {
13
+ headers: {
14
+ Authorization: `Bearer ${gmailToken}`,
15
+ },
16
+ });
17
+ if (!response.ok) {
18
+ const error = await response.json();
19
+ return { error: 'Failed to get draft', details: error };
20
+ }
21
+ const data = await response.json();
22
+ const messageDetails = data.message ? extractMessageDetails(data.message) : null;
23
+ return {
24
+ id: data.id,
25
+ message: messageDetails,
26
+ };
27
+ }
28
+ catch (error) {
29
+ return {
30
+ error: 'Error getting draft',
31
+ message: error instanceof Error ? error.message : 'Unknown error',
32
+ };
33
+ }
34
+ },
35
+ });
36
+ //# sourceMappingURL=get-draft.js.map
@@ -2,24 +2,28 @@ export declare const getMessage: import("ai").Tool<{
2
2
  id: string;
3
3
  gmailToken?: string | undefined;
4
4
  }, {
5
+ id: any;
6
+ threadId: any;
7
+ labelIds: any;
8
+ snippet: any;
9
+ subject: any;
10
+ from: any;
11
+ to: any;
12
+ cc: any;
13
+ date: any;
14
+ messageIdHeader: any;
15
+ body: string;
16
+ } | {
5
17
  error: string;
6
18
  details: any;
7
19
  id?: undefined;
8
20
  threadId?: undefined;
9
21
  snippet?: undefined;
10
- subject?: undefined;
11
- from?: undefined;
12
- date?: undefined;
13
- body?: undefined;
14
22
  message?: undefined;
15
23
  } | {
16
24
  id: any;
17
25
  threadId: any;
18
26
  snippet: any;
19
- subject: any;
20
- from: any;
21
- date: any;
22
- body: string;
23
27
  error?: undefined;
24
28
  details?: undefined;
25
29
  message?: undefined;
@@ -30,9 +34,5 @@ export declare const getMessage: import("ai").Tool<{
30
34
  id?: undefined;
31
35
  threadId?: undefined;
32
36
  snippet?: undefined;
33
- subject?: undefined;
34
- from?: undefined;
35
- date?: undefined;
36
- body?: undefined;
37
37
  }>;
38
38
  //# sourceMappingURL=get-message.d.ts.map
@@ -1,5 +1,6 @@
1
1
  import { tool } from 'ai';
2
2
  import { z } from 'zod';
3
+ import { extractMessageDetails } from './utils.js';
3
4
  export const getMessage = tool({
4
5
  description: 'Get details of a specific Gmail message by ID.',
5
6
  inputSchema: z.object({
@@ -18,30 +19,8 @@ export const getMessage = tool({
18
19
  return { error: 'Failed to get message', details: error };
19
20
  }
20
21
  const data = await response.json();
21
- // Extract basic info
22
- const headers = data.payload?.headers || [];
23
- const subject = headers.find((h) => h.name.toLowerCase() === 'subject')?.value;
24
- const from = headers.find((h) => h.name.toLowerCase() === 'from')?.value;
25
- const date = headers.find((h) => h.name.toLowerCase() === 'date')?.value;
26
- let body = '';
27
- if (data.payload?.parts) {
28
- const textPart = data.payload.parts.find((p) => p.mimeType === 'text/plain');
29
- if (textPart?.body?.data) {
30
- body = Buffer.from(textPart.body.data, 'base64').toString();
31
- }
32
- }
33
- else if (data.payload?.body?.data) {
34
- body = Buffer.from(data.payload.body.data, 'base64').toString();
35
- }
36
- return {
37
- id: data.id,
38
- threadId: data.threadId,
39
- snippet: data.snippet,
40
- subject,
41
- from,
42
- date,
43
- body: body.substring(0, 2000), // Limit body size
44
- };
22
+ const details = extractMessageDetails(data);
23
+ return details || { id: data.id, threadId: data.threadId, snippet: data.snippet };
45
24
  }
46
25
  catch (error) {
47
26
  return {
@@ -0,0 +1,29 @@
1
+ export declare const getThread: import("ai").Tool<{
2
+ id: string;
3
+ gmailToken?: string | undefined;
4
+ }, {
5
+ error: string;
6
+ details: any;
7
+ id?: undefined;
8
+ historyId?: undefined;
9
+ messageCount?: undefined;
10
+ messages?: undefined;
11
+ message?: undefined;
12
+ } | {
13
+ id: any;
14
+ historyId: any;
15
+ messageCount: any;
16
+ messages: any;
17
+ error?: undefined;
18
+ details?: undefined;
19
+ message?: undefined;
20
+ } | {
21
+ error: string;
22
+ message: string;
23
+ details?: undefined;
24
+ id?: undefined;
25
+ historyId?: undefined;
26
+ messageCount?: undefined;
27
+ messages?: undefined;
28
+ }>;
29
+ //# sourceMappingURL=get-thread.d.ts.map
@@ -0,0 +1,39 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ import { extractMessageDetails } from './utils.js';
4
+ export const getThread = tool({
5
+ description: 'Get details and all messages in a specific Gmail conversation thread by thread ID.',
6
+ inputSchema: z.object({
7
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
8
+ id: z.string().describe('The ID of the conversation thread to retrieve'),
9
+ }),
10
+ execute: async ({ gmailToken, id }) => {
11
+ try {
12
+ const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/threads/${id}`, {
13
+ headers: {
14
+ Authorization: `Bearer ${gmailToken}`,
15
+ },
16
+ });
17
+ if (!response.ok) {
18
+ const error = await response.json();
19
+ return { error: 'Failed to get thread', details: error };
20
+ }
21
+ const data = await response.json();
22
+ const rawMessages = data.messages || [];
23
+ const messages = rawMessages.map((msg) => extractMessageDetails(msg));
24
+ return {
25
+ id: data.id,
26
+ historyId: data.historyId,
27
+ messageCount: messages.length,
28
+ messages,
29
+ };
30
+ }
31
+ catch (error) {
32
+ return {
33
+ error: 'Error getting thread',
34
+ message: error instanceof Error ? error.message : 'Unknown error',
35
+ };
36
+ }
37
+ },
38
+ });
39
+ //# sourceMappingURL=get-thread.js.map
@@ -0,0 +1,17 @@
1
+ export * from './utils.js';
2
+ export * from './list-messages.js';
3
+ export * from './get-message.js';
4
+ export * from './send-message.js';
5
+ export * from './create-draft.js';
6
+ export * from './list-drafts.js';
7
+ export * from './get-draft.js';
8
+ export * from './send-draft.js';
9
+ export * from './delete-draft.js';
10
+ export * from './list-threads.js';
11
+ export * from './get-thread.js';
12
+ export * from './reply-to-thread.js';
13
+ export * from './list-labels.js';
14
+ export * from './modify-message-labels.js';
15
+ export * from './trash-message.js';
16
+ export * from './untrash-message.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,17 @@
1
+ export * from './utils.js';
2
+ export * from './list-messages.js';
3
+ export * from './get-message.js';
4
+ export * from './send-message.js';
5
+ export * from './create-draft.js';
6
+ export * from './list-drafts.js';
7
+ export * from './get-draft.js';
8
+ export * from './send-draft.js';
9
+ export * from './delete-draft.js';
10
+ export * from './list-threads.js';
11
+ export * from './get-thread.js';
12
+ export * from './reply-to-thread.js';
13
+ export * from './list-labels.js';
14
+ export * from './modify-message-labels.js';
15
+ export * from './trash-message.js';
16
+ export * from './untrash-message.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,28 @@
1
+ export declare const listDrafts: import("ai").Tool<{
2
+ maxResults: number;
3
+ gmailToken?: string | undefined;
4
+ q?: string | undefined;
5
+ pageToken?: string | undefined;
6
+ }, {
7
+ error: string;
8
+ details: any;
9
+ drafts?: undefined;
10
+ resultSizeEstimate?: undefined;
11
+ nextPageToken?: undefined;
12
+ message?: undefined;
13
+ } | {
14
+ drafts: any;
15
+ resultSizeEstimate: any;
16
+ nextPageToken: any;
17
+ error?: undefined;
18
+ details?: undefined;
19
+ message?: undefined;
20
+ } | {
21
+ error: string;
22
+ message: string;
23
+ details?: undefined;
24
+ drafts?: undefined;
25
+ resultSizeEstimate?: undefined;
26
+ nextPageToken?: undefined;
27
+ }>;
28
+ //# sourceMappingURL=list-drafts.d.ts.map
@@ -0,0 +1,43 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export const listDrafts = tool({
4
+ description: 'List drafts in the Gmail mailbox. Optionally filter drafts with a search query.',
5
+ inputSchema: z.object({
6
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
7
+ q: z.string().optional().describe('Search query (same format as Gmail search box)'),
8
+ maxResults: z.number().optional().default(10).describe('Maximum number of drafts to return'),
9
+ pageToken: z.string().optional().describe('Token for retrieving the next page of drafts'),
10
+ }),
11
+ execute: async ({ gmailToken, q, maxResults, pageToken }) => {
12
+ try {
13
+ const url = new URL('https://gmail.googleapis.com/gmail/v1/users/me/drafts');
14
+ if (q)
15
+ url.searchParams.append('q', q);
16
+ url.searchParams.append('maxResults', maxResults.toString());
17
+ if (pageToken)
18
+ url.searchParams.append('pageToken', pageToken);
19
+ const response = await fetch(url.toString(), {
20
+ headers: {
21
+ Authorization: `Bearer ${gmailToken}`,
22
+ },
23
+ });
24
+ if (!response.ok) {
25
+ const error = await response.json();
26
+ return { error: 'Failed to list drafts', details: error };
27
+ }
28
+ const data = await response.json();
29
+ return {
30
+ drafts: data.drafts || [],
31
+ resultSizeEstimate: data.resultSizeEstimate,
32
+ nextPageToken: data.nextPageToken,
33
+ };
34
+ }
35
+ catch (error) {
36
+ return {
37
+ error: 'Error listing drafts',
38
+ message: error instanceof Error ? error.message : 'Unknown error',
39
+ };
40
+ }
41
+ },
42
+ });
43
+ //# sourceMappingURL=list-drafts.js.map
@@ -0,0 +1,20 @@
1
+ export declare const listLabels: import("ai").Tool<{
2
+ type: "all" | "system" | "user";
3
+ gmailToken?: string | undefined;
4
+ }, {
5
+ error: string;
6
+ details: any;
7
+ labels?: undefined;
8
+ message?: undefined;
9
+ } | {
10
+ labels: any;
11
+ error?: undefined;
12
+ details?: undefined;
13
+ message?: undefined;
14
+ } | {
15
+ error: string;
16
+ message: string;
17
+ details?: undefined;
18
+ labels?: undefined;
19
+ }>;
20
+ //# sourceMappingURL=list-labels.d.ts.map
@@ -0,0 +1,46 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export const listLabels = tool({
4
+ description: 'List all labels in the Gmail mailbox (e.g., INBOX, UNREAD, STARRED, IMPORTANT, and user custom labels).',
5
+ inputSchema: z.object({
6
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
7
+ type: z.enum(['all', 'system', 'user']).optional().default('all').describe('Filter labels by type: system, user, or all'),
8
+ }),
9
+ execute: async ({ gmailToken, type }) => {
10
+ try {
11
+ const response = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/labels', {
12
+ headers: {
13
+ Authorization: `Bearer ${gmailToken}`,
14
+ },
15
+ });
16
+ if (!response.ok) {
17
+ const error = await response.json();
18
+ return { error: 'Failed to list labels', details: error };
19
+ }
20
+ const data = await response.json();
21
+ let labels = data.labels || [];
22
+ if (type === 'system') {
23
+ labels = labels.filter((l) => l.type === 'system');
24
+ }
25
+ else if (type === 'user') {
26
+ labels = labels.filter((l) => l.type === 'user');
27
+ }
28
+ return {
29
+ labels: labels.map((l) => ({
30
+ id: l.id,
31
+ name: l.name,
32
+ type: l.type,
33
+ messageListVisibility: l.messageListVisibility,
34
+ labelListVisibility: l.labelListVisibility,
35
+ })),
36
+ };
37
+ }
38
+ catch (error) {
39
+ return {
40
+ error: 'Error listing labels',
41
+ message: error instanceof Error ? error.message : 'Unknown error',
42
+ };
43
+ }
44
+ },
45
+ });
46
+ //# sourceMappingURL=list-labels.js.map
@@ -0,0 +1,28 @@
1
+ export declare const listThreads: import("ai").Tool<{
2
+ maxResults: number;
3
+ gmailToken?: string | undefined;
4
+ q?: string | undefined;
5
+ pageToken?: string | undefined;
6
+ }, {
7
+ error: string;
8
+ details: any;
9
+ threads?: undefined;
10
+ resultSizeEstimate?: undefined;
11
+ nextPageToken?: undefined;
12
+ message?: undefined;
13
+ } | {
14
+ threads: any;
15
+ resultSizeEstimate: any;
16
+ nextPageToken: any;
17
+ error?: undefined;
18
+ details?: undefined;
19
+ message?: undefined;
20
+ } | {
21
+ error: string;
22
+ message: string;
23
+ details?: undefined;
24
+ threads?: undefined;
25
+ resultSizeEstimate?: undefined;
26
+ nextPageToken?: undefined;
27
+ }>;
28
+ //# sourceMappingURL=list-threads.d.ts.map
@@ -0,0 +1,43 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export const listThreads = tool({
4
+ description: 'List or search email conversation threads in Gmail. Filter by search query (e.g., from:someone@example.com, is:unread).',
5
+ inputSchema: z.object({
6
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
7
+ q: z.string().optional().describe('Search query (same format as Gmail search box)'),
8
+ maxResults: z.number().optional().default(10).describe('Maximum number of threads to return'),
9
+ pageToken: z.string().optional().describe('Token for retrieving the next page of threads'),
10
+ }),
11
+ execute: async ({ gmailToken, q, maxResults, pageToken }) => {
12
+ try {
13
+ const url = new URL('https://gmail.googleapis.com/gmail/v1/users/me/threads');
14
+ if (q)
15
+ url.searchParams.append('q', q);
16
+ url.searchParams.append('maxResults', maxResults.toString());
17
+ if (pageToken)
18
+ url.searchParams.append('pageToken', pageToken);
19
+ const response = await fetch(url.toString(), {
20
+ headers: {
21
+ Authorization: `Bearer ${gmailToken}`,
22
+ },
23
+ });
24
+ if (!response.ok) {
25
+ const error = await response.json();
26
+ return { error: 'Failed to list threads', details: error };
27
+ }
28
+ const data = await response.json();
29
+ return {
30
+ threads: data.threads || [],
31
+ resultSizeEstimate: data.resultSizeEstimate,
32
+ nextPageToken: data.nextPageToken,
33
+ };
34
+ }
35
+ catch (error) {
36
+ return {
37
+ error: 'Error listing threads',
38
+ message: error instanceof Error ? error.message : 'Unknown error',
39
+ };
40
+ }
41
+ },
42
+ });
43
+ //# sourceMappingURL=list-threads.js.map
@@ -0,0 +1,31 @@
1
+ export declare const modifyMessageLabels: import("ai").Tool<{
2
+ messageId: string;
3
+ gmailToken?: string | undefined;
4
+ addLabelIds?: string[] | undefined;
5
+ removeLabelIds?: string[] | undefined;
6
+ }, {
7
+ error: string;
8
+ details: any;
9
+ success?: undefined;
10
+ messageId?: undefined;
11
+ threadId?: undefined;
12
+ labelIds?: undefined;
13
+ message?: undefined;
14
+ } | {
15
+ success: boolean;
16
+ messageId: any;
17
+ threadId: any;
18
+ labelIds: any;
19
+ error?: undefined;
20
+ details?: undefined;
21
+ message?: undefined;
22
+ } | {
23
+ error: string;
24
+ message: string;
25
+ details?: undefined;
26
+ success?: undefined;
27
+ messageId?: undefined;
28
+ threadId?: undefined;
29
+ labelIds?: undefined;
30
+ }>;
31
+ //# sourceMappingURL=modify-message-labels.d.ts.map
@@ -0,0 +1,44 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export const modifyMessageLabels = tool({
4
+ description: 'Add or remove labels from a Gmail message. Used to mark emails as read/unread, star/unstar, archive (remove INBOX), or assign folders/labels.',
5
+ inputSchema: z.object({
6
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
7
+ messageId: z.string().describe('The ID of the message to modify'),
8
+ addLabelIds: z.array(z.string()).optional().describe('Array of label IDs to add (e.g., ["STARRED", "IMPORTANT"])'),
9
+ removeLabelIds: z.array(z.string()).optional().describe('Array of label IDs to remove (e.g., ["UNREAD"] to mark as read, or ["INBOX"] to archive)'),
10
+ }),
11
+ execute: async ({ gmailToken, messageId, addLabelIds = [], removeLabelIds = [] }) => {
12
+ try {
13
+ const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/modify`, {
14
+ method: 'POST',
15
+ headers: {
16
+ Authorization: `Bearer ${gmailToken}`,
17
+ 'Content-Type': 'application/json',
18
+ },
19
+ body: JSON.stringify({
20
+ addLabelIds,
21
+ removeLabelIds,
22
+ }),
23
+ });
24
+ if (!response.ok) {
25
+ const error = await response.json();
26
+ return { error: 'Failed to modify message labels', details: error };
27
+ }
28
+ const data = await response.json();
29
+ return {
30
+ success: true,
31
+ messageId: data.id,
32
+ threadId: data.threadId,
33
+ labelIds: data.labelIds || [],
34
+ };
35
+ }
36
+ catch (error) {
37
+ return {
38
+ error: 'Error modifying message labels',
39
+ message: error instanceof Error ? error.message : 'Unknown error',
40
+ };
41
+ }
42
+ },
43
+ });
44
+ //# sourceMappingURL=modify-message-labels.js.map
@@ -0,0 +1,33 @@
1
+ export declare const replyToThread: import("ai").Tool<{
2
+ threadId: string;
3
+ subject: string;
4
+ to: string;
5
+ body: string;
6
+ gmailToken?: string | undefined;
7
+ cc?: string | undefined;
8
+ bcc?: string | undefined;
9
+ inReplyTo?: string | undefined;
10
+ references?: string | undefined;
11
+ }, {
12
+ error: string;
13
+ details: any;
14
+ success?: undefined;
15
+ messageId?: undefined;
16
+ threadId?: undefined;
17
+ message?: undefined;
18
+ } | {
19
+ success: boolean;
20
+ messageId: any;
21
+ threadId: any;
22
+ error?: undefined;
23
+ details?: undefined;
24
+ message?: undefined;
25
+ } | {
26
+ error: string;
27
+ message: string;
28
+ details?: undefined;
29
+ success?: undefined;
30
+ messageId?: undefined;
31
+ threadId?: undefined;
32
+ }>;
33
+ //# sourceMappingURL=reply-to-thread.d.ts.map