@mcp-z/mcp-drive 1.0.0

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 (202) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +163 -0
  3. package/bin/server.js +5 -0
  4. package/dist/cjs/constants.d.cts +7 -0
  5. package/dist/cjs/constants.d.ts +7 -0
  6. package/dist/cjs/constants.js +18 -0
  7. package/dist/cjs/constants.js.map +1 -0
  8. package/dist/cjs/index.d.cts +8 -0
  9. package/dist/cjs/index.d.ts +8 -0
  10. package/dist/cjs/index.js +314 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/lib/create-store.d.cts +2 -0
  13. package/dist/cjs/lib/create-store.d.ts +2 -0
  14. package/dist/cjs/lib/create-store.js +166 -0
  15. package/dist/cjs/lib/create-store.js.map +1 -0
  16. package/dist/cjs/lib/query-builder.d.cts +45 -0
  17. package/dist/cjs/lib/query-builder.d.ts +45 -0
  18. package/dist/cjs/lib/query-builder.js +219 -0
  19. package/dist/cjs/lib/query-builder.js.map +1 -0
  20. package/dist/cjs/mcp/index.d.cts +3 -0
  21. package/dist/cjs/mcp/index.d.ts +3 -0
  22. package/dist/cjs/mcp/index.js +66 -0
  23. package/dist/cjs/mcp/index.js.map +1 -0
  24. package/dist/cjs/mcp/prompts/index.d.cts +2 -0
  25. package/dist/cjs/mcp/prompts/index.d.ts +2 -0
  26. package/dist/cjs/mcp/prompts/index.js +26 -0
  27. package/dist/cjs/mcp/prompts/index.js.map +1 -0
  28. package/dist/cjs/mcp/prompts/organize-files.d.cts +16 -0
  29. package/dist/cjs/mcp/prompts/organize-files.d.ts +16 -0
  30. package/dist/cjs/mcp/prompts/organize-files.js +169 -0
  31. package/dist/cjs/mcp/prompts/organize-files.js.map +1 -0
  32. package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
  33. package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
  34. package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
  35. package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
  36. package/dist/cjs/mcp/resources/file.d.cts +9 -0
  37. package/dist/cjs/mcp/resources/file.d.ts +9 -0
  38. package/dist/cjs/mcp/resources/file.js +247 -0
  39. package/dist/cjs/mcp/resources/file.js.map +1 -0
  40. package/dist/cjs/mcp/resources/index.d.cts +1 -0
  41. package/dist/cjs/mcp/resources/index.d.ts +1 -0
  42. package/dist/cjs/mcp/resources/index.js +17 -0
  43. package/dist/cjs/mcp/resources/index.js.map +1 -0
  44. package/dist/cjs/mcp/tools/file-move-to-trash.d.cts +59 -0
  45. package/dist/cjs/mcp/tools/file-move-to-trash.d.ts +59 -0
  46. package/dist/cjs/mcp/tools/file-move-to-trash.js +334 -0
  47. package/dist/cjs/mcp/tools/file-move-to-trash.js.map +1 -0
  48. package/dist/cjs/mcp/tools/file-move.d.cts +73 -0
  49. package/dist/cjs/mcp/tools/file-move.d.ts +73 -0
  50. package/dist/cjs/mcp/tools/file-move.js +613 -0
  51. package/dist/cjs/mcp/tools/file-move.js.map +1 -0
  52. package/dist/cjs/mcp/tools/files-search.d.cts +135 -0
  53. package/dist/cjs/mcp/tools/files-search.d.ts +135 -0
  54. package/dist/cjs/mcp/tools/files-search.js +558 -0
  55. package/dist/cjs/mcp/tools/files-search.js.map +1 -0
  56. package/dist/cjs/mcp/tools/folder-contents.d.cts +139 -0
  57. package/dist/cjs/mcp/tools/folder-contents.d.ts +139 -0
  58. package/dist/cjs/mcp/tools/folder-contents.js +513 -0
  59. package/dist/cjs/mcp/tools/folder-contents.js.map +1 -0
  60. package/dist/cjs/mcp/tools/folder-create.d.cts +59 -0
  61. package/dist/cjs/mcp/tools/folder-create.d.ts +59 -0
  62. package/dist/cjs/mcp/tools/folder-create.js +368 -0
  63. package/dist/cjs/mcp/tools/folder-create.js.map +1 -0
  64. package/dist/cjs/mcp/tools/folder-path.d.cts +49 -0
  65. package/dist/cjs/mcp/tools/folder-path.d.ts +49 -0
  66. package/dist/cjs/mcp/tools/folder-path.js +367 -0
  67. package/dist/cjs/mcp/tools/folder-path.js.map +1 -0
  68. package/dist/cjs/mcp/tools/folder-search.d.cts +139 -0
  69. package/dist/cjs/mcp/tools/folder-search.d.ts +139 -0
  70. package/dist/cjs/mcp/tools/folder-search.js +760 -0
  71. package/dist/cjs/mcp/tools/folder-search.js.map +1 -0
  72. package/dist/cjs/mcp/tools/index.d.cts +7 -0
  73. package/dist/cjs/mcp/tools/index.d.ts +7 -0
  74. package/dist/cjs/mcp/tools/index.js +46 -0
  75. package/dist/cjs/mcp/tools/index.js.map +1 -0
  76. package/dist/cjs/package.json +1 -0
  77. package/dist/cjs/schemas/drive-query-schema.d.cts +40 -0
  78. package/dist/cjs/schemas/drive-query-schema.d.ts +40 -0
  79. package/dist/cjs/schemas/drive-query-schema.js +90 -0
  80. package/dist/cjs/schemas/drive-query-schema.js.map +1 -0
  81. package/dist/cjs/schemas/drive-validation.d.cts +48 -0
  82. package/dist/cjs/schemas/drive-validation.d.ts +48 -0
  83. package/dist/cjs/schemas/drive-validation.js +96 -0
  84. package/dist/cjs/schemas/drive-validation.js.map +1 -0
  85. package/dist/cjs/schemas/index.d.cts +2 -0
  86. package/dist/cjs/schemas/index.d.ts +2 -0
  87. package/dist/cjs/schemas/index.js +20 -0
  88. package/dist/cjs/schemas/index.js.map +1 -0
  89. package/dist/cjs/setup/config.d.cts +44 -0
  90. package/dist/cjs/setup/config.d.ts +44 -0
  91. package/dist/cjs/setup/config.js +201 -0
  92. package/dist/cjs/setup/config.js.map +1 -0
  93. package/dist/cjs/setup/http.d.cts +8 -0
  94. package/dist/cjs/setup/http.d.ts +8 -0
  95. package/dist/cjs/setup/http.js +260 -0
  96. package/dist/cjs/setup/http.js.map +1 -0
  97. package/dist/cjs/setup/index.d.cts +5 -0
  98. package/dist/cjs/setup/index.d.ts +5 -0
  99. package/dist/cjs/setup/index.js +46 -0
  100. package/dist/cjs/setup/index.js.map +1 -0
  101. package/dist/cjs/setup/oauth-google.d.cts +64 -0
  102. package/dist/cjs/setup/oauth-google.d.ts +64 -0
  103. package/dist/cjs/setup/oauth-google.js +347 -0
  104. package/dist/cjs/setup/oauth-google.js.map +1 -0
  105. package/dist/cjs/setup/runtime.d.cts +10 -0
  106. package/dist/cjs/setup/runtime.d.ts +10 -0
  107. package/dist/cjs/setup/runtime.js +353 -0
  108. package/dist/cjs/setup/runtime.js.map +1 -0
  109. package/dist/cjs/setup/stdio.d.cts +7 -0
  110. package/dist/cjs/setup/stdio.d.ts +7 -0
  111. package/dist/cjs/setup/stdio.js +239 -0
  112. package/dist/cjs/setup/stdio.js.map +1 -0
  113. package/dist/cjs/types.d.cts +45 -0
  114. package/dist/cjs/types.d.ts +45 -0
  115. package/dist/cjs/types.js +5 -0
  116. package/dist/cjs/types.js.map +1 -0
  117. package/dist/esm/constants.d.ts +7 -0
  118. package/dist/esm/constants.js +7 -0
  119. package/dist/esm/constants.js.map +1 -0
  120. package/dist/esm/index.d.ts +8 -0
  121. package/dist/esm/index.js +34 -0
  122. package/dist/esm/index.js.map +1 -0
  123. package/dist/esm/lib/create-store.d.ts +2 -0
  124. package/dist/esm/lib/create-store.js +6 -0
  125. package/dist/esm/lib/create-store.js.map +1 -0
  126. package/dist/esm/lib/query-builder.d.ts +45 -0
  127. package/dist/esm/lib/query-builder.js +184 -0
  128. package/dist/esm/lib/query-builder.js.map +1 -0
  129. package/dist/esm/mcp/index.d.ts +3 -0
  130. package/dist/esm/mcp/index.js +6 -0
  131. package/dist/esm/mcp/index.js.map +1 -0
  132. package/dist/esm/mcp/prompts/index.d.ts +2 -0
  133. package/dist/esm/mcp/prompts/index.js +2 -0
  134. package/dist/esm/mcp/prompts/index.js.map +1 -0
  135. package/dist/esm/mcp/prompts/organize-files.d.ts +16 -0
  136. package/dist/esm/mcp/prompts/organize-files.js +21 -0
  137. package/dist/esm/mcp/prompts/organize-files.js.map +1 -0
  138. package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
  139. package/dist/esm/mcp/prompts/query-syntax.js +82 -0
  140. package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
  141. package/dist/esm/mcp/resources/file.d.ts +9 -0
  142. package/dist/esm/mcp/resources/file.js +77 -0
  143. package/dist/esm/mcp/resources/file.js.map +1 -0
  144. package/dist/esm/mcp/resources/index.d.ts +1 -0
  145. package/dist/esm/mcp/resources/index.js +1 -0
  146. package/dist/esm/mcp/resources/index.js.map +1 -0
  147. package/dist/esm/mcp/tools/file-move-to-trash.d.ts +59 -0
  148. package/dist/esm/mcp/tools/file-move-to-trash.js +118 -0
  149. package/dist/esm/mcp/tools/file-move-to-trash.js.map +1 -0
  150. package/dist/esm/mcp/tools/file-move.d.ts +73 -0
  151. package/dist/esm/mcp/tools/file-move.js +274 -0
  152. package/dist/esm/mcp/tools/file-move.js.map +1 -0
  153. package/dist/esm/mcp/tools/files-search.d.ts +135 -0
  154. package/dist/esm/mcp/tools/files-search.js +254 -0
  155. package/dist/esm/mcp/tools/files-search.js.map +1 -0
  156. package/dist/esm/mcp/tools/folder-contents.d.ts +139 -0
  157. package/dist/esm/mcp/tools/folder-contents.js +214 -0
  158. package/dist/esm/mcp/tools/folder-contents.js.map +1 -0
  159. package/dist/esm/mcp/tools/folder-create.d.ts +59 -0
  160. package/dist/esm/mcp/tools/folder-create.js +140 -0
  161. package/dist/esm/mcp/tools/folder-create.js.map +1 -0
  162. package/dist/esm/mcp/tools/folder-path.d.ts +49 -0
  163. package/dist/esm/mcp/tools/folder-path.js +147 -0
  164. package/dist/esm/mcp/tools/folder-path.js.map +1 -0
  165. package/dist/esm/mcp/tools/folder-search.d.ts +139 -0
  166. package/dist/esm/mcp/tools/folder-search.js +343 -0
  167. package/dist/esm/mcp/tools/folder-search.js.map +1 -0
  168. package/dist/esm/mcp/tools/index.d.ts +7 -0
  169. package/dist/esm/mcp/tools/index.js +7 -0
  170. package/dist/esm/mcp/tools/index.js.map +1 -0
  171. package/dist/esm/package.json +1 -0
  172. package/dist/esm/schemas/drive-query-schema.d.ts +40 -0
  173. package/dist/esm/schemas/drive-query-schema.js +84 -0
  174. package/dist/esm/schemas/drive-query-schema.js.map +1 -0
  175. package/dist/esm/schemas/drive-validation.d.ts +48 -0
  176. package/dist/esm/schemas/drive-validation.js +73 -0
  177. package/dist/esm/schemas/drive-validation.js.map +1 -0
  178. package/dist/esm/schemas/index.d.ts +2 -0
  179. package/dist/esm/schemas/index.js +2 -0
  180. package/dist/esm/schemas/index.js.map +1 -0
  181. package/dist/esm/setup/config.d.ts +44 -0
  182. package/dist/esm/setup/config.js +151 -0
  183. package/dist/esm/setup/config.js.map +1 -0
  184. package/dist/esm/setup/http.d.ts +8 -0
  185. package/dist/esm/setup/http.js +54 -0
  186. package/dist/esm/setup/http.js.map +1 -0
  187. package/dist/esm/setup/index.d.ts +5 -0
  188. package/dist/esm/setup/index.js +5 -0
  189. package/dist/esm/setup/index.js.map +1 -0
  190. package/dist/esm/setup/oauth-google.d.ts +64 -0
  191. package/dist/esm/setup/oauth-google.js +168 -0
  192. package/dist/esm/setup/oauth-google.js.map +1 -0
  193. package/dist/esm/setup/runtime.d.ts +10 -0
  194. package/dist/esm/setup/runtime.js +84 -0
  195. package/dist/esm/setup/runtime.js.map +1 -0
  196. package/dist/esm/setup/stdio.d.ts +7 -0
  197. package/dist/esm/setup/stdio.js +38 -0
  198. package/dist/esm/setup/stdio.js.map +1 -0
  199. package/dist/esm/types.d.ts +45 -0
  200. package/dist/esm/types.js +1 -0
  201. package/dist/esm/types.js.map +1 -0
  202. package/package.json +108 -0
