@rnsk/toolkits 0.0.2 → 0.0.4

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 (174) 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/index.d.ts +0 -1
  5. package/dist/index.js +0 -1
  6. package/dist/toolkits/github/tools/Actions/get-workflow-job.d.ts +3 -3
  7. package/dist/toolkits/github/tools/Actions/list-artifacts.d.ts +1 -1
  8. package/dist/toolkits/github/tools/Actions/list-workflow-jobs.d.ts +4 -4
  9. package/dist/toolkits/github/tools/Actions/list-workflow-run-artifacts.d.ts +1 -1
  10. package/dist/toolkits/github/tools/Activity/list-notifications.d.ts +2 -2
  11. package/dist/toolkits/github/tools/Activity/list-public-events.d.ts +1 -1
  12. package/dist/toolkits/github/tools/Activity/list-repo-events.d.ts +1 -1
  13. package/dist/toolkits/github/tools/Activity/list-user-events.d.ts +1 -1
  14. package/dist/toolkits/github/tools/Apps/list-installations.d.ts +1 -1
  15. package/dist/toolkits/github/tools/Checks/create-check-run.d.ts +5 -5
  16. package/dist/toolkits/github/tools/Checks/create-check-suite.d.ts +2 -2
  17. package/dist/toolkits/github/tools/Checks/get-check-run.d.ts +2 -2
  18. package/dist/toolkits/github/tools/Checks/get-check-suite.d.ts +2 -2
  19. package/dist/toolkits/github/tools/Checks/list-check-runs.d.ts +4 -4
  20. package/dist/toolkits/github/tools/Checks/update-check-run.d.ts +4 -4
  21. package/dist/toolkits/github/tools/CodeScanning/list-alerts.d.ts +2 -2
  22. package/dist/toolkits/github/tools/CodeScanning/update-alert.d.ts +1 -1
  23. package/dist/toolkits/github/tools/Collaborators/add-collaborator.d.ts +1 -1
  24. package/dist/toolkits/github/tools/Collaborators/check-collaborator.d.ts +1 -1
  25. package/dist/toolkits/github/tools/Collaborators/list-collaborators.d.ts +1 -1
  26. package/dist/toolkits/github/tools/Collaborators/remove-collaborator.d.ts +1 -1
  27. package/dist/toolkits/github/tools/Commits/compare-commits.d.ts +2 -2
  28. package/dist/toolkits/github/tools/Commits/get-commit.d.ts +2 -2
  29. package/dist/toolkits/github/tools/Commits/list-commits.d.ts +1 -1
  30. package/dist/toolkits/github/tools/Commits/list-pull-requests-associated-with-commit.d.ts +2 -2
  31. package/dist/toolkits/github/tools/Dependabot/list-alerts.d.ts +1 -1
  32. package/dist/toolkits/github/tools/Dependabot/update-alert.d.ts +1 -1
  33. package/dist/toolkits/github/tools/DeployKeys/list-deploy-keys.d.ts +1 -1
  34. package/dist/toolkits/github/tools/Deployments/create-deployment.d.ts +1 -1
  35. package/dist/toolkits/github/tools/Deployments/list-deployments.d.ts +1 -1
  36. package/dist/toolkits/github/tools/Environments/list-environments.d.ts +1 -1
  37. package/dist/toolkits/github/tools/Files/create-or-update-file.d.ts +1 -1
  38. package/dist/toolkits/github/tools/Gists/create-gist.d.ts +1 -1
  39. package/dist/toolkits/github/tools/Git/create-blob.d.ts +1 -1
  40. package/dist/toolkits/github/tools/Git/create-tree.d.ts +1 -1
  41. package/dist/toolkits/github/tools/Issues/add-issue-assignees.d.ts +1 -1
  42. package/dist/toolkits/github/tools/Issues/add-issue-labels.d.ts +1 -1
  43. package/dist/toolkits/github/tools/Issues/list-authenticated-user-issues.d.ts +4 -4
  44. package/dist/toolkits/github/tools/Issues/list-issue-comments.d.ts +1 -1
  45. package/dist/toolkits/github/tools/Issues/list-org-issues.d.ts +4 -4
  46. package/dist/toolkits/github/tools/Issues/list-repo-issues.d.ts +2 -2
  47. package/dist/toolkits/github/tools/Issues/list-user-account-issues.d.ts +4 -4
  48. package/dist/toolkits/github/tools/Organizations/get-org-membership.d.ts +1 -1
  49. package/dist/toolkits/github/tools/Organizations/list-org-members.d.ts +1 -1
  50. package/dist/toolkits/github/tools/Organizations/list-org-repositories.d.ts +2 -2
  51. package/dist/toolkits/github/tools/Organizations/list-user-organizations.d.ts +1 -1
  52. package/dist/toolkits/github/tools/Organizations/update-organization.d.ts +1 -1
  53. package/dist/toolkits/github/tools/PRs/create-pull-request-review.d.ts +1 -1
  54. package/dist/toolkits/github/tools/PRs/list-pull-request-files.d.ts +1 -1
  55. package/dist/toolkits/github/tools/PRs/list-pull-requests.d.ts +1 -1
  56. package/dist/toolkits/github/tools/Projects/list-org-projects.d.ts +1 -1
  57. package/dist/toolkits/github/tools/Projects/list-project-columns.d.ts +1 -1
  58. package/dist/toolkits/github/tools/Projects/list-repo-projects.d.ts +1 -1
  59. package/dist/toolkits/github/tools/Projects/update-project.d.ts +1 -1
  60. package/dist/toolkits/github/tools/Reactions/create-commit-comment-reaction.d.ts +1 -1
  61. package/dist/toolkits/github/tools/Reactions/create-issue-reaction.d.ts +1 -1
  62. package/dist/toolkits/github/tools/Reactions/list-commit-comment-reactions.d.ts +1 -1
  63. package/dist/toolkits/github/tools/Reactions/list-issue-reactions.d.ts +1 -1
  64. package/dist/toolkits/github/tools/Reactions/list-pr-comment-reactions.d.ts +1 -1
  65. package/dist/toolkits/github/tools/Releases/list-releases.d.ts +1 -1
  66. package/dist/toolkits/github/tools/Repos/get-repo-contributors.d.ts +1 -1
  67. package/dist/toolkits/github/tools/Repos/list-branches.d.ts +1 -1
  68. package/dist/toolkits/github/tools/Repos/list-repos.d.ts +2 -2
  69. package/dist/toolkits/github/tools/Repos/watch-repo.d.ts +1 -1
  70. package/dist/toolkits/github/tools/Search/search-repos.d.ts +1 -1
  71. package/dist/toolkits/github/tools/SecretScanning/list-alerts.d.ts +1 -1
  72. package/dist/toolkits/github/tools/SecretScanning/update-alert.d.ts +1 -1
  73. package/dist/toolkits/github/tools/SecurityAdvisories/create-repository-advisory.d.ts +1 -1
  74. package/dist/toolkits/github/tools/SecurityAdvisories/get-repository-advisory.d.ts +1 -1
  75. package/dist/toolkits/github/tools/SecurityAdvisories/list-global-advisories.d.ts +1 -1
  76. package/dist/toolkits/github/tools/SecurityAdvisories/list-repository-advisories.d.ts +2 -2
  77. package/dist/toolkits/github/tools/Stars/list-stargazers.d.ts +1 -1
  78. package/dist/toolkits/github/tools/Stars/list-starred-repos.d.ts +1 -1
  79. package/dist/toolkits/github/tools/Statuses/create-commit-status.d.ts +1 -1
  80. package/dist/toolkits/github/tools/Statuses/list-commit-statuses.d.ts +1 -1
  81. package/dist/toolkits/github/tools/Teams/list-team-members.d.ts +1 -1
  82. package/dist/toolkits/github/tools/Teams/list-team-repos.d.ts +1 -1
  83. package/dist/toolkits/github/tools/Teams/list-teams.d.ts +1 -1
  84. package/dist/toolkits/github/tools/Users/get-user-context.d.ts +1 -1
  85. package/dist/toolkits/github/tools/Users/update-authenticated-user.d.ts +1 -1
  86. package/dist/toolkits/github/tools/Webhooks/create-repo-webhook.d.ts +1 -1
  87. package/dist/toolkits/github/tools/Webhooks/list-repo-webhooks.d.ts +1 -1
  88. package/dist/toolkits/github/tools/Webhooks/update-repo-webhook.d.ts +1 -1
  89. package/dist/toolkits/github/tools/Workflows/list-workflow-runs.d.ts +2 -2
  90. package/dist/toolkits/github/tools/Workflows/list-workflows.d.ts +1 -1
  91. package/dist/toolkits/github/tools/index.d.ts +4859 -175
  92. package/dist/toolkits/github/tools/index.js +342 -342
  93. package/dist/toolkits/gmail/icon.js +14 -14
  94. package/dist/toolkits/gmail/manifest.js +78 -5
  95. package/dist/toolkits/gmail/tools/create-draft.d.ts +34 -0
  96. package/dist/toolkits/gmail/tools/create-draft.js +60 -0
  97. package/dist/toolkits/gmail/tools/delete-draft.d.ts +23 -0
  98. package/dist/toolkits/gmail/tools/delete-draft.js +34 -0
  99. package/dist/toolkits/gmail/tools/get-draft.d.ts +32 -0
  100. package/dist/toolkits/gmail/tools/get-draft.js +36 -0
  101. package/dist/toolkits/gmail/tools/get-message.d.ts +12 -12
  102. package/dist/toolkits/gmail/tools/get-message.js +3 -24
  103. package/dist/toolkits/gmail/tools/get-thread.d.ts +29 -0
  104. package/dist/toolkits/gmail/tools/get-thread.js +39 -0
  105. package/dist/toolkits/gmail/tools/index.d.ts +17 -0
  106. package/dist/toolkits/gmail/tools/index.js +17 -0
  107. package/dist/toolkits/gmail/tools/list-drafts.d.ts +28 -0
  108. package/dist/toolkits/gmail/tools/list-drafts.js +43 -0
  109. package/dist/toolkits/gmail/tools/list-labels.d.ts +20 -0
  110. package/dist/toolkits/gmail/tools/list-labels.js +46 -0
  111. package/dist/toolkits/gmail/tools/list-threads.d.ts +28 -0
  112. package/dist/toolkits/gmail/tools/list-threads.js +43 -0
  113. package/dist/toolkits/gmail/tools/modify-message-labels.d.ts +31 -0
  114. package/dist/toolkits/gmail/tools/modify-message-labels.js +44 -0
  115. package/dist/toolkits/gmail/tools/reply-to-thread.d.ts +33 -0
  116. package/dist/toolkits/gmail/tools/reply-to-thread.js +58 -0
  117. package/dist/toolkits/gmail/tools/send-draft.d.ts +29 -0
  118. package/dist/toolkits/gmail/tools/send-draft.js +41 -0
  119. package/dist/toolkits/gmail/tools/send-message.d.ts +4 -1
  120. package/dist/toolkits/gmail/tools/send-message.js +18 -16
  121. package/dist/toolkits/gmail/tools/trash-message.d.ts +29 -0
  122. package/dist/toolkits/gmail/tools/trash-message.js +37 -0
  123. package/dist/toolkits/gmail/tools/untrash-message.d.ts +29 -0
  124. package/dist/toolkits/gmail/tools/untrash-message.js +37 -0
  125. package/dist/toolkits/gmail/tools/utils.d.ts +41 -0
  126. package/dist/toolkits/gmail/tools/utils.js +97 -0
  127. package/dist/toolkits/google-calendar/manifest.js +1 -1
  128. package/dist/toolkits/google-calendar/tools/delete-event.d.ts +27 -0
  129. package/dist/toolkits/google-calendar/tools/delete-event.js +38 -0
  130. package/dist/toolkits/google-calendar/tools/get-event.d.ts +24 -0
  131. package/dist/toolkits/google-calendar/tools/get-event.js +37 -0
  132. package/dist/toolkits/google-calendar/tools/index.d.ts +181 -3
  133. package/dist/toolkits/google-calendar/tools/index.js +31 -2
  134. package/dist/toolkits/google-calendar/tools/search-events.d.ts +27 -0
  135. package/dist/toolkits/google-calendar/tools/search-events.js +49 -0
  136. package/dist/toolkits/google-calendar/tools/update-event.d.ts +29 -0
  137. package/dist/toolkits/google-calendar/tools/update-event.js +56 -0
  138. package/dist/toolkits/google-sheets/manifest.js +2 -2
  139. package/dist/toolkits/google-sheets/tools/append-values.d.ts +41 -0
  140. package/dist/toolkits/google-sheets/tools/append-values.js +51 -0
  141. package/dist/toolkits/google-sheets/tools/clear-values.d.ts +27 -0
  142. package/dist/toolkits/google-sheets/tools/clear-values.js +41 -0
  143. package/dist/toolkits/google-sheets/tools/create-spreadsheet.d.ts +33 -0
  144. package/dist/toolkits/google-sheets/tools/create-spreadsheet.js +59 -0
  145. package/dist/toolkits/google-sheets/tools/index.d.ts +205 -7
  146. package/dist/toolkits/google-sheets/tools/index.js +39 -4
  147. package/dist/toolkits/google-sheets/tools/update-values.d.ts +38 -0
  148. package/dist/toolkits/google-sheets/tools/update-values.js +50 -0
  149. package/dist/toolkits/linear/manifest.js +35 -0
  150. package/dist/toolkits/linear/tools/add-comment.d.ts +6 -0
  151. package/dist/toolkits/linear/tools/add-comment.js +52 -0
  152. package/dist/toolkits/linear/tools/get-issue.d.ts +6 -0
  153. package/dist/toolkits/linear/tools/get-issue.js +117 -0
  154. package/dist/toolkits/linear/tools/list-projects.d.ts +4 -0
  155. package/dist/toolkits/linear/tools/list-projects.js +46 -0
  156. package/dist/toolkits/linear/tools/list-workflow-states.d.ts +26 -0
  157. package/dist/toolkits/linear/tools/list-workflow-states.js +59 -0
  158. package/dist/toolkits/linear/tools/update-issue.d.ts +11 -0
  159. package/dist/toolkits/linear/tools/update-issue.js +78 -0
  160. package/dist/toolkits/notion/tools/append-block-children.d.ts +1 -1
  161. package/dist/toolkits/notion/tools/index.d.ts +105 -12
  162. package/dist/toolkits/notion/tools/index.js +8 -8
  163. package/dist/toolkits/notion/tools/query-database.d.ts +1 -1
  164. package/package.json +5 -7
  165. package/dist/runtime/credentials.d.ts +0 -28
  166. package/dist/runtime/credentials.js +0 -15
  167. package/dist/runtime/index.d.ts +0 -5
  168. package/dist/runtime/index.js +0 -5
  169. package/dist/runtime/meta-tools.d.ts +0 -101
  170. package/dist/runtime/meta-tools.js +0 -250
  171. package/dist/runtime/registry.d.ts +0 -20
  172. package/dist/runtime/registry.js +0 -35
  173. /package/dist/{runtime → core}/schema-helpers.d.ts +0 -0
  174. /package/dist/{runtime → core}/schema-helpers.js +0 -0
