@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.
- package/LICENSE +21 -0
- package/README.md +163 -0
- package/bin/server.js +5 -0
- package/dist/cjs/constants.d.cts +7 -0
- package/dist/cjs/constants.d.ts +7 -0
- package/dist/cjs/constants.js +18 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/index.d.cts +8 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +314 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/create-store.d.cts +2 -0
- package/dist/cjs/lib/create-store.d.ts +2 -0
- package/dist/cjs/lib/create-store.js +166 -0
- package/dist/cjs/lib/create-store.js.map +1 -0
- package/dist/cjs/lib/query-builder.d.cts +45 -0
- package/dist/cjs/lib/query-builder.d.ts +45 -0
- package/dist/cjs/lib/query-builder.js +219 -0
- package/dist/cjs/lib/query-builder.js.map +1 -0
- package/dist/cjs/mcp/index.d.cts +3 -0
- package/dist/cjs/mcp/index.d.ts +3 -0
- package/dist/cjs/mcp/index.js +66 -0
- package/dist/cjs/mcp/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/index.d.cts +2 -0
- package/dist/cjs/mcp/prompts/index.d.ts +2 -0
- package/dist/cjs/mcp/prompts/index.js +26 -0
- package/dist/cjs/mcp/prompts/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/organize-files.d.cts +16 -0
- package/dist/cjs/mcp/prompts/organize-files.d.ts +16 -0
- package/dist/cjs/mcp/prompts/organize-files.js +169 -0
- package/dist/cjs/mcp/prompts/organize-files.js.map +1 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
- package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/cjs/mcp/resources/file.d.cts +9 -0
- package/dist/cjs/mcp/resources/file.d.ts +9 -0
- package/dist/cjs/mcp/resources/file.js +247 -0
- package/dist/cjs/mcp/resources/file.js.map +1 -0
- package/dist/cjs/mcp/resources/index.d.cts +1 -0
- package/dist/cjs/mcp/resources/index.d.ts +1 -0
- package/dist/cjs/mcp/resources/index.js +17 -0
- package/dist/cjs/mcp/resources/index.js.map +1 -0
- package/dist/cjs/mcp/tools/file-move-to-trash.d.cts +59 -0
- package/dist/cjs/mcp/tools/file-move-to-trash.d.ts +59 -0
- package/dist/cjs/mcp/tools/file-move-to-trash.js +334 -0
- package/dist/cjs/mcp/tools/file-move-to-trash.js.map +1 -0
- package/dist/cjs/mcp/tools/file-move.d.cts +73 -0
- package/dist/cjs/mcp/tools/file-move.d.ts +73 -0
- package/dist/cjs/mcp/tools/file-move.js +613 -0
- package/dist/cjs/mcp/tools/file-move.js.map +1 -0
- package/dist/cjs/mcp/tools/files-search.d.cts +135 -0
- package/dist/cjs/mcp/tools/files-search.d.ts +135 -0
- package/dist/cjs/mcp/tools/files-search.js +558 -0
- package/dist/cjs/mcp/tools/files-search.js.map +1 -0
- package/dist/cjs/mcp/tools/folder-contents.d.cts +139 -0
- package/dist/cjs/mcp/tools/folder-contents.d.ts +139 -0
- package/dist/cjs/mcp/tools/folder-contents.js +513 -0
- package/dist/cjs/mcp/tools/folder-contents.js.map +1 -0
- package/dist/cjs/mcp/tools/folder-create.d.cts +59 -0
- package/dist/cjs/mcp/tools/folder-create.d.ts +59 -0
- package/dist/cjs/mcp/tools/folder-create.js +368 -0
- package/dist/cjs/mcp/tools/folder-create.js.map +1 -0
- package/dist/cjs/mcp/tools/folder-path.d.cts +49 -0
- package/dist/cjs/mcp/tools/folder-path.d.ts +49 -0
- package/dist/cjs/mcp/tools/folder-path.js +367 -0
- package/dist/cjs/mcp/tools/folder-path.js.map +1 -0
- package/dist/cjs/mcp/tools/folder-search.d.cts +139 -0
- package/dist/cjs/mcp/tools/folder-search.d.ts +139 -0
- package/dist/cjs/mcp/tools/folder-search.js +760 -0
- package/dist/cjs/mcp/tools/folder-search.js.map +1 -0
- package/dist/cjs/mcp/tools/index.d.cts +7 -0
- package/dist/cjs/mcp/tools/index.d.ts +7 -0
- package/dist/cjs/mcp/tools/index.js +46 -0
- package/dist/cjs/mcp/tools/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/schemas/drive-query-schema.d.cts +40 -0
- package/dist/cjs/schemas/drive-query-schema.d.ts +40 -0
- package/dist/cjs/schemas/drive-query-schema.js +90 -0
- package/dist/cjs/schemas/drive-query-schema.js.map +1 -0
- package/dist/cjs/schemas/drive-validation.d.cts +48 -0
- package/dist/cjs/schemas/drive-validation.d.ts +48 -0
- package/dist/cjs/schemas/drive-validation.js +96 -0
- package/dist/cjs/schemas/drive-validation.js.map +1 -0
- package/dist/cjs/schemas/index.d.cts +2 -0
- package/dist/cjs/schemas/index.d.ts +2 -0
- package/dist/cjs/schemas/index.js +20 -0
- package/dist/cjs/schemas/index.js.map +1 -0
- package/dist/cjs/setup/config.d.cts +44 -0
- package/dist/cjs/setup/config.d.ts +44 -0
- package/dist/cjs/setup/config.js +201 -0
- package/dist/cjs/setup/config.js.map +1 -0
- package/dist/cjs/setup/http.d.cts +8 -0
- package/dist/cjs/setup/http.d.ts +8 -0
- package/dist/cjs/setup/http.js +260 -0
- package/dist/cjs/setup/http.js.map +1 -0
- package/dist/cjs/setup/index.d.cts +5 -0
- package/dist/cjs/setup/index.d.ts +5 -0
- package/dist/cjs/setup/index.js +46 -0
- package/dist/cjs/setup/index.js.map +1 -0
- package/dist/cjs/setup/oauth-google.d.cts +64 -0
- package/dist/cjs/setup/oauth-google.d.ts +64 -0
- package/dist/cjs/setup/oauth-google.js +347 -0
- package/dist/cjs/setup/oauth-google.js.map +1 -0
- package/dist/cjs/setup/runtime.d.cts +10 -0
- package/dist/cjs/setup/runtime.d.ts +10 -0
- package/dist/cjs/setup/runtime.js +353 -0
- package/dist/cjs/setup/runtime.js.map +1 -0
- package/dist/cjs/setup/stdio.d.cts +7 -0
- package/dist/cjs/setup/stdio.d.ts +7 -0
- package/dist/cjs/setup/stdio.js +239 -0
- package/dist/cjs/setup/stdio.js.map +1 -0
- package/dist/cjs/types.d.cts +45 -0
- package/dist/cjs/types.d.ts +45 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/constants.d.ts +7 -0
- package/dist/esm/constants.js +7 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +34 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/create-store.d.ts +2 -0
- package/dist/esm/lib/create-store.js +6 -0
- package/dist/esm/lib/create-store.js.map +1 -0
- package/dist/esm/lib/query-builder.d.ts +45 -0
- package/dist/esm/lib/query-builder.js +184 -0
- package/dist/esm/lib/query-builder.js.map +1 -0
- package/dist/esm/mcp/index.d.ts +3 -0
- package/dist/esm/mcp/index.js +6 -0
- package/dist/esm/mcp/index.js.map +1 -0
- package/dist/esm/mcp/prompts/index.d.ts +2 -0
- package/dist/esm/mcp/prompts/index.js +2 -0
- package/dist/esm/mcp/prompts/index.js.map +1 -0
- package/dist/esm/mcp/prompts/organize-files.d.ts +16 -0
- package/dist/esm/mcp/prompts/organize-files.js +21 -0
- package/dist/esm/mcp/prompts/organize-files.js.map +1 -0
- package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/esm/mcp/prompts/query-syntax.js +82 -0
- package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/esm/mcp/resources/file.d.ts +9 -0
- package/dist/esm/mcp/resources/file.js +77 -0
- package/dist/esm/mcp/resources/file.js.map +1 -0
- package/dist/esm/mcp/resources/index.d.ts +1 -0
- package/dist/esm/mcp/resources/index.js +1 -0
- package/dist/esm/mcp/resources/index.js.map +1 -0
- package/dist/esm/mcp/tools/file-move-to-trash.d.ts +59 -0
- package/dist/esm/mcp/tools/file-move-to-trash.js +118 -0
- package/dist/esm/mcp/tools/file-move-to-trash.js.map +1 -0
- package/dist/esm/mcp/tools/file-move.d.ts +73 -0
- package/dist/esm/mcp/tools/file-move.js +274 -0
- package/dist/esm/mcp/tools/file-move.js.map +1 -0
- package/dist/esm/mcp/tools/files-search.d.ts +135 -0
- package/dist/esm/mcp/tools/files-search.js +254 -0
- package/dist/esm/mcp/tools/files-search.js.map +1 -0
- package/dist/esm/mcp/tools/folder-contents.d.ts +139 -0
- package/dist/esm/mcp/tools/folder-contents.js +214 -0
- package/dist/esm/mcp/tools/folder-contents.js.map +1 -0
- package/dist/esm/mcp/tools/folder-create.d.ts +59 -0
- package/dist/esm/mcp/tools/folder-create.js +140 -0
- package/dist/esm/mcp/tools/folder-create.js.map +1 -0
- package/dist/esm/mcp/tools/folder-path.d.ts +49 -0
- package/dist/esm/mcp/tools/folder-path.js +147 -0
- package/dist/esm/mcp/tools/folder-path.js.map +1 -0
- package/dist/esm/mcp/tools/folder-search.d.ts +139 -0
- package/dist/esm/mcp/tools/folder-search.js +343 -0
- package/dist/esm/mcp/tools/folder-search.js.map +1 -0
- package/dist/esm/mcp/tools/index.d.ts +7 -0
- package/dist/esm/mcp/tools/index.js +7 -0
- package/dist/esm/mcp/tools/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/schemas/drive-query-schema.d.ts +40 -0
- package/dist/esm/schemas/drive-query-schema.js +84 -0
- package/dist/esm/schemas/drive-query-schema.js.map +1 -0
- package/dist/esm/schemas/drive-validation.d.ts +48 -0
- package/dist/esm/schemas/drive-validation.js +73 -0
- package/dist/esm/schemas/drive-validation.js.map +1 -0
- package/dist/esm/schemas/index.d.ts +2 -0
- package/dist/esm/schemas/index.js +2 -0
- package/dist/esm/schemas/index.js.map +1 -0
- package/dist/esm/setup/config.d.ts +44 -0
- package/dist/esm/setup/config.js +151 -0
- package/dist/esm/setup/config.js.map +1 -0
- package/dist/esm/setup/http.d.ts +8 -0
- package/dist/esm/setup/http.js +54 -0
- package/dist/esm/setup/http.js.map +1 -0
- package/dist/esm/setup/index.d.ts +5 -0
- package/dist/esm/setup/index.js +5 -0
- package/dist/esm/setup/index.js.map +1 -0
- package/dist/esm/setup/oauth-google.d.ts +64 -0
- package/dist/esm/setup/oauth-google.js +168 -0
- package/dist/esm/setup/oauth-google.js.map +1 -0
- package/dist/esm/setup/runtime.d.ts +10 -0
- package/dist/esm/setup/runtime.js +84 -0
- package/dist/esm/setup/runtime.js.map +1 -0
- package/dist/esm/setup/stdio.d.ts +7 -0
- package/dist/esm/setup/stdio.js +38 -0
- package/dist/esm/setup/stdio.js.map +1 -0
- package/dist/esm/types.d.ts +45 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,760 @@
|
|
|
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 _querybuilder = require("../../lib/query-builder.js");
|
|
17
|
+
var _index = require("../../schemas/index.js");
|
|
18
|
+
function _array_like_to_array(arr, len) {
|
|
19
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
20
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
21
|
+
return arr2;
|
|
22
|
+
}
|
|
23
|
+
function _array_without_holes(arr) {
|
|
24
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
25
|
+
}
|
|
26
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
27
|
+
try {
|
|
28
|
+
var info = gen[key](arg);
|
|
29
|
+
var value = info.value;
|
|
30
|
+
} catch (error) {
|
|
31
|
+
reject(error);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (info.done) {
|
|
35
|
+
resolve(value);
|
|
36
|
+
} else {
|
|
37
|
+
Promise.resolve(value).then(_next, _throw);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function _async_to_generator(fn) {
|
|
41
|
+
return function() {
|
|
42
|
+
var self = this, args = arguments;
|
|
43
|
+
return new Promise(function(resolve, reject) {
|
|
44
|
+
var gen = fn.apply(self, args);
|
|
45
|
+
function _next(value) {
|
|
46
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
47
|
+
}
|
|
48
|
+
function _throw(err) {
|
|
49
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
50
|
+
}
|
|
51
|
+
_next(undefined);
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function _define_property(obj, key, value) {
|
|
56
|
+
if (key in obj) {
|
|
57
|
+
Object.defineProperty(obj, key, {
|
|
58
|
+
value: value,
|
|
59
|
+
enumerable: true,
|
|
60
|
+
configurable: true,
|
|
61
|
+
writable: true
|
|
62
|
+
});
|
|
63
|
+
} else {
|
|
64
|
+
obj[key] = value;
|
|
65
|
+
}
|
|
66
|
+
return obj;
|
|
67
|
+
}
|
|
68
|
+
function _instanceof(left, right) {
|
|
69
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
70
|
+
return !!right[Symbol.hasInstance](left);
|
|
71
|
+
} else {
|
|
72
|
+
return left instanceof right;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function _iterable_to_array(iter) {
|
|
76
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
77
|
+
}
|
|
78
|
+
function _non_iterable_spread() {
|
|
79
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
80
|
+
}
|
|
81
|
+
function _object_spread(target) {
|
|
82
|
+
for(var i = 1; i < arguments.length; i++){
|
|
83
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
84
|
+
var ownKeys = Object.keys(source);
|
|
85
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
86
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
87
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
ownKeys.forEach(function(key) {
|
|
91
|
+
_define_property(target, key, source[key]);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return target;
|
|
95
|
+
}
|
|
96
|
+
function ownKeys(object, enumerableOnly) {
|
|
97
|
+
var keys = Object.keys(object);
|
|
98
|
+
if (Object.getOwnPropertySymbols) {
|
|
99
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
100
|
+
if (enumerableOnly) {
|
|
101
|
+
symbols = symbols.filter(function(sym) {
|
|
102
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
keys.push.apply(keys, symbols);
|
|
106
|
+
}
|
|
107
|
+
return keys;
|
|
108
|
+
}
|
|
109
|
+
function _object_spread_props(target, source) {
|
|
110
|
+
source = source != null ? source : {};
|
|
111
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
112
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
113
|
+
} else {
|
|
114
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
115
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return target;
|
|
119
|
+
}
|
|
120
|
+
function _to_consumable_array(arr) {
|
|
121
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
122
|
+
}
|
|
123
|
+
function _type_of(obj) {
|
|
124
|
+
"@swc/helpers - typeof";
|
|
125
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
126
|
+
}
|
|
127
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
128
|
+
if (!o) return;
|
|
129
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
130
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
131
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
132
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
133
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
134
|
+
}
|
|
135
|
+
function _ts_generator(thisArg, body) {
|
|
136
|
+
var f, y, t, _ = {
|
|
137
|
+
label: 0,
|
|
138
|
+
sent: function() {
|
|
139
|
+
if (t[0] & 1) throw t[1];
|
|
140
|
+
return t[1];
|
|
141
|
+
},
|
|
142
|
+
trys: [],
|
|
143
|
+
ops: []
|
|
144
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
145
|
+
return d(g, "next", {
|
|
146
|
+
value: verb(0)
|
|
147
|
+
}), d(g, "throw", {
|
|
148
|
+
value: verb(1)
|
|
149
|
+
}), d(g, "return", {
|
|
150
|
+
value: verb(2)
|
|
151
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
152
|
+
value: function() {
|
|
153
|
+
return this;
|
|
154
|
+
}
|
|
155
|
+
}), g;
|
|
156
|
+
function verb(n) {
|
|
157
|
+
return function(v) {
|
|
158
|
+
return step([
|
|
159
|
+
n,
|
|
160
|
+
v
|
|
161
|
+
]);
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function step(op) {
|
|
165
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
166
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
167
|
+
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;
|
|
168
|
+
if (y = 0, t) op = [
|
|
169
|
+
op[0] & 2,
|
|
170
|
+
t.value
|
|
171
|
+
];
|
|
172
|
+
switch(op[0]){
|
|
173
|
+
case 0:
|
|
174
|
+
case 1:
|
|
175
|
+
t = op;
|
|
176
|
+
break;
|
|
177
|
+
case 4:
|
|
178
|
+
_.label++;
|
|
179
|
+
return {
|
|
180
|
+
value: op[1],
|
|
181
|
+
done: false
|
|
182
|
+
};
|
|
183
|
+
case 5:
|
|
184
|
+
_.label++;
|
|
185
|
+
y = op[1];
|
|
186
|
+
op = [
|
|
187
|
+
0
|
|
188
|
+
];
|
|
189
|
+
continue;
|
|
190
|
+
case 7:
|
|
191
|
+
op = _.ops.pop();
|
|
192
|
+
_.trys.pop();
|
|
193
|
+
continue;
|
|
194
|
+
default:
|
|
195
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
196
|
+
_ = 0;
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
200
|
+
_.label = op[1];
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
204
|
+
_.label = t[1];
|
|
205
|
+
t = op;
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
if (t && _.label < t[2]) {
|
|
209
|
+
_.label = t[2];
|
|
210
|
+
_.ops.push(op);
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
if (t[2]) _.ops.pop();
|
|
214
|
+
_.trys.pop();
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
op = body.call(thisArg, _);
|
|
218
|
+
} catch (e) {
|
|
219
|
+
op = [
|
|
220
|
+
6,
|
|
221
|
+
e
|
|
222
|
+
];
|
|
223
|
+
y = 0;
|
|
224
|
+
} finally{
|
|
225
|
+
f = t = 0;
|
|
226
|
+
}
|
|
227
|
+
if (op[0] & 5) throw op[1];
|
|
228
|
+
return {
|
|
229
|
+
value: op[0] ? op[1] : void 0,
|
|
230
|
+
done: true
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
var AuthRequiredBranchSchema = _oauthgoogle.schemas.AuthRequiredBranchSchema;
|
|
235
|
+
var inputSchema = _zod.z.object(_object_spread_props(_object_spread({
|
|
236
|
+
query: _index.DriveQuerySchema.optional().describe('Drive query object with structured search fields. See DriveQuerySchema for detailed query syntax and examples.'),
|
|
237
|
+
fields: (0, _server.createFieldsSchema)({
|
|
238
|
+
availableFields: _to_consumable_array(_index.DRIVE_FILE_FIELDS).concat([
|
|
239
|
+
'path'
|
|
240
|
+
]),
|
|
241
|
+
fieldDescriptions: _object_spread_props(_object_spread({}, _index.DRIVE_FILE_FIELD_DESCRIPTIONS), {
|
|
242
|
+
path: 'Full folder path like /Work/Projects (requires resolvePaths=true)'
|
|
243
|
+
}),
|
|
244
|
+
commonPatterns: _index.DRIVE_FILE_COMMON_PATTERNS,
|
|
245
|
+
resourceName: 'Drive folder'
|
|
246
|
+
}),
|
|
247
|
+
resolvePaths: _zod.z.boolean().optional().describe('Resolve full folder paths like /Work/Projects/2024 (requires additional API calls per result)')
|
|
248
|
+
}, (0, _server.createPaginationSchema)({
|
|
249
|
+
defaultPageSize: 50,
|
|
250
|
+
maxPageSize: 1000,
|
|
251
|
+
provider: 'drive'
|
|
252
|
+
}).shape), {
|
|
253
|
+
shape: (0, _server.createShapeSchema)()
|
|
254
|
+
}));
|
|
255
|
+
// Success branch schemas for different shapes
|
|
256
|
+
var successObjectsBranchSchema = _zod.z.object({
|
|
257
|
+
type: _zod.z.literal('success'),
|
|
258
|
+
shape: _zod.z.literal('objects'),
|
|
259
|
+
items: _zod.z.array(_index.DriveFileSchema.extend({
|
|
260
|
+
path: _zod.z.string().optional().describe('Full folder path (if resolvePaths=true)')
|
|
261
|
+
})).describe('Matching Drive folders'),
|
|
262
|
+
count: _zod.z.number().describe('Number of folders in this page'),
|
|
263
|
+
nextPageToken: _zod.z.string().optional().describe('Token for fetching next page of results')
|
|
264
|
+
});
|
|
265
|
+
var successArraysBranchSchema = _zod.z.object({
|
|
266
|
+
type: _zod.z.literal('success'),
|
|
267
|
+
shape: _zod.z.literal('arrays'),
|
|
268
|
+
columns: _zod.z.array(_zod.z.string()).describe('Column names in canonical order'),
|
|
269
|
+
rows: _zod.z.array(_zod.z.array(_zod.z.unknown())).describe('Row data matching column order'),
|
|
270
|
+
count: _zod.z.number().describe('Number of folders in this page'),
|
|
271
|
+
nextPageToken: _zod.z.string().optional().describe('Token for fetching next page of results')
|
|
272
|
+
});
|
|
273
|
+
// Output schema with auth_required support
|
|
274
|
+
// Using z.union instead of discriminatedUnion since we have two success branches with different shapes
|
|
275
|
+
var outputSchema = _zod.z.union([
|
|
276
|
+
successObjectsBranchSchema,
|
|
277
|
+
successArraysBranchSchema,
|
|
278
|
+
AuthRequiredBranchSchema
|
|
279
|
+
]);
|
|
280
|
+
var config = {
|
|
281
|
+
title: 'Search Folders',
|
|
282
|
+
description: 'Search Google Drive folders with flexible field selection and optional path resolution.',
|
|
283
|
+
inputSchema: inputSchema,
|
|
284
|
+
outputSchema: _zod.z.object({
|
|
285
|
+
result: outputSchema
|
|
286
|
+
})
|
|
287
|
+
};
|
|
288
|
+
/**
|
|
289
|
+
* Resolves the full path for a folder by walking up the parent chain
|
|
290
|
+
* Caches folder names to reduce redundant API calls
|
|
291
|
+
*/ function resolveFolderPath(drive, folderId, folderCache, logger) {
|
|
292
|
+
return _async_to_generator(function() {
|
|
293
|
+
var pathParts, currentId, visited, cachedName, response, parents, _e, response1, folderName, parents1, e;
|
|
294
|
+
return _ts_generator(this, function(_state) {
|
|
295
|
+
switch(_state.label){
|
|
296
|
+
case 0:
|
|
297
|
+
if (folderId === 'root') return [
|
|
298
|
+
2,
|
|
299
|
+
'/'
|
|
300
|
+
];
|
|
301
|
+
pathParts = [];
|
|
302
|
+
currentId = folderId;
|
|
303
|
+
visited = new Set();
|
|
304
|
+
_state.label = 1;
|
|
305
|
+
case 1:
|
|
306
|
+
if (!(currentId && currentId !== 'root')) return [
|
|
307
|
+
3,
|
|
308
|
+
10
|
|
309
|
+
];
|
|
310
|
+
// Prevent infinite loops
|
|
311
|
+
if (visited.has(currentId)) {
|
|
312
|
+
logger.info('Circular folder reference detected', {
|
|
313
|
+
folderId: currentId
|
|
314
|
+
});
|
|
315
|
+
return [
|
|
316
|
+
3,
|
|
317
|
+
10
|
|
318
|
+
];
|
|
319
|
+
}
|
|
320
|
+
visited.add(currentId);
|
|
321
|
+
if (!folderCache.has(currentId)) return [
|
|
322
|
+
3,
|
|
323
|
+
6
|
|
324
|
+
];
|
|
325
|
+
cachedName = folderCache.get(currentId);
|
|
326
|
+
if (cachedName) {
|
|
327
|
+
pathParts.unshift(cachedName);
|
|
328
|
+
}
|
|
329
|
+
_state.label = 2;
|
|
330
|
+
case 2:
|
|
331
|
+
_state.trys.push([
|
|
332
|
+
2,
|
|
333
|
+
4,
|
|
334
|
+
,
|
|
335
|
+
5
|
|
336
|
+
]);
|
|
337
|
+
return [
|
|
338
|
+
4,
|
|
339
|
+
drive.files.get({
|
|
340
|
+
fileId: currentId,
|
|
341
|
+
fields: 'parents'
|
|
342
|
+
})
|
|
343
|
+
];
|
|
344
|
+
case 3:
|
|
345
|
+
response = _state.sent();
|
|
346
|
+
parents = response.data.parents;
|
|
347
|
+
currentId = (parents && parents.length > 0 ? parents[0] : '') || '';
|
|
348
|
+
return [
|
|
349
|
+
3,
|
|
350
|
+
5
|
|
351
|
+
];
|
|
352
|
+
case 4:
|
|
353
|
+
_e = _state.sent();
|
|
354
|
+
logger.info('Failed to get parent for cached folder', {
|
|
355
|
+
folderId: currentId
|
|
356
|
+
});
|
|
357
|
+
return [
|
|
358
|
+
3,
|
|
359
|
+
10
|
|
360
|
+
];
|
|
361
|
+
case 5:
|
|
362
|
+
return [
|
|
363
|
+
3,
|
|
364
|
+
9
|
|
365
|
+
];
|
|
366
|
+
case 6:
|
|
367
|
+
_state.trys.push([
|
|
368
|
+
6,
|
|
369
|
+
8,
|
|
370
|
+
,
|
|
371
|
+
9
|
|
372
|
+
]);
|
|
373
|
+
return [
|
|
374
|
+
4,
|
|
375
|
+
drive.files.get({
|
|
376
|
+
fileId: currentId,
|
|
377
|
+
fields: 'name,parents'
|
|
378
|
+
})
|
|
379
|
+
];
|
|
380
|
+
case 7:
|
|
381
|
+
response1 = _state.sent();
|
|
382
|
+
folderName = response1.data.name;
|
|
383
|
+
parents1 = response1.data.parents;
|
|
384
|
+
if (folderName) {
|
|
385
|
+
folderCache.set(currentId, folderName);
|
|
386
|
+
pathParts.unshift(folderName);
|
|
387
|
+
}
|
|
388
|
+
currentId = (parents1 && parents1.length > 0 ? parents1[0] : '') || '';
|
|
389
|
+
return [
|
|
390
|
+
3,
|
|
391
|
+
9
|
|
392
|
+
];
|
|
393
|
+
case 8:
|
|
394
|
+
e = _state.sent();
|
|
395
|
+
logger.info('Failed to resolve folder path', {
|
|
396
|
+
folderId: currentId,
|
|
397
|
+
error: e
|
|
398
|
+
});
|
|
399
|
+
return [
|
|
400
|
+
3,
|
|
401
|
+
10
|
|
402
|
+
];
|
|
403
|
+
case 9:
|
|
404
|
+
return [
|
|
405
|
+
3,
|
|
406
|
+
1
|
|
407
|
+
];
|
|
408
|
+
case 10:
|
|
409
|
+
return [
|
|
410
|
+
2,
|
|
411
|
+
"/".concat(pathParts.join('/'))
|
|
412
|
+
];
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
})();
|
|
416
|
+
}
|
|
417
|
+
function handler(_0, _1) {
|
|
418
|
+
return _async_to_generator(function(param, extra) {
|
|
419
|
+
var query, _param_resolvePaths, resolvePaths, _param_pageSize, pageSize, pageToken, fields, _param_shape, shape, logger, requestedFields, validPageSize, drive, folderMimeType, qStr, q, listOptions, response, res, folders, parentIds, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, f, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, parentId, parentNameMap, parentFetches, folderCache, items, filteredItems, nextPageToken, result, error, message, isDriveValidationError, result1;
|
|
420
|
+
return _ts_generator(this, function(_state) {
|
|
421
|
+
switch(_state.label){
|
|
422
|
+
case 0:
|
|
423
|
+
query = param.query, _param_resolvePaths = param.resolvePaths, resolvePaths = _param_resolvePaths === void 0 ? false : _param_resolvePaths, _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;
|
|
424
|
+
logger = extra.logger;
|
|
425
|
+
requestedFields = (0, _server.parseFields)(fields, _to_consumable_array(_index.DRIVE_FILE_FIELDS).concat([
|
|
426
|
+
'path'
|
|
427
|
+
]));
|
|
428
|
+
// Validate and clamp pageSize to Google Drive API limits (1-1000)
|
|
429
|
+
validPageSize = Math.max(1, Math.min(1000, Math.floor(pageSize || 50)));
|
|
430
|
+
logger.info('drive.folder.search called', {
|
|
431
|
+
query: query,
|
|
432
|
+
resolvePaths: resolvePaths,
|
|
433
|
+
pageSize: validPageSize,
|
|
434
|
+
pageToken: pageToken ? '[provided]' : undefined,
|
|
435
|
+
fields: fields || 'all'
|
|
436
|
+
});
|
|
437
|
+
_state.label = 1;
|
|
438
|
+
case 1:
|
|
439
|
+
_state.trys.push([
|
|
440
|
+
1,
|
|
441
|
+
6,
|
|
442
|
+
,
|
|
443
|
+
7
|
|
444
|
+
]);
|
|
445
|
+
drive = _googleapis.google.drive({
|
|
446
|
+
version: 'v3',
|
|
447
|
+
auth: extra.authContext.auth
|
|
448
|
+
});
|
|
449
|
+
folderMimeType = 'application/vnd.google-apps.folder';
|
|
450
|
+
if (typeof query === 'string') {
|
|
451
|
+
// String query - treat as raw Drive query
|
|
452
|
+
qStr = "(".concat(query, ") and mimeType='").concat(folderMimeType, "' and trashed = false");
|
|
453
|
+
} else if (query && (typeof query === "undefined" ? "undefined" : _type_of(query)) === 'object' && 'rawDriveQuery' in query && query.rawDriveQuery) {
|
|
454
|
+
// Object with rawDriveQuery field - use it directly
|
|
455
|
+
qStr = "(".concat(query.rawDriveQuery, ") and mimeType='").concat(folderMimeType, "' and trashed = false");
|
|
456
|
+
} else if (query) {
|
|
457
|
+
// Structured query object - convert to Drive query string
|
|
458
|
+
q = (0, _querybuilder.toDriveQuery)(query).q;
|
|
459
|
+
qStr = q ? "(".concat(q, ") and mimeType='").concat(folderMimeType, "' and trashed = false") : "mimeType='".concat(folderMimeType, "' and trashed = false");
|
|
460
|
+
} else {
|
|
461
|
+
// No query - return all folders
|
|
462
|
+
qStr = "mimeType='".concat(folderMimeType, "' and trashed = false");
|
|
463
|
+
}
|
|
464
|
+
listOptions = {
|
|
465
|
+
q: qStr,
|
|
466
|
+
pageSize: validPageSize,
|
|
467
|
+
fields: 'files(id,name,mimeType,webViewLink,modifiedTime,parents,shared,starred,owners),nextPageToken',
|
|
468
|
+
orderBy: 'modifiedTime desc'
|
|
469
|
+
};
|
|
470
|
+
if (pageToken && pageToken.trim().length > 0) {
|
|
471
|
+
listOptions.pageToken = pageToken;
|
|
472
|
+
}
|
|
473
|
+
return [
|
|
474
|
+
4,
|
|
475
|
+
drive.files.list(listOptions)
|
|
476
|
+
];
|
|
477
|
+
case 2:
|
|
478
|
+
response = _state.sent();
|
|
479
|
+
res = response.data;
|
|
480
|
+
folders = Array.isArray(res === null || res === void 0 ? void 0 : res.files) ? res.files : [];
|
|
481
|
+
parentIds = new Set();
|
|
482
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
483
|
+
try {
|
|
484
|
+
for(_iterator = folders[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
485
|
+
f = _step.value;
|
|
486
|
+
if ((f === null || f === void 0 ? void 0 : f.parents) && f.parents.length > 0) {
|
|
487
|
+
_iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
488
|
+
try {
|
|
489
|
+
for(_iterator1 = f.parents[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
490
|
+
parentId = _step1.value;
|
|
491
|
+
if (parentId && parentId !== 'root') {
|
|
492
|
+
parentIds.add(parentId);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
} catch (err) {
|
|
496
|
+
_didIteratorError1 = true;
|
|
497
|
+
_iteratorError1 = err;
|
|
498
|
+
} finally{
|
|
499
|
+
try {
|
|
500
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
501
|
+
_iterator1.return();
|
|
502
|
+
}
|
|
503
|
+
} finally{
|
|
504
|
+
if (_didIteratorError1) {
|
|
505
|
+
throw _iteratorError1;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
} catch (err) {
|
|
512
|
+
_didIteratorError = true;
|
|
513
|
+
_iteratorError = err;
|
|
514
|
+
} finally{
|
|
515
|
+
try {
|
|
516
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
517
|
+
_iterator.return();
|
|
518
|
+
}
|
|
519
|
+
} finally{
|
|
520
|
+
if (_didIteratorError) {
|
|
521
|
+
throw _iteratorError;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
parentNameMap = new Map();
|
|
526
|
+
if (!(parentIds.size > 0)) return [
|
|
527
|
+
3,
|
|
528
|
+
4
|
|
529
|
+
];
|
|
530
|
+
logger.info('Fetching parent names', {
|
|
531
|
+
count: parentIds.size
|
|
532
|
+
});
|
|
533
|
+
parentFetches = Array.from(parentIds).map(function(parentId) {
|
|
534
|
+
return _async_to_generator(function() {
|
|
535
|
+
var parentRes, parentName, e;
|
|
536
|
+
return _ts_generator(this, function(_state) {
|
|
537
|
+
switch(_state.label){
|
|
538
|
+
case 0:
|
|
539
|
+
_state.trys.push([
|
|
540
|
+
0,
|
|
541
|
+
2,
|
|
542
|
+
,
|
|
543
|
+
3
|
|
544
|
+
]);
|
|
545
|
+
return [
|
|
546
|
+
4,
|
|
547
|
+
drive.files.get({
|
|
548
|
+
fileId: parentId,
|
|
549
|
+
fields: 'id,name'
|
|
550
|
+
})
|
|
551
|
+
];
|
|
552
|
+
case 1:
|
|
553
|
+
parentRes = _state.sent();
|
|
554
|
+
parentName = parentRes.data.name || parentId;
|
|
555
|
+
parentNameMap.set(parentId, parentName);
|
|
556
|
+
return [
|
|
557
|
+
3,
|
|
558
|
+
3
|
|
559
|
+
];
|
|
560
|
+
case 2:
|
|
561
|
+
e = _state.sent();
|
|
562
|
+
logger.info('Failed to fetch parent name', {
|
|
563
|
+
parentId: parentId,
|
|
564
|
+
error: e
|
|
565
|
+
});
|
|
566
|
+
parentNameMap.set(parentId, parentId); // Fallback to ID
|
|
567
|
+
return [
|
|
568
|
+
3,
|
|
569
|
+
3
|
|
570
|
+
];
|
|
571
|
+
case 3:
|
|
572
|
+
return [
|
|
573
|
+
2
|
|
574
|
+
];
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
})();
|
|
578
|
+
});
|
|
579
|
+
return [
|
|
580
|
+
4,
|
|
581
|
+
Promise.all(parentFetches)
|
|
582
|
+
];
|
|
583
|
+
case 3:
|
|
584
|
+
_state.sent();
|
|
585
|
+
_state.label = 4;
|
|
586
|
+
case 4:
|
|
587
|
+
// Cache for folder names to reduce API calls during path resolution
|
|
588
|
+
folderCache = new Map();
|
|
589
|
+
return [
|
|
590
|
+
4,
|
|
591
|
+
Promise.all(folders.map(function(f) {
|
|
592
|
+
return _async_to_generator(function() {
|
|
593
|
+
var id, name, result;
|
|
594
|
+
return _ts_generator(this, function(_state) {
|
|
595
|
+
switch(_state.label){
|
|
596
|
+
case 0:
|
|
597
|
+
id = (f === null || f === void 0 ? void 0 : f.id) ? String(f.id) : 'unknown';
|
|
598
|
+
name = (f === null || f === void 0 ? void 0 : f.name) || id;
|
|
599
|
+
result = {
|
|
600
|
+
id: id,
|
|
601
|
+
name: name
|
|
602
|
+
};
|
|
603
|
+
// Only include properties that have actual values
|
|
604
|
+
if (f === null || f === void 0 ? void 0 : f.mimeType) result.mimeType = f.mimeType;
|
|
605
|
+
if (f === null || f === void 0 ? void 0 : f.webViewLink) result.webViewLink = f.webViewLink;
|
|
606
|
+
if (f === null || f === void 0 ? void 0 : f.modifiedTime) result.modifiedTime = f.modifiedTime;
|
|
607
|
+
// Build parent objects with names
|
|
608
|
+
if ((f === null || f === void 0 ? void 0 : f.parents) && f.parents.length > 0) {
|
|
609
|
+
result.parents = f.parents.map(function(parentId) {
|
|
610
|
+
if (parentId === 'root') {
|
|
611
|
+
return {
|
|
612
|
+
id: 'root',
|
|
613
|
+
name: 'My Drive'
|
|
614
|
+
};
|
|
615
|
+
}
|
|
616
|
+
var parentName = parentNameMap.get(parentId) || parentId;
|
|
617
|
+
return {
|
|
618
|
+
id: parentId,
|
|
619
|
+
name: parentName
|
|
620
|
+
};
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
if ((f === null || f === void 0 ? void 0 : f.shared) !== undefined) result.shared = f.shared;
|
|
624
|
+
if ((f === null || f === void 0 ? void 0 : f.starred) !== undefined) result.starred = f.starred;
|
|
625
|
+
if ((f === null || f === void 0 ? void 0 : f.owners) && f.owners.length > 0) {
|
|
626
|
+
result.owners = f.owners.map(function(o) {
|
|
627
|
+
var owner = {};
|
|
628
|
+
if (o === null || o === void 0 ? void 0 : o.displayName) owner.displayName = o.displayName;
|
|
629
|
+
if (o === null || o === void 0 ? void 0 : o.emailAddress) owner.emailAddress = o.emailAddress;
|
|
630
|
+
if (o === null || o === void 0 ? void 0 : o.kind) owner.kind = o.kind;
|
|
631
|
+
if ((o === null || o === void 0 ? void 0 : o.me) !== undefined) owner.me = o.me;
|
|
632
|
+
if (o === null || o === void 0 ? void 0 : o.permissionId) owner.permissionId = o.permissionId;
|
|
633
|
+
if (o === null || o === void 0 ? void 0 : o.photoLink) owner.photoLink = o.photoLink;
|
|
634
|
+
return owner;
|
|
635
|
+
});
|
|
636
|
+
}
|
|
637
|
+
if (!(resolvePaths && id !== 'unknown')) return [
|
|
638
|
+
3,
|
|
639
|
+
2
|
|
640
|
+
];
|
|
641
|
+
return [
|
|
642
|
+
4,
|
|
643
|
+
resolveFolderPath(drive, id, folderCache, logger)
|
|
644
|
+
];
|
|
645
|
+
case 1:
|
|
646
|
+
result.path = _state.sent();
|
|
647
|
+
_state.label = 2;
|
|
648
|
+
case 2:
|
|
649
|
+
return [
|
|
650
|
+
2,
|
|
651
|
+
result
|
|
652
|
+
];
|
|
653
|
+
}
|
|
654
|
+
});
|
|
655
|
+
})();
|
|
656
|
+
}))
|
|
657
|
+
];
|
|
658
|
+
case 5:
|
|
659
|
+
items = _state.sent();
|
|
660
|
+
filteredItems = items.map(function(item) {
|
|
661
|
+
return (0, _server.filterFields)(item, requestedFields);
|
|
662
|
+
});
|
|
663
|
+
logger.info('drive.folder.search returning', {
|
|
664
|
+
query: query,
|
|
665
|
+
pageSize: pageSize,
|
|
666
|
+
resultCount: filteredItems.length,
|
|
667
|
+
resolvePaths: resolvePaths,
|
|
668
|
+
fields: fields || 'all'
|
|
669
|
+
});
|
|
670
|
+
nextPageToken = res.nextPageToken && res.nextPageToken.trim().length > 0 ? res.nextPageToken : undefined;
|
|
671
|
+
// Build result based on shape
|
|
672
|
+
result = shape === 'arrays' ? _object_spread(_object_spread_props(_object_spread({
|
|
673
|
+
type: 'success',
|
|
674
|
+
shape: 'arrays'
|
|
675
|
+
}, (0, _server.toColumnarFormat)(filteredItems, requestedFields, _to_consumable_array(_index.DRIVE_FILE_FIELDS).concat([
|
|
676
|
+
'path'
|
|
677
|
+
]))), {
|
|
678
|
+
count: filteredItems.length
|
|
679
|
+
}), nextPageToken && {
|
|
680
|
+
nextPageToken: nextPageToken
|
|
681
|
+
}) : _object_spread({
|
|
682
|
+
type: 'success',
|
|
683
|
+
shape: 'objects',
|
|
684
|
+
items: filteredItems,
|
|
685
|
+
count: filteredItems.length
|
|
686
|
+
}, nextPageToken && {
|
|
687
|
+
nextPageToken: nextPageToken
|
|
688
|
+
});
|
|
689
|
+
return [
|
|
690
|
+
2,
|
|
691
|
+
{
|
|
692
|
+
content: [
|
|
693
|
+
{
|
|
694
|
+
type: 'text',
|
|
695
|
+
text: JSON.stringify(result)
|
|
696
|
+
}
|
|
697
|
+
],
|
|
698
|
+
structuredContent: {
|
|
699
|
+
result: result
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
];
|
|
703
|
+
case 6:
|
|
704
|
+
error = _state.sent();
|
|
705
|
+
message = _instanceof(error, Error) ? error.message : String(error);
|
|
706
|
+
logger.error('drive.folder.search error', {
|
|
707
|
+
error: message
|
|
708
|
+
});
|
|
709
|
+
// Check if this is a Drive API validation error (invalid query, invalid pageToken, etc.)
|
|
710
|
+
// These should return empty results rather than throw
|
|
711
|
+
isDriveValidationError = message.includes('Invalid Value') || message.includes('Invalid value') || message.includes('File not found') || message.includes('Bad Request');
|
|
712
|
+
if (isDriveValidationError) {
|
|
713
|
+
// Return empty result set for validation errors
|
|
714
|
+
result1 = shape === 'arrays' ? {
|
|
715
|
+
type: 'success',
|
|
716
|
+
shape: 'arrays',
|
|
717
|
+
columns: [],
|
|
718
|
+
rows: [],
|
|
719
|
+
count: 0
|
|
720
|
+
} : {
|
|
721
|
+
type: 'success',
|
|
722
|
+
shape: 'objects',
|
|
723
|
+
items: [],
|
|
724
|
+
count: 0
|
|
725
|
+
};
|
|
726
|
+
return [
|
|
727
|
+
2,
|
|
728
|
+
{
|
|
729
|
+
content: [
|
|
730
|
+
{
|
|
731
|
+
type: 'text',
|
|
732
|
+
text: JSON.stringify(result1)
|
|
733
|
+
}
|
|
734
|
+
],
|
|
735
|
+
structuredContent: {
|
|
736
|
+
result: result1
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
];
|
|
740
|
+
}
|
|
741
|
+
// Throw McpError for other errors
|
|
742
|
+
throw new _types.McpError(_types.ErrorCode.InternalError, "Error searching folders: ".concat(message), {
|
|
743
|
+
stack: _instanceof(error, Error) ? error.stack : undefined
|
|
744
|
+
});
|
|
745
|
+
case 7:
|
|
746
|
+
return [
|
|
747
|
+
2
|
|
748
|
+
];
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
}).apply(this, arguments);
|
|
752
|
+
}
|
|
753
|
+
function createTool() {
|
|
754
|
+
return {
|
|
755
|
+
name: 'folder-search',
|
|
756
|
+
config: config,
|
|
757
|
+
handler: handler
|
|
758
|
+
};
|
|
759
|
+
}
|
|
760
|
+
/* 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; }
|