@rnsk/toolkits 0.0.6 → 0.0.7

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 (244) hide show
  1. package/README.md +10 -4
  2. package/dist/index.d.ts +7 -1
  3. package/dist/index.js +13 -1
  4. package/dist/toolkits/docker-hub/icon.d.ts +5 -0
  5. package/dist/toolkits/docker-hub/icon.js +29 -0
  6. package/dist/toolkits/docker-hub/manifest.d.ts +3 -0
  7. package/dist/toolkits/docker-hub/manifest.js +32 -0
  8. package/dist/toolkits/docker-hub/tools/add-org-member.d.ts +29 -0
  9. package/dist/toolkits/docker-hub/tools/add-org-member.js +39 -0
  10. package/dist/toolkits/docker-hub/tools/create-organization.d.ts +6 -0
  11. package/dist/toolkits/docker-hub/tools/create-organization.js +28 -0
  12. package/dist/toolkits/docker-hub/tools/create-repository.d.ts +9 -0
  13. package/dist/toolkits/docker-hub/tools/create-repository.js +37 -0
  14. package/dist/toolkits/docker-hub/tools/create-webhook.d.ts +48 -0
  15. package/dist/toolkits/docker-hub/tools/create-webhook.js +51 -0
  16. package/dist/toolkits/docker-hub/tools/delete-image.d.ts +11 -0
  17. package/dist/toolkits/docker-hub/tools/delete-image.js +46 -0
  18. package/dist/toolkits/docker-hub/tools/delete-organization.d.ts +23 -0
  19. package/dist/toolkits/docker-hub/tools/delete-organization.js +29 -0
  20. package/dist/toolkits/docker-hub/tools/delete-repository.d.ts +21 -0
  21. package/dist/toolkits/docker-hub/tools/delete-repository.js +29 -0
  22. package/dist/toolkits/docker-hub/tools/delete-tag.d.ts +25 -0
  23. package/dist/toolkits/docker-hub/tools/delete-tag.js +29 -0
  24. package/dist/toolkits/docker-hub/tools/delete-team.d.ts +24 -0
  25. package/dist/toolkits/docker-hub/tools/delete-team.js +25 -0
  26. package/dist/toolkits/docker-hub/tools/delete-webhook.d.ts +25 -0
  27. package/dist/toolkits/docker-hub/tools/delete-webhook.js +31 -0
  28. package/dist/toolkits/docker-hub/tools/get-image.d.ts +75 -0
  29. package/dist/toolkits/docker-hub/tools/get-image.js +51 -0
  30. package/dist/toolkits/docker-hub/tools/get-repository.d.ts +6 -0
  31. package/dist/toolkits/docker-hub/tools/get-repository.js +25 -0
  32. package/dist/toolkits/docker-hub/tools/get-tag.d.ts +7 -0
  33. package/dist/toolkits/docker-hub/tools/get-tag.js +26 -0
  34. package/dist/toolkits/docker-hub/tools/get-team.d.ts +6 -0
  35. package/dist/toolkits/docker-hub/tools/get-team.js +25 -0
  36. package/dist/toolkits/docker-hub/tools/get-webhook.d.ts +26 -0
  37. package/dist/toolkits/docker-hub/tools/get-webhook.js +26 -0
  38. package/dist/toolkits/docker-hub/tools/index.d.ts +437 -0
  39. package/dist/toolkits/docker-hub/tools/index.js +165 -0
  40. package/dist/toolkits/docker-hub/tools/list-org-access-tokens.d.ts +7 -0
  41. package/dist/toolkits/docker-hub/tools/list-org-access-tokens.js +26 -0
  42. package/dist/toolkits/docker-hub/tools/list-org-members.d.ts +7 -0
  43. package/dist/toolkits/docker-hub/tools/list-org-members.js +26 -0
  44. package/dist/toolkits/docker-hub/tools/list-organizations.d.ts +6 -0
  45. package/dist/toolkits/docker-hub/tools/list-organizations.js +25 -0
  46. package/dist/toolkits/docker-hub/tools/list-repositories.d.ts +10 -0
  47. package/dist/toolkits/docker-hub/tools/list-repositories.js +35 -0
  48. package/dist/toolkits/docker-hub/tools/list-team-members.d.ts +9 -0
  49. package/dist/toolkits/docker-hub/tools/list-team-members.js +32 -0
  50. package/dist/toolkits/docker-hub/tools/list-teams.d.ts +7 -0
  51. package/dist/toolkits/docker-hub/tools/list-teams.js +26 -0
  52. package/dist/toolkits/docker-hub/tools/list-webhooks.d.ts +8 -0
  53. package/dist/toolkits/docker-hub/tools/list-webhooks.js +38 -0
  54. package/dist/toolkits/docker-hub/tools/remove-org-member.d.ts +21 -0
  55. package/dist/toolkits/docker-hub/tools/remove-org-member.js +25 -0
  56. package/dist/toolkits/docker-hub/tools/remove-team-member.d.ts +25 -0
  57. package/dist/toolkits/docker-hub/tools/remove-team-member.js +26 -0
  58. package/dist/toolkits/docker-hub/tools/utils.d.ts +24 -0
  59. package/dist/toolkits/docker-hub/tools/utils.js +87 -0
  60. package/dist/toolkits/github/tools/Git/create-blob.d.ts +1 -1
  61. package/dist/toolkits/github/tools/Issues/remove-issue-label.d.ts +1 -1
  62. package/dist/toolkits/github/tools/Repos/star-repo.d.ts +1 -1
  63. package/dist/toolkits/github/tools/Users/follow-user.d.ts +1 -1
  64. package/dist/toolkits/github/tools/index.d.ts +4 -4
  65. package/dist/toolkits/gmail/manifest.js +82 -2
  66. package/dist/toolkits/gmail/tools/batch-delete-messages.d.ts +26 -0
  67. package/dist/toolkits/gmail/tools/batch-delete-messages.js +33 -0
  68. package/dist/toolkits/gmail/tools/batch-modify-messages.d.ts +34 -0
  69. package/dist/toolkits/gmail/tools/batch-modify-messages.js +39 -0
  70. package/dist/toolkits/gmail/tools/create-filter.d.ts +24 -0
  71. package/dist/toolkits/gmail/tools/create-filter.js +35 -0
  72. package/dist/toolkits/gmail/tools/create-label.d.ts +27 -0
  73. package/dist/toolkits/gmail/tools/create-label.js +46 -0
  74. package/dist/toolkits/gmail/tools/delete-filter.d.ts +23 -0
  75. package/dist/toolkits/gmail/tools/delete-filter.js +31 -0
  76. package/dist/toolkits/gmail/tools/delete-label.d.ts +23 -0
  77. package/dist/toolkits/gmail/tools/delete-label.js +31 -0
  78. package/dist/toolkits/gmail/tools/delete-message.d.ts +23 -0
  79. package/dist/toolkits/gmail/tools/delete-message.js +31 -0
  80. package/dist/toolkits/gmail/tools/delete-thread.d.ts +23 -0
  81. package/dist/toolkits/gmail/tools/delete-thread.js +31 -0
  82. package/dist/toolkits/gmail/tools/forward-message.d.ts +37 -0
  83. package/dist/toolkits/gmail/tools/forward-message.js +112 -0
  84. package/dist/toolkits/gmail/tools/get-attachment.d.ts +40 -0
  85. package/dist/toolkits/gmail/tools/get-attachment.js +41 -0
  86. package/dist/toolkits/gmail/tools/get-auto-forwarding.d.ts +22 -0
  87. package/dist/toolkits/gmail/tools/get-auto-forwarding.js +30 -0
  88. package/dist/toolkits/gmail/tools/get-contacts.d.ts +8 -0
  89. package/dist/toolkits/gmail/tools/get-contacts.js +50 -0
  90. package/dist/toolkits/gmail/tools/get-filter.d.ts +23 -0
  91. package/dist/toolkits/gmail/tools/get-filter.js +31 -0
  92. package/dist/toolkits/gmail/tools/index.d.ts +13 -0
  93. package/dist/toolkits/gmail/tools/index.js +13 -0
  94. package/dist/toolkits/gmail/tools/utils.d.ts +23 -0
  95. package/dist/toolkits/gmail/tools/utils.js +51 -0
  96. package/dist/toolkits/google-forms/icon.d.ts +5 -0
  97. package/dist/toolkits/google-forms/icon.js +6 -0
  98. package/dist/toolkits/google-forms/manifest.d.ts +3 -0
  99. package/dist/toolkits/google-forms/manifest.js +43 -0
  100. package/dist/toolkits/google-forms/tools/batch-update-form.d.ts +11 -0
  101. package/dist/toolkits/google-forms/tools/batch-update-form.js +49 -0
  102. package/dist/toolkits/google-forms/tools/create-form.d.ts +8 -0
  103. package/dist/toolkits/google-forms/tools/create-form.js +44 -0
  104. package/dist/toolkits/google-forms/tools/create-watch.d.ts +8 -0
  105. package/dist/toolkits/google-forms/tools/create-watch.js +48 -0
  106. package/dist/toolkits/google-forms/tools/delete-watch.d.ts +21 -0
  107. package/dist/toolkits/google-forms/tools/delete-watch.js +28 -0
  108. package/dist/toolkits/google-forms/tools/get-form.d.ts +5 -0
  109. package/dist/toolkits/google-forms/tools/get-form.js +27 -0
  110. package/dist/toolkits/google-forms/tools/get-response.d.ts +6 -0
  111. package/dist/toolkits/google-forms/tools/get-response.js +28 -0
  112. package/dist/toolkits/google-forms/tools/index.d.ts +130 -0
  113. package/dist/toolkits/google-forms/tools/index.js +85 -0
  114. package/dist/toolkits/google-forms/tools/list-responses.d.ts +8 -0
  115. package/dist/toolkits/google-forms/tools/list-responses.js +44 -0
  116. package/dist/toolkits/google-forms/tools/list-watches.d.ts +5 -0
  117. package/dist/toolkits/google-forms/tools/list-watches.js +27 -0
  118. package/dist/toolkits/google-forms/tools/renew-watch.d.ts +6 -0
  119. package/dist/toolkits/google-forms/tools/renew-watch.js +28 -0
  120. package/dist/toolkits/google-forms/tools/set-publish-settings.d.ts +8 -0
  121. package/dist/toolkits/google-forms/tools/set-publish-settings.js +43 -0
  122. package/dist/toolkits/google-forms/tools/utils.d.ts +15 -0
  123. package/dist/toolkits/google-forms/tools/utils.js +33 -0
  124. package/dist/toolkits/google-meet/icon.d.ts +5 -0
  125. package/dist/toolkits/google-meet/icon.js +153 -0
  126. package/dist/toolkits/google-meet/manifest.d.ts +3 -0
  127. package/dist/toolkits/google-meet/manifest.js +44 -0
  128. package/dist/toolkits/google-meet/tools/create-meet.d.ts +5 -0
  129. package/dist/toolkits/google-meet/tools/create-meet.js +33 -0
  130. package/dist/toolkits/google-meet/tools/end-active-conference.d.ts +26 -0
  131. package/dist/toolkits/google-meet/tools/end-active-conference.js +37 -0
  132. package/dist/toolkits/google-meet/tools/get-conference-record-by-name.d.ts +5 -0
  133. package/dist/toolkits/google-meet/tools/get-conference-record-by-name.js +30 -0
  134. package/dist/toolkits/google-meet/tools/get-meet.d.ts +5 -0
  135. package/dist/toolkits/google-meet/tools/get-meet.js +30 -0
  136. package/dist/toolkits/google-meet/tools/get-participant-session.d.ts +5 -0
  137. package/dist/toolkits/google-meet/tools/get-participant-session.js +29 -0
  138. package/dist/toolkits/google-meet/tools/get-recordings-by-conference-record-id.d.ts +7 -0
  139. package/dist/toolkits/google-meet/tools/get-recordings-by-conference-record-id.js +32 -0
  140. package/dist/toolkits/google-meet/tools/get-transcript-entry.d.ts +5 -0
  141. package/dist/toolkits/google-meet/tools/get-transcript-entry.js +29 -0
  142. package/dist/toolkits/google-meet/tools/get-transcript.d.ts +5 -0
  143. package/dist/toolkits/google-meet/tools/get-transcript.js +29 -0
  144. package/dist/toolkits/google-meet/tools/get-transcripts-by-conference-record-id.d.ts +7 -0
  145. package/dist/toolkits/google-meet/tools/get-transcripts-by-conference-record-id.js +32 -0
  146. package/dist/toolkits/google-meet/tools/index.d.ts +156 -0
  147. package/dist/toolkits/google-meet/tools/index.js +125 -0
  148. package/dist/toolkits/google-meet/tools/list-conference-records.d.ts +7 -0
  149. package/dist/toolkits/google-meet/tools/list-conference-records.js +31 -0
  150. package/dist/toolkits/google-meet/tools/list-participant-sessions.d.ts +9 -0
  151. package/dist/toolkits/google-meet/tools/list-participant-sessions.js +34 -0
  152. package/dist/toolkits/google-meet/tools/list-participants.d.ts +8 -0
  153. package/dist/toolkits/google-meet/tools/list-participants.js +35 -0
  154. package/dist/toolkits/google-meet/tools/list-recordings.d.ts +7 -0
  155. package/dist/toolkits/google-meet/tools/list-recordings.js +34 -0
  156. package/dist/toolkits/google-meet/tools/list-transcript-entries.d.ts +8 -0
  157. package/dist/toolkits/google-meet/tools/list-transcript-entries.js +33 -0
  158. package/dist/toolkits/google-meet/tools/update-space.d.ts +7 -0
  159. package/dist/toolkits/google-meet/tools/update-space.js +42 -0
  160. package/dist/toolkits/google-meet/tools/utils.d.ts +14 -0
  161. package/dist/toolkits/google-meet/tools/utils.js +39 -0
  162. package/dist/toolkits/google-search-console/icon.d.ts +5 -0
  163. package/dist/toolkits/google-search-console/icon.js +6 -0
  164. package/dist/toolkits/google-search-console/manifest.d.ts +3 -0
  165. package/dist/toolkits/google-search-console/manifest.js +46 -0
  166. package/dist/toolkits/google-search-console/tools/add-site.d.ts +29 -0
  167. package/dist/toolkits/google-search-console/tools/add-site.js +27 -0
  168. package/dist/toolkits/google-search-console/tools/delete-site.d.ts +26 -0
  169. package/dist/toolkits/google-search-console/tools/delete-site.js +27 -0
  170. package/dist/toolkits/google-search-console/tools/get-site.d.ts +5 -0
  171. package/dist/toolkits/google-search-console/tools/get-site.js +27 -0
  172. package/dist/toolkits/google-search-console/tools/get-sitemap.d.ts +6 -0
  173. package/dist/toolkits/google-search-console/tools/get-sitemap.js +28 -0
  174. package/dist/toolkits/google-search-console/tools/index.d.ts +178 -0
  175. package/dist/toolkits/google-search-console/tools/index.js +77 -0
  176. package/dist/toolkits/google-search-console/tools/inspect-url.d.ts +7 -0
  177. package/dist/toolkits/google-search-console/tools/inspect-url.js +41 -0
  178. package/dist/toolkits/google-search-console/tools/list-sitemaps.d.ts +6 -0
  179. package/dist/toolkits/google-search-console/tools/list-sitemaps.js +31 -0
  180. package/dist/toolkits/google-search-console/tools/list-sites.d.ts +4 -0
  181. package/dist/toolkits/google-search-console/tools/list-sites.js +26 -0
  182. package/dist/toolkits/google-search-console/tools/search-analytics-query.d.ts +14 -0
  183. package/dist/toolkits/google-search-console/tools/search-analytics-query.js +73 -0
  184. package/dist/toolkits/google-search-console/tools/submit-sitemap.d.ts +33 -0
  185. package/dist/toolkits/google-search-console/tools/submit-sitemap.js +28 -0
  186. package/dist/toolkits/google-search-console/tools/utils.d.ts +24 -0
  187. package/dist/toolkits/google-search-console/tools/utils.js +57 -0
  188. package/dist/toolkits/google-slides/icon.d.ts +5 -0
  189. package/dist/toolkits/google-slides/icon.js +6 -0
  190. package/dist/toolkits/google-slides/manifest.d.ts +3 -0
  191. package/dist/toolkits/google-slides/manifest.js +46 -0
  192. package/dist/toolkits/google-slides/tools/create-presentation.d.ts +8 -0
  193. package/dist/toolkits/google-slides/tools/create-presentation.js +42 -0
  194. package/dist/toolkits/google-slides/tools/create-slides-markdown.d.ts +56 -0
  195. package/dist/toolkits/google-slides/tools/create-slides-markdown.js +70 -0
  196. package/dist/toolkits/google-slides/tools/get-page-thumbnail2.d.ts +8 -0
  197. package/dist/toolkits/google-slides/tools/get-page-thumbnail2.js +41 -0
  198. package/dist/toolkits/google-slides/tools/index.d.ts +139 -0
  199. package/dist/toolkits/google-slides/tools/index.js +69 -0
  200. package/dist/toolkits/google-slides/tools/markdown.d.ts +6 -0
  201. package/dist/toolkits/google-slides/tools/markdown.js +222 -0
  202. package/dist/toolkits/google-slides/tools/presentations-batch-update.d.ts +8 -0
  203. package/dist/toolkits/google-slides/tools/presentations-batch-update.js +58 -0
  204. package/dist/toolkits/google-slides/tools/presentations-copy-from-template.d.ts +7 -0
  205. package/dist/toolkits/google-slides/tools/presentations-copy-from-template.js +42 -0
  206. package/dist/toolkits/google-slides/tools/presentations-get.d.ts +7 -0
  207. package/dist/toolkits/google-slides/tools/presentations-get.js +58 -0
  208. package/dist/toolkits/google-slides/tools/presentations-pages-get-thumbnail.d.ts +8 -0
  209. package/dist/toolkits/google-slides/tools/presentations-pages-get-thumbnail.js +41 -0
  210. package/dist/toolkits/google-slides/tools/presentations-pages-get.d.ts +6 -0
  211. package/dist/toolkits/google-slides/tools/presentations-pages-get.js +28 -0
  212. package/dist/toolkits/google-slides/tools/utils.d.ts +22 -0
  213. package/dist/toolkits/google-slides/tools/utils.js +51 -0
  214. package/dist/toolkits/grafana/icon.d.ts +5 -0
  215. package/dist/toolkits/grafana/icon.js +6 -0
  216. package/dist/toolkits/grafana/manifest.d.ts +3 -0
  217. package/dist/toolkits/grafana/manifest.js +31 -0
  218. package/dist/toolkits/grafana/tools/create-otlp-v1-logs.d.ts +23 -0
  219. package/dist/toolkits/grafana/tools/create-otlp-v1-logs.js +41 -0
  220. package/dist/toolkits/grafana/tools/get-distributor-ha-tracker.d.ts +22 -0
  221. package/dist/toolkits/grafana/tools/get-distributor-ha-tracker.js +33 -0
  222. package/dist/toolkits/grafana/tools/get-health.d.ts +4 -0
  223. package/dist/toolkits/grafana/tools/get-health.js +32 -0
  224. package/dist/toolkits/grafana/tools/get-index-gateway-ring.d.ts +22 -0
  225. package/dist/toolkits/grafana/tools/get-index-gateway-ring.js +33 -0
  226. package/dist/toolkits/grafana/tools/get-overrides-exporter-ring.d.ts +22 -0
  227. package/dist/toolkits/grafana/tools/get-overrides-exporter-ring.js +33 -0
  228. package/dist/toolkits/grafana/tools/get-ruler-ring.d.ts +22 -0
  229. package/dist/toolkits/grafana/tools/get-ruler-ring.js +33 -0
  230. package/dist/toolkits/grafana/tools/get-status.d.ts +22 -0
  231. package/dist/toolkits/grafana/tools/get-status.js +35 -0
  232. package/dist/toolkits/grafana/tools/get-store-gateway-tenants.d.ts +25 -0
  233. package/dist/toolkits/grafana/tools/get-store-gateway-tenants.js +33 -0
  234. package/dist/toolkits/grafana/tools/index.d.ts +183 -0
  235. package/dist/toolkits/grafana/tools/index.js +93 -0
  236. package/dist/toolkits/grafana/tools/post-acs.d.ts +16 -0
  237. package/dist/toolkits/grafana/tools/post-acs.js +44 -0
  238. package/dist/toolkits/grafana/tools/query-public-dashboard.d.ts +29 -0
  239. package/dist/toolkits/grafana/tools/query-public-dashboard.js +70 -0
  240. package/dist/toolkits/grafana/tools/retrieve-jwks.d.ts +4 -0
  241. package/dist/toolkits/grafana/tools/retrieve-jwks.js +32 -0
  242. package/dist/toolkits/grafana/tools/utils.d.ts +21 -0
  243. package/dist/toolkits/grafana/tools/utils.js +48 -0
  244. package/package.json +2 -1