@@ -4,22 +4,22 @@ const SVG = `<svg width="800" height="636.36322" fill="none" viewBox="0 0 800 63
4
4
  <path fill="url(#b)" d="M 141.93685,20.255746 C 105.42331,-10.435083 50.946177,-5.7169131 20.255349,30.796627 -10.435479,67.305622 -5.7173098,121.78275 30.79623,152.47813 l 345.80818,290.6765 a 36.36354,36.36354 0 0 0 46.79533,0 L 769.20792,152.47358 C 805.71691,121.78275 810.43508,67.305622 779.74426,30.792081 749.05343,-5.7169131 694.5763,-10.435083 658.0673,20.255746 L 399.9998,237.18245 Z" id="path3" style="fill:url(#b);stroke-width:4.54544"/>
5
5
  <defs id="defs16">
6
6
  <linearGradient id="a" x1="165" x2="165" y1="44" y2="166" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.5454426,0,0,4.5454426,-36.362684,-118.18025)">
7
- <stop stopColor="#60d673" id="stop3"/>
8
- <stop offset=".17" stopColor="#42c868" id="stop4"/>
9
- <stop offset=".39" stopColor="#0ebc5f" id="stop5"/>
10
- <stop offset=".62" stopColor="#00a9bb" id="stop6"/>
11
- <stop offset=".86" stopColor="#3c90ff" id="stop7"/>
12
- <stop offset="1" stopColor="#3186ff" id="stop8"/>
7
+ <stop stop-color="#60d673" id="stop3"/>
8
+ <stop offset=".17" stop-color="#42c868" id="stop4"/>
9
+ <stop offset=".39" stop-color="#0ebc5f" id="stop5"/>
10
+ <stop offset=".62" stop-color="#00a9bb" id="stop6"/>
11
+ <stop offset=".86" stop-color="#3c90ff" id="stop7"/>
12
+ <stop offset="1" stop-color="#3186ff" id="stop8"/>
13
13
  </linearGradient>
14
14
  <linearGradient id="b" x1="8" x2="184" y1="46.130001" y2="46.130001" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.5454426,0,0,4.5454426,-36.362684,-118.18025)">
15
- <stop offset=".08" stopColor="#ff63a0" id="stop9"/>
16
- <stop offset=".3" stopColor="#fc413d" id="stop10"/>
17
- <stop offset=".5" stopColor="#fc413d" id="stop11"/>
18
- <stop offset=".65" stopColor="#fc413d" id="stop12"/>
19
- <stop offset=".72" stopColor="#fc5c30" id="stop13"/>
20
- <stop offset=".86" stopColor="#feb10c" id="stop14"/>
21
- <stop offset=".91" stopColor="#fec700" id="stop15"/>
22
- <stop offset=".96" stopColor="#ffdb0f" id="stop16"/>
15
+ <stop offset=".08" stop-color="#ff63a0" id="stop9"/>
16
+ <stop offset=".3" stop-color="#fc413d" id="stop10"/>
17
+ <stop offset=".5" stop-color="#fc413d" id="stop11"/>
18
+ <stop offset=".65" stop-color="#fc413d" id="stop12"/>
19
+ <stop offset=".72" stop-color="#fc5c30" id="stop13"/>
20
+ <stop offset=".86" stop-color="#feb10c" id="stop14"/>
21
+ <stop offset=".91" stop-color="#fec700" id="stop15"/>
22
+ <stop offset=".96" stop-color="#ffdb0f" id="stop16"/>
23
23
  </linearGradient>
24
24
  </defs>
25
25
  </svg>`;
