@jezweb/mcp-integrations 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/README.md +10 -3
  2. package/dist/australia/business/clients/abr.d.ts +45 -0
  3. package/dist/australia/business/clients/abr.d.ts.map +1 -0
  4. package/dist/australia/business/clients/abr.js +167 -0
  5. package/dist/australia/business/clients/abr.js.map +1 -0
  6. package/dist/australia/business/clients/asic.d.ts +46 -0
  7. package/dist/australia/business/clients/asic.d.ts.map +1 -0
  8. package/dist/australia/business/clients/asic.js +128 -0
  9. package/dist/australia/business/clients/asic.js.map +1 -0
  10. package/dist/australia/business/index.d.ts +19 -0
  11. package/dist/australia/business/index.d.ts.map +1 -0
  12. package/dist/australia/business/index.js +14 -0
  13. package/dist/australia/business/index.js.map +1 -0
  14. package/dist/australia/business/tools/index.d.ts +29 -0
  15. package/dist/australia/business/tools/index.d.ts.map +1 -0
  16. package/dist/australia/business/tools/index.js +174 -0
  17. package/dist/australia/business/tools/index.js.map +1 -0
  18. package/dist/australia/datetime/clients/holidays.d.ts +85 -0
  19. package/dist/australia/datetime/clients/holidays.d.ts.map +1 -0
  20. package/dist/australia/datetime/clients/holidays.js +93 -0
  21. package/dist/australia/datetime/clients/holidays.js.map +1 -0
  22. package/dist/australia/datetime/index.d.ts +22 -0
  23. package/dist/australia/datetime/index.d.ts.map +1 -0
  24. package/dist/australia/datetime/index.js +14 -0
  25. package/dist/australia/datetime/index.js.map +1 -0
  26. package/dist/australia/datetime/tools/index.d.ts +55 -0
  27. package/dist/australia/datetime/tools/index.d.ts.map +1 -0
  28. package/dist/australia/datetime/tools/index.js +439 -0
  29. package/dist/australia/datetime/tools/index.js.map +1 -0
  30. package/dist/australia/index.d.ts +47 -0
  31. package/dist/australia/index.d.ts.map +1 -0
  32. package/dist/australia/index.js +29 -0
  33. package/dist/australia/index.js.map +1 -0
  34. package/dist/australia/ip/api-client.d.ts +130 -0
  35. package/dist/australia/ip/api-client.d.ts.map +1 -0
  36. package/dist/australia/ip/api-client.js +151 -0
  37. package/dist/australia/ip/api-client.js.map +1 -0
  38. package/dist/australia/ip/index.d.ts +19 -0
  39. package/dist/australia/ip/index.d.ts.map +1 -0
  40. package/dist/australia/ip/index.js +13 -0
  41. package/dist/australia/ip/index.js.map +1 -0
  42. package/dist/australia/ip/tools/index.d.ts +24 -0
  43. package/dist/australia/ip/tools/index.d.ts.map +1 -0
  44. package/dist/australia/ip/tools/index.js +279 -0
  45. package/dist/australia/ip/tools/index.js.map +1 -0
  46. package/dist/google/calendar/prompts.js +2 -2
  47. package/dist/google/calendar/prompts.js.map +1 -1
  48. package/dist/google/calendar/resources.js +1 -1
  49. package/dist/google/calendar/resources.js.map +1 -1
  50. package/dist/google/calendar/tools/calendars.js +1 -1
  51. package/dist/google/calendar/tools/calendars.js.map +1 -1
  52. package/dist/google/calendar/tools/events.d.ts.map +1 -1
  53. package/dist/google/calendar/tools/events.js +6 -5
  54. package/dist/google/calendar/tools/events.js.map +1 -1
  55. package/dist/google/chat/index.d.ts +46 -0
  56. package/dist/google/chat/index.d.ts.map +1 -0
  57. package/dist/google/chat/index.js +56 -0
  58. package/dist/google/chat/index.js.map +1 -0
  59. package/dist/google/chat/prompts.d.ts +71 -0
  60. package/dist/google/chat/prompts.d.ts.map +1 -0
  61. package/dist/google/chat/prompts.js +142 -0
  62. package/dist/google/chat/prompts.js.map +1 -0
  63. package/dist/google/chat/resources.d.ts +47 -0
  64. package/dist/google/chat/resources.d.ts.map +1 -0
  65. package/dist/google/chat/resources.js +95 -0
  66. package/dist/google/chat/resources.js.map +1 -0
  67. package/dist/google/chat/tools/index.d.ts +1122 -0
  68. package/dist/google/chat/tools/index.d.ts.map +1 -0
  69. package/dist/google/chat/tools/index.js +99 -0
  70. package/dist/google/chat/tools/index.js.map +1 -0
  71. package/dist/google/chat/tools/members.d.ts +50 -0
  72. package/dist/google/chat/tools/members.d.ts.map +1 -0
  73. package/dist/google/chat/tools/members.js +155 -0
  74. package/dist/google/chat/tools/members.js.map +1 -0
  75. package/dist/google/chat/tools/messages.d.ts +180 -0
  76. package/dist/google/chat/tools/messages.d.ts.map +1 -0
  77. package/dist/google/chat/tools/messages.js +340 -0
  78. package/dist/google/chat/tools/messages.js.map +1 -0
  79. package/dist/google/chat/tools/spaces.d.ts +51 -0
  80. package/dist/google/chat/tools/spaces.d.ts.map +1 -0
  81. package/dist/google/chat/tools/spaces.js +174 -0
  82. package/dist/google/chat/tools/spaces.js.map +1 -0
  83. package/dist/google/contacts/index.d.ts +27 -0
  84. package/dist/google/contacts/index.d.ts.map +1 -0
  85. package/dist/google/contacts/index.js +30 -0
  86. package/dist/google/contacts/index.js.map +1 -0
  87. package/dist/google/contacts/prompts.d.ts +71 -0
  88. package/dist/google/contacts/prompts.d.ts.map +1 -0
  89. package/dist/google/contacts/prompts.js +129 -0
  90. package/dist/google/contacts/prompts.js.map +1 -0
  91. package/dist/google/contacts/resources.d.ts +47 -0
  92. package/dist/google/contacts/resources.d.ts.map +1 -0
  93. package/dist/google/contacts/resources.js +128 -0
  94. package/dist/google/contacts/resources.js.map +1 -0
  95. package/dist/google/contacts/tools/contacts.d.ts +154 -0
  96. package/dist/google/contacts/tools/contacts.d.ts.map +1 -0
  97. package/dist/google/contacts/tools/contacts.js +416 -0
  98. package/dist/google/contacts/tools/contacts.js.map +1 -0
  99. package/dist/google/contacts/tools/index.d.ts +524 -0
  100. package/dist/google/contacts/tools/index.d.ts.map +1 -0
  101. package/dist/google/contacts/tools/index.js +63 -0
  102. package/dist/google/contacts/tools/index.js.map +1 -0
  103. package/dist/google/docs/index.d.ts +43 -0
  104. package/dist/google/docs/index.d.ts.map +1 -0
  105. package/dist/google/docs/index.js +51 -0
  106. package/dist/google/docs/index.js.map +1 -0
  107. package/dist/google/docs/prompts.d.ts +71 -0
  108. package/dist/google/docs/prompts.d.ts.map +1 -0
  109. package/dist/google/docs/prompts.js +154 -0
  110. package/dist/google/docs/prompts.js.map +1 -0
  111. package/dist/google/docs/resources.d.ts +48 -0
  112. package/dist/google/docs/resources.d.ts.map +1 -0
  113. package/dist/google/docs/resources.js +111 -0
  114. package/dist/google/docs/resources.js.map +1 -0
  115. package/dist/google/docs/tools/index.d.ts +738 -0
  116. package/dist/google/docs/tools/index.d.ts.map +1 -0
  117. package/dist/google/docs/tools/index.js +80 -0
  118. package/dist/google/docs/tools/index.js.map +1 -0
  119. package/dist/google/docs/tools/read.d.ts +47 -0
  120. package/dist/google/docs/tools/read.d.ts.map +1 -0
  121. package/dist/google/docs/tools/read.js +255 -0
  122. package/dist/google/docs/tools/read.js.map +1 -0
  123. package/dist/google/docs/tools/write.d.ts +182 -0
  124. package/dist/google/docs/tools/write.d.ts.map +1 -0
  125. package/dist/google/docs/tools/write.js +670 -0
  126. package/dist/google/docs/tools/write.js.map +1 -0
  127. package/dist/google/drive/index.d.ts +30 -0
  128. package/dist/google/drive/index.d.ts.map +1 -0
  129. package/dist/google/drive/index.js +42 -0
  130. package/dist/google/drive/index.js.map +1 -0
  131. package/dist/google/drive/prompts.d.ts +115 -0
  132. package/dist/google/drive/prompts.d.ts.map +1 -0
  133. package/dist/google/drive/prompts.js +193 -0
  134. package/dist/google/drive/prompts.js.map +1 -0
  135. package/dist/google/drive/resources.d.ts +48 -0
  136. package/dist/google/drive/resources.d.ts.map +1 -0
  137. package/dist/google/drive/resources.js +106 -0
  138. package/dist/google/drive/resources.js.map +1 -0
  139. package/dist/google/drive/tools/files.d.ts +142 -0
  140. package/dist/google/drive/tools/files.d.ts.map +1 -0
  141. package/dist/google/drive/tools/files.js +461 -0
  142. package/dist/google/drive/tools/files.js.map +1 -0
  143. package/dist/google/drive/tools/folders.d.ts +69 -0
  144. package/dist/google/drive/tools/folders.d.ts.map +1 -0
  145. package/dist/google/drive/tools/folders.js +217 -0
  146. package/dist/google/drive/tools/folders.js.map +1 -0
  147. package/dist/google/drive/tools/index.d.ts +1002 -0
  148. package/dist/google/drive/tools/index.d.ts.map +1 -0
  149. package/dist/google/drive/tools/index.js +97 -0
  150. package/dist/google/drive/tools/index.js.map +1 -0
  151. package/dist/google/drive/tools/sharing.d.ts +142 -0
  152. package/dist/google/drive/tools/sharing.d.ts.map +1 -0
  153. package/dist/google/drive/tools/sharing.js +304 -0
  154. package/dist/google/drive/tools/sharing.js.map +1 -0
  155. package/dist/google/gmail/index.d.ts +30 -0
  156. package/dist/google/gmail/index.d.ts.map +1 -0
  157. package/dist/google/gmail/index.js +44 -0
  158. package/dist/google/gmail/index.js.map +1 -0
  159. package/dist/google/gmail/prompts.d.ts +121 -0
  160. package/dist/google/gmail/prompts.d.ts.map +1 -0
  161. package/dist/google/gmail/prompts.js +179 -0
  162. package/dist/google/gmail/prompts.js.map +1 -0
  163. package/dist/google/gmail/resources.d.ts +13 -0
  164. package/dist/google/gmail/resources.d.ts.map +1 -0
  165. package/dist/google/gmail/resources.js +99 -0
  166. package/dist/google/gmail/resources.js.map +1 -0
  167. package/dist/google/gmail/tools/drafts.d.ts +101 -0
  168. package/dist/google/gmail/tools/drafts.d.ts.map +1 -0
  169. package/dist/google/gmail/tools/drafts.js +256 -0
  170. package/dist/google/gmail/tools/drafts.js.map +1 -0
  171. package/dist/google/gmail/tools/index.d.ts +732 -0
  172. package/dist/google/gmail/tools/index.d.ts.map +1 -0
  173. package/dist/google/gmail/tools/index.js +96 -0
  174. package/dist/google/gmail/tools/index.js.map +1 -0
  175. package/dist/google/gmail/tools/labels.d.ts +82 -0
  176. package/dist/google/gmail/tools/labels.d.ts.map +1 -0
  177. package/dist/google/gmail/tools/labels.js +213 -0
  178. package/dist/google/gmail/tools/labels.js.map +1 -0
  179. package/dist/google/gmail/tools/messages.d.ts +107 -0
  180. package/dist/google/gmail/tools/messages.d.ts.map +1 -0
  181. package/dist/google/gmail/tools/messages.js +327 -0
  182. package/dist/google/gmail/tools/messages.js.map +1 -0
  183. package/dist/google/gmail/tools/profile.d.ts +9 -0
  184. package/dist/google/gmail/tools/profile.d.ts.map +1 -0
  185. package/dist/google/gmail/tools/profile.js +31 -0
  186. package/dist/google/gmail/tools/profile.js.map +1 -0
  187. package/dist/google/gmail/tools/threads.d.ts +73 -0
  188. package/dist/google/gmail/tools/threads.d.ts.map +1 -0
  189. package/dist/google/gmail/tools/threads.js +254 -0
  190. package/dist/google/gmail/tools/threads.js.map +1 -0
  191. package/dist/google/index.d.ts +29 -1
  192. package/dist/google/index.d.ts.map +1 -1
  193. package/dist/google/index.js +29 -1
  194. package/dist/google/index.js.map +1 -1
  195. package/dist/google/sheets/index.d.ts +43 -0
  196. package/dist/google/sheets/index.d.ts.map +1 -0
  197. package/dist/google/sheets/index.js +53 -0
  198. package/dist/google/sheets/index.js.map +1 -0
  199. package/dist/google/sheets/prompts.d.ts +71 -0
  200. package/dist/google/sheets/prompts.d.ts.map +1 -0
  201. package/dist/google/sheets/prompts.js +171 -0
  202. package/dist/google/sheets/prompts.js.map +1 -0
  203. package/dist/google/sheets/resources.d.ts +49 -0
  204. package/dist/google/sheets/resources.d.ts.map +1 -0
  205. package/dist/google/sheets/resources.js +113 -0
  206. package/dist/google/sheets/resources.js.map +1 -0
  207. package/dist/google/sheets/tools/index.d.ts +1021 -0
  208. package/dist/google/sheets/tools/index.d.ts.map +1 -0
  209. package/dist/google/sheets/tools/index.js +99 -0
  210. package/dist/google/sheets/tools/index.js.map +1 -0
  211. package/dist/google/sheets/tools/manage.d.ts +104 -0
  212. package/dist/google/sheets/tools/manage.d.ts.map +1 -0
  213. package/dist/google/sheets/tools/manage.js +255 -0
  214. package/dist/google/sheets/tools/manage.js.map +1 -0
  215. package/dist/google/sheets/tools/read.d.ts +84 -0
  216. package/dist/google/sheets/tools/read.d.ts.map +1 -0
  217. package/dist/google/sheets/tools/read.js +204 -0
  218. package/dist/google/sheets/tools/read.js.map +1 -0
  219. package/dist/google/sheets/tools/write.d.ts +109 -0
  220. package/dist/google/sheets/tools/write.d.ts.map +1 -0
  221. package/dist/google/sheets/tools/write.js +205 -0
  222. package/dist/google/sheets/tools/write.js.map +1 -0
  223. package/dist/google/tasks/index.d.ts +28 -0
  224. package/dist/google/tasks/index.d.ts.map +1 -0
  225. package/dist/google/tasks/index.js +35 -0
  226. package/dist/google/tasks/index.js.map +1 -0
  227. package/dist/google/tasks/prompts.d.ts +71 -0
  228. package/dist/google/tasks/prompts.d.ts.map +1 -0
  229. package/dist/google/tasks/prompts.js +140 -0
  230. package/dist/google/tasks/prompts.js.map +1 -0
  231. package/dist/google/tasks/resources.d.ts +47 -0
  232. package/dist/google/tasks/resources.d.ts.map +1 -0
  233. package/dist/google/tasks/resources.js +128 -0
  234. package/dist/google/tasks/resources.js.map +1 -0
  235. package/dist/google/tasks/tools/index.d.ts +609 -0
  236. package/dist/google/tasks/tools/index.d.ts.map +1 -0
  237. package/dist/google/tasks/tools/index.js +95 -0
  238. package/dist/google/tasks/tools/index.js.map +1 -0
  239. package/dist/google/tasks/tools/lists.d.ts +61 -0
  240. package/dist/google/tasks/tools/lists.d.ts.map +1 -0
  241. package/dist/google/tasks/tools/lists.js +146 -0
  242. package/dist/google/tasks/tools/lists.js.map +1 -0
  243. package/dist/google/tasks/tools/tasks.d.ts +164 -0
  244. package/dist/google/tasks/tools/tasks.d.ts.map +1 -0
  245. package/dist/google/tasks/tools/tasks.js +368 -0
  246. package/dist/google/tasks/tools/tasks.js.map +1 -0
  247. package/dist/helpers.d.ts +35 -0
  248. package/dist/helpers.d.ts.map +1 -1
  249. package/dist/helpers.js +42 -0
  250. package/dist/helpers.js.map +1 -1
  251. package/dist/index.d.ts +3 -1
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +4 -1
  254. package/dist/index.js.map +1 -1
  255. package/dist/types.d.ts +13 -0
  256. package/dist/types.d.ts.map +1 -1
  257. package/package.json +19 -18
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Google Drive Folder Tools
3
+ */
4
+ import { z } from 'zod';
5
+ /**
6
+ * List folder contents
7
+ */
8
+ export declare const listFolder: import("../../..").ToolDefinition<z.ZodObject<{
9
+ folderId: z.ZodDefault<z.ZodString>;
10
+ maxResults: z.ZodDefault<z.ZodNumber>;
11
+ pageToken: z.ZodOptional<z.ZodString>;
12
+ orderBy: z.ZodDefault<z.ZodEnum<["createdTime", "modifiedTime", "name", "folder"]>>;
13
+ showTrashed: z.ZodDefault<z.ZodBoolean>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ maxResults: number;
16
+ orderBy: "name" | "createdTime" | "modifiedTime" | "folder";
17
+ folderId: string;
18
+ showTrashed: boolean;
19
+ pageToken?: string | undefined;
20
+ }, {
21
+ maxResults?: number | undefined;
22
+ orderBy?: "name" | "createdTime" | "modifiedTime" | "folder" | undefined;
23
+ pageToken?: string | undefined;
24
+ folderId?: string | undefined;
25
+ showTrashed?: boolean | undefined;
26
+ }>>;
27
+ /**
28
+ * Create a new folder
29
+ */
30
+ export declare const createFolder: import("../../..").ToolDefinition<z.ZodObject<{
31
+ name: z.ZodString;
32
+ parentId: z.ZodOptional<z.ZodString>;
33
+ description: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ name: string;
36
+ description?: string | undefined;
37
+ parentId?: string | undefined;
38
+ }, {
39
+ name: string;
40
+ description?: string | undefined;
41
+ parentId?: string | undefined;
42
+ }>>;
43
+ /**
44
+ * Get folder info and path
45
+ */
46
+ export declare const getFolderInfo: import("../../..").ToolDefinition<z.ZodObject<{
47
+ folderId: z.ZodString;
48
+ }, "strip", z.ZodTypeAny, {
49
+ folderId: string;
50
+ }, {
51
+ folderId: string;
52
+ }>>;
53
+ /**
54
+ * Move file/folder to different parent
55
+ */
56
+ export declare const moveItem: import("../../..").ToolDefinition<z.ZodObject<{
57
+ fileId: z.ZodString;
58
+ newParentId: z.ZodString;
59
+ removeFromCurrent: z.ZodDefault<z.ZodBoolean>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ fileId: string;
62
+ newParentId: string;
63
+ removeFromCurrent: boolean;
64
+ }, {
65
+ fileId: string;
66
+ newParentId: string;
67
+ removeFromCurrent?: boolean | undefined;
68
+ }>>;
69
+ //# sourceMappingURL=folders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../../../src/google/drive/tools/folders.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4BxB;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;GAmFrB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;GAwCvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;GAiExB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;GAsDnB,CAAC"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Google Drive Folder Tools
3
+ */
4
+ import { z } from 'zod';
5
+ import { defineTool, jsonResult, errorResult, successResult } from '../../../helpers';
6
+ const DRIVE_API = 'https://www.googleapis.com/drive/v3';
7
+ const FOLDER_MIME_TYPE = 'application/vnd.google-apps.folder';
8
+ /**
9
+ * List folder contents
10
+ */
11
+ export const listFolder = defineTool({
12
+ name: 'google_drive_list_folder',
13
+ description: 'List the contents of a folder. Use folderId="root" for the root folder.',
14
+ category: 'storage',
15
+ tags: ['drive', 'folder', 'list', 'browse', 'read'],
16
+ alwaysVisible: true,
17
+ parameters: z.object({
18
+ folderId: z.string().default('root').describe('Folder ID to list (use "root" for root folder)'),
19
+ maxResults: z.number().min(1).max(100).default(50).describe('Maximum items to return'),
20
+ pageToken: z.string().optional().describe('Token for pagination'),
21
+ orderBy: z
22
+ .enum(['createdTime', 'modifiedTime', 'name', 'folder'])
23
+ .default('folder')
24
+ .describe('Sort order (folder sorts folders first)'),
25
+ showTrashed: z.boolean().default(false).describe('Include trashed items'),
26
+ }),
27
+ handler: async (params, ctx) => {
28
+ const url = new URL(`${DRIVE_API}/files`);
29
+ // Build query
30
+ const queryParts = [`'${params.folderId}' in parents`];
31
+ if (!params.showTrashed)
32
+ queryParts.push('trashed=false');
33
+ url.searchParams.set('q', queryParts.join(' and '));
34
+ url.searchParams.set('pageSize', String(params.maxResults));
35
+ url.searchParams.set('fields', 'nextPageToken,files(id,name,mimeType,size,modifiedTime,webViewLink,starred)');
36
+ url.searchParams.set('orderBy', `${params.orderBy} desc`);
37
+ if (params.pageToken) {
38
+ url.searchParams.set('pageToken', params.pageToken);
39
+ }
40
+ const response = await ctx.authorizedFetch(url.toString());
41
+ if (!response.ok) {
42
+ const error = await response.text();
43
+ return errorResult(`Drive API error: ${response.status} - ${error}`);
44
+ }
45
+ const data = (await response.json());
46
+ if (!data.files || data.files.length === 0) {
47
+ return { content: [{ type: 'text', text: 'Folder is empty.' }] };
48
+ }
49
+ // Separate folders and files
50
+ const folders = data.files.filter((f) => f.mimeType === FOLDER_MIME_TYPE);
51
+ const files = data.files.filter((f) => f.mimeType !== FOLDER_MIME_TYPE);
52
+ const items = [
53
+ ...folders.map((f) => ({
54
+ id: f.id,
55
+ name: f.name,
56
+ type: 'folder',
57
+ modifiedTime: f.modifiedTime,
58
+ starred: f.starred,
59
+ })),
60
+ ...files.map((f) => ({
61
+ id: f.id,
62
+ name: f.name,
63
+ type: 'file',
64
+ mimeType: f.mimeType,
65
+ size: f.size ? `${Math.round(parseInt(f.size) / 1024)} KB` : undefined,
66
+ modifiedTime: f.modifiedTime,
67
+ starred: f.starred,
68
+ webViewLink: f.webViewLink,
69
+ })),
70
+ ];
71
+ return jsonResult({
72
+ folderId: params.folderId,
73
+ itemCount: items.length,
74
+ folders: folders.length,
75
+ files: files.length,
76
+ items,
77
+ nextPageToken: data.nextPageToken,
78
+ });
79
+ },
80
+ });
81
+ /**
82
+ * Create a new folder
83
+ */
84
+ export const createFolder = defineTool({
85
+ name: 'google_drive_create_folder',
86
+ description: 'Create a new folder in Google Drive.',
87
+ category: 'storage',
88
+ tags: ['drive', 'folder', 'create', 'write'],
89
+ alwaysVisible: false,
90
+ parameters: z.object({
91
+ name: z.string().describe('Folder name'),
92
+ parentId: z.string().optional().describe('Parent folder ID (root if not specified)'),
93
+ description: z.string().optional().describe('Folder description'),
94
+ }),
95
+ handler: async (params, ctx) => {
96
+ const metadata = {
97
+ name: params.name,
98
+ mimeType: FOLDER_MIME_TYPE,
99
+ };
100
+ if (params.parentId)
101
+ metadata.parents = [params.parentId];
102
+ if (params.description)
103
+ metadata.description = params.description;
104
+ const response = await ctx.authorizedFetch(`${DRIVE_API}/files?fields=id,name,webViewLink`, {
105
+ method: 'POST',
106
+ headers: { 'Content-Type': 'application/json' },
107
+ body: JSON.stringify(metadata),
108
+ });
109
+ if (!response.ok) {
110
+ const error = await response.text();
111
+ return errorResult(`Failed to create folder: ${response.status} - ${error}`);
112
+ }
113
+ const folder = (await response.json());
114
+ return successResult(`Folder created successfully.\nID: ${folder.id}\nName: ${folder.name}\nLink: ${folder.webViewLink}`);
115
+ },
116
+ });
117
+ /**
118
+ * Get folder info and path
119
+ */
120
+ export const getFolderInfo = defineTool({
121
+ name: 'google_drive_get_folder_info',
122
+ description: 'Get information about a folder including its path in the hierarchy.',
123
+ category: 'storage',
124
+ tags: ['drive', 'folder', 'info', 'path', 'read'],
125
+ alwaysVisible: false,
126
+ parameters: z.object({
127
+ folderId: z.string().describe('Folder ID'),
128
+ }),
129
+ handler: async (params, ctx) => {
130
+ // Get folder metadata
131
+ const url = new URL(`${DRIVE_API}/files/${params.folderId}`);
132
+ url.searchParams.set('fields', 'id,name,mimeType,createdTime,modifiedTime,parents,webViewLink,description,starred,owners');
133
+ const response = await ctx.authorizedFetch(url.toString());
134
+ if (!response.ok) {
135
+ const error = await response.text();
136
+ return errorResult(`Failed to get folder info: ${response.status} - ${error}`);
137
+ }
138
+ const folder = (await response.json());
139
+ if (folder.mimeType !== FOLDER_MIME_TYPE) {
140
+ return errorResult('The specified ID is not a folder');
141
+ }
142
+ // Build path by traversing parents
143
+ const path = [folder.name];
144
+ let currentParents = folder.parents;
145
+ while (currentParents && currentParents.length > 0) {
146
+ const parentId = currentParents[0];
147
+ if (parentId === 'root') {
148
+ path.unshift('My Drive');
149
+ break;
150
+ }
151
+ const parentResp = await ctx.authorizedFetch(`${DRIVE_API}/files/${parentId}?fields=name,parents`);
152
+ if (!parentResp.ok)
153
+ break;
154
+ const parent = (await parentResp.json());
155
+ path.unshift(parent.name);
156
+ currentParents = parent.parents;
157
+ }
158
+ return jsonResult({
159
+ id: folder.id,
160
+ name: folder.name,
161
+ path: path.join(' / '),
162
+ createdTime: folder.createdTime,
163
+ modifiedTime: folder.modifiedTime,
164
+ webViewLink: folder.webViewLink,
165
+ description: folder.description,
166
+ starred: folder.starred,
167
+ owner: folder.owners?.[0],
168
+ });
169
+ },
170
+ });
171
+ /**
172
+ * Move file/folder to different parent
173
+ */
174
+ export const moveItem = defineTool({
175
+ name: 'google_drive_move_item',
176
+ description: 'Move a file or folder to a different folder.',
177
+ category: 'storage',
178
+ tags: ['drive', 'move', 'organize', 'write'],
179
+ alwaysVisible: false,
180
+ parameters: z.object({
181
+ fileId: z.string().describe('File or folder ID to move'),
182
+ newParentId: z.string().describe('Destination folder ID'),
183
+ removeFromCurrent: z
184
+ .boolean()
185
+ .default(true)
186
+ .describe('Remove from current parent (false to add to multiple folders)'),
187
+ }),
188
+ handler: async (params, ctx) => {
189
+ // First get current parents
190
+ const metaResp = await ctx.authorizedFetch(`${DRIVE_API}/files/${params.fileId}?fields=id,name,parents`);
191
+ if (!metaResp.ok) {
192
+ const error = await metaResp.text();
193
+ return errorResult(`Failed to get file info: ${metaResp.status} - ${error}`);
194
+ }
195
+ const file = (await metaResp.json());
196
+ const currentParents = file.parents || [];
197
+ // Build URL with addParents and removeParents
198
+ const url = new URL(`${DRIVE_API}/files/${params.fileId}`);
199
+ url.searchParams.set('addParents', params.newParentId);
200
+ if (params.removeFromCurrent && currentParents.length > 0) {
201
+ url.searchParams.set('removeParents', currentParents.join(','));
202
+ }
203
+ url.searchParams.set('fields', 'id,name,parents');
204
+ const response = await ctx.authorizedFetch(url.toString(), {
205
+ method: 'PATCH',
206
+ headers: { 'Content-Type': 'application/json' },
207
+ body: JSON.stringify({}),
208
+ });
209
+ if (!response.ok) {
210
+ const error = await response.text();
211
+ return errorResult(`Failed to move item: ${response.status} - ${error}`);
212
+ }
213
+ const updated = (await response.json());
214
+ return successResult(`Item moved successfully.\nName: ${updated.name}\nNew location: ${updated.parents?.join(', ')}`);
215
+ },
216
+ });
217
+ //# sourceMappingURL=folders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.js","sourceRoot":"","sources":["../../../../src/google/drive/tools/folders.ts"],"names":[],"mappings":"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"}