@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.
- package/README.md +10 -4
- package/dist/index.d.ts +7 -1
- package/dist/index.js +13 -1
- package/dist/toolkits/docker-hub/icon.d.ts +5 -0
- package/dist/toolkits/docker-hub/icon.js +29 -0
- package/dist/toolkits/docker-hub/manifest.d.ts +3 -0
- package/dist/toolkits/docker-hub/manifest.js +32 -0
- package/dist/toolkits/docker-hub/tools/add-org-member.d.ts +29 -0
- package/dist/toolkits/docker-hub/tools/add-org-member.js +39 -0
- package/dist/toolkits/docker-hub/tools/create-organization.d.ts +6 -0
- package/dist/toolkits/docker-hub/tools/create-organization.js +28 -0
- package/dist/toolkits/docker-hub/tools/create-repository.d.ts +9 -0
- package/dist/toolkits/docker-hub/tools/create-repository.js +37 -0
- package/dist/toolkits/docker-hub/tools/create-webhook.d.ts +48 -0
- package/dist/toolkits/docker-hub/tools/create-webhook.js +51 -0
- package/dist/toolkits/docker-hub/tools/delete-image.d.ts +11 -0
- package/dist/toolkits/docker-hub/tools/delete-image.js +46 -0
- package/dist/toolkits/docker-hub/tools/delete-organization.d.ts +23 -0
- package/dist/toolkits/docker-hub/tools/delete-organization.js +29 -0
- package/dist/toolkits/docker-hub/tools/delete-repository.d.ts +21 -0
- package/dist/toolkits/docker-hub/tools/delete-repository.js +29 -0
- package/dist/toolkits/docker-hub/tools/delete-tag.d.ts +25 -0
- package/dist/toolkits/docker-hub/tools/delete-tag.js +29 -0
- package/dist/toolkits/docker-hub/tools/delete-team.d.ts +24 -0
- package/dist/toolkits/docker-hub/tools/delete-team.js +25 -0
- package/dist/toolkits/docker-hub/tools/delete-webhook.d.ts +25 -0
- package/dist/toolkits/docker-hub/tools/delete-webhook.js +31 -0
- package/dist/toolkits/docker-hub/tools/get-image.d.ts +75 -0
- package/dist/toolkits/docker-hub/tools/get-image.js +51 -0
- package/dist/toolkits/docker-hub/tools/get-repository.d.ts +6 -0
- package/dist/toolkits/docker-hub/tools/get-repository.js +25 -0
- package/dist/toolkits/docker-hub/tools/get-tag.d.ts +7 -0
- package/dist/toolkits/docker-hub/tools/get-tag.js +26 -0
- package/dist/toolkits/docker-hub/tools/get-team.d.ts +6 -0
- package/dist/toolkits/docker-hub/tools/get-team.js +25 -0
- package/dist/toolkits/docker-hub/tools/get-webhook.d.ts +26 -0
- package/dist/toolkits/docker-hub/tools/get-webhook.js +26 -0
- package/dist/toolkits/docker-hub/tools/index.d.ts +437 -0
- package/dist/toolkits/docker-hub/tools/index.js +165 -0
- package/dist/toolkits/docker-hub/tools/list-org-access-tokens.d.ts +7 -0
- package/dist/toolkits/docker-hub/tools/list-org-access-tokens.js +26 -0
- package/dist/toolkits/docker-hub/tools/list-org-members.d.ts +7 -0
- package/dist/toolkits/docker-hub/tools/list-org-members.js +26 -0
- package/dist/toolkits/docker-hub/tools/list-organizations.d.ts +6 -0
- package/dist/toolkits/docker-hub/tools/list-organizations.js +25 -0
- package/dist/toolkits/docker-hub/tools/list-repositories.d.ts +10 -0
- package/dist/toolkits/docker-hub/tools/list-repositories.js +35 -0
- package/dist/toolkits/docker-hub/tools/list-team-members.d.ts +9 -0
- package/dist/toolkits/docker-hub/tools/list-team-members.js +32 -0
- package/dist/toolkits/docker-hub/tools/list-teams.d.ts +7 -0
- package/dist/toolkits/docker-hub/tools/list-teams.js +26 -0
- package/dist/toolkits/docker-hub/tools/list-webhooks.d.ts +8 -0
- package/dist/toolkits/docker-hub/tools/list-webhooks.js +38 -0
- package/dist/toolkits/docker-hub/tools/remove-org-member.d.ts +21 -0
- package/dist/toolkits/docker-hub/tools/remove-org-member.js +25 -0
- package/dist/toolkits/docker-hub/tools/remove-team-member.d.ts +25 -0
- package/dist/toolkits/docker-hub/tools/remove-team-member.js +26 -0
- package/dist/toolkits/docker-hub/tools/utils.d.ts +24 -0
- package/dist/toolkits/docker-hub/tools/utils.js +87 -0
- package/dist/toolkits/github/tools/Git/create-blob.d.ts +1 -1
- package/dist/toolkits/github/tools/Issues/remove-issue-label.d.ts +1 -1
- package/dist/toolkits/github/tools/Repos/star-repo.d.ts +1 -1
- package/dist/toolkits/github/tools/Users/follow-user.d.ts +1 -1
- package/dist/toolkits/github/tools/index.d.ts +4 -4
- package/dist/toolkits/gmail/manifest.js +82 -2
- package/dist/toolkits/gmail/tools/batch-delete-messages.d.ts +26 -0
- package/dist/toolkits/gmail/tools/batch-delete-messages.js +33 -0
- package/dist/toolkits/gmail/tools/batch-modify-messages.d.ts +34 -0
- package/dist/toolkits/gmail/tools/batch-modify-messages.js +39 -0
- package/dist/toolkits/gmail/tools/create-filter.d.ts +24 -0
- package/dist/toolkits/gmail/tools/create-filter.js +35 -0
- package/dist/toolkits/gmail/tools/create-label.d.ts +27 -0
- package/dist/toolkits/gmail/tools/create-label.js +46 -0
- package/dist/toolkits/gmail/tools/delete-filter.d.ts +23 -0
- package/dist/toolkits/gmail/tools/delete-filter.js +31 -0
- package/dist/toolkits/gmail/tools/delete-label.d.ts +23 -0
- package/dist/toolkits/gmail/tools/delete-label.js +31 -0
- package/dist/toolkits/gmail/tools/delete-message.d.ts +23 -0
- package/dist/toolkits/gmail/tools/delete-message.js +31 -0
- package/dist/toolkits/gmail/tools/delete-thread.d.ts +23 -0
- package/dist/toolkits/gmail/tools/delete-thread.js +31 -0
- package/dist/toolkits/gmail/tools/forward-message.d.ts +37 -0
- package/dist/toolkits/gmail/tools/forward-message.js +112 -0
- package/dist/toolkits/gmail/tools/get-attachment.d.ts +40 -0
- package/dist/toolkits/gmail/tools/get-attachment.js +41 -0
- package/dist/toolkits/gmail/tools/get-auto-forwarding.d.ts +22 -0
- package/dist/toolkits/gmail/tools/get-auto-forwarding.js +30 -0
- package/dist/toolkits/gmail/tools/get-contacts.d.ts +8 -0
- package/dist/toolkits/gmail/tools/get-contacts.js +50 -0
- package/dist/toolkits/gmail/tools/get-filter.d.ts +23 -0
- package/dist/toolkits/gmail/tools/get-filter.js +31 -0
- package/dist/toolkits/gmail/tools/index.d.ts +13 -0
- package/dist/toolkits/gmail/tools/index.js +13 -0
- package/dist/toolkits/gmail/tools/utils.d.ts +23 -0
- package/dist/toolkits/gmail/tools/utils.js +51 -0
- package/dist/toolkits/google-forms/icon.d.ts +5 -0
- package/dist/toolkits/google-forms/icon.js +6 -0
- package/dist/toolkits/google-forms/manifest.d.ts +3 -0
- package/dist/toolkits/google-forms/manifest.js +43 -0
- package/dist/toolkits/google-forms/tools/batch-update-form.d.ts +11 -0
- package/dist/toolkits/google-forms/tools/batch-update-form.js +49 -0
- package/dist/toolkits/google-forms/tools/create-form.d.ts +8 -0
- package/dist/toolkits/google-forms/tools/create-form.js +44 -0
- package/dist/toolkits/google-forms/tools/create-watch.d.ts +8 -0
- package/dist/toolkits/google-forms/tools/create-watch.js +48 -0
- package/dist/toolkits/google-forms/tools/delete-watch.d.ts +21 -0
- package/dist/toolkits/google-forms/tools/delete-watch.js +28 -0
- package/dist/toolkits/google-forms/tools/get-form.d.ts +5 -0
- package/dist/toolkits/google-forms/tools/get-form.js +27 -0
- package/dist/toolkits/google-forms/tools/get-response.d.ts +6 -0
- package/dist/toolkits/google-forms/tools/get-response.js +28 -0
- package/dist/toolkits/google-forms/tools/index.d.ts +130 -0
- package/dist/toolkits/google-forms/tools/index.js +85 -0
- package/dist/toolkits/google-forms/tools/list-responses.d.ts +8 -0
- package/dist/toolkits/google-forms/tools/list-responses.js +44 -0
- package/dist/toolkits/google-forms/tools/list-watches.d.ts +5 -0
- package/dist/toolkits/google-forms/tools/list-watches.js +27 -0
- package/dist/toolkits/google-forms/tools/renew-watch.d.ts +6 -0
- package/dist/toolkits/google-forms/tools/renew-watch.js +28 -0
- package/dist/toolkits/google-forms/tools/set-publish-settings.d.ts +8 -0
- package/dist/toolkits/google-forms/tools/set-publish-settings.js +43 -0
- package/dist/toolkits/google-forms/tools/utils.d.ts +15 -0
- package/dist/toolkits/google-forms/tools/utils.js +33 -0
- package/dist/toolkits/google-meet/icon.d.ts +5 -0
- package/dist/toolkits/google-meet/icon.js +153 -0
- package/dist/toolkits/google-meet/manifest.d.ts +3 -0
- package/dist/toolkits/google-meet/manifest.js +44 -0
- package/dist/toolkits/google-meet/tools/create-meet.d.ts +5 -0
- package/dist/toolkits/google-meet/tools/create-meet.js +33 -0
- package/dist/toolkits/google-meet/tools/end-active-conference.d.ts +26 -0
- package/dist/toolkits/google-meet/tools/end-active-conference.js +37 -0
- package/dist/toolkits/google-meet/tools/get-conference-record-by-name.d.ts +5 -0
- package/dist/toolkits/google-meet/tools/get-conference-record-by-name.js +30 -0
- package/dist/toolkits/google-meet/tools/get-meet.d.ts +5 -0
- package/dist/toolkits/google-meet/tools/get-meet.js +30 -0
- package/dist/toolkits/google-meet/tools/get-participant-session.d.ts +5 -0
- package/dist/toolkits/google-meet/tools/get-participant-session.js +29 -0
- package/dist/toolkits/google-meet/tools/get-recordings-by-conference-record-id.d.ts +7 -0
- package/dist/toolkits/google-meet/tools/get-recordings-by-conference-record-id.js +32 -0
- package/dist/toolkits/google-meet/tools/get-transcript-entry.d.ts +5 -0
- package/dist/toolkits/google-meet/tools/get-transcript-entry.js +29 -0
- package/dist/toolkits/google-meet/tools/get-transcript.d.ts +5 -0
- package/dist/toolkits/google-meet/tools/get-transcript.js +29 -0
- package/dist/toolkits/google-meet/tools/get-transcripts-by-conference-record-id.d.ts +7 -0
- package/dist/toolkits/google-meet/tools/get-transcripts-by-conference-record-id.js +32 -0
- package/dist/toolkits/google-meet/tools/index.d.ts +156 -0
- package/dist/toolkits/google-meet/tools/index.js +125 -0
- package/dist/toolkits/google-meet/tools/list-conference-records.d.ts +7 -0
- package/dist/toolkits/google-meet/tools/list-conference-records.js +31 -0
- package/dist/toolkits/google-meet/tools/list-participant-sessions.d.ts +9 -0
- package/dist/toolkits/google-meet/tools/list-participant-sessions.js +34 -0
- package/dist/toolkits/google-meet/tools/list-participants.d.ts +8 -0
- package/dist/toolkits/google-meet/tools/list-participants.js +35 -0
- package/dist/toolkits/google-meet/tools/list-recordings.d.ts +7 -0
- package/dist/toolkits/google-meet/tools/list-recordings.js +34 -0
- package/dist/toolkits/google-meet/tools/list-transcript-entries.d.ts +8 -0
- package/dist/toolkits/google-meet/tools/list-transcript-entries.js +33 -0
- package/dist/toolkits/google-meet/tools/update-space.d.ts +7 -0
- package/dist/toolkits/google-meet/tools/update-space.js +42 -0
- package/dist/toolkits/google-meet/tools/utils.d.ts +14 -0
- package/dist/toolkits/google-meet/tools/utils.js +39 -0
- package/dist/toolkits/google-search-console/icon.d.ts +5 -0
- package/dist/toolkits/google-search-console/icon.js +6 -0
- package/dist/toolkits/google-search-console/manifest.d.ts +3 -0
- package/dist/toolkits/google-search-console/manifest.js +46 -0
- package/dist/toolkits/google-search-console/tools/add-site.d.ts +29 -0
- package/dist/toolkits/google-search-console/tools/add-site.js +27 -0
- package/dist/toolkits/google-search-console/tools/delete-site.d.ts +26 -0
- package/dist/toolkits/google-search-console/tools/delete-site.js +27 -0
- package/dist/toolkits/google-search-console/tools/get-site.d.ts +5 -0
- package/dist/toolkits/google-search-console/tools/get-site.js +27 -0
- package/dist/toolkits/google-search-console/tools/get-sitemap.d.ts +6 -0
- package/dist/toolkits/google-search-console/tools/get-sitemap.js +28 -0
- package/dist/toolkits/google-search-console/tools/index.d.ts +178 -0
- package/dist/toolkits/google-search-console/tools/index.js +77 -0
- package/dist/toolkits/google-search-console/tools/inspect-url.d.ts +7 -0
- package/dist/toolkits/google-search-console/tools/inspect-url.js +41 -0
- package/dist/toolkits/google-search-console/tools/list-sitemaps.d.ts +6 -0
- package/dist/toolkits/google-search-console/tools/list-sitemaps.js +31 -0
- package/dist/toolkits/google-search-console/tools/list-sites.d.ts +4 -0
- package/dist/toolkits/google-search-console/tools/list-sites.js +26 -0
- package/dist/toolkits/google-search-console/tools/search-analytics-query.d.ts +14 -0
- package/dist/toolkits/google-search-console/tools/search-analytics-query.js +73 -0
- package/dist/toolkits/google-search-console/tools/submit-sitemap.d.ts +33 -0
- package/dist/toolkits/google-search-console/tools/submit-sitemap.js +28 -0
- package/dist/toolkits/google-search-console/tools/utils.d.ts +24 -0
- package/dist/toolkits/google-search-console/tools/utils.js +57 -0
- package/dist/toolkits/google-slides/icon.d.ts +5 -0
- package/dist/toolkits/google-slides/icon.js +6 -0
- package/dist/toolkits/google-slides/manifest.d.ts +3 -0
- package/dist/toolkits/google-slides/manifest.js +46 -0
- package/dist/toolkits/google-slides/tools/create-presentation.d.ts +8 -0
- package/dist/toolkits/google-slides/tools/create-presentation.js +42 -0
- package/dist/toolkits/google-slides/tools/create-slides-markdown.d.ts +56 -0
- package/dist/toolkits/google-slides/tools/create-slides-markdown.js +70 -0
- package/dist/toolkits/google-slides/tools/get-page-thumbnail2.d.ts +8 -0
- package/dist/toolkits/google-slides/tools/get-page-thumbnail2.js +41 -0
- package/dist/toolkits/google-slides/tools/index.d.ts +139 -0
- package/dist/toolkits/google-slides/tools/index.js +69 -0
- package/dist/toolkits/google-slides/tools/markdown.d.ts +6 -0
- package/dist/toolkits/google-slides/tools/markdown.js +222 -0
- package/dist/toolkits/google-slides/tools/presentations-batch-update.d.ts +8 -0
- package/dist/toolkits/google-slides/tools/presentations-batch-update.js +58 -0
- package/dist/toolkits/google-slides/tools/presentations-copy-from-template.d.ts +7 -0
- package/dist/toolkits/google-slides/tools/presentations-copy-from-template.js +42 -0
- package/dist/toolkits/google-slides/tools/presentations-get.d.ts +7 -0
- package/dist/toolkits/google-slides/tools/presentations-get.js +58 -0
- package/dist/toolkits/google-slides/tools/presentations-pages-get-thumbnail.d.ts +8 -0
- package/dist/toolkits/google-slides/tools/presentations-pages-get-thumbnail.js +41 -0
- package/dist/toolkits/google-slides/tools/presentations-pages-get.d.ts +6 -0
- package/dist/toolkits/google-slides/tools/presentations-pages-get.js +28 -0
- package/dist/toolkits/google-slides/tools/utils.d.ts +22 -0
- package/dist/toolkits/google-slides/tools/utils.js +51 -0
- package/dist/toolkits/grafana/icon.d.ts +5 -0
- package/dist/toolkits/grafana/icon.js +6 -0
- package/dist/toolkits/grafana/manifest.d.ts +3 -0
- package/dist/toolkits/grafana/manifest.js +31 -0
- package/dist/toolkits/grafana/tools/create-otlp-v1-logs.d.ts +23 -0
- package/dist/toolkits/grafana/tools/create-otlp-v1-logs.js +41 -0
- package/dist/toolkits/grafana/tools/get-distributor-ha-tracker.d.ts +22 -0
- package/dist/toolkits/grafana/tools/get-distributor-ha-tracker.js +33 -0
- package/dist/toolkits/grafana/tools/get-health.d.ts +4 -0
- package/dist/toolkits/grafana/tools/get-health.js +32 -0
- package/dist/toolkits/grafana/tools/get-index-gateway-ring.d.ts +22 -0
- package/dist/toolkits/grafana/tools/get-index-gateway-ring.js +33 -0
- package/dist/toolkits/grafana/tools/get-overrides-exporter-ring.d.ts +22 -0
- package/dist/toolkits/grafana/tools/get-overrides-exporter-ring.js +33 -0
- package/dist/toolkits/grafana/tools/get-ruler-ring.d.ts +22 -0
- package/dist/toolkits/grafana/tools/get-ruler-ring.js +33 -0
- package/dist/toolkits/grafana/tools/get-status.d.ts +22 -0
- package/dist/toolkits/grafana/tools/get-status.js +35 -0
- package/dist/toolkits/grafana/tools/get-store-gateway-tenants.d.ts +25 -0
- package/dist/toolkits/grafana/tools/get-store-gateway-tenants.js +33 -0
- package/dist/toolkits/grafana/tools/index.d.ts +183 -0
- package/dist/toolkits/grafana/tools/index.js +93 -0
- package/dist/toolkits/grafana/tools/post-acs.d.ts +16 -0
- package/dist/toolkits/grafana/tools/post-acs.js +44 -0
- package/dist/toolkits/grafana/tools/query-public-dashboard.d.ts +29 -0
- package/dist/toolkits/grafana/tools/query-public-dashboard.js +70 -0
- package/dist/toolkits/grafana/tools/retrieve-jwks.d.ts +4 -0
- package/dist/toolkits/grafana/tools/retrieve-jwks.js +32 -0
- package/dist/toolkits/grafana/tools/utils.d.ts +21 -0
- package/dist/toolkits/grafana/tools/utils.js +48 -0
- package/package.json +2 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export const batchDeleteMessages = tool({
|
|
4
|
+
description: 'Permanently delete multiple Gmail messages in one request. This bypasses Trash and cannot be undone.',
|
|
5
|
+
inputSchema: z.object({
|
|
6
|
+
gmailToken: z.string().optional().describe('Injected by system; do not provide'),
|
|
7
|
+
messageIds: z.array(z.string()).min(1).max(1000).describe('Message IDs to permanently delete'),
|
|
8
|
+
}),
|
|
9
|
+
execute: async ({ gmailToken, messageIds }) => {
|
|
10
|
+
try {
|
|
11
|
+
const response = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/messages/batchDelete', {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
headers: {
|
|
14
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
},
|
|
17
|
+
body: JSON.stringify({ ids: messageIds }),
|
|
18
|
+
});
|
|
19
|
+
if (!response.ok) {
|
|
20
|
+
const error = await response.json();
|
|
21
|
+
return { error: 'Failed to batch delete messages', details: error };
|
|
22
|
+
}
|
|
23
|
+
return { success: true, deletedCount: messageIds.length, messageIds };
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return {
|
|
27
|
+
error: 'Error batch deleting messages',
|
|
28
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=batch-delete-messages.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare const batchModifyMessages: import("ai").Tool<{
|
|
2
|
+
messageIds: string[];
|
|
3
|
+
gmailToken?: string | undefined;
|
|
4
|
+
addLabelIds?: string[] | undefined;
|
|
5
|
+
removeLabelIds?: string[] | undefined;
|
|
6
|
+
}, {
|
|
7
|
+
error: string;
|
|
8
|
+
details: any;
|
|
9
|
+
success?: undefined;
|
|
10
|
+
modifiedCount?: undefined;
|
|
11
|
+
messageIds?: undefined;
|
|
12
|
+
addLabelIds?: undefined;
|
|
13
|
+
removeLabelIds?: undefined;
|
|
14
|
+
message?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
success: boolean;
|
|
17
|
+
modifiedCount: number;
|
|
18
|
+
messageIds: string[];
|
|
19
|
+
addLabelIds: string[];
|
|
20
|
+
removeLabelIds: string[];
|
|
21
|
+
error?: undefined;
|
|
22
|
+
details?: undefined;
|
|
23
|
+
message?: undefined;
|
|
24
|
+
} | {
|
|
25
|
+
error: string;
|
|
26
|
+
message: string;
|
|
27
|
+
details?: undefined;
|
|
28
|
+
success?: undefined;
|
|
29
|
+
modifiedCount?: undefined;
|
|
30
|
+
messageIds?: undefined;
|
|
31
|
+
addLabelIds?: undefined;
|
|
32
|
+
removeLabelIds?: undefined;
|
|
33
|
+
}>;
|
|
34
|
+
//# sourceMappingURL=batch-modify-messages.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export const batchModifyMessages = tool({
|
|
4
|
+
description: 'Add or remove labels on multiple Gmail messages in one request.',
|
|
5
|
+
inputSchema: z.object({
|
|
6
|
+
gmailToken: z.string().optional().describe('Injected by system; do not provide'),
|
|
7
|
+
messageIds: z.array(z.string()).min(1).max(1000).describe('Message IDs to modify'),
|
|
8
|
+
addLabelIds: z.array(z.string()).optional().describe('Label IDs to add'),
|
|
9
|
+
removeLabelIds: z.array(z.string()).optional().describe('Label IDs to remove'),
|
|
10
|
+
}),
|
|
11
|
+
execute: async ({ gmailToken, messageIds, addLabelIds = [], removeLabelIds = [] }) => {
|
|
12
|
+
try {
|
|
13
|
+
const response = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/messages/batchModify', {
|
|
14
|
+
method: 'POST',
|
|
15
|
+
headers: {
|
|
16
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
17
|
+
'Content-Type': 'application/json',
|
|
18
|
+
},
|
|
19
|
+
body: JSON.stringify({
|
|
20
|
+
ids: messageIds,
|
|
21
|
+
addLabelIds,
|
|
22
|
+
removeLabelIds,
|
|
23
|
+
}),
|
|
24
|
+
});
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
const error = await response.json();
|
|
27
|
+
return { error: 'Failed to batch modify messages', details: error };
|
|
28
|
+
}
|
|
29
|
+
return { success: true, modifiedCount: messageIds.length, messageIds, addLabelIds, removeLabelIds };
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return {
|
|
33
|
+
error: 'Error batch modifying messages',
|
|
34
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=batch-modify-messages.js.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const createFilter: import("ai").Tool<{
|
|
2
|
+
criteria: Record<string, any>;
|
|
3
|
+
action: Record<string, any>;
|
|
4
|
+
gmailToken?: string | undefined;
|
|
5
|
+
}, {
|
|
6
|
+
error: string;
|
|
7
|
+
details: any;
|
|
8
|
+
success?: undefined;
|
|
9
|
+
filter?: undefined;
|
|
10
|
+
message?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
success: boolean;
|
|
13
|
+
filter: any;
|
|
14
|
+
error?: undefined;
|
|
15
|
+
details?: undefined;
|
|
16
|
+
message?: undefined;
|
|
17
|
+
} | {
|
|
18
|
+
error: string;
|
|
19
|
+
message: string;
|
|
20
|
+
details?: undefined;
|
|
21
|
+
success?: undefined;
|
|
22
|
+
filter?: undefined;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=create-filter.d.ts.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export const createFilter = tool({
|
|
4
|
+
description: 'Create a Gmail filter with criteria and actions such as applying labels, forwarding, archiving, or marking read.',
|
|
5
|
+
inputSchema: z.object({
|
|
6
|
+
gmailToken: z.string().optional().describe('Injected by system; do not provide'),
|
|
7
|
+
criteria: z.record(z.any()).describe('Gmail filter criteria object, e.g. { from, to, subject, query, negatedQuery }'),
|
|
8
|
+
action: z.record(z.any()).describe('Gmail filter action object, e.g. { addLabelIds, removeLabelIds, forward }'),
|
|
9
|
+
}),
|
|
10
|
+
execute: async ({ gmailToken, criteria, action }) => {
|
|
11
|
+
try {
|
|
12
|
+
const response = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/settings/filters', {
|
|
13
|
+
method: 'POST',
|
|
14
|
+
headers: {
|
|
15
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
16
|
+
'Content-Type': 'application/json',
|
|
17
|
+
},
|
|
18
|
+
body: JSON.stringify({ criteria, action }),
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
const error = await response.json();
|
|
22
|
+
return { error: 'Failed to create filter', details: error };
|
|
23
|
+
}
|
|
24
|
+
const data = await response.json();
|
|
25
|
+
return { success: true, filter: data };
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
return {
|
|
29
|
+
error: 'Error creating filter',
|
|
30
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=create-filter.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const createLabel: import("ai").Tool<{
|
|
2
|
+
labelName: string;
|
|
3
|
+
gmailToken?: string | undefined;
|
|
4
|
+
labelListVisibility?: "labelShow" | "labelShowIfUnread" | "labelHide" | undefined;
|
|
5
|
+
messageListVisibility?: "show" | "hide" | undefined;
|
|
6
|
+
textColor?: string | undefined;
|
|
7
|
+
backgroundColor?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
error: string;
|
|
10
|
+
details: any;
|
|
11
|
+
success?: undefined;
|
|
12
|
+
label?: undefined;
|
|
13
|
+
message?: undefined;
|
|
14
|
+
} | {
|
|
15
|
+
success: boolean;
|
|
16
|
+
label: any;
|
|
17
|
+
error?: undefined;
|
|
18
|
+
details?: undefined;
|
|
19
|
+
message?: undefined;
|
|
20
|
+
} | {
|
|
21
|
+
error: string;
|
|
22
|
+
message: string;
|
|
23
|
+
details?: undefined;
|
|
24
|
+
success?: undefined;
|
|
25
|
+
label?: undefined;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=create-label.d.ts.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const visibilitySchema = z.enum(['labelShow', 'labelShowIfUnread', 'labelHide']).optional();
|
|
4
|
+
const messageVisibilitySchema = z.enum(['show', 'hide']).optional();
|
|
5
|
+
export const createLabel = tool({
|
|
6
|
+
description: 'Create a new user label in Gmail.',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
gmailToken: z.string().optional().describe('Injected by system; do not provide'),
|
|
9
|
+
labelName: z.string().min(1).describe('Display name for the new label'),
|
|
10
|
+
labelListVisibility: visibilitySchema.describe('How the label appears in the label list'),
|
|
11
|
+
messageListVisibility: messageVisibilitySchema.describe('How messages with this label appear in message lists'),
|
|
12
|
+
textColor: z.string().optional().describe('Optional label text color hex code'),
|
|
13
|
+
backgroundColor: z.string().optional().describe('Optional label background color hex code'),
|
|
14
|
+
}),
|
|
15
|
+
execute: async ({ gmailToken, labelName, labelListVisibility, messageListVisibility, textColor, backgroundColor }) => {
|
|
16
|
+
try {
|
|
17
|
+
const color = textColor || backgroundColor ? { textColor, backgroundColor } : undefined;
|
|
18
|
+
const response = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/labels', {
|
|
19
|
+
method: 'POST',
|
|
20
|
+
headers: {
|
|
21
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
22
|
+
'Content-Type': 'application/json',
|
|
23
|
+
},
|
|
24
|
+
body: JSON.stringify({
|
|
25
|
+
name: labelName,
|
|
26
|
+
labelListVisibility,
|
|
27
|
+
messageListVisibility,
|
|
28
|
+
color,
|
|
29
|
+
}),
|
|
30
|
+
});
|
|
31
|
+
if (!response.ok) {
|
|
32
|
+
const error = await response.json();
|
|
33
|
+
return { error: 'Failed to create label', details: error };
|
|
34
|
+
}
|
|
35
|
+
const data = await response.json();
|
|
36
|
+
return { success: true, label: data };
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
return {
|
|
40
|
+
error: 'Error creating label',
|
|
41
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=create-label.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const deleteFilter: import("ai").Tool<{
|
|
2
|
+
filterId: string;
|
|
3
|
+
gmailToken?: string | undefined;
|
|
4
|
+
}, {
|
|
5
|
+
error: string;
|
|
6
|
+
details: any;
|
|
7
|
+
success?: undefined;
|
|
8
|
+
filterId?: undefined;
|
|
9
|
+
message?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
success: boolean;
|
|
12
|
+
filterId: string;
|
|
13
|
+
error?: undefined;
|
|
14
|
+
details?: undefined;
|
|
15
|
+
message?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
error: string;
|
|
18
|
+
message: string;
|
|
19
|
+
details?: undefined;
|
|
20
|
+
success?: undefined;
|
|
21
|
+
filterId?: undefined;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=delete-filter.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export const deleteFilter = tool({
|
|
4
|
+
description: 'Permanently delete a Gmail filter by ID.',
|
|
5
|
+
inputSchema: z.object({
|
|
6
|
+
gmailToken: z.string().optional().describe('Injected by system; do not provide'),
|
|
7
|
+
filterId: z.string().describe('The filter ID to delete'),
|
|
8
|
+
}),
|
|
9
|
+
execute: async ({ gmailToken, filterId }) => {
|
|
10
|
+
try {
|
|
11
|
+
const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/settings/filters/${filterId}`, {
|
|
12
|
+
method: 'DELETE',
|
|
13
|
+
headers: {
|
|
14
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const error = await response.json();
|
|
19
|
+
return { error: 'Failed to delete filter', details: error };
|
|
20
|
+
}
|
|
21
|
+
return { success: true, filterId };
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return {
|
|
25
|
+
error: 'Error deleting filter',
|
|
26
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=delete-filter.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const deleteLabel: import("ai").Tool<{
|
|
2
|
+
labelId: string;
|
|
3
|
+
gmailToken?: string | undefined;
|
|
4
|
+
}, {
|
|
5
|
+
error: string;
|
|
6
|
+
details: any;
|
|
7
|
+
success?: undefined;
|
|
8
|
+
labelId?: undefined;
|
|
9
|
+
message?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
success: boolean;
|
|
12
|
+
labelId: string;
|
|
13
|
+
error?: undefined;
|
|
14
|
+
details?: undefined;
|
|
15
|
+
message?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
error: string;
|
|
18
|
+
message: string;
|
|
19
|
+
details?: undefined;
|
|
20
|
+
success?: undefined;
|
|
21
|
+
labelId?: undefined;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=delete-label.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export const deleteLabel = tool({
|
|
4
|
+
description: 'Permanently delete a user-created Gmail label from the account.',
|
|
5
|
+
inputSchema: z.object({
|
|
6
|
+
gmailToken: z.string().optional().describe('Injected by system; do not provide'),
|
|
7
|
+
labelId: z.string().describe('The label ID to delete, e.g. Label_123'),
|
|
8
|
+
}),
|
|
9
|
+
execute: async ({ gmailToken, labelId }) => {
|
|
10
|
+
try {
|
|
11
|
+
const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/labels/${labelId}`, {
|
|
12
|
+
method: 'DELETE',
|
|
13
|
+
headers: {
|
|
14
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const error = await response.json();
|
|
19
|
+
return { error: 'Failed to delete label', details: error };
|
|
20
|
+
}
|
|
21
|
+
return { success: true, labelId };
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return {
|
|
25
|
+
error: 'Error deleting label',
|
|
26
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=delete-label.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const deleteMessage: import("ai").Tool<{
|
|
2
|
+
id: string;
|
|
3
|
+
gmailToken?: string | undefined;
|
|
4
|
+
}, {
|
|
5
|
+
error: string;
|
|
6
|
+
details: any;
|
|
7
|
+
success?: undefined;
|
|
8
|
+
messageId?: undefined;
|
|
9
|
+
message?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
success: boolean;
|
|
12
|
+
messageId: string;
|
|
13
|
+
error?: undefined;
|
|
14
|
+
details?: undefined;
|
|
15
|
+
message?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
error: string;
|
|
18
|
+
message: string;
|
|
19
|
+
details?: undefined;
|
|
20
|
+
success?: undefined;
|
|
21
|
+
messageId?: undefined;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=delete-message.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export const deleteMessage = tool({
|
|
4
|
+
description: 'Permanently delete a Gmail message by ID. This bypasses Trash and cannot be undone.',
|
|
5
|
+
inputSchema: z.object({
|
|
6
|
+
gmailToken: z.string().optional().describe('Injected by system; do not provide'),
|
|
7
|
+
id: z.string().describe('The message ID to permanently delete'),
|
|
8
|
+
}),
|
|
9
|
+
execute: async ({ gmailToken, id }) => {
|
|
10
|
+
try {
|
|
11
|
+
const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${id}`, {
|
|
12
|
+
method: 'DELETE',
|
|
13
|
+
headers: {
|
|
14
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const error = await response.json();
|
|
19
|
+
return { error: 'Failed to delete message', details: error };
|
|
20
|
+
}
|
|
21
|
+
return { success: true, messageId: id };
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return {
|
|
25
|
+
error: 'Error deleting message',
|
|
26
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=delete-message.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const deleteThread: import("ai").Tool<{
|
|
2
|
+
id: string;
|
|
3
|
+
gmailToken?: string | undefined;
|
|
4
|
+
}, {
|
|
5
|
+
error: string;
|
|
6
|
+
details: any;
|
|
7
|
+
success?: undefined;
|
|
8
|
+
threadId?: undefined;
|
|
9
|
+
message?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
success: boolean;
|
|
12
|
+
threadId: string;
|
|
13
|
+
error?: undefined;
|
|
14
|
+
details?: undefined;
|
|
15
|
+
message?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
error: string;
|
|
18
|
+
message: string;
|
|
19
|
+
details?: undefined;
|
|
20
|
+
success?: undefined;
|
|
21
|
+
threadId?: undefined;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=delete-thread.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export const deleteThread = tool({
|
|
4
|
+
description: 'Permanently delete a Gmail thread and all of its messages. This cannot be undone.',
|
|
5
|
+
inputSchema: z.object({
|
|
6
|
+
gmailToken: z.string().optional().describe('Injected by system; do not provide'),
|
|
7
|
+
id: z.string().describe('The thread ID to permanently delete'),
|
|
8
|
+
}),
|
|
9
|
+
execute: async ({ gmailToken, id }) => {
|
|
10
|
+
try {
|
|
11
|
+
const response = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/threads/${id}`, {
|
|
12
|
+
method: 'DELETE',
|
|
13
|
+
headers: {
|
|
14
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const error = await response.json();
|
|
19
|
+
return { error: 'Failed to delete thread', details: error };
|
|
20
|
+
}
|
|
21
|
+
return { success: true, threadId: id };
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return {
|
|
25
|
+
error: 'Error deleting thread',
|
|
26
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=delete-thread.js.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const forwardMessage: import("ai").Tool<{
|
|
2
|
+
messageId: string;
|
|
3
|
+
recipients: string;
|
|
4
|
+
includeAttachments: boolean;
|
|
5
|
+
gmailToken?: string | undefined;
|
|
6
|
+
cc?: string | undefined;
|
|
7
|
+
bcc?: string | undefined;
|
|
8
|
+
additionalText?: string | undefined;
|
|
9
|
+
}, {
|
|
10
|
+
error: string;
|
|
11
|
+
details: any;
|
|
12
|
+
success?: undefined;
|
|
13
|
+
messageId?: undefined;
|
|
14
|
+
threadId?: undefined;
|
|
15
|
+
forwardedMessageId?: undefined;
|
|
16
|
+
attachmentCount?: undefined;
|
|
17
|
+
message?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
success: boolean;
|
|
20
|
+
messageId: any;
|
|
21
|
+
threadId: any;
|
|
22
|
+
forwardedMessageId: string;
|
|
23
|
+
attachmentCount: number;
|
|
24
|
+
error?: undefined;
|
|
25
|
+
details?: undefined;
|
|
26
|
+
message?: undefined;
|
|
27
|
+
} | {
|
|
28
|
+
error: string;
|
|
29
|
+
message: string;
|
|
30
|
+
details?: undefined;
|
|
31
|
+
success?: undefined;
|
|
32
|
+
messageId?: undefined;
|
|
33
|
+
threadId?: undefined;
|
|
34
|
+
forwardedMessageId?: undefined;
|
|
35
|
+
attachmentCount?: undefined;
|
|
36
|
+
}>;
|
|
37
|
+
//# sourceMappingURL=forward-message.d.ts.map
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { tool } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { collectAttachments, encodeMultipartMessage, encodeRFC822Message, extractBodyFromPayload, getHeaderValue, } from './utils.js';
|
|
4
|
+
export const forwardMessage = tool({
|
|
5
|
+
description: 'Forward an existing Gmail message to one or more recipients, optionally preserving attachments.',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
gmailToken: z.string().optional().describe('Injected by system; do not provide'),
|
|
8
|
+
messageId: z.string().describe('The message ID to forward'),
|
|
9
|
+
recipients: z.string().describe('Recipient email address(es), comma-separated'),
|
|
10
|
+
cc: z.string().optional().describe('Optional CC recipient email address(es), comma-separated'),
|
|
11
|
+
bcc: z.string().optional().describe('Optional BCC recipient email address(es), comma-separated'),
|
|
12
|
+
additionalText: z.string().optional().describe('Optional text to add above the forwarded message'),
|
|
13
|
+
includeAttachments: z.boolean().optional().default(true).describe('Whether to copy original attachments into the forwarded message'),
|
|
14
|
+
}),
|
|
15
|
+
execute: async ({ gmailToken, messageId, recipients, cc, bcc, additionalText, includeAttachments }) => {
|
|
16
|
+
try {
|
|
17
|
+
const messageResponse = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}?format=full`, {
|
|
18
|
+
headers: {
|
|
19
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
if (!messageResponse.ok) {
|
|
23
|
+
const error = await messageResponse.json();
|
|
24
|
+
return { error: 'Failed to fetch message to forward', details: error };
|
|
25
|
+
}
|
|
26
|
+
const originalMessage = await messageResponse.json();
|
|
27
|
+
const headers = originalMessage.payload?.headers || [];
|
|
28
|
+
const originalSubject = getHeaderValue(headers, 'subject') || '(no subject)';
|
|
29
|
+
const originalFrom = getHeaderValue(headers, 'from') || '';
|
|
30
|
+
const originalTo = getHeaderValue(headers, 'to') || '';
|
|
31
|
+
const originalDate = getHeaderValue(headers, 'date') || '';
|
|
32
|
+
const originalBody = extractBodyFromPayload(originalMessage.payload);
|
|
33
|
+
const subject = originalSubject.toLowerCase().startsWith('fwd:')
|
|
34
|
+
? originalSubject
|
|
35
|
+
: `Fwd: ${originalSubject}`;
|
|
36
|
+
const body = [
|
|
37
|
+
additionalText || '',
|
|
38
|
+
additionalText ? '' : null,
|
|
39
|
+
'---------- Forwarded message ---------',
|
|
40
|
+
originalFrom ? `From: ${originalFrom}` : null,
|
|
41
|
+
originalDate ? `Date: ${originalDate}` : null,
|
|
42
|
+
originalSubject ? `Subject: ${originalSubject}` : null,
|
|
43
|
+
originalTo ? `To: ${originalTo}` : null,
|
|
44
|
+
'',
|
|
45
|
+
originalBody,
|
|
46
|
+
].filter((line) => line !== null).join('\n');
|
|
47
|
+
const attachments = [];
|
|
48
|
+
if (includeAttachments) {
|
|
49
|
+
for (const attachment of collectAttachments(originalMessage.payload)) {
|
|
50
|
+
const attachmentResponse = await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}/attachments/${attachment.attachmentId}`, {
|
|
51
|
+
headers: {
|
|
52
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
if (!attachmentResponse.ok) {
|
|
56
|
+
const error = await attachmentResponse.json();
|
|
57
|
+
return { error: `Failed to fetch attachment ${attachment.filename}`, details: error };
|
|
58
|
+
}
|
|
59
|
+
const attachmentData = await attachmentResponse.json();
|
|
60
|
+
attachments.push({
|
|
61
|
+
filename: attachment.filename,
|
|
62
|
+
mimeType: attachment.mimeType,
|
|
63
|
+
data: attachmentData.data,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const raw = attachments.length > 0
|
|
68
|
+
? encodeMultipartMessage({
|
|
69
|
+
to: recipients,
|
|
70
|
+
subject,
|
|
71
|
+
body,
|
|
72
|
+
cc,
|
|
73
|
+
bcc,
|
|
74
|
+
attachments,
|
|
75
|
+
})
|
|
76
|
+
: encodeRFC822Message({
|
|
77
|
+
to: recipients,
|
|
78
|
+
subject,
|
|
79
|
+
body,
|
|
80
|
+
cc,
|
|
81
|
+
bcc,
|
|
82
|
+
});
|
|
83
|
+
const sendResponse = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/messages/send', {
|
|
84
|
+
method: 'POST',
|
|
85
|
+
headers: {
|
|
86
|
+
Authorization: `Bearer ${gmailToken}`,
|
|
87
|
+
'Content-Type': 'application/json',
|
|
88
|
+
},
|
|
89
|
+
body: JSON.stringify({ raw }),
|
|
90
|
+
});
|
|
91
|
+
if (!sendResponse.ok) {
|
|
92
|
+
const error = await sendResponse.json();
|
|
93
|
+
return { error: 'Failed to forward message', details: error };
|
|
94
|
+
}
|
|
95
|
+
const data = await sendResponse.json();
|
|
96
|
+
return {
|
|
97
|
+
success: true,
|
|
98
|
+
messageId: data.id,
|
|
99
|
+
threadId: data.threadId,
|
|
100
|
+
forwardedMessageId: messageId,
|
|
101
|
+
attachmentCount: attachments.length,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return {
|
|
106
|
+
error: 'Error forwarding message',
|
|
107
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=forward-message.js.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const getAttachment: import("ai").Tool<{
|
|
2
|
+
messageId: string;
|
|
3
|
+
attachmentId: string;
|
|
4
|
+
gmailToken?: string | undefined;
|
|
5
|
+
fileName?: string | undefined;
|
|
6
|
+
}, {
|
|
7
|
+
error: string;
|
|
8
|
+
details: any;
|
|
9
|
+
success?: undefined;
|
|
10
|
+
messageId?: undefined;
|
|
11
|
+
attachmentId?: undefined;
|
|
12
|
+
fileName?: undefined;
|
|
13
|
+
size?: undefined;
|
|
14
|
+
data?: undefined;
|
|
15
|
+
encoding?: undefined;
|
|
16
|
+
message?: undefined;
|
|
17
|
+
} | {
|
|
18
|
+
success: boolean;
|
|
19
|
+
messageId: string;
|
|
20
|
+
attachmentId: string;
|
|
21
|
+
fileName: string | undefined;
|
|
22
|
+
size: any;
|
|
23
|
+
data: any;
|
|
24
|
+
encoding: string;
|
|
25
|
+
error?: undefined;
|
|
26
|
+
details?: undefined;
|
|
27
|
+
message?: undefined;
|
|
28
|
+
} | {
|
|
29
|
+
error: string;
|
|
30
|
+
message: string;
|
|
31
|
+
details?: undefined;
|
|
32
|
+
success?: undefined;
|
|
33
|
+
messageId?: undefined;
|
|
34
|
+
attachmentId?: undefined;
|
|
35
|
+
fileName?: undefined;
|
|
36
|
+
size?: undefined;
|
|
37
|
+
data?: undefined;
|
|
38
|
+
encoding?: undefined;
|
|
39
|
+
}>;
|
|
40
|
+
//# sourceMappingURL=get-attachment.d.ts.map
|