@@ -0,0 +1,513 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createTool;
9
+ }
10
+ });
11
+ var _oauthgoogle = require("@mcp-z/oauth-google");
12
+ var _server = require("@mcp-z/server");
13
+ var _types = require("@modelcontextprotocol/sdk/types.js");
14
+ var _googleapis = require("googleapis");
15
+ var _zod = require("zod");
16
+ var _index = require("../../schemas/index.js");
17
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
18
+ try {
19
+ var info = gen[key](arg);
20
+ var value = info.value;
21
+ } catch (error) {
22
+ reject(error);
23
+ return;
24
+ }
25
+ if (info.done) {
26
+ resolve(value);
27
+ } else {
28
+ Promise.resolve(value).then(_next, _throw);
29
+ }
30
+ }
31
+ function _async_to_generator(fn) {
32
+ return function() {
33
+ var self = this, args = arguments;
34
+ return new Promise(function(resolve, reject) {
35
+ var gen = fn.apply(self, args);
36
+ function _next(value) {
37
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
38
+ }
39
+ function _throw(err) {
40
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
41
+ }
42
+ _next(undefined);
43
+ });
44
+ };
45
+ }
46
+ function _define_property(obj, key, value) {
47
+ if (key in obj) {
48
+ Object.defineProperty(obj, key, {
49
+ value: value,
50
+ enumerable: true,
51
+ configurable: true,
52
+ writable: true
53
+ });
54
+ } else {
55
+ obj[key] = value;
56
+ }
57
+ return obj;
58
+ }
59
+ function _instanceof(left, right) {
60
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
61
+ return !!right[Symbol.hasInstance](left);
62
+ } else {
63
+ return left instanceof right;
64
+ }
65
+ }
66
+ function _object_spread(target) {
67
+ for(var i = 1; i < arguments.length; i++){
68
+ var source = arguments[i] != null ? arguments[i] : {};
69
+ var ownKeys = Object.keys(source);
70
+ if (typeof Object.getOwnPropertySymbols === "function") {
71
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
72
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
73
+ }));
74
+ }
75
+ ownKeys.forEach(function(key) {
76
+ _define_property(target, key, source[key]);
77
+ });
78
+ }
79
+ return target;
80
+ }
81
+ function ownKeys(object, enumerableOnly) {
82
+ var keys = Object.keys(object);
83
+ if (Object.getOwnPropertySymbols) {
84
+ var symbols = Object.getOwnPropertySymbols(object);
85
+ if (enumerableOnly) {
86
+ symbols = symbols.filter(function(sym) {
87
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
88
+ });
89
+ }
90
+ keys.push.apply(keys, symbols);
91
+ }
92
+ return keys;
93
+ }
94
+ function _object_spread_props(target, source) {
95
+ source = source != null ? source : {};
96
+ if (Object.getOwnPropertyDescriptors) {
97
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
98
+ } else {
99
+ ownKeys(Object(source)).forEach(function(key) {
100
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
101
+ });
102
+ }
103
+ return target;
104
+ }
105
+ function _ts_generator(thisArg, body) {
106
+ var f, y, t, _ = {
107
+ label: 0,
108
+ sent: function() {
109
+ if (t[0] & 1) throw t[1];
110
+ return t[1];
111
+ },
112
+ trys: [],
113
+ ops: []
114
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
115
+ return d(g, "next", {
116
+ value: verb(0)
117
+ }), d(g, "throw", {
118
+ value: verb(1)
119
+ }), d(g, "return", {
120
+ value: verb(2)
121
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
122
+ value: function() {
123
+ return this;
124
+ }
125
+ }), g;
126
+ function verb(n) {
127
+ return function(v) {
128
+ return step([
129
+ n,
130
+ v
131
+ ]);
132
+ };
133
+ }
134
+ function step(op) {
135
+ if (f) throw new TypeError("Generator is already executing.");
136
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
137
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
138
+ if (y = 0, t) op = [
139
+ op[0] & 2,
140
+ t.value
141
+ ];
142
+ switch(op[0]){
143
+ case 0:
144
+ case 1:
145
+ t = op;
146
+ break;
147
+ case 4:
148
+ _.label++;
149
+ return {
150
+ value: op[1],
151
+ done: false
152
+ };
153
+ case 5:
154
+ _.label++;
155
+ y = op[1];
156
+ op = [
157
+ 0
158
+ ];
159
+ continue;
160
+ case 7:
161
+ op = _.ops.pop();
162
+ _.trys.pop();
163
+ continue;
164
+ default:
165
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
166
+ _ = 0;
167
+ continue;
168
+ }
169
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
170
+ _.label = op[1];
171
+ break;
172
+ }
173
+ if (op[0] === 6 && _.label < t[1]) {
174
+ _.label = t[1];
175
+ t = op;
176
+ break;
177
+ }
178
+ if (t && _.label < t[2]) {
179
+ _.label = t[2];
180
+ _.ops.push(op);
181
+ break;
182
+ }
183
+ if (t[2]) _.ops.pop();
184
+ _.trys.pop();
185
+ continue;
186
+ }
187
+ op = body.call(thisArg, _);
188
+ } catch (e) {
189
+ op = [
190
+ 6,
191
+ e
192
+ ];
193
+ y = 0;
194
+ } finally{
195
+ f = t = 0;
196
+ }
197
+ if (op[0] & 5) throw op[1];
198
+ return {
199
+ value: op[0] ? op[1] : void 0,
200
+ done: true
201
+ };
202
+ }
203
+ }
204
+ var AuthRequiredBranchSchema = _oauthgoogle.schemas.AuthRequiredBranchSchema;
205
+ var inputSchema = _zod.z.object(_object_spread_props(_object_spread({
206
+ folderId: _zod.z.string().min(1).describe('Folder ID to list contents (use "root" for Drive root)'),
207
+ fields: (0, _server.createFieldsSchema)({
208
+ availableFields: _index.DRIVE_FILE_FIELDS,
209
+ fieldDescriptions: _index.DRIVE_FILE_FIELD_DESCRIPTIONS,
210
+ commonPatterns: _index.DRIVE_FILE_COMMON_PATTERNS,
211
+ resourceName: 'Drive item'
212
+ })
213
+ }, (0, _server.createPaginationSchema)({
214
+ defaultPageSize: 50,
215
+ maxPageSize: 1000,
216
+ provider: 'drive'
217
+ }).shape), {
218
+ shape: (0, _server.createShapeSchema)()
219
+ }));
220
+ // Success branch schemas for different shapes
221
+ var successObjectsBranchSchema = _zod.z.object({
222
+ type: _zod.z.literal('success'),
223
+ shape: _zod.z.literal('objects'),
224
+ items: _zod.z.array(_index.DriveFileSchema).describe('Files and folders in the specified folder'),
225
+ count: _zod.z.number().describe('Number of items in this page'),
226
+ folderId: _zod.z.string().describe('ID of the folder that was listed'),
227
+ nextPageToken: _zod.z.string().optional().describe('Token for fetching next page of results')
228
+ });
229
+ var successArraysBranchSchema = _zod.z.object({
230
+ type: _zod.z.literal('success'),
231
+ shape: _zod.z.literal('arrays'),
232
+ columns: _zod.z.array(_zod.z.string()).describe('Column names in canonical order'),
233
+ rows: _zod.z.array(_zod.z.array(_zod.z.unknown())).describe('Row data matching column order'),
234
+ count: _zod.z.number().describe('Number of items in this page'),
235
+ folderId: _zod.z.string().describe('ID of the folder that was listed'),
236
+ nextPageToken: _zod.z.string().optional().describe('Token for fetching next page of results')
237
+ });
238
+ // Output schema with auth_required support
239
+ // Using z.union instead of discriminatedUnion since we have two success branches with different shapes
240
+ var outputSchema = _zod.z.union([
241
+ successObjectsBranchSchema,
242
+ successArraysBranchSchema,
243
+ AuthRequiredBranchSchema
244
+ ]);
245
+ var config = {
246
+ title: 'List Folder Contents',
247
+ description: 'List files and folders in a specific folder with field selection.',
248
+ inputSchema: inputSchema,
249
+ outputSchema: _zod.z.object({
250
+ result: outputSchema
251
+ })
252
+ };
253
+ function handler(_0, _1) {
254
+ return _async_to_generator(function(param, extra) {
255
+ var folderId, _param_pageSize, pageSize, pageToken, fields, _param_shape, shape, logger, requestedFields, drive, qStr, listOptions, response, res, items, parentIds, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, f, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, parentId, parentNameMap, parentFetches, driveFiles, filteredItems, nextPageToken, result, error, message;
256
+ return _ts_generator(this, function(_state) {
257
+ switch(_state.label){
258
+ case 0:
259
+ folderId = param.folderId, _param_pageSize = param.pageSize, pageSize = _param_pageSize === void 0 ? 50 : _param_pageSize, pageToken = param.pageToken, fields = param.fields, _param_shape = param.shape, shape = _param_shape === void 0 ? 'arrays' : _param_shape;
260
+ logger = extra.logger;
261
+ requestedFields = (0, _server.parseFields)(fields, _index.DRIVE_FILE_FIELDS);
262
+ logger.info('drive.folder.contents called', {
263
+ folderId: folderId,
264
+ pageSize: pageSize,
265
+ pageToken: pageToken ? '[provided]' : undefined,
266
+ fields: fields || 'all'
267
+ });
268
+ _state.label = 1;
269
+ case 1:
270
+ _state.trys.push([
271
+ 1,
272
+ 5,
273
+ ,
274
+ 6
275
+ ]);
276
+ drive = _googleapis.google.drive({
277
+ version: 'v3',
278
+ auth: extra.authContext.auth
279
+ });
280
+ qStr = "'".concat(folderId, "' in parents and trashed = false");
281
+ listOptions = {
282
+ q: qStr,
283
+ pageSize: Math.min(1000, pageSize),
284
+ fields: 'files(id,name,mimeType,webViewLink,modifiedTime,parents,shared,starred,owners),nextPageToken',
285
+ orderBy: 'folder,name'
286
+ };
287
+ if (pageToken && pageToken.trim().length > 0) {
288
+ listOptions.pageToken = pageToken;
289
+ }
290
+ return [
291
+ 4,
292
+ drive.files.list(listOptions)
293
+ ];
294
+ case 2:
295
+ response = _state.sent();
296
+ res = response.data;
297
+ items = Array.isArray(res === null || res === void 0 ? void 0 : res.files) ? res.files : [];
298
+ parentIds = new Set();
299
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
300
+ try {
301
+ for(_iterator = items[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
302
+ f = _step.value;
303
+ if ((f === null || f === void 0 ? void 0 : f.parents) && f.parents.length > 0) {
304
+ _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
305
+ try {
306
+ for(_iterator1 = f.parents[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
307
+ parentId = _step1.value;
308
+ if (parentId && parentId !== 'root') {
309
+ parentIds.add(parentId);
310
+ }
311
+ }
312
+ } catch (err) {
313
+ _didIteratorError1 = true;
314
+ _iteratorError1 = err;
315
+ } finally{
316
+ try {
317
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
318
+ _iterator1.return();
319
+ }
320
+ } finally{
321
+ if (_didIteratorError1) {
322
+ throw _iteratorError1;
323
+ }
324
+ }
325
+ }
326
+ }
327
+ }
328
+ } catch (err) {
329
+ _didIteratorError = true;
330
+ _iteratorError = err;
331
+ } finally{
332
+ try {
333
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
334
+ _iterator.return();
335
+ }
336
+ } finally{
337
+ if (_didIteratorError) {
338
+ throw _iteratorError;
339
+ }
340
+ }
341
+ }
342
+ parentNameMap = new Map();
343
+ if (!(parentIds.size > 0)) return [
344
+ 3,
345
+ 4
346
+ ];
347
+ logger.info('Fetching parent names', {
348
+ count: parentIds.size
349
+ });
350
+ parentFetches = Array.from(parentIds).map(function(parentId) {
351
+ return _async_to_generator(function() {
352
+ var parentRes, parentName, e;
353
+ return _ts_generator(this, function(_state) {
354
+ switch(_state.label){
355
+ case 0:
356
+ _state.trys.push([
357
+ 0,
358
+ 2,
359
+ ,
360
+ 3
361
+ ]);
362
+ return [
363
+ 4,
364
+ drive.files.get({
365
+ fileId: parentId,
366
+ fields: 'id,name'
367
+ })
368
+ ];
369
+ case 1:
370
+ parentRes = _state.sent();
371
+ parentName = parentRes.data.name || parentId;
372
+ parentNameMap.set(parentId, parentName);
373
+ return [
374
+ 3,
375
+ 3
376
+ ];
377
+ case 2:
378
+ e = _state.sent();
379
+ logger.info('Failed to fetch parent name', {
380
+ parentId: parentId,
381
+ error: e
382
+ });
383
+ parentNameMap.set(parentId, parentId); // Fallback to ID
384
+ return [
385
+ 3,
386
+ 3
387
+ ];
388
+ case 3:
389
+ return [
390
+ 2
391
+ ];
392
+ }
393
+ });
394
+ })();
395
+ });
396
+ return [
397
+ 4,
398
+ Promise.all(parentFetches)
399
+ ];
400
+ case 3:
401
+ _state.sent();
402
+ _state.label = 4;
403
+ case 4:
404
+ driveFiles = items.map(function(f) {
405
+ var id = (f === null || f === void 0 ? void 0 : f.id) ? String(f.id) : 'unknown';
406
+ var name = (f === null || f === void 0 ? void 0 : f.name) || id;
407
+ var result = {
408
+ id: id,
409
+ name: name
410
+ };
411
+ // Only include properties that have actual values
412
+ if (f === null || f === void 0 ? void 0 : f.mimeType) result.mimeType = f.mimeType;
413
+ if (f === null || f === void 0 ? void 0 : f.webViewLink) result.webViewLink = f.webViewLink;
414
+ if (f === null || f === void 0 ? void 0 : f.modifiedTime) result.modifiedTime = f.modifiedTime;
415
+ // Build parent objects with names
416
+ if ((f === null || f === void 0 ? void 0 : f.parents) && f.parents.length > 0) {
417
+ result.parents = f.parents.map(function(parentId) {
418
+ if (parentId === 'root') {
419
+ return {
420
+ id: 'root',
421
+ name: 'My Drive'
422
+ };
423
+ }
424
+ var parentName = parentNameMap.get(parentId) || parentId;
425
+ return {
426
+ id: parentId,
427
+ name: parentName
428
+ };
429
+ });
430
+ }
431
+ if ((f === null || f === void 0 ? void 0 : f.shared) !== undefined) result.shared = f.shared;
432
+ if ((f === null || f === void 0 ? void 0 : f.starred) !== undefined) result.starred = f.starred;
433
+ if ((f === null || f === void 0 ? void 0 : f.owners) && f.owners.length > 0) {
434
+ result.owners = f.owners.map(function(o) {
435
+ var owner = {};
436
+ if (o === null || o === void 0 ? void 0 : o.displayName) owner.displayName = o.displayName;
437
+ if (o === null || o === void 0 ? void 0 : o.emailAddress) owner.emailAddress = o.emailAddress;
438
+ if (o === null || o === void 0 ? void 0 : o.kind) owner.kind = o.kind;
439
+ if ((o === null || o === void 0 ? void 0 : o.me) !== undefined) owner.me = o.me;
440
+ if (o === null || o === void 0 ? void 0 : o.permissionId) owner.permissionId = o.permissionId;
441
+ if (o === null || o === void 0 ? void 0 : o.photoLink) owner.photoLink = o.photoLink;
442
+ return owner;
443
+ });
444
+ }
445
+ return result;
446
+ });
447
+ filteredItems = driveFiles.map(function(item) {
448
+ return (0, _server.filterFields)(item, requestedFields);
449
+ });
450
+ logger.info('drive.folder.contents returning', {
451
+ folderId: folderId,
452
+ resultCount: filteredItems.length,
453
+ fields: fields || 'all'
454
+ });
455
+ nextPageToken = res.nextPageToken && res.nextPageToken.trim().length > 0 ? res.nextPageToken : undefined;
456
+ // Build result based on shape
457
+ result = shape === 'arrays' ? _object_spread(_object_spread_props(_object_spread({
458
+ type: 'success',
459
+ shape: 'arrays'
460
+ }, (0, _server.toColumnarFormat)(filteredItems, requestedFields, _index.DRIVE_FILE_FIELDS)), {
461
+ count: filteredItems.length,
462
+ folderId: folderId
463
+ }), nextPageToken && {
464
+ nextPageToken: nextPageToken
465
+ }) : _object_spread({
466
+ type: 'success',
467
+ shape: 'objects',
468
+ items: filteredItems,
469
+ count: filteredItems.length,
470
+ folderId: folderId
471
+ }, nextPageToken && {
472
+ nextPageToken: nextPageToken
473
+ });
474
+ return [
475
+ 2,
476
+ {
477
+ content: [
478
+ {
479
+ type: 'text',
480
+ text: JSON.stringify(result)
481
+ }
482
+ ],
483
+ structuredContent: {
484
+ result: result
485
+ }
486
+ }
487
+ ];
488
+ case 5:
489
+ error = _state.sent();
490
+ message = _instanceof(error, Error) ? error.message : String(error);
491
+ logger.error('drive.folder.contents error', {
492
+ error: message
493
+ });
494
+ // Throw McpError
495
+ throw new _types.McpError(_types.ErrorCode.InternalError, "Error listing folder contents: ".concat(message), {
496
+ stack: _instanceof(error, Error) ? error.stack : undefined
497
+ });
498
+ case 6:
499
+ return [
500
+ 2
501
+ ];
502
+ }
503
+ });
504
+ }).apply(this, arguments);
505
+ }
506
+ function createTool() {
507
+ return {
508
+ name: 'folder-contents',
509
+ config: config,
510
+ handler: handler
511
+ };
512
+ }
513
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-drive/src/mcp/tools/folder-contents.ts"],"sourcesContent":["import type { EnrichedExtra } from '@mcp-z/oauth-google';\nimport { schemas } from '@mcp-z/oauth-google';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport { createFieldsSchema, createPaginationSchema, createShapeSchema, filterFields, parseFields, toColumnarFormat } from '@mcp-z/server';\nimport { type CallToolResult, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { google } from 'googleapis';\nimport { z } from 'zod';\nimport { DRIVE_FILE_COMMON_PATTERNS, DRIVE_FILE_FIELD_DESCRIPTIONS, DRIVE_FILE_FIELDS, type DriveFile, DriveFileSchema } from '../../schemas/index.js';\n\nconst inputSchema = z.object({\n folderId: z.string().min(1).describe('Folder ID to list contents (use \"root\" for Drive root)'),\n fields: createFieldsSchema({\n availableFields: DRIVE_FILE_FIELDS,\n fieldDescriptions: DRIVE_FILE_FIELD_DESCRIPTIONS,\n commonPatterns: DRIVE_FILE_COMMON_PATTERNS,\n resourceName: 'Drive item',\n }),\n ...createPaginationSchema({\n defaultPageSize: 50,\n maxPageSize: 1000,\n provider: 'drive',\n }).shape,\n shape: createShapeSchema(),\n});\n\n// Success branch schemas for different shapes\nconst successObjectsBranchSchema = z.object({\n type: z.literal('success'),\n shape: z.literal('objects'),\n items: z.array(DriveFileSchema).describe('Files and folders in the specified folder'),\n count: z.number().describe('Number of items in this page'),\n folderId: z.string().describe('ID of the folder that was listed'),\n nextPageToken: z.string().optional().describe('Token for fetching next page of results'),\n});\n\nconst successArraysBranchSchema = z.object({\n type: z.literal('success'),\n shape: z.literal('arrays'),\n columns: z.array(z.string()).describe('Column names in canonical order'),\n rows: z.array(z.array(z.unknown())).describe('Row data matching column order'),\n count: z.number().describe('Number of items in this page'),\n folderId: z.string().describe('ID of the folder that was listed'),\n nextPageToken: z.string().optional().describe('Token for fetching next page of results'),\n});\n\n// Output schema with auth_required support\n// Using z.union instead of discriminatedUnion since we have two success branches with different shapes\nconst outputSchema = z.union([successObjectsBranchSchema, successArraysBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n title: 'List Folder Contents',\n description: 'List files and folders in a specific folder with field selection.',\n inputSchema: inputSchema,\n outputSchema: z.object({\n result: outputSchema,\n }),\n} as const;\n\nexport type Input = z.infer<typeof inputSchema>;\nexport type Output = z.infer<typeof outputSchema>;\n\n// Type for the raw Google Drive API response\ntype DriveItem = {\n id?: string;\n name?: string;\n mimeType?: string;\n webViewLink?: string;\n modifiedTime?: string;\n parents?: string[];\n shared?: boolean;\n starred?: boolean;\n owners?: Array<{\n displayName?: string;\n emailAddress?: string;\n kind?: string;\n me?: boolean;\n permissionId?: string;\n photoLink?: string;\n }>;\n};\n\ntype DriveResponse = {\n files?: DriveItem[];\n nextPageToken?: string;\n};\n\nasync function handler({ folderId, pageSize = 50, pageToken, fields, shape = 'arrays' }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n\n const requestedFields = parseFields(fields, DRIVE_FILE_FIELDS);\n\n logger.info('drive.folder.contents called', {\n folderId,\n pageSize,\n pageToken: pageToken ? '[provided]' : undefined,\n fields: fields || 'all',\n });\n\n try {\n const drive = google.drive({ version: 'v3', auth: extra.authContext.auth });\n\n const qStr = `'${folderId}' in parents and trashed = false`;\n\n const listOptions: {\n q: string;\n pageSize: number;\n fields: string;\n orderBy: string;\n pageToken?: string;\n } = {\n q: qStr,\n pageSize: Math.min(1000, pageSize),\n fields: 'files(id,name,mimeType,webViewLink,modifiedTime,parents,shared,starred,owners),nextPageToken',\n orderBy: 'folder,name', // Folders first, then by name\n };\n if (pageToken && pageToken.trim().length > 0) {\n listOptions.pageToken = pageToken;\n }\n\n const response = await drive.files.list(listOptions);\n\n const res = response.data as DriveResponse;\n const items = Array.isArray(res?.files) ? res.files : [];\n\n const parentIds = new Set<string>();\n for (const f of items) {\n if (f?.parents && f.parents.length > 0) {\n for (const parentId of f.parents) {\n if (parentId && parentId !== 'root') {\n parentIds.add(parentId);\n }\n }\n }\n }\n\n const parentNameMap = new Map<string, string>();\n if (parentIds.size > 0) {\n logger.info('Fetching parent names', { count: parentIds.size });\n const parentFetches = Array.from(parentIds).map(async (parentId) => {\n try {\n const parentRes = await drive.files.get({\n fileId: parentId,\n fields: 'id,name',\n });\n const parentName = (parentRes.data.name as string | undefined) || parentId;\n parentNameMap.set(parentId, parentName);\n } catch (e) {\n logger.info('Failed to fetch parent name', { parentId, error: e });\n parentNameMap.set(parentId, parentId); // Fallback to ID\n }\n });\n await Promise.all(parentFetches);\n }\n\n const driveFiles: DriveFile[] = items.map((f: DriveItem) => {\n const id = f?.id ? String(f.id) : 'unknown';\n const name = f?.name || id;\n const result: DriveFile = { id, name };\n\n // Only include properties that have actual values\n if (f?.mimeType) result.mimeType = f.mimeType;\n if (f?.webViewLink) result.webViewLink = f.webViewLink;\n if (f?.modifiedTime) result.modifiedTime = f.modifiedTime;\n\n // Build parent objects with names\n if (f?.parents && f.parents.length > 0) {\n result.parents = f.parents.map((parentId) => {\n if (parentId === 'root') {\n return { id: 'root', name: 'My Drive' };\n }\n const parentName = parentNameMap.get(parentId) || parentId;\n return { id: parentId, name: parentName };\n });\n }\n\n if (f?.shared !== undefined) result.shared = f.shared;\n if (f?.starred !== undefined) result.starred = f.starred;\n\n if (f?.owners && f.owners.length > 0) {\n result.owners = f.owners.map((o) => {\n const owner: NonNullable<DriveFile['owners']>[number] = {};\n if (o?.displayName) owner.displayName = o.displayName;\n if (o?.emailAddress) owner.emailAddress = o.emailAddress;\n if (o?.kind) owner.kind = o.kind;\n if (o?.me !== undefined) owner.me = o.me;\n if (o?.permissionId) owner.permissionId = o.permissionId;\n if (o?.photoLink) owner.photoLink = o.photoLink;\n return owner;\n });\n }\n\n return result;\n });\n\n const filteredItems = driveFiles.map((item) => filterFields(item, requestedFields));\n\n logger.info('drive.folder.contents returning', {\n folderId,\n resultCount: filteredItems.length,\n fields: fields || 'all',\n });\n\n const nextPageToken = res.nextPageToken && res.nextPageToken.trim().length > 0 ? res.nextPageToken : undefined;\n\n // Build result based on shape\n const result: Output =\n shape === 'arrays'\n ? {\n type: 'success' as const,\n shape: 'arrays' as const,\n ...toColumnarFormat(filteredItems, requestedFields, DRIVE_FILE_FIELDS),\n count: filteredItems.length,\n folderId,\n ...(nextPageToken && { nextPageToken }),\n }\n : {\n type: 'success' as const,\n shape: 'objects' as const,\n items: filteredItems,\n count: filteredItems.length,\n folderId,\n ...(nextPageToken && { nextPageToken }),\n };\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result),\n },\n ],\n structuredContent: { result },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error('drive.folder.contents error', { error: message });\n\n // Throw McpError\n throw new McpError(ErrorCode.InternalError, `Error listing folder contents: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'folder-contents' as const,\n config,\n handler,\n };\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","inputSchema","z","object","folderId","string","min","describe","fields","createFieldsSchema","availableFields","DRIVE_FILE_FIELDS","fieldDescriptions","DRIVE_FILE_FIELD_DESCRIPTIONS","commonPatterns","DRIVE_FILE_COMMON_PATTERNS","resourceName","createPaginationSchema","defaultPageSize","maxPageSize","provider","shape","createShapeSchema","successObjectsBranchSchema","type","literal","items","array","DriveFileSchema","count","number","nextPageToken","optional","successArraysBranchSchema","columns","rows","unknown","outputSchema","union","config","title","description","result","handler","extra","pageSize","pageToken","logger","requestedFields","drive","qStr","listOptions","response","res","parentIds","f","parentId","parentNameMap","parentFetches","driveFiles","filteredItems","error","message","parseFields","info","undefined","google","version","auth","authContext","q","Math","orderBy","trim","length","files","list","data","Array","isArray","Set","parents","add","Map","size","from","map","parentRes","parentName","e","get","fileId","name","set","Promise","all","id","String","mimeType","webViewLink","modifiedTime","shared","starred","owners","o","owner","displayName","emailAddress","kind","me","permissionId","photoLink","item","filterFields","resultCount","toColumnarFormat","content","text","JSON","stringify","structuredContent","Error","McpError","ErrorCode","InternalError","stack"],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { EnrichedExtra } from '@mcp-z/oauth-google';
2
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import { z } from 'zod';
4
+ declare const inputSchema: z.ZodObject<{
5
+ name: z.ZodString;
6
+ parentId: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
9
+ type: z.ZodLiteral<"success">;
10
+ operationSummary: z.ZodString;
11
+ itemsProcessed: z.ZodNumber;
12
+ itemsChanged: z.ZodNumber;
13
+ completedAt: z.ZodString;
14
+ id: z.ZodString;
15
+ name: z.ZodString;
16
+ webViewLink: z.ZodString;
17
+ parentId: z.ZodOptional<z.ZodString>;
18
+ parentName: z.ZodOptional<z.ZodString>;
19
+ }, z.core.$strip>, z.ZodObject<{
20
+ type: z.ZodLiteral<"auth_required">;
21
+ provider: z.ZodString;
22
+ message: z.ZodString;
23
+ url: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strip>], "type">;
25
+ export type Input = z.infer<typeof inputSchema>;
26
+ export type Output = z.infer<typeof outputSchema>;
27
+ declare function handler({ name: folderName, parentId }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
28
+ export default function createTool(): {
29
+ name: "folder-create";
30
+ config: {
31
+ readonly title: "Create Folder";
32
+ readonly description: "Create a new folder in Google Drive. Returns folder ID for use in other operations.";
33
+ readonly inputSchema: z.ZodObject<{
34
+ name: z.ZodString;
35
+ parentId: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$strip>;
37
+ readonly outputSchema: z.ZodObject<{
38
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
39
+ type: z.ZodLiteral<"success">;
40
+ operationSummary: z.ZodString;
41
+ itemsProcessed: z.ZodNumber;
42
+ itemsChanged: z.ZodNumber;
43
+ completedAt: z.ZodString;
44
+ id: z.ZodString;
45
+ name: z.ZodString;
46
+ webViewLink: z.ZodString;
47
+ parentId: z.ZodOptional<z.ZodString>;
48
+ parentName: z.ZodOptional<z.ZodString>;
49
+ }, z.core.$strip>, z.ZodObject<{
50
+ type: z.ZodLiteral<"auth_required">;
51
+ provider: z.ZodString;
52
+ message: z.ZodString;
53
+ url: z.ZodOptional<z.ZodString>;
54
+ }, z.core.$strip>], "type">;
55
+ }, z.core.$strip>;
56
+ };
57
+ handler: typeof handler;
58
+ };
59
+ export {};
@@ -0,0 +1,59 @@
1
+ import type { EnrichedExtra } from '@mcp-z/oauth-google';
2
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import { z } from 'zod';
4
+ declare const inputSchema: z.ZodObject<{
5
+ name: z.ZodString;
6
+ parentId: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
9
+ type: z.ZodLiteral<"success">;
10
+ operationSummary: z.ZodString;
11
+ itemsProcessed: z.ZodNumber;
12
+ itemsChanged: z.ZodNumber;
13
+ completedAt: z.ZodString;
14
+ id: z.ZodString;
15
+ name: z.ZodString;
16
+ webViewLink: z.ZodString;
17
+ parentId: z.ZodOptional<z.ZodString>;
18
+ parentName: z.ZodOptional<z.ZodString>;
19
+ }, z.core.$strip>, z.ZodObject<{
20
+ type: z.ZodLiteral<"auth_required">;
21
+ provider: z.ZodString;
22
+ message: z.ZodString;
23
+ url: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strip>], "type">;
25
+ export type Input = z.infer<typeof inputSchema>;
26
+ export type Output = z.infer<typeof outputSchema>;
27
+ declare function handler({ name: folderName, parentId }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
28
+ export default function createTool(): {
29
+ name: "folder-create";
30
+ config: {
31
+ readonly title: "Create Folder";
32
+ readonly description: "Create a new folder in Google Drive. Returns folder ID for use in other operations.";
33
+ readonly inputSchema: z.ZodObject<{
34
+ name: z.ZodString;
35
+ parentId: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$strip>;
37
+ readonly outputSchema: z.ZodObject<{
38
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
39
+ type: z.ZodLiteral<"success">;
40
+ operationSummary: z.ZodString;
41
+ itemsProcessed: z.ZodNumber;
42
+ itemsChanged: z.ZodNumber;
43
+ completedAt: z.ZodString;
44
+ id: z.ZodString;
45
+ name: z.ZodString;
46
+ webViewLink: z.ZodString;
47
+ parentId: z.ZodOptional<z.ZodString>;
48
+ parentName: z.ZodOptional<z.ZodString>;
49
+ }, z.core.$strip>, z.ZodObject<{
50
+ type: z.ZodLiteral<"auth_required">;
51
+ provider: z.ZodString;
52
+ message: z.ZodString;
53
+ url: z.ZodOptional<z.ZodString>;
54
+ }, z.core.$strip>], "type">;
55
+ }, z.core.$strip>;
56
+ };
57
+ handler: typeof handler;
58
+ };
59
+ export {};