@rnsk/toolkits 0.0.8 → 0.0.9
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 +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +17 -1
- package/dist/toolkits/bitbucket/icon.d.ts +5 -0
- package/dist/toolkits/bitbucket/icon.js +6 -0
- package/dist/toolkits/bitbucket/manifest.d.ts +3 -0
- package/dist/toolkits/bitbucket/manifest.js +56 -0
- package/dist/toolkits/bitbucket/tools/client.d.ts +38 -0
- package/dist/toolkits/bitbucket/tools/client.js +87 -0
- package/dist/toolkits/bitbucket/tools/commits.d.ts +149 -0
- package/dist/toolkits/bitbucket/tools/commits.js +444 -0
- package/dist/toolkits/bitbucket/tools/index.d.ts +1093 -0
- package/dist/toolkits/bitbucket/tools/index.js +770 -0
- package/dist/toolkits/bitbucket/tools/issues.d.ts +73 -0
- package/dist/toolkits/bitbucket/tools/issues.js +234 -0
- package/dist/toolkits/bitbucket/tools/pipelines.d.ts +124 -0
- package/dist/toolkits/bitbucket/tools/pipelines.js +446 -0
- package/dist/toolkits/bitbucket/tools/pull-requests.d.ts +174 -0
- package/dist/toolkits/bitbucket/tools/pull-requests.js +541 -0
- package/dist/toolkits/bitbucket/tools/reports.d.ts +84 -0
- package/dist/toolkits/bitbucket/tools/reports.js +213 -0
- package/dist/toolkits/bitbucket/tools/repositories.d.ts +156 -0
- package/dist/toolkits/bitbucket/tools/repositories.js +531 -0
- package/dist/toolkits/bitbucket/tools/search.d.ts +17 -0
- package/dist/toolkits/bitbucket/tools/search.js +67 -0
- package/dist/toolkits/bitbucket/tools/snippets.d.ts +34 -0
- package/dist/toolkits/bitbucket/tools/snippets.js +122 -0
- package/dist/toolkits/bitbucket/tools/users-workspaces.d.ts +65 -0
- package/dist/toolkits/bitbucket/tools/users-workspaces.js +294 -0
- package/dist/toolkits/discord/icon.d.ts +5 -0
- package/dist/toolkits/discord/icon.js +12 -0
- package/dist/toolkits/discord/manifest.d.ts +3 -0
- package/dist/toolkits/discord/manifest.js +52 -0
- package/dist/toolkits/discord/tools/applications.d.ts +79 -0
- package/dist/toolkits/discord/tools/applications.js +216 -0
- package/dist/toolkits/discord/tools/client.d.ts +22 -0
- package/dist/toolkits/discord/tools/client.js +69 -0
- package/dist/toolkits/discord/tools/guilds.d.ts +39 -0
- package/dist/toolkits/discord/tools/guilds.js +123 -0
- package/dist/toolkits/discord/tools/index.d.ts +222 -0
- package/dist/toolkits/discord/tools/index.js +170 -0
- package/dist/toolkits/discord/tools/misc.d.ts +7 -0
- package/dist/toolkits/discord/tools/misc.js +40 -0
- package/dist/toolkits/discord/tools/users.d.ts +28 -0
- package/dist/toolkits/discord/tools/users.js +128 -0
- package/dist/toolkits/figma/tools/index.d.ts +1 -1
- package/dist/toolkits/figma/tools/render-images-of-file-nodes.d.ts +1 -1
- package/dist/toolkits/gitlab/icon.d.ts +5 -0
- package/dist/toolkits/gitlab/icon.js +6 -0
- package/dist/toolkits/gitlab/manifest.d.ts +3 -0
- package/dist/toolkits/gitlab/manifest.js +36 -0
- package/dist/toolkits/gitlab/tools/client.d.ts +7 -0
- package/dist/toolkits/gitlab/tools/client.js +45 -0
- package/dist/toolkits/gitlab/tools/index.d.ts +306 -0
- package/dist/toolkits/gitlab/tools/index.js +36 -0
- package/dist/toolkits/gitlab/tools/issues.d.ts +45 -0
- package/dist/toolkits/gitlab/tools/issues.js +103 -0
- package/dist/toolkits/gitlab/tools/merge-requests.d.ts +35 -0
- package/dist/toolkits/gitlab/tools/merge-requests.js +91 -0
- package/dist/toolkits/gitlab/tools/pipelines.d.ts +30 -0
- package/dist/toolkits/gitlab/tools/pipelines.js +66 -0
- package/dist/toolkits/gitlab/tools/projects.d.ts +36 -0
- package/dist/toolkits/gitlab/tools/projects.js +94 -0
- package/dist/toolkits/gitlab/tools/repository.d.ts +21 -0
- package/dist/toolkits/gitlab/tools/repository.js +53 -0
- package/dist/toolkits/gitlab/tools/users-groups.d.ts +11 -0
- package/dist/toolkits/gitlab/tools/users-groups.js +30 -0
- package/dist/toolkits/google-ads/tools/get-rmf-report.d.ts +2 -2
- package/dist/toolkits/google-ads/tools/index.d.ts +2 -2
- package/dist/toolkits/google-analytics/icon.d.ts +5 -0
- package/dist/toolkits/google-analytics/icon.js +11 -0
- package/dist/toolkits/google-analytics/manifest.d.ts +3 -0
- package/dist/toolkits/google-analytics/manifest.js +48 -0
- package/dist/toolkits/google-analytics/tools/admin.d.ts +73 -0
- package/dist/toolkits/google-analytics/tools/admin.js +238 -0
- package/dist/toolkits/google-analytics/tools/audiences.d.ts +81 -0
- package/dist/toolkits/google-analytics/tools/audiences.js +190 -0
- package/dist/toolkits/google-analytics/tools/client.d.ts +47 -0
- package/dist/toolkits/google-analytics/tools/client.js +74 -0
- package/dist/toolkits/google-analytics/tools/custom-definitions.d.ts +62 -0
- package/dist/toolkits/google-analytics/tools/custom-definitions.js +106 -0
- package/dist/toolkits/google-analytics/tools/index.d.ts +16 -0
- package/dist/toolkits/google-analytics/tools/index.js +88 -0
- package/dist/toolkits/google-analytics/tools/links.d.ts +22 -0
- package/dist/toolkits/google-analytics/tools/links.js +56 -0
- package/dist/toolkits/google-analytics/tools/measurement.d.ts +3 -0
- package/dist/toolkits/google-analytics/tools/measurement.js +55 -0
- package/dist/toolkits/google-analytics/tools/reports.d.ts +136 -0
- package/dist/toolkits/google-analytics/tools/reports.js +200 -0
- package/dist/toolkits/google-contacts/icon.d.ts +5 -0
- package/dist/toolkits/google-contacts/icon.js +6 -0
- package/dist/toolkits/google-contacts/manifest.d.ts +3 -0
- package/dist/toolkits/google-contacts/manifest.js +48 -0
- package/dist/toolkits/google-contacts/tools/client.d.ts +19 -0
- package/dist/toolkits/google-contacts/tools/client.js +44 -0
- package/dist/toolkits/google-contacts/tools/contacts.d.ts +94 -0
- package/dist/toolkits/google-contacts/tools/contacts.js +273 -0
- package/dist/toolkits/google-contacts/tools/directory.d.ts +36 -0
- package/dist/toolkits/google-contacts/tools/directory.js +99 -0
- package/dist/toolkits/google-contacts/tools/groups.d.ts +68 -0
- package/dist/toolkits/google-contacts/tools/groups.js +169 -0
- package/dist/toolkits/google-contacts/tools/index.d.ts +347 -0
- package/dist/toolkits/google-contacts/tools/index.js +34 -0
- package/dist/toolkits/google-contacts/tools/photos.d.ts +26 -0
- package/dist/toolkits/google-contacts/tools/photos.js +52 -0
- package/dist/toolkits/google-maps/icon.d.ts +5 -0
- package/dist/toolkits/google-maps/icon.js +39 -0
- package/dist/toolkits/google-maps/manifest.d.ts +3 -0
- package/dist/toolkits/google-maps/manifest.js +55 -0
- package/dist/toolkits/google-maps/tools/client.d.ts +27 -0
- package/dist/toolkits/google-maps/tools/client.js +72 -0
- package/dist/toolkits/google-maps/tools/geocode.d.ts +49 -0
- package/dist/toolkits/google-maps/tools/geocode.js +168 -0
- package/dist/toolkits/google-maps/tools/index.d.ts +432 -0
- package/dist/toolkits/google-maps/tools/index.js +31 -0
- package/dist/toolkits/google-maps/tools/misc.d.ts +70 -0
- package/dist/toolkits/google-maps/tools/misc.js +158 -0
- package/dist/toolkits/google-maps/tools/places.d.ts +112 -0
- package/dist/toolkits/google-maps/tools/places.js +185 -0
- package/dist/toolkits/google-maps/tools/routes.d.ts +48 -0
- package/dist/toolkits/google-maps/tools/routes.js +97 -0
- package/dist/toolkits/google-maps/tools/tiles.d.ts +51 -0
- package/dist/toolkits/google-maps/tools/tiles.js +84 -0
- package/dist/toolkits/google-photos/icon.d.ts +5 -0
- package/dist/toolkits/google-photos/icon.js +6 -0
- package/dist/toolkits/google-photos/manifest.d.ts +3 -0
- package/dist/toolkits/google-photos/manifest.js +47 -0
- package/dist/toolkits/google-photos/tools/albums.d.ts +83 -0
- package/dist/toolkits/google-photos/tools/albums.js +180 -0
- package/dist/toolkits/google-photos/tools/client.d.ts +24 -0
- package/dist/toolkits/google-photos/tools/client.js +77 -0
- package/dist/toolkits/google-photos/tools/index.d.ts +261 -0
- package/dist/toolkits/google-photos/tools/index.js +22 -0
- package/dist/toolkits/google-photos/tools/media.d.ts +52 -0
- package/dist/toolkits/google-photos/tools/media.js +142 -0
- package/dist/toolkits/google-photos/tools/uploads.d.ts +58 -0
- package/dist/toolkits/google-photos/tools/uploads.js +107 -0
- package/dist/toolkits/google-tasks/tools/index.d.ts +1 -1
- package/dist/toolkits/google-tasks/tools/update-task-full.d.ts +1 -1
- package/dist/toolkits/groww/tools/index.d.ts +1 -1
- package/dist/toolkits/groww/tools/instruments.d.ts +1 -1
- package/dist/toolkits/reddit/tools/index.d.ts +1 -1
- package/dist/toolkits/reddit/tools/search-across-subreddits.d.ts +1 -1
- package/dist/toolkits/slack/icon.d.ts +5 -0
- package/dist/toolkits/slack/icon.js +20 -0
- package/dist/toolkits/slack/manifest.d.ts +3 -0
- package/dist/toolkits/slack/manifest.js +93 -0
- package/dist/toolkits/slack/tools/admin-apps.d.ts +32 -0
- package/dist/toolkits/slack/tools/admin-apps.js +116 -0
- package/dist/toolkits/slack/tools/admin-conversations.d.ts +62 -0
- package/dist/toolkits/slack/tools/admin-conversations.js +246 -0
- package/dist/toolkits/slack/tools/admin-invites.d.ts +19 -0
- package/dist/toolkits/slack/tools/admin-invites.js +75 -0
- package/dist/toolkits/slack/tools/admin-users.d.ts +52 -0
- package/dist/toolkits/slack/tools/admin-users.js +182 -0
- package/dist/toolkits/slack/tools/audit.d.ts +20 -0
- package/dist/toolkits/slack/tools/audit.js +81 -0
- package/dist/toolkits/slack/tools/calls.d.ts +38 -0
- package/dist/toolkits/slack/tools/calls.js +141 -0
- package/dist/toolkits/slack/tools/canvas.d.ts +24 -0
- package/dist/toolkits/slack/tools/canvas.js +102 -0
- package/dist/toolkits/slack/tools/client.d.ts +22 -0
- package/dist/toolkits/slack/tools/client.js +73 -0
- package/dist/toolkits/slack/tools/conversations.d.ts +131 -0
- package/dist/toolkits/slack/tools/conversations.js +463 -0
- package/dist/toolkits/slack/tools/emoji.d.ts +29 -0
- package/dist/toolkits/slack/tools/emoji.js +118 -0
- package/dist/toolkits/slack/tools/files.d.ts +113 -0
- package/dist/toolkits/slack/tools/files.js +368 -0
- package/dist/toolkits/slack/tools/index.d.ts +28 -0
- package/dist/toolkits/slack/tools/index.js +187 -0
- package/dist/toolkits/slack/tools/messages.d.ts +106 -0
- package/dist/toolkits/slack/tools/messages.js +340 -0
- package/dist/toolkits/slack/tools/misc.d.ts +42 -0
- package/dist/toolkits/slack/tools/misc.js +127 -0
- package/dist/toolkits/slack/tools/reactions-stars-pins.d.ts +69 -0
- package/dist/toolkits/slack/tools/reactions-stars-pins.js +236 -0
- package/dist/toolkits/slack/tools/reminders.d.ts +22 -0
- package/dist/toolkits/slack/tools/reminders.js +83 -0
- package/dist/toolkits/slack/tools/search.d.ts +49 -0
- package/dist/toolkits/slack/tools/search.js +155 -0
- package/dist/toolkits/slack/tools/slack-lists.d.ts +65 -0
- package/dist/toolkits/slack/tools/slack-lists.js +282 -0
- package/dist/toolkits/slack/tools/teams.d.ts +75 -0
- package/dist/toolkits/slack/tools/teams.js +285 -0
- package/dist/toolkits/slack/tools/usergroups.d.ts +56 -0
- package/dist/toolkits/slack/tools/usergroups.js +194 -0
- package/dist/toolkits/slack/tools/users.d.ts +87 -0
- package/dist/toolkits/slack/tools/users.js +396 -0
- package/dist/toolkits/youtube/tools/add-video-to-playlist.d.ts +1 -1
- package/dist/toolkits/youtube/tools/delete-video.d.ts +1 -1
- package/dist/toolkits/youtube/tools/index.d.ts +10 -10
- package/dist/toolkits/youtube/tools/list-caption-track.d.ts +1 -1
- package/dist/toolkits/youtube/tools/list-playlist-items.d.ts +1 -1
- package/dist/toolkits/youtube/tools/list-video-categories.d.ts +1 -1
- package/dist/toolkits/youtube/tools/post-comment.d.ts +1 -1
- package/dist/toolkits/youtube/tools/report-video-abuse.d.ts +1 -1
- package/dist/toolkits/youtube/tools/search-youtube.d.ts +1 -1
- package/dist/toolkits/youtube/tools/update-thumbnail.d.ts +1 -1
- package/dist/toolkits/youtube/tools/update-video.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { addEnrichment, batchAddMediaItems, createAlbum, getAlbum, listAlbums, updateAlbum } from './albums.js';
|
|
2
|
+
import { batchCreateMediaItems, uploadMedia } from './uploads.js';
|
|
3
|
+
import { batchGetMediaItems, downloadMediaItem, listMediaItems, searchMediaItems, updateMediaItem } from './media.js';
|
|
4
|
+
export { addEnrichment, batchAddMediaItems, createAlbum, getAlbum, listAlbums, updateAlbum, batchCreateMediaItems, uploadMedia, batchGetMediaItems, downloadMediaItem, listMediaItems, searchMediaItems, updateMediaItem, };
|
|
5
|
+
export declare const googlePhotosTools: ({
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
tool: import("ai").Tool<{
|
|
9
|
+
title: string;
|
|
10
|
+
googlePhotosToken: string;
|
|
11
|
+
}, any>;
|
|
12
|
+
requiredAuth: "googlePhotosToken";
|
|
13
|
+
scope: "write";
|
|
14
|
+
} | {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
tool: import("ai").Tool<{
|
|
18
|
+
googlePhotosToken: string;
|
|
19
|
+
albumId: string;
|
|
20
|
+
}, any>;
|
|
21
|
+
requiredAuth: "googlePhotosToken";
|
|
22
|
+
scope: "read";
|
|
23
|
+
} | {
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
tool: import("ai").Tool<{
|
|
27
|
+
googlePhotosToken: string;
|
|
28
|
+
pageToken?: string | undefined;
|
|
29
|
+
pageSize?: number | undefined;
|
|
30
|
+
excludeNonAppCreatedData?: boolean | undefined;
|
|
31
|
+
}, any>;
|
|
32
|
+
requiredAuth: "googlePhotosToken";
|
|
33
|
+
scope: "read";
|
|
34
|
+
} | {
|
|
35
|
+
name: string;
|
|
36
|
+
description: string;
|
|
37
|
+
tool: import("ai").Tool<{
|
|
38
|
+
googlePhotosToken: string;
|
|
39
|
+
albumId: string;
|
|
40
|
+
title?: string | undefined;
|
|
41
|
+
coverPhotoMediaItemId?: string | undefined;
|
|
42
|
+
}, any>;
|
|
43
|
+
requiredAuth: "googlePhotosToken";
|
|
44
|
+
scope: "write";
|
|
45
|
+
} | {
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
tool: import("ai").Tool<{
|
|
49
|
+
googlePhotosToken: string;
|
|
50
|
+
albumId: string;
|
|
51
|
+
newEnrichmentItem: {
|
|
52
|
+
textEnrichment?: {
|
|
53
|
+
text: string;
|
|
54
|
+
} | undefined;
|
|
55
|
+
locationEnrichment?: {
|
|
56
|
+
location: {
|
|
57
|
+
latlng: {
|
|
58
|
+
latitude: number;
|
|
59
|
+
longitude: number;
|
|
60
|
+
};
|
|
61
|
+
locationName: string;
|
|
62
|
+
};
|
|
63
|
+
} | undefined;
|
|
64
|
+
mapEnrichment?: {
|
|
65
|
+
origin: {
|
|
66
|
+
latlng: {
|
|
67
|
+
latitude: number;
|
|
68
|
+
longitude: number;
|
|
69
|
+
};
|
|
70
|
+
locationName: string;
|
|
71
|
+
};
|
|
72
|
+
destination: {
|
|
73
|
+
latlng: {
|
|
74
|
+
latitude: number;
|
|
75
|
+
longitude: number;
|
|
76
|
+
};
|
|
77
|
+
locationName: string;
|
|
78
|
+
};
|
|
79
|
+
} | undefined;
|
|
80
|
+
};
|
|
81
|
+
albumPosition: {
|
|
82
|
+
position: "POSITION_TYPE_UNSPECIFIED" | "FIRST_IN_ALBUM" | "LAST_IN_ALBUM" | "AFTER_MEDIA_ITEM" | "AFTER_ENRICHMENT_ITEM";
|
|
83
|
+
relativeMediaItemId?: string | undefined;
|
|
84
|
+
relativeEnrichmentItemId?: string | undefined;
|
|
85
|
+
};
|
|
86
|
+
}, any>;
|
|
87
|
+
requiredAuth: "googlePhotosToken";
|
|
88
|
+
scope: "write";
|
|
89
|
+
} | {
|
|
90
|
+
name: string;
|
|
91
|
+
description: string;
|
|
92
|
+
tool: import("ai").Tool<{
|
|
93
|
+
googlePhotosToken: string;
|
|
94
|
+
albumId: string;
|
|
95
|
+
mediaItemIds: string[];
|
|
96
|
+
}, {
|
|
97
|
+
error: string;
|
|
98
|
+
details: any;
|
|
99
|
+
albumId?: undefined;
|
|
100
|
+
mediaItemsAdded?: undefined;
|
|
101
|
+
message?: undefined;
|
|
102
|
+
} | {
|
|
103
|
+
albumId: string;
|
|
104
|
+
mediaItemsAdded: number;
|
|
105
|
+
message: string;
|
|
106
|
+
error?: undefined;
|
|
107
|
+
details?: undefined;
|
|
108
|
+
} | {
|
|
109
|
+
error: string;
|
|
110
|
+
message: string;
|
|
111
|
+
details?: undefined;
|
|
112
|
+
albumId?: undefined;
|
|
113
|
+
mediaItemsAdded?: undefined;
|
|
114
|
+
}>;
|
|
115
|
+
requiredAuth: "googlePhotosToken";
|
|
116
|
+
scope: "write";
|
|
117
|
+
} | {
|
|
118
|
+
name: string;
|
|
119
|
+
description: string;
|
|
120
|
+
tool: import("ai").Tool<{
|
|
121
|
+
googlePhotosToken: string;
|
|
122
|
+
albumId?: string | undefined;
|
|
123
|
+
albumPosition?: Record<string, any> | undefined;
|
|
124
|
+
urls?: string[] | undefined;
|
|
125
|
+
mediaFiles?: {
|
|
126
|
+
description?: string | undefined;
|
|
127
|
+
fileName?: string | undefined;
|
|
128
|
+
url?: string | undefined;
|
|
129
|
+
}[] | undefined;
|
|
130
|
+
}, {
|
|
131
|
+
error: string;
|
|
132
|
+
details?: undefined;
|
|
133
|
+
newMediaItemResults?: undefined;
|
|
134
|
+
message?: undefined;
|
|
135
|
+
} | {
|
|
136
|
+
error: string;
|
|
137
|
+
details: any;
|
|
138
|
+
newMediaItemResults?: undefined;
|
|
139
|
+
message?: undefined;
|
|
140
|
+
} | {
|
|
141
|
+
newMediaItemResults: Record<string, unknown>[];
|
|
142
|
+
error?: undefined;
|
|
143
|
+
details?: undefined;
|
|
144
|
+
message?: undefined;
|
|
145
|
+
} | {
|
|
146
|
+
error: string;
|
|
147
|
+
message: string;
|
|
148
|
+
details?: undefined;
|
|
149
|
+
newMediaItemResults?: undefined;
|
|
150
|
+
}>;
|
|
151
|
+
requiredAuth: "googlePhotosToken";
|
|
152
|
+
scope: "write";
|
|
153
|
+
} | {
|
|
154
|
+
name: string;
|
|
155
|
+
description: string;
|
|
156
|
+
tool: import("ai").Tool<{
|
|
157
|
+
googlePhotosToken: string;
|
|
158
|
+
description?: string | undefined;
|
|
159
|
+
fileName?: string | undefined;
|
|
160
|
+
url?: string | undefined;
|
|
161
|
+
}, {
|
|
162
|
+
error: string;
|
|
163
|
+
details?: undefined;
|
|
164
|
+
mediaItem?: undefined;
|
|
165
|
+
message?: undefined;
|
|
166
|
+
} | {
|
|
167
|
+
error: string;
|
|
168
|
+
details: any;
|
|
169
|
+
mediaItem?: undefined;
|
|
170
|
+
message?: undefined;
|
|
171
|
+
} | {
|
|
172
|
+
mediaItem: {};
|
|
173
|
+
error?: undefined;
|
|
174
|
+
details?: undefined;
|
|
175
|
+
message?: undefined;
|
|
176
|
+
} | {
|
|
177
|
+
error: string;
|
|
178
|
+
message: string;
|
|
179
|
+
details?: undefined;
|
|
180
|
+
mediaItem?: undefined;
|
|
181
|
+
}>;
|
|
182
|
+
requiredAuth: "googlePhotosToken";
|
|
183
|
+
scope: "write";
|
|
184
|
+
} | {
|
|
185
|
+
name: string;
|
|
186
|
+
description: string;
|
|
187
|
+
tool: import("ai").Tool<{
|
|
188
|
+
googlePhotosToken: string;
|
|
189
|
+
mediaItemIds: string[];
|
|
190
|
+
}, any>;
|
|
191
|
+
requiredAuth: "googlePhotosToken";
|
|
192
|
+
scope: "read";
|
|
193
|
+
} | {
|
|
194
|
+
name: string;
|
|
195
|
+
description: string;
|
|
196
|
+
tool: import("ai").Tool<{
|
|
197
|
+
googlePhotosToken: string;
|
|
198
|
+
pageToken?: string | undefined;
|
|
199
|
+
pageSize?: number | undefined;
|
|
200
|
+
}, any>;
|
|
201
|
+
requiredAuth: "googlePhotosToken";
|
|
202
|
+
scope: "read";
|
|
203
|
+
} | {
|
|
204
|
+
name: string;
|
|
205
|
+
description: string;
|
|
206
|
+
tool: import("ai").Tool<{
|
|
207
|
+
googlePhotosToken: string;
|
|
208
|
+
pageToken?: string | undefined;
|
|
209
|
+
pageSize?: number | undefined;
|
|
210
|
+
albumId?: string | undefined;
|
|
211
|
+
filters?: Record<string, any> | undefined;
|
|
212
|
+
orderBy?: string | undefined;
|
|
213
|
+
}, any>;
|
|
214
|
+
requiredAuth: "googlePhotosToken";
|
|
215
|
+
scope: "read";
|
|
216
|
+
} | {
|
|
217
|
+
name: string;
|
|
218
|
+
description: string;
|
|
219
|
+
tool: import("ai").Tool<{
|
|
220
|
+
description: string;
|
|
221
|
+
googlePhotosToken: string;
|
|
222
|
+
mediaItemId: string;
|
|
223
|
+
}, any>;
|
|
224
|
+
requiredAuth: "googlePhotosToken";
|
|
225
|
+
scope: "write";
|
|
226
|
+
} | {
|
|
227
|
+
name: string;
|
|
228
|
+
description: string;
|
|
229
|
+
tool: import("ai").Tool<{
|
|
230
|
+
googlePhotosToken: string;
|
|
231
|
+
mediaItemId: string;
|
|
232
|
+
}, {
|
|
233
|
+
error: string;
|
|
234
|
+
details: any;
|
|
235
|
+
file?: undefined;
|
|
236
|
+
message?: undefined;
|
|
237
|
+
} | {
|
|
238
|
+
error: string;
|
|
239
|
+
details?: undefined;
|
|
240
|
+
file?: undefined;
|
|
241
|
+
message?: undefined;
|
|
242
|
+
} | {
|
|
243
|
+
file: {
|
|
244
|
+
name: string;
|
|
245
|
+
mimetype: string;
|
|
246
|
+
contentBase64: string;
|
|
247
|
+
byteSize: number;
|
|
248
|
+
};
|
|
249
|
+
error?: undefined;
|
|
250
|
+
details?: undefined;
|
|
251
|
+
message?: undefined;
|
|
252
|
+
} | {
|
|
253
|
+
error: string;
|
|
254
|
+
message: string;
|
|
255
|
+
details?: undefined;
|
|
256
|
+
file?: undefined;
|
|
257
|
+
}>;
|
|
258
|
+
requiredAuth: "googlePhotosToken";
|
|
259
|
+
scope: "read";
|
|
260
|
+
})[];
|
|
261
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { addEnrichment, batchAddMediaItems, createAlbum, getAlbum, listAlbums, updateAlbum } from './albums.js';
|
|
3
|
+
import { batchCreateMediaItems, uploadMedia, } from './uploads.js';
|
|
4
|
+
import { batchGetMediaItems, downloadMediaItem, listMediaItems, searchMediaItems, updateMediaItem } from './media.js';
|
|
5
|
+
export { addEnrichment, batchAddMediaItems, createAlbum, getAlbum, listAlbums, updateAlbum, batchCreateMediaItems, uploadMedia, batchGetMediaItems, downloadMediaItem, listMediaItems, searchMediaItems, updateMediaItem, };
|
|
6
|
+
const auth = 'googlePhotosToken';
|
|
7
|
+
export const googlePhotosTools = [
|
|
8
|
+
{ name: 'googlePhotosCreateAlbum', description: 'Creates an album with a title.', tool: createAlbum, requiredAuth: auth, scope: 'write' },
|
|
9
|
+
{ name: 'googlePhotosGetAlbum', description: 'Gets an album by ID.', tool: getAlbum, requiredAuth: auth, scope: 'read' },
|
|
10
|
+
{ name: 'googlePhotosListAlbums', description: 'Lists albums in the Albums tab.', tool: listAlbums, requiredAuth: auth, scope: 'read' },
|
|
11
|
+
{ name: 'googlePhotosUpdateAlbum', description: 'Updates an app-created album title and/or cover photo.', tool: updateAlbum, requiredAuth: auth, scope: 'write' },
|
|
12
|
+
{ name: 'googlePhotosAddEnrichment', description: 'Adds a text, location, or map enrichment at an album position.', tool: addEnrichment, requiredAuth: auth, scope: 'write' },
|
|
13
|
+
{ name: 'googlePhotosBatchAddMediaItems', description: 'Adds up to 50 app-created items to an app-created album.', tool: batchAddMediaItems, requiredAuth: auth, scope: 'write' },
|
|
14
|
+
{ name: 'googlePhotosBatchCreateMediaItems', description: 'Uploads up to 50 files from URLs and creates media items.', tool: batchCreateMediaItems, requiredAuth: auth, scope: 'write' },
|
|
15
|
+
{ name: 'googlePhotosUploadMedia', description: 'Uploads one file from a URL and creates the media item.', tool: uploadMedia, requiredAuth: auth, scope: 'write' },
|
|
16
|
+
{ name: 'googlePhotosBatchGetMediaItems', description: 'Gets up to 50 media items by ID.', tool: batchGetMediaItems, requiredAuth: auth, scope: 'read' },
|
|
17
|
+
{ name: 'googlePhotosListMediaItems', description: 'Lists app-created media items (full library needs Picker API).', tool: listMediaItems, requiredAuth: auth, scope: 'read' },
|
|
18
|
+
{ name: 'googlePhotosSearchMediaItems', description: 'Searches app-created media by album, date, content, or type.', tool: searchMediaItems, requiredAuth: auth, scope: 'read' },
|
|
19
|
+
{ name: 'googlePhotosUpdateMediaItem', description: 'Updates a media item description.', tool: updateMediaItem, requiredAuth: auth, scope: 'write' },
|
|
20
|
+
{ name: 'googlePhotosDownloadMediaItem', description: 'Downloads media item bytes (base64).', tool: downloadMediaItem, requiredAuth: auth, scope: 'read' },
|
|
21
|
+
];
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export declare const batchGetMediaItems: import("ai").Tool<{
|
|
2
|
+
googlePhotosToken: string;
|
|
3
|
+
mediaItemIds: string[];
|
|
4
|
+
}, any>;
|
|
5
|
+
export declare const listMediaItems: import("ai").Tool<{
|
|
6
|
+
googlePhotosToken: string;
|
|
7
|
+
pageToken?: string | undefined;
|
|
8
|
+
pageSize?: number | undefined;
|
|
9
|
+
}, any>;
|
|
10
|
+
export declare const searchMediaItems: import("ai").Tool<{
|
|
11
|
+
googlePhotosToken: string;
|
|
12
|
+
pageToken?: string | undefined;
|
|
13
|
+
pageSize?: number | undefined;
|
|
14
|
+
albumId?: string | undefined;
|
|
15
|
+
filters?: Record<string, any> | undefined;
|
|
16
|
+
orderBy?: string | undefined;
|
|
17
|
+
}, any>;
|
|
18
|
+
export declare const updateMediaItem: import("ai").Tool<{
|
|
19
|
+
description: string;
|
|
20
|
+
googlePhotosToken: string;
|
|
21
|
+
mediaItemId: string;
|
|
22
|
+
}, any>;
|
|
23
|
+
export declare const downloadMediaItem: import("ai").Tool<{
|
|
24
|
+
googlePhotosToken: string;
|
|
25
|
+
mediaItemId: string;
|
|
26
|
+
}, {
|
|
27
|
+
error: string;
|
|
28
|
+
details: any;
|
|
29
|
+
file?: undefined;
|
|
30
|
+
message?: undefined;
|
|
31
|
+
} | {
|
|
32
|
+
error: string;
|
|
33
|
+
details?: undefined;
|
|
34
|
+
file?: undefined;
|
|
35
|
+
message?: undefined;
|
|
36
|
+
} | {
|
|
37
|
+
file: {
|
|
38
|
+
name: string;
|
|
39
|
+
mimetype: string;
|
|
40
|
+
contentBase64: string;
|
|
41
|
+
byteSize: number;
|
|
42
|
+
};
|
|
43
|
+
error?: undefined;
|
|
44
|
+
details?: undefined;
|
|
45
|
+
message?: undefined;
|
|
46
|
+
} | {
|
|
47
|
+
error: string;
|
|
48
|
+
message: string;
|
|
49
|
+
details?: undefined;
|
|
50
|
+
file?: undefined;
|
|
51
|
+
}>;
|
|
52
|
+
//# sourceMappingURL=media.d.ts.map
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { googlePhotosTokenField, photosRequest } from './client.js';
|
|
5
|
+
export const batchGetMediaItems = tool({
|
|
6
|
+
description: 'Gets up to 50 media items by ID (no duplicates). Failed items return a status entry.',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
googlePhotosToken: googlePhotosTokenField,
|
|
9
|
+
mediaItemIds: z.array(z.string()).min(1).max(50).describe('Media item IDs, no duplicates'),
|
|
10
|
+
}),
|
|
11
|
+
execute: async ({ googlePhotosToken, mediaItemIds }) => {
|
|
12
|
+
try {
|
|
13
|
+
if (new Set(mediaItemIds).size !== mediaItemIds.length)
|
|
14
|
+
return { error: 'mediaItemIds must not contain duplicates' };
|
|
15
|
+
const result = await photosRequest(googlePhotosToken, '/mediaItems:batchGet', {
|
|
16
|
+
query: { mediaItemIds },
|
|
17
|
+
});
|
|
18
|
+
if (!result.ok)
|
|
19
|
+
return { error: 'Failed to batch get media items', details: result.error };
|
|
20
|
+
return result.data;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return { error: 'Error batch getting media items', message: error instanceof Error ? error.message : 'Unknown error' };
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
export const listMediaItems = tool({
|
|
28
|
+
description: 'Lists app-created media items (post-March-2025 API returns only your app uploads — camera/other-app photos need the Picker API).',
|
|
29
|
+
inputSchema: z.object({
|
|
30
|
+
googlePhotosToken: googlePhotosTokenField,
|
|
31
|
+
pageSize: z.number().min(1).max(100).optional().describe('Items per page (default 25, max 100)'),
|
|
32
|
+
pageToken: z.string().optional(),
|
|
33
|
+
}),
|
|
34
|
+
execute: async ({ googlePhotosToken, pageSize, pageToken }) => {
|
|
35
|
+
try {
|
|
36
|
+
const result = await photosRequest(googlePhotosToken, '/mediaItems', {
|
|
37
|
+
query: { pageSize, pageToken },
|
|
38
|
+
});
|
|
39
|
+
if (!result.ok)
|
|
40
|
+
return { error: 'Failed to list media items', details: result.error };
|
|
41
|
+
return result.data;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return { error: 'Error listing media items', message: error instanceof Error ? error.message : 'Unknown error' };
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
export const searchMediaItems = tool({
|
|
49
|
+
description: 'Searches app-created media by album, date/content/feature/media-type filters, and ordering. Only one of albumId or filters should drive the query.',
|
|
50
|
+
inputSchema: z.object({
|
|
51
|
+
googlePhotosToken: googlePhotosTokenField,
|
|
52
|
+
albumId: z.string().optional().describe('Album to search within'),
|
|
53
|
+
filters: z.record(z.any()).optional().describe('Filters: dateFilter, contentFilter, mediaTypeFilter, featureFilter, includeArchivedMedia, excludeNonAppCreatedData'),
|
|
54
|
+
orderBy: z.string().optional().describe("Sort, e.g. 'MediaMetadata.creation_time desc'"),
|
|
55
|
+
pageSize: z.number().min(1).max(100).optional().describe('Items per page (default 25, max 100)'),
|
|
56
|
+
pageToken: z.string().optional(),
|
|
57
|
+
}),
|
|
58
|
+
execute: async ({ googlePhotosToken, albumId, filters, orderBy, pageSize, pageToken }) => {
|
|
59
|
+
try {
|
|
60
|
+
const body = {};
|
|
61
|
+
if (albumId)
|
|
62
|
+
body.albumId = albumId;
|
|
63
|
+
if (filters)
|
|
64
|
+
body.filters = filters;
|
|
65
|
+
if (orderBy)
|
|
66
|
+
body.orderBy = orderBy;
|
|
67
|
+
if (pageSize !== undefined)
|
|
68
|
+
body.pageSize = pageSize;
|
|
69
|
+
if (pageToken)
|
|
70
|
+
body.pageToken = pageToken;
|
|
71
|
+
const result = await photosRequest(googlePhotosToken, '/mediaItems:search', {
|
|
72
|
+
method: 'POST',
|
|
73
|
+
body,
|
|
74
|
+
});
|
|
75
|
+
if (!result.ok)
|
|
76
|
+
return { error: 'Failed to search media items', details: result.error };
|
|
77
|
+
return result.data;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
return { error: 'Error searching media items', message: error instanceof Error ? error.message : 'Unknown error' };
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
export const updateMediaItem = tool({
|
|
85
|
+
description: 'Updates an app-created media item description (max 1000 chars).',
|
|
86
|
+
inputSchema: z.object({
|
|
87
|
+
googlePhotosToken: googlePhotosTokenField,
|
|
88
|
+
mediaItemId: z.string().describe('Media item ID to update'),
|
|
89
|
+
description: z.string().max(1000).describe('New description'),
|
|
90
|
+
}),
|
|
91
|
+
execute: async ({ googlePhotosToken, mediaItemId, description }) => {
|
|
92
|
+
try {
|
|
93
|
+
const result = await photosRequest(googlePhotosToken, `/mediaItems/${mediaItemId}`, {
|
|
94
|
+
method: 'PATCH',
|
|
95
|
+
query: { updateMask: 'description' },
|
|
96
|
+
body: { description },
|
|
97
|
+
});
|
|
98
|
+
if (!result.ok)
|
|
99
|
+
return { error: 'Failed to update media item', details: result.error };
|
|
100
|
+
return result.data;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return { error: 'Error updating media item', message: error instanceof Error ? error.message : 'Unknown error' };
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
export const downloadMediaItem = tool({
|
|
108
|
+
description: 'Downloads a media item bytes (base64) via its baseUrl. Use baseUrl sizing params before download if you need a specific size.',
|
|
109
|
+
inputSchema: z.object({
|
|
110
|
+
googlePhotosToken: googlePhotosTokenField,
|
|
111
|
+
mediaItemId: z.string().describe('Media item ID to download'),
|
|
112
|
+
}),
|
|
113
|
+
execute: async ({ googlePhotosToken, mediaItemId }) => {
|
|
114
|
+
try {
|
|
115
|
+
const meta = await photosRequest(googlePhotosToken, `/mediaItems/${mediaItemId}`);
|
|
116
|
+
if (!meta.ok)
|
|
117
|
+
return { error: 'Failed to get media item', details: meta.error };
|
|
118
|
+
const item = meta.data;
|
|
119
|
+
if (!item.baseUrl)
|
|
120
|
+
return { error: 'Media item has no downloadable baseUrl' };
|
|
121
|
+
const downloadUrl = `${item.baseUrl}=d`;
|
|
122
|
+
const response = await fetch(downloadUrl, {
|
|
123
|
+
headers: { Authorization: `Bearer ${googlePhotosToken}` },
|
|
124
|
+
});
|
|
125
|
+
if (!response.ok)
|
|
126
|
+
return { error: `Download failed (HTTP ${response.status})` };
|
|
127
|
+
const bytes = Buffer.from(await response.arrayBuffer());
|
|
128
|
+
return {
|
|
129
|
+
file: {
|
|
130
|
+
name: item.filename ?? `${mediaItemId}`,
|
|
131
|
+
mimetype: response.headers.get('content-type') ?? item.mimeType ?? 'application/octet-stream',
|
|
132
|
+
contentBase64: bytes.toString('base64'),
|
|
133
|
+
byteSize: bytes.length,
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
return { error: 'Error downloading media item', message: error instanceof Error ? error.message : 'Unknown error' };
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export declare const batchCreateMediaItems: import("ai").Tool<{
|
|
2
|
+
googlePhotosToken: string;
|
|
3
|
+
albumId?: string | undefined;
|
|
4
|
+
albumPosition?: Record<string, any> | undefined;
|
|
5
|
+
urls?: string[] | undefined;
|
|
6
|
+
mediaFiles?: {
|
|
7
|
+
description?: string | undefined;
|
|
8
|
+
fileName?: string | undefined;
|
|
9
|
+
url?: string | undefined;
|
|
10
|
+
}[] | undefined;
|
|
11
|
+
}, {
|
|
12
|
+
error: string;
|
|
13
|
+
details?: undefined;
|
|
14
|
+
newMediaItemResults?: undefined;
|
|
15
|
+
message?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
error: string;
|
|
18
|
+
details: any;
|
|
19
|
+
newMediaItemResults?: undefined;
|
|
20
|
+
message?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
newMediaItemResults: Record<string, unknown>[];
|
|
23
|
+
error?: undefined;
|
|
24
|
+
details?: undefined;
|
|
25
|
+
message?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
error: string;
|
|
28
|
+
message: string;
|
|
29
|
+
details?: undefined;
|
|
30
|
+
newMediaItemResults?: undefined;
|
|
31
|
+
}>;
|
|
32
|
+
export declare const uploadMedia: import("ai").Tool<{
|
|
33
|
+
googlePhotosToken: string;
|
|
34
|
+
description?: string | undefined;
|
|
35
|
+
fileName?: string | undefined;
|
|
36
|
+
url?: string | undefined;
|
|
37
|
+
}, {
|
|
38
|
+
error: string;
|
|
39
|
+
details?: undefined;
|
|
40
|
+
mediaItem?: undefined;
|
|
41
|
+
message?: undefined;
|
|
42
|
+
} | {
|
|
43
|
+
error: string;
|
|
44
|
+
details: any;
|
|
45
|
+
mediaItem?: undefined;
|
|
46
|
+
message?: undefined;
|
|
47
|
+
} | {
|
|
48
|
+
mediaItem: {};
|
|
49
|
+
error?: undefined;
|
|
50
|
+
details?: undefined;
|
|
51
|
+
message?: undefined;
|
|
52
|
+
} | {
|
|
53
|
+
error: string;
|
|
54
|
+
message: string;
|
|
55
|
+
details?: undefined;
|
|
56
|
+
mediaItem?: undefined;
|
|
57
|
+
}>;
|
|
58
|
+
//# sourceMappingURL=uploads.d.ts.map
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { fetchUrlBytes, fileNameFromUrl, googlePhotosTokenField, photosRequest, uploadBytes, } from './client.js';
|
|
5
|
+
async function uploadOne(googlePhotosToken, input) {
|
|
6
|
+
const { bytes, contentType } = await fetchUrlBytes(input.url);
|
|
7
|
+
const uploadToken = await uploadBytes(googlePhotosToken, input.fileName, bytes, contentType);
|
|
8
|
+
return { description: input.description, simpleMediaItem: { fileName: input.fileName, uploadToken } };
|
|
9
|
+
}
|
|
10
|
+
export const batchCreateMediaItems = tool({
|
|
11
|
+
description: 'Uploads up to 50 files from public URLs and creates media items (optionally into an album at a position). s3key file refs are not resolvable — provide public URLs instead.',
|
|
12
|
+
inputSchema: z.object({
|
|
13
|
+
googlePhotosToken: googlePhotosTokenField,
|
|
14
|
+
urls: z.array(z.string()).optional().describe('Public file URLs (names extracted automatically)'),
|
|
15
|
+
mediaFiles: z.array(z.object({
|
|
16
|
+
url: z.string().optional().describe('Public file URL'),
|
|
17
|
+
fileName: z.string().optional().describe("File name with extension (required with url), e.g. 'photo.jpg'"),
|
|
18
|
+
description: z.string().max(1000).optional().describe('Item description'),
|
|
19
|
+
})).optional().describe('Files with explicit names/descriptions (max 50 total with urls)'),
|
|
20
|
+
albumId: z.string().optional().describe('Album for the new items (library-only if omitted)'),
|
|
21
|
+
albumPosition: z.record(z.any()).optional().describe('Position in the album'),
|
|
22
|
+
}),
|
|
23
|
+
execute: async ({ googlePhotosToken, urls, mediaFiles, albumId, albumPosition }) => {
|
|
24
|
+
try {
|
|
25
|
+
const inputs = [
|
|
26
|
+
...(urls ?? []).map((url, i) => ({
|
|
27
|
+
url,
|
|
28
|
+
fileName: fileNameFromUrl(url, `photo-${i + 1}.jpg`),
|
|
29
|
+
description: '',
|
|
30
|
+
})),
|
|
31
|
+
...(mediaFiles ?? []).map((m) => ({
|
|
32
|
+
url: m.url ?? '',
|
|
33
|
+
fileName: m.fileName ?? (m.url ? fileNameFromUrl(m.url, 'photo.jpg') : 'photo.jpg'),
|
|
34
|
+
description: m.description ?? '',
|
|
35
|
+
})),
|
|
36
|
+
];
|
|
37
|
+
if (inputs.length === 0)
|
|
38
|
+
return { error: 'Provide urls and/or mediaFiles with public URLs' };
|
|
39
|
+
if (inputs.length > 50)
|
|
40
|
+
return { error: 'Maximum 50 items per request' };
|
|
41
|
+
const missing = inputs.filter((i) => !i.url);
|
|
42
|
+
if (missing.length > 0)
|
|
43
|
+
return { error: 'Every media file needs a public url (s3key refs are not resolvable)' };
|
|
44
|
+
const newMediaItems = [];
|
|
45
|
+
const results = [];
|
|
46
|
+
for (const input of inputs) {
|
|
47
|
+
try {
|
|
48
|
+
newMediaItems.push(await uploadOne(googlePhotosToken, input));
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
results.push({ status: { message: error instanceof Error ? error.message : 'Upload failed' } });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (newMediaItems.length > 0) {
|
|
55
|
+
const body = { newMediaItems };
|
|
56
|
+
if (albumId)
|
|
57
|
+
body.albumId = albumId;
|
|
58
|
+
if (albumPosition)
|
|
59
|
+
body.albumPosition = albumPosition;
|
|
60
|
+
const created = await photosRequest(googlePhotosToken, '/mediaItems:batchCreate', {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
body,
|
|
63
|
+
});
|
|
64
|
+
if (!created.ok)
|
|
65
|
+
return { error: 'Failed to create media items', details: created.error };
|
|
66
|
+
const data = created.data;
|
|
67
|
+
results.push(...(data.newMediaItemResults ?? []));
|
|
68
|
+
}
|
|
69
|
+
return { newMediaItemResults: results };
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return { error: 'Error batch creating media items', message: error instanceof Error ? error.message : 'Unknown error' };
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
export const uploadMedia = tool({
|
|
77
|
+
description: 'Uploads one file (images ≤200MB, videos ≤20GB) from a public URL and creates the media item. s3key file refs are not resolvable.',
|
|
78
|
+
inputSchema: z.object({
|
|
79
|
+
googlePhotosToken: googlePhotosTokenField,
|
|
80
|
+
url: z.string().optional().describe('Public file URL (JPEG/PNG/GIF/HEIC/MP4/MOV/...)'),
|
|
81
|
+
fileName: z.string().optional().describe("File name with extension (required with url), e.g. 'photo.jpg'"),
|
|
82
|
+
description: z.string().max(1000).optional().describe('Item description'),
|
|
83
|
+
}),
|
|
84
|
+
execute: async ({ googlePhotosToken, url, fileName, description }) => {
|
|
85
|
+
try {
|
|
86
|
+
if (!url)
|
|
87
|
+
return { error: 'Provide a public url (s3key refs are not resolvable)' };
|
|
88
|
+
const name = fileName ?? fileNameFromUrl(url, 'photo.jpg');
|
|
89
|
+
const newMediaItems = [await uploadOne(googlePhotosToken, { url, fileName: name, description: description ?? '' })];
|
|
90
|
+
const created = await photosRequest(googlePhotosToken, '/mediaItems:batchCreate', {
|
|
91
|
+
method: 'POST',
|
|
92
|
+
body: { newMediaItems },
|
|
93
|
+
});
|
|
94
|
+
if (!created.ok)
|
|
95
|
+
return { error: 'Failed to create media item', details: created.error };
|
|
96
|
+
const data = created.data;
|
|
97
|
+
const first = data.newMediaItemResults?.[0];
|
|
98
|
+
if (!first?.mediaItem)
|
|
99
|
+
return { error: 'Failed to create media item', details: first?.status ?? created.data };
|
|
100
|
+
return { mediaItem: first.mediaItem };
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return { error: 'Error uploading media', message: error instanceof Error ? error.message : 'Unknown error' };
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=uploads.js.map
|
|
@@ -156,9 +156,9 @@ export declare const googleTasksTools: ({
|
|
|
156
156
|
status?: "completed" | "needsAction" | undefined;
|
|
157
157
|
completed?: string | undefined;
|
|
158
158
|
deleted?: boolean | undefined;
|
|
159
|
+
etag?: string | undefined;
|
|
159
160
|
notes?: string | undefined;
|
|
160
161
|
due?: string | undefined;
|
|
161
|
-
etag?: string | undefined;
|
|
162
162
|
}, any>;
|
|
163
163
|
requiredAuth: "googleTasksToken";
|
|
164
164
|
scope: "write";
|
|
@@ -7,8 +7,8 @@ export declare const updateTaskFull: import("ai").Tool<{
|
|
|
7
7
|
status?: "completed" | "needsAction" | undefined;
|
|
8
8
|
completed?: string | undefined;
|
|
9
9
|
deleted?: boolean | undefined;
|
|
10
|
+
etag?: string | undefined;
|
|
10
11
|
notes?: string | undefined;
|
|
11
12
|
due?: string | undefined;
|
|
12
|
-
etag?: string | undefined;
|
|
13
13
|
}, any>;
|
|
14
14
|
//# sourceMappingURL=update-task-full.d.ts.map
|
|
@@ -340,13 +340,13 @@ export declare const growwTools: ({
|
|
|
340
340
|
description: string;
|
|
341
341
|
tool: import("ai").Tool<{
|
|
342
342
|
limit?: number | undefined;
|
|
343
|
+
offset?: number | undefined;
|
|
343
344
|
trading_symbol?: string | undefined;
|
|
344
345
|
exchange?: string | undefined;
|
|
345
346
|
segment?: string | undefined;
|
|
346
347
|
groww_symbol?: string | undefined;
|
|
347
348
|
underlying_symbol?: string | undefined;
|
|
348
349
|
instrument_type?: string | undefined;
|
|
349
|
-
offset?: number | undefined;
|
|
350
350
|
}, {
|
|
351
351
|
error: string;
|
|
352
352
|
statusCode: number;
|