@@ -0,0 +1,41 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export const getAttachment = tool({
4
+ description: 'Retrieve a Gmail message attachment by message ID and attachment ID.',
5
+ inputSchema: z.object({
6
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
7
+ messageId: z.string().describe('The message ID containing the attachment'),
8
+ attachmentId: z.string().describe('The attachment ID from the message payload part'),
9
+ fileName: z.string().optional().describe('Optional filename to include in the response'),
10
+ }),
11
+ execute: async ({ gmailToken, messageId, attachmentId, fileName }) => {
12
+ try {
13
+ const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/attachments/${attachmentId}`, {
14
+ headers: {
15
+ Authorization: `Bearer ${gmailToken}`,
16
+ },
17
+ });
18
+ if (!response.ok) {
19
+ const error = await response.json();
20
+ return { error: 'Failed to get attachment', details: error };
21
+ }
22
+ const data = await response.json();
23
+ return {
24
+ success: true,
25
+ messageId,
26
+ attachmentId,
27
+ fileName,
28
+ size: data.size,
29
+ data: data.data,
30
+ encoding: 'base64url',
31
+ };
32
+ }
33
+ catch (error) {
34
+ return {
35
+ error: 'Error getting attachment',
36
+ message: error instanceof Error ? error.message : 'Unknown error',
37
+ };
38
+ }
39
+ },
40
+ });
41
+ //# sourceMappingURL=get-attachment.js.map
@@ -0,0 +1,22 @@
1
+ export declare const getAutoForwarding: import("ai").Tool<{
2
+ gmailToken?: string | undefined;
3
+ }, {
4
+ error: string;
5
+ details: any;
6
+ success?: undefined;
7
+ autoForwarding?: undefined;
8
+ message?: undefined;
9
+ } | {
10
+ success: boolean;
11
+ autoForwarding: any;
12
+ error?: undefined;
13
+ details?: undefined;
14
+ message?: undefined;
15
+ } | {
16
+ error: string;
17
+ message: string;
18
+ details?: undefined;
19
+ success?: undefined;
20
+ autoForwarding?: undefined;
21
+ }>;
22
+ //# sourceMappingURL=get-auto-forwarding.d.ts.map
@@ -0,0 +1,30 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export const getAutoForwarding = tool({
4
+ description: 'Get Gmail auto-forwarding settings for the authenticated mailbox.',
5
+ inputSchema: z.object({
6
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
7
+ }),
8
+ execute: async ({ gmailToken }) => {
9
+ try {
10
+ const response = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/settings/autoForwarding', {
11
+ headers: {
12
+ Authorization: `Bearer ${gmailToken}`,
13
+ },
14
+ });
15
+ if (!response.ok) {
16
+ const error = await response.json();
17
+ return { error: 'Failed to get auto-forwarding settings', details: error };
18
+ }
19
+ const data = await response.json();
20
+ return { success: true, autoForwarding: data };
21
+ }
22
+ catch (error) {
23
+ return {
24
+ error: 'Error getting auto-forwarding settings',
25
+ message: error instanceof Error ? error.message : 'Unknown error',
26
+ };
27
+ }
28
+ },
29
+ });
30
+ //# sourceMappingURL=get-auto-forwarding.js.map
@@ -0,0 +1,8 @@
1
+ export declare const getContacts: import("ai").Tool<{
2
+ personFields: string;
3
+ includeOtherContacts: boolean;
4
+ gmailToken?: string | undefined;
5
+ pageToken?: string | undefined;
6
+ resourceName?: string | undefined;
7
+ }, any>;
8
+ //# sourceMappingURL=get-contacts.d.ts.map
@@ -0,0 +1,50 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export const getContacts = tool({
4
+ description: 'Fetch Google contacts for the authenticated account using the People API.',
5
+ inputSchema: z.object({
6
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
7
+ resourceName: z.string().optional().describe('Optional contact resource name to fetch, e.g. people/c123'),
8
+ personFields: z.string().optional().default('names,emailAddresses,phoneNumbers,organizations').describe('Comma-separated person fields to return'),
9
+ pageToken: z.string().optional().describe('Pagination token for connection lists'),
10
+ includeOtherContacts: z.boolean().optional().default(false).describe('Whether to fetch Other Contacts instead of saved contacts'),
11
+ }),
12
+ execute: async ({ gmailToken, resourceName, personFields, pageToken, includeOtherContacts }) => {
13
+ try {
14
+ let url;
15
+ if (resourceName) {
16
+ url = new URL(`https://people.googleapis.com/v1/${resourceName}`);
17
+ url.searchParams.append('personFields', personFields);
18
+ }
19
+ else if (includeOtherContacts) {
20
+ url = new URL('https://people.googleapis.com/v1/otherContacts');
21
+ url.searchParams.append('readMask', personFields);
22
+ }
23
+ else {
24
+ url = new URL('https://people.googleapis.com/v1/people/me/connections');
25
+ url.searchParams.append('personFields', personFields);
26
+ }
27
+ if (pageToken && !resourceName) {
28
+ url.searchParams.append('pageToken', pageToken);
29
+ }
30
+ const response = await fetch(url.toString(), {
31
+ headers: {
32
+ Authorization: `Bearer ${gmailToken}`,
33
+ },
34
+ });
35
+ if (!response.ok) {
36
+ const error = await response.json();
37
+ return { error: 'Failed to get contacts', details: error };
38
+ }
39
+ const data = await response.json();
40
+ return { success: true, ...data };
41
+ }
42
+ catch (error) {
43
+ return {
44
+ error: 'Error getting contacts',
45
+ message: error instanceof Error ? error.message : 'Unknown error',
46
+ };
47
+ }
48
+ },
49
+ });
50
+ //# sourceMappingURL=get-contacts.js.map
@@ -0,0 +1,23 @@
1
+ export declare const getFilter: import("ai").Tool<{
2
+ id: string;
3
+ gmailToken?: string | undefined;
4
+ }, {
5
+ error: string;
6
+ details: any;
7
+ success?: undefined;
8
+ filter?: undefined;
9
+ message?: undefined;
10
+ } | {
11
+ success: boolean;
12
+ filter: any;
13
+ error?: undefined;
14
+ details?: undefined;
15
+ message?: undefined;
16
+ } | {
17
+ error: string;
18
+ message: string;
19
+ details?: undefined;
20
+ success?: undefined;
21
+ filter?: undefined;
22
+ }>;
23
+ //# sourceMappingURL=get-filter.d.ts.map
@@ -0,0 +1,31 @@
1
+ import { tool } from 'ai';
2
+ import { z } from 'zod';
3
+ export const getFilter = tool({
4
+ description: 'Retrieve a Gmail filter by ID.',
5
+ inputSchema: z.object({
6
+ gmailToken: z.string().optional().describe('Injected by system; do not provide'),
7
+ id: z.string().describe('The filter ID to retrieve'),
8
+ }),
9
+ execute: async ({ gmailToken, id }) => {
10
+ try {
11
+ const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/settings/filters/${id}`, {
12
+ headers: {
13
+ Authorization: `Bearer ${gmailToken}`,
14
+ },
15
+ });
16
+ if (!response.ok) {
17
+ const error = await response.json();
18
+ return { error: 'Failed to get filter', details: error };
19
+ }
20
+ const data = await response.json();
21
+ return { success: true, filter: data };
22
+ }
23
+ catch (error) {
24
+ return {
25
+ error: 'Error getting filter',
26
+ message: error instanceof Error ? error.message : 'Unknown error',
27
+ };
28
+ }
29
+ },
30
+ });
31
+ //# sourceMappingURL=get-filter.js.map
@@ -14,4 +14,17 @@ export * from './list-labels.js';
14
14
  export * from './modify-message-labels.js';
15
15
  export * from './trash-message.js';
16
16
  export * from './untrash-message.js';
17
+ export * from './batch-delete-messages.js';
18
+ export * from './batch-modify-messages.js';
19
+ export * from './create-filter.js';
20
+ export * from './create-label.js';
21
+ export * from './delete-filter.js';
22
+ export * from './delete-label.js';
23
+ export * from './delete-message.js';
24
+ export * from './delete-thread.js';
25
+ export * from './forward-message.js';
26
+ export * from './get-attachment.js';
27
+ export * from './get-auto-forwarding.js';
28
+ export * from './get-contacts.js';
29
+ export * from './get-filter.js';
17
30
  //# sourceMappingURL=index.d.ts.map
@@ -14,4 +14,17 @@ export * from './list-labels.js';
14
14
  export * from './modify-message-labels.js';
15
15
  export * from './trash-message.js';
16
16
  export * from './untrash-message.js';
17
+ export * from './batch-delete-messages.js';
18
+ export * from './batch-modify-messages.js';
19
+ export * from './create-filter.js';
20
+ export * from './create-label.js';
21
+ export * from './delete-filter.js';
22
+ export * from './delete-label.js';
23
+ export * from './delete-message.js';
24
+ export * from './delete-thread.js';
25
+ export * from './forward-message.js';
26
+ export * from './get-attachment.js';
27
+ export * from './get-auto-forwarding.js';
28
+ export * from './get-contacts.js';
29
+ export * from './get-filter.js';
17
30
  //# sourceMappingURL=index.js.map
@@ -38,4 +38,27 @@ export declare function extractMessageDetails(data: any, maxBodyLength?: number)
38
38
  messageIdHeader: any;
39
39
  body: string;
40
40
  } | null;
41
+ export declare function encodeBase64Mime(data: string): string;
42
+ export declare function chunkBase64(data: string): string;
43
+ export declare function getHeaderValue(headers: Array<{
44
+ name?: string;
45
+ value?: string;
46
+ }> | undefined, name: string): string | undefined;
47
+ export declare function collectAttachments(payload: any): Array<{
48
+ attachmentId: string;
49
+ filename: string;
50
+ mimeType: string;
51
+ }>;
52
+ export declare function encodeMultipartMessage(params: {
53
+ to: string;
54
+ subject: string;
55
+ body: string;
56
+ cc?: string;
57
+ bcc?: string;
58
+ attachments?: Array<{
59
+ filename: string;
60
+ mimeType: string;
61
+ data: string;
62
+ }>;
63
+ }): string;
41
64
  //# sourceMappingURL=utils.d.ts.map
@@ -94,4 +94,55 @@ export function extractMessageDetails(data, maxBodyLength = 4000) {
94
94
  body,
95
95
  };
96
96
  }
97
+ export function encodeBase64Mime(data) {
98
+ return data.replace(/-/g, '+').replace(/_/g, '/').replace(/\s/g, '');
99
+ }
100
+ export function chunkBase64(data) {
101
+ return data.match(/.{1,76}/g)?.join('\r\n') || data;
102
+ }
103
+ export function getHeaderValue(headers, name) {
104
+ return headers?.find((header) => header.name?.toLowerCase() === name.toLowerCase())?.value;
105
+ }
106
+ export function collectAttachments(payload) {
107
+ const attachments = [];
108
+ const walk = (part) => {
109
+ const attachmentId = part?.body?.attachmentId;
110
+ const filename = part?.filename;
111
+ if (attachmentId && filename) {
112
+ attachments.push({
113
+ attachmentId,
114
+ filename,
115
+ mimeType: part.mimeType || 'application/octet-stream',
116
+ });
117
+ }
118
+ for (const child of part?.parts || []) {
119
+ walk(child);
120
+ }
121
+ };
122
+ walk(payload);
123
+ return attachments;
124
+ }
125
+ export function encodeMultipartMessage(params) {
126
+ const boundary = `rnsk-${Date.now()}-${Math.random().toString(16).slice(2)}`;
127
+ const headers = [
128
+ `To: ${params.to}`,
129
+ params.cc ? `Cc: ${params.cc}` : '',
130
+ params.bcc ? `Bcc: ${params.bcc}` : '',
131
+ `Subject: ${params.subject}`,
132
+ 'MIME-Version: 1.0',
133
+ `Content-Type: multipart/mixed; boundary="${boundary}"`,
134
+ ].filter(Boolean);
135
+ const parts = [
136
+ `--${boundary}`,
137
+ 'Content-Type: text/plain; charset="UTF-8"',
138
+ 'Content-Transfer-Encoding: 7bit',
139
+ '',
140
+ params.body,
141
+ ];
142
+ for (const attachment of params.attachments || []) {
143
+ parts.push(`--${boundary}`, `Content-Type: ${attachment.mimeType}; name="${attachment.filename}"`, 'Content-Transfer-Encoding: base64', `Content-Disposition: attachment; filename="${attachment.filename}"`, '', chunkBase64(encodeBase64Mime(attachment.data)));
144
+ }
145
+ parts.push(`--${boundary}--`);
146
+ return encodeBase64Url([...headers, '', ...parts].join('\r\n'));
147
+ }
97
148
  //# sourceMappingURL=utils.js.map
@@ -0,0 +1,5 @@
1
+ export declare const GFORMS_ICON: {
2
+ kind: "svg";
3
+ dataUri: string;
4
+ };
5
+ //# sourceMappingURL=icon.d.ts.map
@@ -0,0 +1,6 @@
1
+ const SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" fill="none" viewBox="0 0 192 192"><rect width="102" height="50" x="70" y="121" fill="#969dff" rx="25"/><rect width="50" height="50" x="20" y="121" fill="#b8c0ff" rx="25"/><rect width="50" height="50" x="20" y="71" fill="#5746e3" rx="25"/><rect width="102" height="50" x="70" y="71" fill="#5746e3" rx="25"/><mask id="a" width="102" height="50" x="70" y="21" maskUnits="userSpaceOnUse" style="mask-type:alpha"><rect width="102" height="50" x="70" y="21" fill="#5f54f4" rx="25"/></mask><g mask="url(#a)"><rect width="102" height="50" x="70" y="21" fill="#7372fe" rx="25"/><g filter="url(#b)"><circle cx="56" cy="46" r="36" fill="#64afff"/></g></g><rect width="50" height="50" x="20" y="21" fill="#7372fe" rx="25"/><path stroke="#fff" stroke-linecap="round" stroke-width="12" d="M95 46h52"/><circle cx="45" cy="46" r="12" fill="#fff"/><defs><filter id="b" width="111.47" height="111.47" x=".27" y="-9.74" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_37586_9489" stdDeviation="9.87"/></filter></defs></svg>`;
2
+ export const GFORMS_ICON = {
3
+ kind: 'svg',
4
+ dataUri: `data:image/svg+xml;base64,${Buffer.from(SVG).toString('base64')}`,
5
+ };
6
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: import("../../index.js").ToolkitManifest;
2
+ export default _default;
3
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1,43 @@
1
+ import { defineToolkit, defineTool } from '../../core/define.js';
2
+ import { inferToolScope } from '../../core/scope.js';
3
+ import { GFORMS_ICON } from './icon.js';
4
+ import { googleFormsTools } from './tools/index.js';
5
+ export default defineToolkit({
6
+ id: 'google-forms',
7
+ displayName: 'Google Forms',
8
+ shortDescription: 'Create, read, update, and manage Google Forms and their responses.',
9
+ category: 'Document & File Management',
10
+ icon: GFORMS_ICON,
11
+ auth: {
12
+ type: 'oauth2',
13
+ tokenField: 'googleFormsToken',
14
+ provider: {
15
+ slug: 'google-forms',
16
+ env: { clientId: 'GOOGLE_FORMS_CLIENT_ID', clientSecret: 'GOOGLE_FORMS_CLIENT_SECRET' },
17
+ authorizeUrl: 'https://accounts.google.com/o/oauth2/v2/auth',
18
+ tokenUrl: 'https://oauth2.googleapis.com/token',
19
+ scopes: [
20
+ 'https://www.googleapis.com/auth/drive',
21
+ 'https://www.googleapis.com/auth/drive.file',
22
+ 'https://www.googleapis.com/auth/forms.body',
23
+ 'https://www.googleapis.com/auth/forms.body.readonly',
24
+ 'https://www.googleapis.com/auth/forms.responses.readonly',
25
+ ],
26
+ exchangeStyle: 'form',
27
+ extraAuthParams: { access_type: 'offline', prompt: 'consent' },
28
+ connectDescription: 'Connect Google Forms to create forms, manage questions, and read responses.',
29
+ callbackPath: '/api/auth/google-forms/callback',
30
+ stateCookie: 'google_forms_oauth_state',
31
+ },
32
+ },
33
+ allowedHosts: ['forms.googleapis.com', 'www.googleapis.com'],
34
+ tools: googleFormsTools.map((entry) => defineTool({
35
+ name: entry.name,
36
+ description: entry.description,
37
+ tool: entry.tool,
38
+ requiredAuth: entry.requiredAuth,
39
+ scope: entry.scope ?? inferToolScope(entry.name),
40
+ })),
41
+ meta: { since: '0.0.6' },
42
+ });
43
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1,11 @@
1
+ export declare const batchUpdateForm: import("ai").Tool<{
2
+ googleFormsToken: string;
3
+ formId: string;
4
+ requests: Record<string, any>[];
5
+ writeControl?: {
6
+ targetRevisionId?: string | undefined;
7
+ requiredRevisionId?: string | undefined;
8
+ } | undefined;
9
+ includeFormInResponse?: boolean | undefined;
10
+ }, any>;
11
+ //# sourceMappingURL=batch-update-form.d.ts.map
@@ -0,0 +1,49 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ import { formsApiRequest } from './utils.js';
5
+ export const batchUpdateForm = tool({
6
+ description: 'Applies a batch of update operations to a Google Form in a single atomic transaction. Use to add, update, or delete questions, modify form metadata, update settings, or reorganize items.',
7
+ inputSchema: z.object({
8
+ googleFormsToken: z.string().describe('The Google Forms access token'),
9
+ formId: z.string().describe('The ID of the form to update'),
10
+ requests: z
11
+ .array(z.record(z.any()))
12
+ .describe('Update requests to apply. Each request contains one operation such as createItem, updateFormInfo, updateSettings, updateItem, moveItem, or deleteItem.'),
13
+ writeControl: z
14
+ .object({
15
+ targetRevisionId: z.string().optional(),
16
+ requiredRevisionId: z.string().optional(),
17
+ })
18
+ .optional()
19
+ .describe('Optional write control for optimistic concurrency'),
20
+ includeFormInResponse: z
21
+ .boolean()
22
+ .optional()
23
+ .describe('Whether to return the updated form in the response'),
24
+ }),
25
+ execute: async ({ googleFormsToken, formId, requests, writeControl, includeFormInResponse }) => {
26
+ try {
27
+ const body = { requests };
28
+ if (writeControl)
29
+ body.writeControl = writeControl;
30
+ if (includeFormInResponse !== undefined)
31
+ body.includeFormInResponse = includeFormInResponse;
32
+ const result = await formsApiRequest(googleFormsToken, `/forms/${formId}:batchUpdate`, {
33
+ method: 'POST',
34
+ body,
35
+ });
36
+ if (!result.ok) {
37
+ return { error: 'Failed to batch update form', details: result.error };
38
+ }
39
+ return result.data;
40
+ }
41
+ catch (error) {
42
+ return {
43
+ error: 'Error batch updating form',
44
+ message: error instanceof Error ? error.message : 'Unknown error',
45
+ };
46
+ }
47
+ },
48
+ });
49
+ //# sourceMappingURL=batch-update-form.js.map
@@ -0,0 +1,8 @@
1
+ export declare const createForm: import("ai").Tool<{
2
+ title: string;
3
+ googleFormsToken: string;
4
+ description?: string | undefined;
5
+ documentTitle?: string | undefined;
6
+ unpublished?: boolean | undefined;
7
+ }, any>;
8
+ //# sourceMappingURL=create-form.d.ts.map
@@ -0,0 +1,44 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ import { formsApiRequest } from './utils.js';
5
+ export const createForm = tool({
6
+ description: 'Creates a new Google Form with the specified title. After creation, use batchUpdate to add questions and other items.',
7
+ inputSchema: z.object({
8
+ googleFormsToken: z.string().describe('The Google Forms access token'),
9
+ title: z.string().describe('The visible title of the form shown to respondents'),
10
+ description: z.string().optional().describe('Optional description text displayed with the form title'),
11
+ documentTitle: z.string().optional().describe('Optional Drive-visible document title'),
12
+ unpublished: z
13
+ .boolean()
14
+ .optional()
15
+ .describe('Whether the form is unpublished and does not accept responses'),
16
+ }),
17
+ execute: async ({ googleFormsToken, title, description, documentTitle, unpublished }) => {
18
+ try {
19
+ const info = { title };
20
+ if (description)
21
+ info.description = description;
22
+ if (documentTitle)
23
+ info.documentTitle = documentTitle;
24
+ const body = { info };
25
+ if (unpublished !== undefined)
26
+ body.unpublished = unpublished;
27
+ const result = await formsApiRequest(googleFormsToken, '/forms', {
28
+ method: 'POST',
29
+ body,
30
+ });
31
+ if (!result.ok) {
32
+ return { error: 'Failed to create form', details: result.error };
33
+ }
34
+ return result.data;
35
+ }
36
+ catch (error) {
37
+ return {
38
+ error: 'Error creating form',
39
+ message: error instanceof Error ? error.message : 'Unknown error',
40
+ };
41
+ }
42
+ },
43
+ });
44
+ //# sourceMappingURL=create-form.js.map
@@ -0,0 +1,8 @@
1
+ export declare const createWatch: import("ai").Tool<{
2
+ googleFormsToken: string;
3
+ formId: string;
4
+ eventType: "EVENT_TYPE_UNSPECIFIED" | "SCHEMA" | "RESPONSES";
5
+ topicName: string;
6
+ watchId?: string | undefined;
7
+ }, any>;
8
+ //# sourceMappingURL=create-watch.d.ts.map
@@ -0,0 +1,48 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ import { formsApiRequest } from './utils.js';
5
+ export const createWatch = tool({
6
+ description: 'Creates a watch on a Google Form to receive push notifications via Cloud Pub/Sub when form schema or responses change.',
7
+ inputSchema: z.object({
8
+ googleFormsToken: z.string().describe('The Google Forms access token'),
9
+ formId: z.string().describe('The ID of the form to watch'),
10
+ eventType: z
11
+ .enum(['EVENT_TYPE_UNSPECIFIED', 'SCHEMA', 'RESPONSES'])
12
+ .describe('Type of event to watch for: SCHEMA or RESPONSES'),
13
+ topicName: z
14
+ .string()
15
+ .describe('Fully qualified Cloud Pub/Sub topic name, e.g. projects/my-project/topics/my-topic'),
16
+ watchId: z
17
+ .string()
18
+ .optional()
19
+ .describe('Optional unique ID to assign to this watch (4-63 characters)'),
20
+ }),
21
+ execute: async ({ googleFormsToken, formId, eventType, topicName, watchId }) => {
22
+ try {
23
+ const body = {
24
+ eventType,
25
+ target: {
26
+ topic: { topicName },
27
+ },
28
+ };
29
+ if (watchId)
30
+ body.watchId = watchId;
31
+ const result = await formsApiRequest(googleFormsToken, `/forms/${formId}/watches`, {
32
+ method: 'POST',
33
+ body,
34
+ });
35
+ if (!result.ok) {
36
+ return { error: 'Failed to create form watch', details: result.error };
37
+ }
38
+ return result.data;
39
+ }
40
+ catch (error) {
41
+ return {
42
+ error: 'Error creating form watch',
43
+ message: error instanceof Error ? error.message : 'Unknown error',
44
+ };
45
+ }
46
+ },
47
+ });
48
+ //# sourceMappingURL=create-watch.js.map
@@ -0,0 +1,21 @@
1
+ export declare const deleteWatch: import("ai").Tool<{
2
+ googleFormsToken: string;
3
+ formId: string;
4
+ watchId: string;
5
+ }, {
6
+ error: string;
7
+ details: any;
8
+ success?: undefined;
9
+ message?: undefined;
10
+ } | {
11
+ success: boolean;
12
+ error?: undefined;
13
+ details?: undefined;
14
+ message?: undefined;
15
+ } | {
16
+ error: string;
17
+ message: string;
18
+ details?: undefined;
19
+ success?: undefined;
20
+ }>;
21
+ //# sourceMappingURL=delete-watch.d.ts.map
@@ -0,0 +1,28 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ import { formsApiRequest } from './utils.js';
5
+ export const deleteWatch = tool({
6
+ description: 'Deletes a watch from a Google Form, stopping push notifications for that watch.',
7
+ inputSchema: z.object({
8
+ googleFormsToken: z.string().describe('The Google Forms access token'),
9
+ formId: z.string().describe('The ID of the form that contains the watch'),
10
+ watchId: z.string().describe('The ID of the watch to delete'),
11
+ }),
12
+ execute: async ({ googleFormsToken, formId, watchId }) => {
13
+ try {
14
+ const result = await formsApiRequest(googleFormsToken, `/forms/${formId}/watches/${watchId}`, { method: 'DELETE' });
15
+ if (!result.ok) {
16
+ return { error: 'Failed to delete form watch', details: result.error };
17
+ }
18
+ return { success: true };
19
+ }
20
+ catch (error) {
21
+ return {
22
+ error: 'Error deleting form watch',
23
+ message: error instanceof Error ? error.message : 'Unknown error',
24
+ };
25
+ }
26
+ },
27
+ });
28
+ //# sourceMappingURL=delete-watch.js.map
@@ -0,0 +1,5 @@
1
+ export declare const getForm: import("ai").Tool<{
2
+ googleFormsToken: string;
3
+ formId: string;
4
+ }, any>;
5
+ //# sourceMappingURL=get-form.d.ts.map