@rnsk/toolkits 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -0
- package/dist/core/schema-helpers.d.ts +20 -0
- package/dist/core/schema-helpers.js +157 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/toolkits/github/tools/Actions/list-workflow-jobs.d.ts +1 -1
- package/dist/toolkits/github/tools/Activity/list-notifications.d.ts +1 -1
- package/dist/toolkits/github/tools/Issues/add-issue-labels.d.ts +1 -1
- package/dist/toolkits/github/tools/Issues/list-authenticated-user-issues.d.ts +1 -1
- package/dist/toolkits/github/tools/Issues/list-org-issues.d.ts +1 -1
- package/dist/toolkits/github/tools/Issues/list-user-account-issues.d.ts +1 -1
- package/dist/toolkits/github/tools/Organizations/list-org-repositories.d.ts +1 -1
- package/dist/toolkits/github/tools/Webhooks/create-repo-webhook.d.ts +1 -1
- package/dist/toolkits/gmail/icon.js +14 -14
- package/dist/toolkits/gmail/manifest.js +78 -5
- package/dist/toolkits/gmail/tools/create-draft.d.ts +34 -0
- package/dist/toolkits/gmail/tools/create-draft.js +60 -0
- package/dist/toolkits/gmail/tools/delete-draft.d.ts +23 -0
- package/dist/toolkits/gmail/tools/delete-draft.js +34 -0
- package/dist/toolkits/gmail/tools/get-draft.d.ts +32 -0
- package/dist/toolkits/gmail/tools/get-draft.js +36 -0
- package/dist/toolkits/gmail/tools/get-message.d.ts +12 -12
- package/dist/toolkits/gmail/tools/get-message.js +3 -24
- package/dist/toolkits/gmail/tools/get-thread.d.ts +29 -0
- package/dist/toolkits/gmail/tools/get-thread.js +39 -0
- package/dist/toolkits/gmail/tools/index.d.ts +17 -0
- package/dist/toolkits/gmail/tools/index.js +17 -0
- package/dist/toolkits/gmail/tools/list-drafts.d.ts +28 -0
- package/dist/toolkits/gmail/tools/list-drafts.js +43 -0
- package/dist/toolkits/gmail/tools/list-labels.d.ts +20 -0
- package/dist/toolkits/gmail/tools/list-labels.js +46 -0
- package/dist/toolkits/gmail/tools/list-threads.d.ts +28 -0
- package/dist/toolkits/gmail/tools/list-threads.js +43 -0
- package/dist/toolkits/gmail/tools/modify-message-labels.d.ts +31 -0
- package/dist/toolkits/gmail/tools/modify-message-labels.js +44 -0
- package/dist/toolkits/gmail/tools/reply-to-thread.d.ts +33 -0
- package/dist/toolkits/gmail/tools/reply-to-thread.js +58 -0
- package/dist/toolkits/gmail/tools/send-draft.d.ts +29 -0
- package/dist/toolkits/gmail/tools/send-draft.js +41 -0
- package/dist/toolkits/gmail/tools/send-message.d.ts +4 -1
- package/dist/toolkits/gmail/tools/send-message.js +18 -16
- package/dist/toolkits/gmail/tools/trash-message.d.ts +29 -0
- package/dist/toolkits/gmail/tools/trash-message.js +37 -0
- package/dist/toolkits/gmail/tools/untrash-message.d.ts +29 -0
- package/dist/toolkits/gmail/tools/untrash-message.js +37 -0
- package/dist/toolkits/gmail/tools/utils.d.ts +41 -0
- package/dist/toolkits/gmail/tools/utils.js +97 -0
- package/dist/toolkits/google-calendar/manifest.js +1 -1
- package/dist/toolkits/google-calendar/tools/delete-event.d.ts +27 -0
- package/dist/toolkits/google-calendar/tools/delete-event.js +38 -0
- package/dist/toolkits/google-calendar/tools/get-event.d.ts +24 -0
- package/dist/toolkits/google-calendar/tools/get-event.js +37 -0
- package/dist/toolkits/google-calendar/tools/index.d.ts +181 -3
- package/dist/toolkits/google-calendar/tools/index.js +31 -2
- package/dist/toolkits/google-calendar/tools/search-events.d.ts +27 -0
- package/dist/toolkits/google-calendar/tools/search-events.js +49 -0
- package/dist/toolkits/google-calendar/tools/update-event.d.ts +29 -0
- package/dist/toolkits/google-calendar/tools/update-event.js +56 -0
- package/dist/toolkits/google-sheets/manifest.js +2 -2
- package/dist/toolkits/google-sheets/tools/append-values.d.ts +41 -0
- package/dist/toolkits/google-sheets/tools/append-values.js +51 -0
- package/dist/toolkits/google-sheets/tools/clear-values.d.ts +27 -0
- package/dist/toolkits/google-sheets/tools/clear-values.js +41 -0
- package/dist/toolkits/google-sheets/tools/create-spreadsheet.d.ts +33 -0
- package/dist/toolkits/google-sheets/tools/create-spreadsheet.js +59 -0
- package/dist/toolkits/google-sheets/tools/index.d.ts +205 -7
- package/dist/toolkits/google-sheets/tools/index.js +39 -4
- package/dist/toolkits/google-sheets/tools/update-values.d.ts +38 -0
- package/dist/toolkits/google-sheets/tools/update-values.js +50 -0
- package/package.json +2 -5
|
@@ -1,7 +1,185 @@
|
|
|
1
|
-
|
|
1
|
+
import { listEvents } from './list-events.js';
|
|
2
|
+
import { createEvent } from './create-event.js';
|
|
3
|
+
import { getEvent } from './get-event.js';
|
|
4
|
+
import { updateEvent } from './update-event.js';
|
|
5
|
+
import { deleteEvent } from './delete-event.js';
|
|
6
|
+
import { searchEvents } from './search-events.js';
|
|
7
|
+
export { listEvents, createEvent, getEvent, updateEvent, deleteEvent, searchEvents };
|
|
8
|
+
export declare const googleCalendarTools: ({
|
|
2
9
|
name: string;
|
|
3
10
|
description: string;
|
|
4
|
-
tool:
|
|
11
|
+
tool: import("ai").Tool<{
|
|
12
|
+
maxResults: number;
|
|
13
|
+
googleCalendarToken: string;
|
|
14
|
+
timeMin?: string | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
error: string;
|
|
17
|
+
details: any;
|
|
18
|
+
events?: undefined;
|
|
19
|
+
summary?: undefined;
|
|
20
|
+
message?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
events: any;
|
|
23
|
+
summary: any;
|
|
24
|
+
error?: undefined;
|
|
25
|
+
details?: undefined;
|
|
26
|
+
message?: undefined;
|
|
27
|
+
} | {
|
|
28
|
+
error: string;
|
|
29
|
+
message: string;
|
|
30
|
+
details?: undefined;
|
|
31
|
+
events?: undefined;
|
|
32
|
+
summary?: undefined;
|
|
33
|
+
}>;
|
|
5
34
|
requiredAuth: string;
|
|
6
|
-
}
|
|
35
|
+
} | {
|
|
36
|
+
name: string;
|
|
37
|
+
description: string;
|
|
38
|
+
tool: import("ai").Tool<{
|
|
39
|
+
summary: string;
|
|
40
|
+
googleCalendarToken: string;
|
|
41
|
+
start: string;
|
|
42
|
+
end: string;
|
|
43
|
+
description?: string | undefined;
|
|
44
|
+
location?: string | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
error: string;
|
|
47
|
+
details: any;
|
|
48
|
+
success?: undefined;
|
|
49
|
+
event?: undefined;
|
|
50
|
+
message?: undefined;
|
|
51
|
+
} | {
|
|
52
|
+
success: boolean;
|
|
53
|
+
event: any;
|
|
54
|
+
error?: undefined;
|
|
55
|
+
details?: undefined;
|
|
56
|
+
message?: undefined;
|
|
57
|
+
} | {
|
|
58
|
+
error: string;
|
|
59
|
+
message: string;
|
|
60
|
+
details?: undefined;
|
|
61
|
+
success?: undefined;
|
|
62
|
+
event?: undefined;
|
|
63
|
+
}>;
|
|
64
|
+
requiredAuth: string;
|
|
65
|
+
} | {
|
|
66
|
+
name: string;
|
|
67
|
+
description: string;
|
|
68
|
+
tool: import("ai").Tool<{
|
|
69
|
+
googleCalendarToken: string;
|
|
70
|
+
eventId: string;
|
|
71
|
+
calendarId: string;
|
|
72
|
+
}, {
|
|
73
|
+
error: string;
|
|
74
|
+
details: any;
|
|
75
|
+
success?: undefined;
|
|
76
|
+
event?: undefined;
|
|
77
|
+
message?: undefined;
|
|
78
|
+
} | {
|
|
79
|
+
success: boolean;
|
|
80
|
+
event: any;
|
|
81
|
+
error?: undefined;
|
|
82
|
+
details?: undefined;
|
|
83
|
+
message?: undefined;
|
|
84
|
+
} | {
|
|
85
|
+
error: string;
|
|
86
|
+
message: string;
|
|
87
|
+
details?: undefined;
|
|
88
|
+
success?: undefined;
|
|
89
|
+
event?: undefined;
|
|
90
|
+
}>;
|
|
91
|
+
requiredAuth: string;
|
|
92
|
+
} | {
|
|
93
|
+
name: string;
|
|
94
|
+
description: string;
|
|
95
|
+
tool: import("ai").Tool<{
|
|
96
|
+
googleCalendarToken: string;
|
|
97
|
+
eventId: string;
|
|
98
|
+
calendarId: string;
|
|
99
|
+
description?: string | undefined;
|
|
100
|
+
location?: string | undefined;
|
|
101
|
+
summary?: string | undefined;
|
|
102
|
+
start?: string | undefined;
|
|
103
|
+
end?: string | undefined;
|
|
104
|
+
}, {
|
|
105
|
+
error: string;
|
|
106
|
+
details: any;
|
|
107
|
+
success?: undefined;
|
|
108
|
+
event?: undefined;
|
|
109
|
+
message?: undefined;
|
|
110
|
+
} | {
|
|
111
|
+
success: boolean;
|
|
112
|
+
event: any;
|
|
113
|
+
error?: undefined;
|
|
114
|
+
details?: undefined;
|
|
115
|
+
message?: undefined;
|
|
116
|
+
} | {
|
|
117
|
+
error: string;
|
|
118
|
+
message: string;
|
|
119
|
+
details?: undefined;
|
|
120
|
+
success?: undefined;
|
|
121
|
+
event?: undefined;
|
|
122
|
+
}>;
|
|
123
|
+
requiredAuth: string;
|
|
124
|
+
} | {
|
|
125
|
+
name: string;
|
|
126
|
+
description: string;
|
|
127
|
+
tool: import("ai").Tool<{
|
|
128
|
+
googleCalendarToken: string;
|
|
129
|
+
eventId: string;
|
|
130
|
+
calendarId: string;
|
|
131
|
+
}, {
|
|
132
|
+
error: string;
|
|
133
|
+
details: any;
|
|
134
|
+
success?: undefined;
|
|
135
|
+
eventId?: undefined;
|
|
136
|
+
calendarId?: undefined;
|
|
137
|
+
message?: undefined;
|
|
138
|
+
} | {
|
|
139
|
+
success: boolean;
|
|
140
|
+
eventId: string;
|
|
141
|
+
calendarId: string;
|
|
142
|
+
error?: undefined;
|
|
143
|
+
details?: undefined;
|
|
144
|
+
message?: undefined;
|
|
145
|
+
} | {
|
|
146
|
+
error: string;
|
|
147
|
+
message: string;
|
|
148
|
+
details?: undefined;
|
|
149
|
+
success?: undefined;
|
|
150
|
+
eventId?: undefined;
|
|
151
|
+
calendarId?: undefined;
|
|
152
|
+
}>;
|
|
153
|
+
requiredAuth: string;
|
|
154
|
+
} | {
|
|
155
|
+
name: string;
|
|
156
|
+
description: string;
|
|
157
|
+
tool: import("ai").Tool<{
|
|
158
|
+
maxResults: number;
|
|
159
|
+
googleCalendarToken: string;
|
|
160
|
+
calendarId: string;
|
|
161
|
+
q?: string | undefined;
|
|
162
|
+
timeMin?: string | undefined;
|
|
163
|
+
timeMax?: string | undefined;
|
|
164
|
+
}, {
|
|
165
|
+
error: string;
|
|
166
|
+
details: any;
|
|
167
|
+
events?: undefined;
|
|
168
|
+
summary?: undefined;
|
|
169
|
+
message?: undefined;
|
|
170
|
+
} | {
|
|
171
|
+
events: any;
|
|
172
|
+
summary: any;
|
|
173
|
+
error?: undefined;
|
|
174
|
+
details?: undefined;
|
|
175
|
+
message?: undefined;
|
|
176
|
+
} | {
|
|
177
|
+
error: string;
|
|
178
|
+
message: string;
|
|
179
|
+
details?: undefined;
|
|
180
|
+
events?: undefined;
|
|
181
|
+
summary?: undefined;
|
|
182
|
+
}>;
|
|
183
|
+
requiredAuth: string;
|
|
184
|
+
})[];
|
|
7
185
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { listEvents } from './list-events';
|
|
3
|
-
import { createEvent } from './create-event';
|
|
2
|
+
import { listEvents } from './list-events.js';
|
|
3
|
+
import { createEvent } from './create-event.js';
|
|
4
|
+
import { getEvent } from './get-event.js';
|
|
5
|
+
import { updateEvent } from './update-event.js';
|
|
6
|
+
import { deleteEvent } from './delete-event.js';
|
|
7
|
+
import { searchEvents } from './search-events.js';
|
|
8
|
+
export { listEvents, createEvent, getEvent, updateEvent, deleteEvent, searchEvents };
|
|
4
9
|
export const googleCalendarTools = [
|
|
5
10
|
{
|
|
6
11
|
name: 'listEvents',
|
|
@@ -14,5 +19,29 @@ export const googleCalendarTools = [
|
|
|
14
19
|
tool: createEvent,
|
|
15
20
|
requiredAuth: 'googleCalendarToken',
|
|
16
21
|
},
|
|
22
|
+
{
|
|
23
|
+
name: 'getEvent',
|
|
24
|
+
description: 'Get details of a specific event from Google Calendar by event ID.',
|
|
25
|
+
tool: getEvent,
|
|
26
|
+
requiredAuth: 'googleCalendarToken',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'updateEvent',
|
|
30
|
+
description: 'Update or reschedule an existing event in Google Calendar (e.g., change summary, start/end time, description, or location).',
|
|
31
|
+
tool: updateEvent,
|
|
32
|
+
requiredAuth: 'googleCalendarToken',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'deleteEvent',
|
|
36
|
+
description: 'Delete or cancel an event from Google Calendar by event ID.',
|
|
37
|
+
tool: deleteEvent,
|
|
38
|
+
requiredAuth: 'googleCalendarToken',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'searchEvents',
|
|
42
|
+
description: 'Search for events in Google Calendar matching a free text query and/or date range.',
|
|
43
|
+
tool: searchEvents,
|
|
44
|
+
requiredAuth: 'googleCalendarToken',
|
|
45
|
+
},
|
|
17
46
|
];
|
|
18
47
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const searchEvents: import("ai").Tool<{
|
|
2
|
+
maxResults: number;
|
|
3
|
+
googleCalendarToken: string;
|
|
4
|
+
calendarId: string;
|
|
5
|
+
q?: string | undefined;
|
|
6
|
+
timeMin?: string | undefined;
|
|
7
|
+
timeMax?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
error: string;
|
|
10
|
+
details: any;
|
|
11
|
+
events?: undefined;
|
|
12
|
+
summary?: undefined;
|
|
13
|
+
message?: undefined;
|
|
14
|
+
} | {
|
|
15
|
+
events: any;
|
|
16
|
+
summary: any;
|
|
17
|
+
error?: undefined;
|
|
18
|
+
details?: undefined;
|
|
19
|
+
message?: undefined;
|
|
20
|
+
} | {
|
|
21
|
+
error: string;
|
|
22
|
+
message: string;
|
|
23
|
+
details?: undefined;
|
|
24
|
+
events?: undefined;
|
|
25
|
+
summary?: undefined;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=search-events.d.ts.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const searchEvents = tool({
|
|
5
|
+
description: 'Search for events in Google Calendar matching a free text query and/or date range.',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
googleCalendarToken: z.string().describe('The Google Calendar access token'),
|
|
8
|
+
q: z.string().optional().describe('Free text search terms to find events (e.g. "team sync", "meeting with Alice")'),
|
|
9
|
+
calendarId: z.string().optional().default('primary').describe('Calendar identifier. Default is "primary".'),
|
|
10
|
+
timeMin: z.string().optional().describe('Lower bound (exclusive) for event end times (RFC3339 timestamp)'),
|
|
11
|
+
timeMax: z.string().optional().describe('Upper bound (exclusive) for event start times (RFC3339 timestamp)'),
|
|
12
|
+
maxResults: z.number().optional().default(10).describe('Maximum number of events to return'),
|
|
13
|
+
}),
|
|
14
|
+
execute: async ({ googleCalendarToken, q, calendarId = 'primary', timeMin, timeMax, maxResults }) => {
|
|
15
|
+
try {
|
|
16
|
+
const url = new URL(`https://www.googleapis.com/calendar/v3/calendars/${encodeURIComponent(calendarId)}/events`);
|
|
17
|
+
url.searchParams.append('maxResults', maxResults.toString());
|
|
18
|
+
url.searchParams.append('singleEvents', 'true');
|
|
19
|
+
url.searchParams.append('orderBy', 'startTime');
|
|
20
|
+
if (q)
|
|
21
|
+
url.searchParams.append('q', q);
|
|
22
|
+
if (timeMin)
|
|
23
|
+
url.searchParams.append('timeMin', timeMin);
|
|
24
|
+
if (timeMax)
|
|
25
|
+
url.searchParams.append('timeMax', timeMax);
|
|
26
|
+
const response = await fetch(url.toString(), {
|
|
27
|
+
headers: {
|
|
28
|
+
Authorization: `Bearer ${googleCalendarToken}`,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
if (!response.ok) {
|
|
32
|
+
const error = await response.json();
|
|
33
|
+
return { error: 'Failed to search events', details: error };
|
|
34
|
+
}
|
|
35
|
+
const data = await response.json();
|
|
36
|
+
return {
|
|
37
|
+
events: data.items || [],
|
|
38
|
+
summary: data.summary,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return {
|
|
43
|
+
error: 'Error searching events',
|
|
44
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=search-events.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const updateEvent: import("ai").Tool<{
|
|
2
|
+
googleCalendarToken: string;
|
|
3
|
+
eventId: string;
|
|
4
|
+
calendarId: string;
|
|
5
|
+
description?: string | undefined;
|
|
6
|
+
location?: string | undefined;
|
|
7
|
+
summary?: string | undefined;
|
|
8
|
+
start?: string | undefined;
|
|
9
|
+
end?: string | undefined;
|
|
10
|
+
}, {
|
|
11
|
+
error: string;
|
|
12
|
+
details: any;
|
|
13
|
+
success?: undefined;
|
|
14
|
+
event?: undefined;
|
|
15
|
+
message?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
success: boolean;
|
|
18
|
+
event: any;
|
|
19
|
+
error?: undefined;
|
|
20
|
+
details?: undefined;
|
|
21
|
+
message?: undefined;
|
|
22
|
+
} | {
|
|
23
|
+
error: string;
|
|
24
|
+
message: string;
|
|
25
|
+
details?: undefined;
|
|
26
|
+
success?: undefined;
|
|
27
|
+
event?: undefined;
|
|
28
|
+
}>;
|
|
29
|
+
//# sourceMappingURL=update-event.d.ts.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const updateEvent = tool({
|
|
5
|
+
description: 'Update or reschedule an existing event in Google Calendar (e.g., change summary, start/end time, description, or location).',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
googleCalendarToken: z.string().describe('The Google Calendar access token'),
|
|
8
|
+
eventId: z.string().describe('The unique ID of the event to update'),
|
|
9
|
+
calendarId: z.string().optional().default('primary').describe('Calendar identifier. Default is "primary".'),
|
|
10
|
+
summary: z.string().optional().describe('New summary/title of the event'),
|
|
11
|
+
description: z.string().optional().describe('New description of the event'),
|
|
12
|
+
start: z.string().optional().describe('New start time (RFC3339 timestamp, e.g., 2026-09-10T10:00:00Z)'),
|
|
13
|
+
end: z.string().optional().describe('New end time (RFC3339 timestamp, e.g., 2026-09-10T11:00:00Z)'),
|
|
14
|
+
location: z.string().optional().describe('New location of the event'),
|
|
15
|
+
}),
|
|
16
|
+
execute: async ({ googleCalendarToken, eventId, calendarId = 'primary', summary, description, start, end, location }) => {
|
|
17
|
+
try {
|
|
18
|
+
const url = `https://www.googleapis.com/calendar/v3/calendars/${encodeURIComponent(calendarId)}/events/${encodeURIComponent(eventId)}`;
|
|
19
|
+
const updatePayload = {};
|
|
20
|
+
if (summary !== undefined)
|
|
21
|
+
updatePayload.summary = summary;
|
|
22
|
+
if (description !== undefined)
|
|
23
|
+
updatePayload.description = description;
|
|
24
|
+
if (location !== undefined)
|
|
25
|
+
updatePayload.location = location;
|
|
26
|
+
if (start !== undefined)
|
|
27
|
+
updatePayload.start = { dateTime: start };
|
|
28
|
+
if (end !== undefined)
|
|
29
|
+
updatePayload.end = { dateTime: end };
|
|
30
|
+
const response = await fetch(url, {
|
|
31
|
+
method: 'PATCH',
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `Bearer ${googleCalendarToken}`,
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
},
|
|
36
|
+
body: JSON.stringify(updatePayload),
|
|
37
|
+
});
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
const error = await response.json();
|
|
40
|
+
return { error: 'Failed to update event', details: error };
|
|
41
|
+
}
|
|
42
|
+
const data = await response.json();
|
|
43
|
+
return {
|
|
44
|
+
success: true,
|
|
45
|
+
event: data,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return {
|
|
50
|
+
error: 'Error updating event',
|
|
51
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=update-event.js.map
|
|
@@ -5,7 +5,7 @@ import { googleSheetsTools } from './tools/index.js';
|
|
|
5
5
|
export default defineToolkit({
|
|
6
6
|
id: 'google-sheets',
|
|
7
7
|
displayName: 'Google Sheets',
|
|
8
|
-
shortDescription: '
|
|
8
|
+
shortDescription: 'Read, write, append, and manage Google Sheets spreadsheets and cell values.',
|
|
9
9
|
category: 'Document & File Management',
|
|
10
10
|
icon: GSHEETS_ICON,
|
|
11
11
|
auth: {
|
|
@@ -38,7 +38,7 @@ export default defineToolkit({
|
|
|
38
38
|
description: entry.description,
|
|
39
39
|
tool: entry.tool,
|
|
40
40
|
requiredAuth: entry.requiredAuth,
|
|
41
|
-
scope: inferToolScope(entry.name),
|
|
41
|
+
scope: entry.scope ?? inferToolScope(entry.name),
|
|
42
42
|
})),
|
|
43
43
|
meta: { since: '0.0.2' },
|
|
44
44
|
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const appendValues: import("ai").Tool<{
|
|
2
|
+
values: (string | number | boolean | null)[][];
|
|
3
|
+
range: string;
|
|
4
|
+
googleSheetsToken: string;
|
|
5
|
+
spreadsheetId: string;
|
|
6
|
+
valueInputOption: "RAW" | "USER_ENTERED";
|
|
7
|
+
}, {
|
|
8
|
+
error: string;
|
|
9
|
+
details: any;
|
|
10
|
+
success?: undefined;
|
|
11
|
+
spreadsheetId?: undefined;
|
|
12
|
+
tableRange?: undefined;
|
|
13
|
+
updatedRange?: undefined;
|
|
14
|
+
updatedRows?: undefined;
|
|
15
|
+
updatedColumns?: undefined;
|
|
16
|
+
updatedCells?: undefined;
|
|
17
|
+
message?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
success: boolean;
|
|
20
|
+
spreadsheetId: any;
|
|
21
|
+
tableRange: any;
|
|
22
|
+
updatedRange: any;
|
|
23
|
+
updatedRows: any;
|
|
24
|
+
updatedColumns: any;
|
|
25
|
+
updatedCells: any;
|
|
26
|
+
error?: undefined;
|
|
27
|
+
details?: undefined;
|
|
28
|
+
message?: undefined;
|
|
29
|
+
} | {
|
|
30
|
+
error: string;
|
|
31
|
+
message: string;
|
|
32
|
+
details?: undefined;
|
|
33
|
+
success?: undefined;
|
|
34
|
+
spreadsheetId?: undefined;
|
|
35
|
+
tableRange?: undefined;
|
|
36
|
+
updatedRange?: undefined;
|
|
37
|
+
updatedRows?: undefined;
|
|
38
|
+
updatedColumns?: undefined;
|
|
39
|
+
updatedCells?: undefined;
|
|
40
|
+
}>;
|
|
41
|
+
//# sourceMappingURL=append-values.d.ts.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const appendValues = tool({
|
|
5
|
+
description: 'Append rows of values to a Google Sheets spreadsheet range (e.g., adding new rows at the bottom of a table).',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
googleSheetsToken: z.string().describe('The Google Sheets access token'),
|
|
8
|
+
spreadsheetId: z.string().describe('The ID of the spreadsheet'),
|
|
9
|
+
range: z.string().describe('The A1 notation of a range where values should be appended (e.g., "Sheet1!A:E")'),
|
|
10
|
+
values: z.array(z.array(z.union([z.string(), z.number(), z.boolean(), z.null()]))).describe('A 2D array of row data to append (e.g., [["Alice", 30, true], ["Bob", 25, false]])'),
|
|
11
|
+
valueInputOption: z.enum(['RAW', 'USER_ENTERED']).optional().default('USER_ENTERED').describe('How the input data should be interpreted. USER_ENTERED parses values like user typing into UI.'),
|
|
12
|
+
}),
|
|
13
|
+
execute: async ({ googleSheetsToken, spreadsheetId, range, values, valueInputOption = 'USER_ENTERED' }) => {
|
|
14
|
+
try {
|
|
15
|
+
const url = `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${encodeURIComponent(range)}:append?valueInputOption=${valueInputOption}`;
|
|
16
|
+
const response = await fetch(url, {
|
|
17
|
+
method: 'POST',
|
|
18
|
+
headers: {
|
|
19
|
+
Authorization: `Bearer ${googleSheetsToken}`,
|
|
20
|
+
'Content-Type': 'application/json',
|
|
21
|
+
},
|
|
22
|
+
body: JSON.stringify({
|
|
23
|
+
range,
|
|
24
|
+
majorDimension: 'ROWS',
|
|
25
|
+
values,
|
|
26
|
+
}),
|
|
27
|
+
});
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
const error = await response.json();
|
|
30
|
+
return { error: 'Failed to append values', details: error };
|
|
31
|
+
}
|
|
32
|
+
const data = await response.json();
|
|
33
|
+
return {
|
|
34
|
+
success: true,
|
|
35
|
+
spreadsheetId: data.spreadsheetId,
|
|
36
|
+
tableRange: data.tableRange,
|
|
37
|
+
updatedRange: data.updates?.updatedRange,
|
|
38
|
+
updatedRows: data.updates?.updatedRows,
|
|
39
|
+
updatedColumns: data.updates?.updatedColumns,
|
|
40
|
+
updatedCells: data.updates?.updatedCells,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return {
|
|
45
|
+
error: 'Error appending values',
|
|
46
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=append-values.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const clearValues: import("ai").Tool<{
|
|
2
|
+
range: string;
|
|
3
|
+
googleSheetsToken: string;
|
|
4
|
+
spreadsheetId: string;
|
|
5
|
+
}, {
|
|
6
|
+
error: string;
|
|
7
|
+
details: any;
|
|
8
|
+
success?: undefined;
|
|
9
|
+
spreadsheetId?: undefined;
|
|
10
|
+
clearedRange?: undefined;
|
|
11
|
+
message?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
success: boolean;
|
|
14
|
+
spreadsheetId: any;
|
|
15
|
+
clearedRange: any;
|
|
16
|
+
error?: undefined;
|
|
17
|
+
details?: undefined;
|
|
18
|
+
message?: undefined;
|
|
19
|
+
} | {
|
|
20
|
+
error: string;
|
|
21
|
+
message: string;
|
|
22
|
+
details?: undefined;
|
|
23
|
+
success?: undefined;
|
|
24
|
+
spreadsheetId?: undefined;
|
|
25
|
+
clearedRange?: undefined;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=clear-values.d.ts.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const clearValues = tool({
|
|
5
|
+
description: 'Clear values from a specific range in a Google Sheets spreadsheet, leaving cell formatting intact.',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
googleSheetsToken: z.string().describe('The Google Sheets access token'),
|
|
8
|
+
spreadsheetId: z.string().describe('The ID of the spreadsheet'),
|
|
9
|
+
range: z.string().describe('The A1 notation of the values to clear (e.g., "Sheet1!A1:B10")'),
|
|
10
|
+
}),
|
|
11
|
+
execute: async ({ googleSheetsToken, spreadsheetId, range }) => {
|
|
12
|
+
try {
|
|
13
|
+
const url = `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${encodeURIComponent(range)}:clear`;
|
|
14
|
+
const response = await fetch(url, {
|
|
15
|
+
method: 'POST',
|
|
16
|
+
headers: {
|
|
17
|
+
Authorization: `Bearer ${googleSheetsToken}`,
|
|
18
|
+
'Content-Type': 'application/json',
|
|
19
|
+
},
|
|
20
|
+
body: JSON.stringify({}),
|
|
21
|
+
});
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
const error = await response.json();
|
|
24
|
+
return { error: 'Failed to clear values', details: error };
|
|
25
|
+
}
|
|
26
|
+
const data = await response.json();
|
|
27
|
+
return {
|
|
28
|
+
success: true,
|
|
29
|
+
spreadsheetId: data.spreadsheetId,
|
|
30
|
+
clearedRange: data.clearedRange,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return {
|
|
35
|
+
error: 'Error clearing values',
|
|
36
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=clear-values.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const createSpreadsheet: import("ai").Tool<{
|
|
2
|
+
title: string;
|
|
3
|
+
googleSheetsToken: string;
|
|
4
|
+
sheetTitles?: string[] | undefined;
|
|
5
|
+
}, {
|
|
6
|
+
error: string;
|
|
7
|
+
details: any;
|
|
8
|
+
success?: undefined;
|
|
9
|
+
spreadsheetId?: undefined;
|
|
10
|
+
spreadsheetUrl?: undefined;
|
|
11
|
+
title?: undefined;
|
|
12
|
+
sheets?: undefined;
|
|
13
|
+
message?: undefined;
|
|
14
|
+
} | {
|
|
15
|
+
success: boolean;
|
|
16
|
+
spreadsheetId: any;
|
|
17
|
+
spreadsheetUrl: any;
|
|
18
|
+
title: any;
|
|
19
|
+
sheets: any;
|
|
20
|
+
error?: undefined;
|
|
21
|
+
details?: undefined;
|
|
22
|
+
message?: undefined;
|
|
23
|
+
} | {
|
|
24
|
+
error: string;
|
|
25
|
+
message: string;
|
|
26
|
+
details?: undefined;
|
|
27
|
+
success?: undefined;
|
|
28
|
+
spreadsheetId?: undefined;
|
|
29
|
+
spreadsheetUrl?: undefined;
|
|
30
|
+
title?: undefined;
|
|
31
|
+
sheets?: undefined;
|
|
32
|
+
}>;
|
|
33
|
+
//# sourceMappingURL=create-spreadsheet.d.ts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const createSpreadsheet = tool({
|
|
5
|
+
description: 'Create a new Google Sheets spreadsheet with a specified title and optional sheet tabs.',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
googleSheetsToken: z.string().describe('The Google Sheets access token'),
|
|
8
|
+
title: z.string().describe('The title of the new spreadsheet'),
|
|
9
|
+
sheetTitles: z.array(z.string()).optional().describe('Optional list of initial sheet tab titles to create (e.g., ["Summary", "Data"])'),
|
|
10
|
+
}),
|
|
11
|
+
execute: async ({ googleSheetsToken, title, sheetTitles }) => {
|
|
12
|
+
try {
|
|
13
|
+
const url = 'https://sheets.googleapis.com/v4/spreadsheets';
|
|
14
|
+
const payload = {
|
|
15
|
+
properties: {
|
|
16
|
+
title,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
if (sheetTitles && sheetTitles.length > 0) {
|
|
20
|
+
payload.sheets = sheetTitles.map((sheetTitle) => ({
|
|
21
|
+
properties: {
|
|
22
|
+
title: sheetTitle,
|
|
23
|
+
},
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
const response = await fetch(url, {
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: {
|
|
29
|
+
Authorization: `Bearer ${googleSheetsToken}`,
|
|
30
|
+
'Content-Type': 'application/json',
|
|
31
|
+
},
|
|
32
|
+
body: JSON.stringify(payload),
|
|
33
|
+
});
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
const error = await response.json();
|
|
36
|
+
return { error: 'Failed to create spreadsheet', details: error };
|
|
37
|
+
}
|
|
38
|
+
const data = await response.json();
|
|
39
|
+
return {
|
|
40
|
+
success: true,
|
|
41
|
+
spreadsheetId: data.spreadsheetId,
|
|
42
|
+
spreadsheetUrl: data.spreadsheetUrl,
|
|
43
|
+
title: data.properties?.title,
|
|
44
|
+
sheets: data.sheets?.map((s) => ({
|
|
45
|
+
sheetId: s.properties?.sheetId,
|
|
46
|
+
title: s.properties?.title,
|
|
47
|
+
index: s.properties?.index,
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return {
|
|
53
|
+
error: 'Error creating spreadsheet',
|
|
54
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=create-spreadsheet.js.map
|