@@ -1,12 +1,10 @@
1
1
  import { defineToolkit, defineTool } from '../../core/define.js';
2
2
  import { GMAIL_ICON } from './icon.js';
3
- import { listMessages } from './tools/list-messages.js';
4
- import { getMessage } from './tools/get-message.js';
5
- import { sendMessage } from './tools/send-message.js';
3
+ import { listMessages, getMessage, sendMessage, createDraft, listDrafts, getDraft, sendDraft, deleteDraft, listThreads, getThread, replyToThread, listLabels, modifyMessageLabels, trashMessage, untrashMessage, } from './tools/index.js';
6
4
  export default defineToolkit({
7
5
  id: 'gmail',
8
6
  displayName: 'Gmail',
9
- shortDescription: 'List, read, and send emails.',
7
+ shortDescription: 'Read, search, draft, send, and organize emails and threads.',
10
8
  category: 'Collaboration & Communication',
11
9
  icon: GMAIL_ICON,
12
10
  auth: {
@@ -20,10 +18,13 @@ export default defineToolkit({
20
18
  scopes: [
21
19
  'https://www.googleapis.com/auth/gmail.readonly',
22
20
  'https://www.googleapis.com/auth/gmail.send',
21
+ 'https://www.googleapis.com/auth/gmail.compose',
22
+ 'https://www.googleapis.com/auth/gmail.modify',
23
+ 'https://www.googleapis.com/auth/gmail.labels',
23
24
  ],
24
25
  exchangeStyle: 'form',
25
26
  extraAuthParams: { access_type: 'offline', prompt: 'consent' },
26
- connectDescription: 'Connect Gmail to read, draft, and send emails with AI-driven summarization.',
27
+ connectDescription: 'Connect Gmail to read, draft, send, search, and organize emails and conversation threads.',
27
28
  callbackPath: '/api/auth/gmail/callback',
28
29
  stateCookie: 'google_oauth_state',
29
30
  },
@@ -48,6 +49,78 @@ export default defineToolkit({
48
49
  requiredAuth: 'gmailToken',
49
50
  scope: 'write',
50
51
  }),
52
+ defineTool({
53
+ name: 'gmailCreateDraft',
54
+ tool: createDraft,
55
+ requiredAuth: 'gmailToken',
56
+ scope: 'write',
57
+ }),
58
+ defineTool({
59
+ name: 'gmailListDrafts',
60
+ tool: listDrafts,
61
+ requiredAuth: 'gmailToken',
62
+ scope: 'read',
63
+ }),
64
+ defineTool({
65
+ name: 'gmailGetDraft',
66
+ tool: getDraft,
67
+ requiredAuth: 'gmailToken',
68
+ scope: 'read',
69
+ }),
70
+ defineTool({
71
+ name: 'gmailSendDraft',
72
+ tool: sendDraft,
73
+ requiredAuth: 'gmailToken',
74
+ scope: 'write',
75
+ }),
76
+ defineTool({
77
+ name: 'gmailDeleteDraft',
78
+ tool: deleteDraft,
79
+ requiredAuth: 'gmailToken',
80
+ scope: 'delete',
81
+ }),
82
+ defineTool({
83
+ name: 'gmailListThreads',
84
+ tool: listThreads,
85
+ requiredAuth: 'gmailToken',
86
+ scope: 'read',
87
+ }),
88
+ defineTool({
89
+ name: 'gmailGetThread',
90
+ tool: getThread,
91
+ requiredAuth: 'gmailToken',
92
+ scope: 'read',
93
+ }),
94
+ defineTool({
95
+ name: 'gmailReplyToThread',
96
+ tool: replyToThread,
97
+ requiredAuth: 'gmailToken',
98
+ scope: 'write',
99
+ }),
100
+ defineTool({
101
+ name: 'gmailListLabels',
102
+ tool: listLabels,
103
+ requiredAuth: 'gmailToken',
104
+ scope: 'read',
105
+ }),
106
+ defineTool({
107
+ name: 'gmailModifyMessageLabels',
108
+ tool: modifyMessageLabels,
109
+ requiredAuth: 'gmailToken',
110
+ scope: 'write',
111
+ }),
112
+ defineTool({
113
+ name: 'gmailTrashMessage',
114
+ tool: trashMessage,
115
+ requiredAuth: 'gmailToken',
116
+ scope: 'delete',
117
+ }),
118
+ defineTool({
119
+ name: 'gmailUntrashMessage',
120
+ tool: untrashMessage,
121
+ requiredAuth: 'gmailToken',
122
+ scope: 'write',
123
+ }),
51
124
  ],
52
125
  meta: { since: '0.0.1' },
53
126
  });
@@ -0,0 +1,34 @@
1
+ export declare const createDraft: import("ai").Tool<{
2
+ body: string;
3
+ subject: string;
4
+ to: string;
5
+ gmailToken?: string | undefined;
6
+ threadId?: string | undefined;
7
+ cc?: string | undefined;
8
+ bcc?: string | undefined;
9
+ }, {
10
+ error: string;
11
+ details: any;
12
+ success?: undefined;
13
+ draftId?: undefined;
14
+ messageId?: undefined;
15
+ threadId?: undefined;
16
+ message?: undefined;
17
+ } | {
18
+ success: boolean;
19
+ draftId: any;
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
+ draftId?: undefined;
31
+ messageId?: undefined;
32
+ threadId?: undefined;
33
+ }>;
34
+ //# sourceMappingURL=create-draft.d.ts.map
@@ -0,0 +1,60 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ import { encodeRFC822Message } from './utils.js';
4
+ export const createDraft = tool({
5
+ description: 'Create a draft email in Gmail without sending it immediately. Highly recommended for human-in-the-loop review.',
6
+ inputSchema: z.object({
7
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
8
+ to: z.string().describe('Recipient email address'),
9
+ subject: z.string().describe('Email subject'),
10
+ body: z.string().describe('Email body (plain text)'),
11
+ cc: z.string().optional().describe('Optional CC recipient email address(es), comma-separated'),
12
+ bcc: z.string().optional().describe('Optional BCC recipient email address(es), comma-separated'),
13
+ threadId: z.string().optional().describe('Optional thread ID to associate the draft with an existing conversation thread'),
14
+ }),
15
+ execute: async ({ gmailToken, to, subject, body, cc, bcc, threadId }) => {
16
+ try {
17
+ const encodedMessage = encodeRFC822Message({
18
+ to,
19
+ subject,
20
+ body,
21
+ cc,
22
+ bcc,
23
+ });
24
+ const messagePayload = {
25
+ raw: encodedMessage,
26
+ };
27
+ if (threadId) {
28
+ messagePayload.threadId = threadId;
29
+ }
30
+ const response = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/drafts', {
31
+ method: 'POST',
32
+ headers: {
33
+ Authorization: `Bearer ${gmailToken}`,
34
+ 'Content-Type': 'application/json',
35
+ },
36
+ body: JSON.stringify({
37
+ message: messagePayload,
38
+ }),
39
+ });
40
+ if (!response.ok) {
41
+ const error = await response.json();
42
+ return { error: 'Failed to create draft', details: error };
43
+ }
44
+ const data = await response.json();
45
+ return {
46
+ success: true,
47
+ draftId: data.id,
48
+ messageId: data.message?.id,
49
+ threadId: data.message?.threadId,
50
+ };
51
+ }
52
+ catch (error) {
53
+ return {
54
+ error: 'Error creating draft',
55
+ message: error instanceof Error ? error.message : 'Unknown error',
56
+ };
57
+ }
58
+ },
59
+ });
60
+ //# sourceMappingURL=create-draft.js.map
@@ -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