@mcp-z/mcp-drive 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/cjs/constants.js.map +1 -1
  2. package/dist/cjs/index.js +10 -24
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/lib/create-store.js +2 -5
  5. package/dist/cjs/lib/create-store.js.map +1 -1
  6. package/dist/cjs/lib/query-builder.d.cts +2 -2
  7. package/dist/cjs/lib/query-builder.d.ts +2 -2
  8. package/dist/cjs/lib/query-builder.js.map +1 -1
  9. package/dist/cjs/mcp/index.js +8 -19
  10. package/dist/cjs/mcp/index.js.map +1 -1
  11. package/dist/cjs/mcp/prompts/index.js.map +1 -1
  12. package/dist/cjs/mcp/prompts/organize-files.js +3 -6
  13. package/dist/cjs/mcp/prompts/organize-files.js.map +1 -1
  14. package/dist/cjs/mcp/prompts/query-syntax.js +4 -7
  15. package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -1
  16. package/dist/cjs/mcp/resources/file.js +3 -6
  17. package/dist/cjs/mcp/resources/file.js.map +1 -1
  18. package/dist/cjs/mcp/resources/index.js.map +1 -1
  19. package/dist/cjs/mcp/tools/file-move-to-trash.js +5 -11
  20. package/dist/cjs/mcp/tools/file-move-to-trash.js.map +1 -1
  21. package/dist/cjs/mcp/tools/file-move.js +11 -18
  22. package/dist/cjs/mcp/tools/file-move.js.map +1 -1
  23. package/dist/cjs/mcp/tools/files-search.d.cts +2 -2
  24. package/dist/cjs/mcp/tools/files-search.d.ts +2 -2
  25. package/dist/cjs/mcp/tools/files-search.js +31 -72
  26. package/dist/cjs/mcp/tools/files-search.js.map +1 -1
  27. package/dist/cjs/mcp/tools/folder-contents.js +7 -14
  28. package/dist/cjs/mcp/tools/folder-contents.js.map +1 -1
  29. package/dist/cjs/mcp/tools/folder-create.js +5 -11
  30. package/dist/cjs/mcp/tools/folder-create.js.map +1 -1
  31. package/dist/cjs/mcp/tools/folder-path.js +4 -8
  32. package/dist/cjs/mcp/tools/folder-path.js.map +1 -1
  33. package/dist/cjs/mcp/tools/folder-search.d.cts +2 -2
  34. package/dist/cjs/mcp/tools/folder-search.d.ts +2 -2
  35. package/dist/cjs/mcp/tools/folder-search.js +40 -83
  36. package/dist/cjs/mcp/tools/folder-search.js.map +1 -1
  37. package/dist/cjs/mcp/tools/index.js.map +1 -1
  38. package/dist/cjs/schemas/drive-query-schema.d.cts +32 -6
  39. package/dist/cjs/schemas/drive-query-schema.d.ts +32 -6
  40. package/dist/cjs/schemas/drive-query-schema.js +37 -30
  41. package/dist/cjs/schemas/drive-query-schema.js.map +1 -1
  42. package/dist/cjs/schemas/drive-validation.js.map +1 -1
  43. package/dist/cjs/schemas/index.js.map +1 -1
  44. package/dist/cjs/setup/config.js +11 -25
  45. package/dist/cjs/setup/config.js.map +1 -1
  46. package/dist/cjs/setup/http.js +15 -16
  47. package/dist/cjs/setup/http.js.map +1 -1
  48. package/dist/cjs/setup/index.js.map +1 -1
  49. package/dist/cjs/setup/oauth-google.js +9 -16
  50. package/dist/cjs/setup/oauth-google.js.map +1 -1
  51. package/dist/cjs/setup/runtime.d.cts +1 -1
  52. package/dist/cjs/setup/runtime.d.ts +1 -1
  53. package/dist/cjs/setup/runtime.js +11 -25
  54. package/dist/cjs/setup/runtime.js.map +1 -1
  55. package/dist/cjs/setup/stdio.js +15 -16
  56. package/dist/cjs/setup/stdio.js.map +1 -1
  57. package/dist/esm/constants.js.map +1 -1
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/lib/create-store.js.map +1 -1
  60. package/dist/esm/lib/query-builder.d.ts +2 -2
  61. package/dist/esm/lib/query-builder.js +1 -1
  62. package/dist/esm/lib/query-builder.js.map +1 -1
  63. package/dist/esm/mcp/index.js.map +1 -1
  64. package/dist/esm/mcp/prompts/index.js.map +1 -1
  65. package/dist/esm/mcp/prompts/organize-files.js.map +1 -1
  66. package/dist/esm/mcp/prompts/query-syntax.js +1 -1
  67. package/dist/esm/mcp/prompts/query-syntax.js.map +1 -1
  68. package/dist/esm/mcp/resources/file.js.map +1 -1
  69. package/dist/esm/mcp/resources/index.js.map +1 -1
  70. package/dist/esm/mcp/tools/file-move-to-trash.js.map +1 -1
  71. package/dist/esm/mcp/tools/file-move.js.map +1 -1
  72. package/dist/esm/mcp/tools/files-search.d.ts +2 -2
  73. package/dist/esm/mcp/tools/files-search.js +24 -51
  74. package/dist/esm/mcp/tools/files-search.js.map +1 -1
  75. package/dist/esm/mcp/tools/folder-contents.js.map +1 -1
  76. package/dist/esm/mcp/tools/folder-create.js.map +1 -1
  77. package/dist/esm/mcp/tools/folder-path.js.map +1 -1
  78. package/dist/esm/mcp/tools/folder-search.d.ts +2 -2
  79. package/dist/esm/mcp/tools/folder-search.js +25 -56
  80. package/dist/esm/mcp/tools/folder-search.js.map +1 -1
  81. package/dist/esm/mcp/tools/index.js.map +1 -1
  82. package/dist/esm/schemas/drive-query-schema.d.ts +32 -6
  83. package/dist/esm/schemas/drive-query-schema.js +29 -12
  84. package/dist/esm/schemas/drive-query-schema.js.map +1 -1
  85. package/dist/esm/schemas/drive-validation.js.map +1 -1
  86. package/dist/esm/schemas/index.js.map +1 -1
  87. package/dist/esm/setup/config.js.map +1 -1
  88. package/dist/esm/setup/http.js.map +1 -1
  89. package/dist/esm/setup/index.js.map +1 -1
  90. package/dist/esm/setup/oauth-google.js.map +1 -1
  91. package/dist/esm/setup/runtime.d.ts +1 -1
  92. package/dist/esm/setup/runtime.js.map +1 -1
  93. package/dist/esm/setup/stdio.js.map +1 -1
  94. package/dist/esm/types.js.map +1 -1
  95. package/package.json +10 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/constants.ts"],"sourcesContent":["/**\n * Drive MCP Server Constants\n *\n * These scopes are required for Google Drive functionality and are hardcoded\n * rather than externally configured since this server knows its own requirements.\n */\n\n// Google OAuth scopes required for Drive operations\nexport const GOOGLE_SCOPE = 'openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/drive';\n"],"names":["GOOGLE_SCOPE"],"mappings":"AAAA;;;;;CAKC,GAED,oDAAoD;;;;;+BACvCA;;;eAAAA;;;AAAN,IAAMA,eAAe"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/constants.ts"],"sourcesContent":["/**\n * Drive MCP Server Constants\n *\n * These scopes are required for Google Drive functionality and are hardcoded\n * rather than externally configured since this server knows its own requirements.\n */\n\n// Google OAuth scopes required for Drive operations\nexport const GOOGLE_SCOPE = 'openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/drive';\n"],"names":["GOOGLE_SCOPE"],"mappings":"AAAA;;;;;CAKC,GAED,oDAAoD;;;;;+BACvCA;;;eAAAA;;;AAAN,IAAMA,eAAe"}
package/dist/cjs/index.js CHANGED
@@ -44,11 +44,8 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
44
44
  reject(error);
45
45
  return;
46
46
  }
47
- if (info.done) {
48
- resolve(value);
49
- } else {
50
- Promise.resolve(value).then(_next, _throw);
51
- }
47
+ if (info.done) resolve(value);
48
+ else Promise.resolve(value).then(_next, _throw);
52
49
  }
53
50
  function _async_to_generator(fn) {
54
51
  return function() {
@@ -87,18 +84,12 @@ function _getRequireWildcardCache(nodeInterop) {
87
84
  })(nodeInterop);
88
85
  }
89
86
  function _interop_require_wildcard(obj, nodeInterop) {
90
- if (!nodeInterop && obj && obj.__esModule) {
91
- return obj;
92
- }
93
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
94
- return {
95
- default: obj
96
- };
97
- }
87
+ if (!nodeInterop && obj && obj.__esModule) return obj;
88
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") return {
89
+ default: obj
90
+ };
98
91
  var cache = _getRequireWildcardCache(nodeInterop);
99
- if (cache && cache.has(obj)) {
100
- return cache.get(obj);
101
- }
92
+ if (cache && cache.has(obj)) return cache.get(obj);
102
93
  var newObj = {
103
94
  __proto__: null
104
95
  };
@@ -106,17 +97,12 @@ function _interop_require_wildcard(obj, nodeInterop) {
106
97
  for(var key in obj){
107
98
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
108
99
  var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
109
- if (desc && (desc.get || desc.set)) {
110
- Object.defineProperty(newObj, key, desc);
111
- } else {
112
- newObj[key] = obj[key];
113
- }
100
+ if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);
101
+ else newObj[key] = obj[key];
114
102
  }
115
103
  }
116
104
  newObj.default = obj;
117
- if (cache) {
118
- cache.set(obj, newObj);
119
- }
105
+ if (cache) cache.set(obj, newObj);
120
106
  return newObj;
121
107
  }
122
108
  function _ts_generator(thisArg, body) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/index.ts"],"sourcesContent":["import { createConfig, handleVersionHelp } from './setup/config.ts';\nimport { createHTTPServer } from './setup/http.ts';\nimport { createStdioServer } from './setup/stdio.ts';\nimport type { ServerConfig } from './types.ts';\n\nexport { GOOGLE_SCOPE } from './constants.ts';\nexport * as mcp from './mcp/index.ts';\nexport * as schemas from './schemas/index.ts';\nexport * as setup from './setup/index.ts';\nexport * from './types.ts';\n\nexport async function startServer(config: ServerConfig): Promise<void> {\n const { logger, close } = config.transport.type === 'stdio' ? await createStdioServer(config) : await createHTTPServer(config);\n\n process.on('SIGINT', async () => {\n await close();\n process.exit(0);\n });\n\n logger.info(`Server started with ${config.transport.type} transport`);\n await new Promise(() => {});\n}\n\nexport default async function main(): Promise<void> {\n // Check for help/version flags FIRST, before config parsing\n const versionHelpResult = handleVersionHelp(process.argv);\n if (versionHelpResult.handled) {\n console.log(versionHelpResult.output);\n process.exit(0);\n }\n\n // Only parse config if no help/version flags\n const config = createConfig();\n await startServer(config);\n}\n\nif (process.argv[1] === new URL(import.meta.url).pathname) {\n main();\n}\n"],"names":["GOOGLE_SCOPE","main","mcp","schemas","setup","startServer","config","logger","close","transport","type","createStdioServer","createHTTPServer","process","on","exit","info","Promise","versionHelpResult","handleVersionHelp","argv","handled","console","log","output","createConfig","URL","pathname"],"mappings":";;;;;;;;;;;QAKSA;eAAAA,yBAAY;;QAkBrB;eAA8BC;;QAjBlBC;;;QACAC;;;QACAC;;;QAGUC;eAAAA;;;wBAX0B;sBACf;uBACC;2BAGL;+DACR;gEACI;gEACF;qBACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEP,SAAeA,YAAYC,MAAoB;;YAC1BA,MAAlBC,QAAQC;;;;yBAAUF,CAAAA,OAAOG,SAAS,CAACC,IAAI,KAAK,OAAM,GAAhCJ;;;;oBAAoC;;wBAAMK,IAAAA,0BAAiB,EAACL;;;2BAAxB;;;;;;oBAAkC;;wBAAMM,IAAAA,wBAAgB,EAACN;;;2BAAvB;;;oBAAtEA,aAAlBC,SAAkBD,KAAlBC,QAAQC,QAAUF,KAAVE;oBAEhBK,QAAQC,EAAE,CAAC,UAAU;;;;;wCACnB;;4CAAMN;;;wCAAN;wCACAK,QAAQE,IAAI,CAAC;;;;;;wBACf;;oBAEAR,OAAOS,IAAI,CAAC,AAAC,uBAA4C,OAAtBV,OAAOG,SAAS,CAACC,IAAI,EAAC;oBACzD;;wBAAM,IAAIO,QAAQ,YAAO;;;oBAAzB;;;;;;IACF;;AAEe,SAAehB;;YAEtBiB,mBAOAZ;;;;oBARN,4DAA4D;oBACtDY,oBAAoBC,IAAAA,2BAAiB,EAACN,QAAQO,IAAI;oBACxD,IAAIF,kBAAkBG,OAAO,EAAE;wBAC7BC,QAAQC,GAAG,CAACL,kBAAkBM,MAAM;wBACpCX,QAAQE,IAAI,CAAC;oBACf;oBAEA,6CAA6C;oBACvCT,SAASmB,IAAAA,sBAAY;oBAC3B;;wBAAMpB,YAAYC;;;oBAAlB;;;;;;IACF;;AAEA,IAAIO,QAAQO,IAAI,CAAC,EAAE,KAAK,IAAIM,IAAI,qDAAiBC,QAAQ,EAAE;IACzD1B;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/index.ts"],"sourcesContent":["import { createConfig, handleVersionHelp } from './setup/config.ts';\nimport { createHTTPServer } from './setup/http.ts';\nimport { createStdioServer } from './setup/stdio.ts';\nimport type { ServerConfig } from './types.ts';\n\nexport { GOOGLE_SCOPE } from './constants.ts';\nexport * as mcp from './mcp/index.ts';\nexport * as schemas from './schemas/index.ts';\nexport * as setup from './setup/index.ts';\nexport * from './types.ts';\n\nexport async function startServer(config: ServerConfig): Promise<void> {\n const { logger, close } = config.transport.type === 'stdio' ? await createStdioServer(config) : await createHTTPServer(config);\n\n process.on('SIGINT', async () => {\n await close();\n process.exit(0);\n });\n\n logger.info(`Server started with ${config.transport.type} transport`);\n await new Promise(() => {});\n}\n\nexport default async function main(): Promise<void> {\n // Check for help/version flags FIRST, before config parsing\n const versionHelpResult = handleVersionHelp(process.argv);\n if (versionHelpResult.handled) {\n console.log(versionHelpResult.output);\n process.exit(0);\n }\n\n // Only parse config if no help/version flags\n const config = createConfig();\n await startServer(config);\n}\n\nif (process.argv[1] === new URL(import.meta.url).pathname) {\n main();\n}\n"],"names":["GOOGLE_SCOPE","main","mcp","schemas","setup","startServer","config","logger","close","transport","type","createStdioServer","createHTTPServer","process","on","exit","info","Promise","versionHelpResult","handleVersionHelp","argv","handled","console","log","output","createConfig","URL","pathname"],"mappings":";;;;;;;;;;;QAKSA;eAAAA,yBAAY;;QAkBrB;eAA8BC;;QAjBlBC;;;QACAC;;;QACAC;;;QAGUC;eAAAA;;;wBAX0B;sBACf;uBACC;2BAGL;+DACR;gEACI;gEACF;qBACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEP,SAAeA,YAAYC,MAAoB;;YAC1BA,MAAlBC,QAAQC;;;;yBAAUF,CAAAA,OAAOG,SAAS,CAACC,IAAI,KAAK,OAAM,GAAhCJ;;;;oBAAoC;;wBAAMK,IAAAA,0BAAiB,EAACL;;;2BAAxB;;;;;;oBAAkC;;wBAAMM,IAAAA,wBAAgB,EAACN;;;2BAAvB;;;oBAAtEA,aAAlBC,SAAkBD,KAAlBC,QAAQC,QAAUF,KAAVE;oBAEhBK,QAAQC,EAAE,CAAC,UAAU;;;;;wCACnB;;4CAAMN;;;wCAAN;wCACAK,QAAQE,IAAI,CAAC;;;;;;wBACf;;oBAEAR,OAAOS,IAAI,CAAC,AAAC,uBAA4C,OAAtBV,OAAOG,SAAS,CAACC,IAAI,EAAC;oBACzD;;wBAAM,IAAIO,QAAQ,YAAO;;;oBAAzB;;;;;;IACF;;AAEe,SAAehB;;YAEtBiB,mBAOAZ;;;;oBARN,4DAA4D;oBACtDY,oBAAoBC,IAAAA,2BAAiB,EAACN,QAAQO,IAAI;oBACxD,IAAIF,kBAAkBG,OAAO,EAAE;wBAC7BC,QAAQC,GAAG,CAACL,kBAAkBM,MAAM;wBACpCX,QAAQE,IAAI,CAAC;oBACf;oBAEA,6CAA6C;oBACvCT,SAASmB,IAAAA,sBAAY;oBAC3B;;wBAAMpB,YAAYC;;;oBAAlB;;;;;;IACF;;AAEA,IAAIO,QAAQO,IAAI,CAAC,EAAE,KAAK,IAAIM,IAAI,qDAAiBC,QAAQ,EAAE;IACzD1B;AACF"}
@@ -17,11 +17,8 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
17
17
  reject(error);
18
18
  return;
19
19
  }
20
- if (info.done) {
21
- resolve(value);
22
- } else {
23
- Promise.resolve(value).then(_next, _throw);
24
- }
20
+ if (info.done) resolve(value);
21
+ else Promise.resolve(value).then(_next, _throw);
25
22
  }
26
23
  function _async_to_generator(fn) {
27
24
  return function() {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/lib/create-store.ts"],"sourcesContent":["import type Keyv from 'keyv';\nimport keyvRegistry from 'keyv-registry';\n\nexport default async function createStore<T>(uri: string): Promise<Keyv<T>> {\n const store = await keyvRegistry<T>(uri);\n if (!store) throw new Error(`Failed to create store for URI: ${uri}`);\n return store;\n}\n"],"names":["createStore","uri","store","keyvRegistry","Error"],"mappings":";;;;+BAGA;;;eAA8BA;;;mEAFL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEV,SAAeA,YAAeC,GAAW;;YAChDC;;;;oBAAQ;;wBAAMC,IAAAA,qBAAY,EAAIF;;;oBAA9BC,QAAQ;oBACd,IAAI,CAACA,OAAO,MAAM,IAAIE,MAAM,AAAC,mCAAsC,OAAJH;oBAC/D;;wBAAOC;;;;IACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/lib/create-store.ts"],"sourcesContent":["import type Keyv from 'keyv';\nimport keyvRegistry from 'keyv-registry';\n\nexport default async function createStore<T>(uri: string): Promise<Keyv<T>> {\n const store = await keyvRegistry<T>(uri);\n if (!store) throw new Error(`Failed to create store for URI: ${uri}`);\n return store;\n}\n"],"names":["createStore","uri","store","keyvRegistry","Error"],"mappings":";;;;+BAGA;;;eAA8BA;;;mEAFL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEV,SAAeA,YAAeC,GAAW;;YAChDC;;;;oBAAQ;;wBAAMC,IAAAA,qBAAY,EAAIF;;;oBAA9BC,QAAQ;oBACd,IAAI,CAACA,OAAO,MAAM,IAAIE,MAAM,AAAC,mCAAsC,OAAJH;oBAC/D;;wBAAOC;;;;IACT"}
@@ -36,9 +36,9 @@ interface FiltersObject {
36
36
  * - sharedWithMe = true - Filter by shared status
37
37
  * - modifiedTime >= 'date' - Date filtering
38
38
  * - 'email' in owners - Filter by owner
39
- * - trashed = false - Exclude trashed files (always added)
39
+ * - trashed = true/false - Filter by trash status
40
40
  */
41
- export declare function toDriveQuery(query: DriveQuery): {
41
+ export declare function toDriveQuery(query: DriveQuery | string): {
42
42
  q: string;
43
43
  filters: FiltersObject;
44
44
  };
@@ -36,9 +36,9 @@ interface FiltersObject {
36
36
  * - sharedWithMe = true - Filter by shared status
37
37
  * - modifiedTime >= 'date' - Date filtering
38
38
  * - 'email' in owners - Filter by owner
39
- * - trashed = false - Exclude trashed files (always added)
39
+ * - trashed = true/false - Filter by trash status
40
40
  */
41
- export declare function toDriveQuery(query: DriveQuery): {
41
+ export declare function toDriveQuery(query: DriveQuery | string): {
42
42
  q: string;
43
43
  filters: FiltersObject;
44
44
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/lib/query-builder.ts"],"sourcesContent":["import type { DriveQuery, DriveQueryObject } from '../schemas/drive-query-schema.ts';\n\n/**\n * Field operator interface for query filters\n */\nexport interface FieldOperator {\n $any?: string[];\n $all?: string[];\n $none?: string[];\n}\n\n/**\n * Filters object returned by toDriveQuery for debugging/logging\n */\ninterface FiltersObject {\n nameIncludes?: string[];\n mimeTypeIncludes?: string[];\n fullTextIncludes?: string[];\n parentIdIncludes?: string[];\n ownerIncludes?: string[];\n starred?: boolean;\n sharedWithMe?: boolean;\n trashed?: boolean;\n}\n\n/**\n * Convert structured DriveQuery to Google Drive query string\n *\n * Accepts either:\n * - A raw Drive query string (returned as-is)\n * - A structured DriveQueryObject (converted to Drive query syntax)\n *\n * Drive query syntax reference:\n * - name contains 'text' - Search by filename\n * - mimeType = 'type' - Filter by MIME type\n * - fullText contains 'text' - Search content and metadata\n * - 'parent_id' in parents - Search in folder\n * - starred = true/false - Filter by starred status\n * - sharedWithMe = true - Filter by shared status\n * - modifiedTime >= 'date' - Date filtering\n * - 'email' in owners - Filter by owner\n * - trashed = false - Exclude trashed files (always added)\n */\nexport function toDriveQuery(query: DriveQuery): {\n q: string;\n filters: FiltersObject;\n} {\n // Handle string queries - return as raw query with empty filters\n if (typeof query === 'string') {\n return { q: query, filters: {} };\n }\n const nameIncludes: string[] = [];\n const mimeTypeIncludes: string[] = [];\n const fullTextIncludes: string[] = [];\n const parentIdIncludes: string[] = [];\n const ownerIncludes: string[] = [];\n\n let starredFlag: boolean | undefined;\n let sharedWithMeFlag: boolean | undefined;\n let trashedFlag: boolean | undefined;\n\n function p(s: unknown) {\n return `(${String(s ?? '')})`;\n }\n\n function quote(s?: unknown) {\n const str = String(s ?? '');\n // Escape single quotes for Drive query syntax\n return `'${str.replace(/'/g, \"\\\\'\")}'`;\n }\n\n function fv(field: string, raw?: unknown) {\n const rawVal = String(raw ?? '');\n const v = quote(rawVal);\n\n if (field === 'name') {\n nameIncludes.push(rawVal);\n return `name contains ${v}`;\n }\n if (field === 'mimeType') {\n mimeTypeIncludes.push(rawVal);\n return `mimeType = ${v}`;\n }\n if (field === 'fullText') {\n fullTextIncludes.push(rawVal);\n return `fullText contains ${v}`;\n }\n if (field === 'parentId') {\n parentIdIncludes.push(rawVal);\n return `${v} in parents`;\n }\n if (field === 'owner') {\n ownerIncludes.push(rawVal);\n return `${v} in owners`;\n }\n\n return '';\n }\n\n function chain(op: 'and' | 'or', arr: string[]) {\n const filtered = arr.filter((s) => s && s.trim() !== '');\n if (filtered.length === 0) return '';\n if (filtered.length === 1) {\n const first = filtered[0];\n return first ?? '';\n }\n return p(filtered.join(` ${op} `));\n }\n\n function fieldExpr(field: string, op: FieldOperator) {\n if (op.$any) {\n const nonEmpty = op.$any.filter((v: string) => String(v ?? '').trim() !== '');\n const results = nonEmpty.map((v: string) => fv(field, String(v ?? ''))).filter((result: string) => result.trim() !== '');\n return results.length > 0 ? chain('or', results) : '';\n }\n if (op.$all) {\n const nonEmpty = op.$all.filter((v: string) => String(v ?? '').trim() !== '');\n const results = nonEmpty.map((v: string) => fv(field, String(v ?? ''))).filter((result: string) => result.trim() !== '');\n return results.length > 0 ? chain('and', results) : '';\n }\n if (op.$none) {\n const nonEmpty = op.$none.filter((v: string) => String(v ?? '').trim() !== '');\n const results = nonEmpty.map((v: string) => fv(field, String(v ?? ''))).filter((result: string) => result.trim() !== '');\n return results.length > 0 ? `not ${p(chain('or', results))}` : '';\n }\n throw new Error(`Unknown field operator ${JSON.stringify(op)}`);\n }\n\n function dateExpr(d: { $gte?: string; $lt?: string }) {\n const parts: string[] = [];\n if (d.$gte) parts.push(`modifiedTime >= '${d.$gte}'`);\n if (d.$lt) parts.push(`modifiedTime < '${d.$lt}'`);\n return parts.length > 1 ? p(parts.join(' and ')) : (parts[0] ?? '');\n }\n\n function fieldKeys() {\n return ['name', 'mimeType', 'fullText', 'parentId', 'owner'];\n }\n\n function emit(n: DriveQueryObject): string {\n if (n.$and) return p(n.$and.map(emit).join(' and '));\n if (n.$or) return p(n.$or.map(emit).join(' or '));\n if (n.$not) return `not ${emit(n.$not)}`;\n\n const expressions: string[] = [];\n\n if (typeof n.starred === 'boolean') {\n starredFlag = n.starred;\n expressions.push(`starred = ${n.starred}`);\n }\n if (typeof n.sharedWithMe === 'boolean') {\n sharedWithMeFlag = n.sharedWithMe;\n expressions.push(`sharedWithMe = ${n.sharedWithMe}`);\n }\n if (typeof n.trashed === 'boolean') {\n trashedFlag = n.trashed;\n expressions.push(`trashed = ${n.trashed}`);\n }\n if (n.modifiedTime) {\n expressions.push(dateExpr(n.modifiedTime));\n }\n\n for (const k of fieldKeys()) {\n if (typeof n === 'object' && n !== null && k in n) {\n const op = (n as Record<string, string | FieldOperator>)[k];\n const normalizedOp: FieldOperator = typeof op === 'string' ? { $any: [op] } : (op ?? {});\n const result = fieldExpr(k, normalizedOp);\n if (result.trim() !== '') {\n expressions.push(result);\n }\n }\n }\n\n // Handle empty objects\n if (expressions.length === 0 && typeof n === 'object' && n !== null && Object.keys(n).length === 0) {\n return '';\n }\n\n // Combine multiple expressions with AND\n if (expressions.length > 1) {\n return chain('and', expressions);\n }\n if (expressions.length === 1) {\n return expressions[0] ?? '';\n }\n\n throw new Error(`Unknown node: ${JSON.stringify(n)}`);\n }\n\n function emitTop(n: DriveQueryObject): string {\n if (!n) return '';\n\n // Handle empty objects\n if (typeof n === 'object' && n !== null && Object.keys(n).length === 0) return '';\n\n if (n.$and) return n.$and.map(emit).join(' and ');\n if (n.$or) return n.$or.map(emit).join(' or ');\n if (n.$not) return `not ${emit(n.$not)}`;\n\n const result = emit(n);\n return result.trim() === '' ? '' : result;\n }\n\n const q = emitTop(query);\n const cleanedQuery = q.replace(/\\s+and\\s+$|\\s+or\\s+$|^\\s+and\\s+|^\\s+or\\s+/gi, '').trim();\n\n const filters: FiltersObject = {};\n if (nameIncludes.length) filters.nameIncludes = nameIncludes;\n if (mimeTypeIncludes.length) filters.mimeTypeIncludes = mimeTypeIncludes;\n if (fullTextIncludes.length) filters.fullTextIncludes = fullTextIncludes;\n if (parentIdIncludes.length) filters.parentIdIncludes = parentIdIncludes;\n if (ownerIncludes.length) filters.ownerIncludes = ownerIncludes;\n // Use tracked flags from emit() to capture nested boolean conditions\n if (typeof starredFlag === 'boolean') filters.starred = starredFlag;\n if (typeof sharedWithMeFlag === 'boolean') filters.sharedWithMe = sharedWithMeFlag;\n if (typeof trashedFlag === 'boolean') filters.trashed = trashedFlag;\n\n return { q: cleanedQuery ?? '', filters };\n}\n"],"names":["toDriveQuery","query","q","filters","nameIncludes","mimeTypeIncludes","fullTextIncludes","parentIdIncludes","ownerIncludes","starredFlag","sharedWithMeFlag","trashedFlag","p","s","String","quote","str","replace","fv","field","raw","rawVal","v","push","chain","op","arr","filtered","filter","trim","length","first","join","fieldExpr","$any","nonEmpty","results","map","result","$all","$none","Error","JSON","stringify","dateExpr","d","parts","$gte","$lt","fieldKeys","emit","n","$and","$or","$not","expressions","starred","sharedWithMe","trashed","modifiedTime","k","normalizedOp","Object","keys","emitTop","cleanedQuery"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/lib/query-builder.ts"],"sourcesContent":["import type { DriveQuery, DriveQueryObject } from '../schemas/drive-query-schema.ts';\n\n/**\n * Field operator interface for query filters\n */\nexport interface FieldOperator {\n $any?: string[];\n $all?: string[];\n $none?: string[];\n}\n\n/**\n * Filters object returned by toDriveQuery for debugging/logging\n */\ninterface FiltersObject {\n nameIncludes?: string[];\n mimeTypeIncludes?: string[];\n fullTextIncludes?: string[];\n parentIdIncludes?: string[];\n ownerIncludes?: string[];\n starred?: boolean;\n sharedWithMe?: boolean;\n trashed?: boolean;\n}\n\n/**\n * Convert structured DriveQuery to Google Drive query string\n *\n * Accepts either:\n * - A raw Drive query string (returned as-is)\n * - A structured DriveQueryObject (converted to Drive query syntax)\n *\n * Drive query syntax reference:\n * - name contains 'text' - Search by filename\n * - mimeType = 'type' - Filter by MIME type\n * - fullText contains 'text' - Search content and metadata\n * - 'parent_id' in parents - Search in folder\n * - starred = true/false - Filter by starred status\n * - sharedWithMe = true - Filter by shared status\n * - modifiedTime >= 'date' - Date filtering\n * - 'email' in owners - Filter by owner\n * - trashed = true/false - Filter by trash status\n */\nexport function toDriveQuery(query: DriveQuery | string): {\n q: string;\n filters: FiltersObject;\n} {\n // Handle string queries - return as raw query with empty filters\n if (typeof query === 'string') {\n return { q: query, filters: {} };\n }\n const nameIncludes: string[] = [];\n const mimeTypeIncludes: string[] = [];\n const fullTextIncludes: string[] = [];\n const parentIdIncludes: string[] = [];\n const ownerIncludes: string[] = [];\n\n let starredFlag: boolean | undefined;\n let sharedWithMeFlag: boolean | undefined;\n let trashedFlag: boolean | undefined;\n\n function p(s: unknown) {\n return `(${String(s ?? '')})`;\n }\n\n function quote(s?: unknown) {\n const str = String(s ?? '');\n // Escape single quotes for Drive query syntax\n return `'${str.replace(/'/g, \"\\\\'\")}'`;\n }\n\n function fv(field: string, raw?: unknown) {\n const rawVal = String(raw ?? '');\n const v = quote(rawVal);\n\n if (field === 'name') {\n nameIncludes.push(rawVal);\n return `name contains ${v}`;\n }\n if (field === 'mimeType') {\n mimeTypeIncludes.push(rawVal);\n return `mimeType = ${v}`;\n }\n if (field === 'fullText') {\n fullTextIncludes.push(rawVal);\n return `fullText contains ${v}`;\n }\n if (field === 'parentId') {\n parentIdIncludes.push(rawVal);\n return `${v} in parents`;\n }\n if (field === 'owner') {\n ownerIncludes.push(rawVal);\n return `${v} in owners`;\n }\n\n return '';\n }\n\n function chain(op: 'and' | 'or', arr: string[]) {\n const filtered = arr.filter((s) => s && s.trim() !== '');\n if (filtered.length === 0) return '';\n if (filtered.length === 1) {\n const first = filtered[0];\n return first ?? '';\n }\n return p(filtered.join(` ${op} `));\n }\n\n function fieldExpr(field: string, op: FieldOperator) {\n if (op.$any) {\n const nonEmpty = op.$any.filter((v: string) => String(v ?? '').trim() !== '');\n const results = nonEmpty.map((v: string) => fv(field, String(v ?? ''))).filter((result: string) => result.trim() !== '');\n return results.length > 0 ? chain('or', results) : '';\n }\n if (op.$all) {\n const nonEmpty = op.$all.filter((v: string) => String(v ?? '').trim() !== '');\n const results = nonEmpty.map((v: string) => fv(field, String(v ?? ''))).filter((result: string) => result.trim() !== '');\n return results.length > 0 ? chain('and', results) : '';\n }\n if (op.$none) {\n const nonEmpty = op.$none.filter((v: string) => String(v ?? '').trim() !== '');\n const results = nonEmpty.map((v: string) => fv(field, String(v ?? ''))).filter((result: string) => result.trim() !== '');\n return results.length > 0 ? `not ${p(chain('or', results))}` : '';\n }\n throw new Error(`Unknown field operator ${JSON.stringify(op)}`);\n }\n\n function dateExpr(d: { $gte?: string; $lt?: string }) {\n const parts: string[] = [];\n if (d.$gte) parts.push(`modifiedTime >= '${d.$gte}'`);\n if (d.$lt) parts.push(`modifiedTime < '${d.$lt}'`);\n return parts.length > 1 ? p(parts.join(' and ')) : (parts[0] ?? '');\n }\n\n function fieldKeys() {\n return ['name', 'mimeType', 'fullText', 'parentId', 'owner'];\n }\n\n function emit(n: DriveQueryObject): string {\n if (n.$and) return p(n.$and.map(emit).join(' and '));\n if (n.$or) return p(n.$or.map(emit).join(' or '));\n if (n.$not) return `not ${emit(n.$not)}`;\n\n const expressions: string[] = [];\n\n if (typeof n.starred === 'boolean') {\n starredFlag = n.starred;\n expressions.push(`starred = ${n.starred}`);\n }\n if (typeof n.sharedWithMe === 'boolean') {\n sharedWithMeFlag = n.sharedWithMe;\n expressions.push(`sharedWithMe = ${n.sharedWithMe}`);\n }\n if (typeof n.trashed === 'boolean') {\n trashedFlag = n.trashed;\n expressions.push(`trashed = ${n.trashed}`);\n }\n if (n.modifiedTime) {\n expressions.push(dateExpr(n.modifiedTime));\n }\n\n for (const k of fieldKeys()) {\n if (typeof n === 'object' && n !== null && k in n) {\n const op = (n as Record<string, string | FieldOperator>)[k];\n const normalizedOp: FieldOperator = typeof op === 'string' ? { $any: [op] } : (op ?? {});\n const result = fieldExpr(k, normalizedOp);\n if (result.trim() !== '') {\n expressions.push(result);\n }\n }\n }\n\n // Handle empty objects\n if (expressions.length === 0 && typeof n === 'object' && n !== null && Object.keys(n).length === 0) {\n return '';\n }\n\n // Combine multiple expressions with AND\n if (expressions.length > 1) {\n return chain('and', expressions);\n }\n if (expressions.length === 1) {\n return expressions[0] ?? '';\n }\n\n throw new Error(`Unknown node: ${JSON.stringify(n)}`);\n }\n\n function emitTop(n: DriveQueryObject): string {\n if (!n) return '';\n\n // Handle empty objects\n if (typeof n === 'object' && n !== null && Object.keys(n).length === 0) return '';\n\n if (n.$and) return n.$and.map(emit).join(' and ');\n if (n.$or) return n.$or.map(emit).join(' or ');\n if (n.$not) return `not ${emit(n.$not)}`;\n\n const result = emit(n);\n return result.trim() === '' ? '' : result;\n }\n\n const q = emitTop(query);\n const cleanedQuery = q.replace(/\\s+and\\s+$|\\s+or\\s+$|^\\s+and\\s+|^\\s+or\\s+/gi, '').trim();\n\n const filters: FiltersObject = {};\n if (nameIncludes.length) filters.nameIncludes = nameIncludes;\n if (mimeTypeIncludes.length) filters.mimeTypeIncludes = mimeTypeIncludes;\n if (fullTextIncludes.length) filters.fullTextIncludes = fullTextIncludes;\n if (parentIdIncludes.length) filters.parentIdIncludes = parentIdIncludes;\n if (ownerIncludes.length) filters.ownerIncludes = ownerIncludes;\n // Use tracked flags from emit() to capture nested boolean conditions\n if (typeof starredFlag === 'boolean') filters.starred = starredFlag;\n if (typeof sharedWithMeFlag === 'boolean') filters.sharedWithMe = sharedWithMeFlag;\n if (typeof trashedFlag === 'boolean') filters.trashed = trashedFlag;\n\n return { q: cleanedQuery ?? '', filters };\n}\n"],"names":["toDriveQuery","query","q","filters","nameIncludes","mimeTypeIncludes","fullTextIncludes","parentIdIncludes","ownerIncludes","starredFlag","sharedWithMeFlag","trashedFlag","p","s","String","quote","str","replace","fv","field","raw","rawVal","v","push","chain","op","arr","filtered","filter","trim","length","first","join","fieldExpr","$any","nonEmpty","results","map","result","$all","$none","Error","JSON","stringify","dateExpr","d","parts","$gte","$lt","fieldKeys","emit","n","$and","$or","$not","expressions","starred","sharedWithMe","trashed","modifiedTime","k","normalizedOp","Object","keys","emitTop","cleanedQuery"],"mappings":"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"}
@@ -31,18 +31,12 @@ function _getRequireWildcardCache(nodeInterop) {
31
31
  })(nodeInterop);
32
32
  }
33
33
  function _interop_require_wildcard(obj, nodeInterop) {
34
- if (!nodeInterop && obj && obj.__esModule) {
35
- return obj;
36
- }
37
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
38
- return {
39
- default: obj
40
- };
41
- }
34
+ if (!nodeInterop && obj && obj.__esModule) return obj;
35
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") return {
36
+ default: obj
37
+ };
42
38
  var cache = _getRequireWildcardCache(nodeInterop);
43
- if (cache && cache.has(obj)) {
44
- return cache.get(obj);
45
- }
39
+ if (cache && cache.has(obj)) return cache.get(obj);
46
40
  var newObj = {
47
41
  __proto__: null
48
42
  };
@@ -50,17 +44,12 @@ function _interop_require_wildcard(obj, nodeInterop) {
50
44
  for(var key in obj){
51
45
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
52
46
  var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
53
- if (desc && (desc.get || desc.set)) {
54
- Object.defineProperty(newObj, key, desc);
55
- } else {
56
- newObj[key] = obj[key];
57
- }
47
+ if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);
48
+ else newObj[key] = obj[key];
58
49
  }
59
50
  }
60
51
  newObj.default = obj;
61
- if (cache) {
62
- cache.set(obj, newObj);
63
- }
52
+ if (cache) cache.set(obj, newObj);
64
53
  return newObj;
65
54
  }
66
55
  /* 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; }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/mcp/index.ts"],"sourcesContent":["export * as promptFactories from './prompts/index.ts';\nexport * as resourceFactories from './resources/index.ts';\nexport * as toolFactories from './tools/index.ts';\n"],"names":["promptFactories","resourceFactories","toolFactories"],"mappings":";;;;;;;;;;;QAAYA;;;QACAC;;;QACAC;;;;+DAFqB;gEACE;gEACJ"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/mcp/index.ts"],"sourcesContent":["export * as promptFactories from './prompts/index.ts';\nexport * as resourceFactories from './resources/index.ts';\nexport * as toolFactories from './tools/index.ts';\n"],"names":["promptFactories","resourceFactories","toolFactories"],"mappings":";;;;;;;;;;;QAAYA;;;QACAC;;;QACAC;;;;+DAFqB;gEACE;gEACJ"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/mcp/prompts/index.ts"],"sourcesContent":["export { default as organizeFiles } from './organize-files.ts';\nexport { default as querySyntax } from './query-syntax.ts';\n"],"names":["organizeFiles","querySyntax"],"mappings":";;;;;;;;;;;QAAoBA;eAAAA,wBAAa;;QACbC;eAAAA,sBAAW;;;sEADU;oEACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/mcp/prompts/index.ts"],"sourcesContent":["export { default as organizeFiles } from './organize-files.ts';\nexport { default as querySyntax } from './query-syntax.ts';\n"],"names":["organizeFiles","querySyntax"],"mappings":";;;;;;;;;;;QAAoBA;eAAAA,wBAAa;;QACbC;eAAAA,sBAAW;;;sEADU;oEACF"}
@@ -16,11 +16,8 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
16
16
  reject(error);
17
17
  return;
18
18
  }
19
- if (info.done) {
20
- resolve(value);
21
- } else {
22
- Promise.resolve(value).then(_next, _throw);
23
- }
19
+ if (info.done) resolve(value);
20
+ else Promise.resolve(value).then(_next, _throw);
24
21
  }
25
22
  function _async_to_generator(fn) {
26
23
  return function() {
@@ -144,7 +141,7 @@ function createPrompt() {
144
141
  return {
145
142
  name: 'organize-files',
146
143
  config: config,
147
- handler: function() {
144
+ handler: function handler() {
148
145
  return _async_to_generator(function() {
149
146
  return _ts_generator(this, function(_state) {
150
147
  return [
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/mcp/prompts/organize-files.ts"],"sourcesContent":["import type { PromptModule } from '@mcp-z/server';\n\nexport default function createPrompt() {\n const config = {\n description: 'Help organize and manage files in Google Drive',\n argsSchema: {} as const,\n };\n\n return {\n name: 'organize-files',\n config,\n handler: async () => ({\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: 'You are an expert file organizer assistant. Help me organize my Google Drive files.',\n },\n },\n ],\n }),\n } satisfies PromptModule;\n}\n"],"names":["createPrompt","config","description","argsSchema","name","handler","messages","role","content","type","text"],"mappings":";;;;+BAEA;;;eAAwBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAT,SAASA;IACtB,IAAMC,SAAS;QACbC,aAAa;QACbC,YAAY,CAAC;IACf;IAEA,OAAO;QACLC,MAAM;QACNH,QAAAA;QACAI,SAAS;;;;;wBAAa;4BACpBC,QAAQ;gCACN;oCACEC,MAAM;oCACNC,SAAS;wCACPC,MAAM;wCACNC,MAAM;oCACR;gCACF;;wBAEJ;;;;;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/mcp/prompts/organize-files.ts"],"sourcesContent":["import type { PromptModule } from '@mcp-z/server';\n\nexport default function createPrompt() {\n const config = {\n description: 'Help organize and manage files in Google Drive',\n argsSchema: {} as const,\n };\n\n return {\n name: 'organize-files',\n config,\n handler: async () => ({\n messages: [\n {\n role: 'user',\n content: {\n type: 'text',\n text: 'You are an expert file organizer assistant. Help me organize my Google Drive files.',\n },\n },\n ],\n }),\n } satisfies PromptModule;\n}\n"],"names":["createPrompt","config","description","argsSchema","name","handler","messages","role","content","type","text"],"mappings":";;;;+BAEA;;;eAAwBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAT,SAASA;IACtB,IAAMC,SAAS;QACbC,aAAa;QACbC,YAAY,CAAC;IACf;IAEA,OAAO;QACLC,MAAM;QACNH,QAAAA;QACAI,SAAS,SAATA;;;;;wBAAsB;4BACpBC,QAAQ;gCACN;oCACEC,MAAM;oCACNC,SAAS;wCACPC,MAAM;wCACNC,MAAM;oCACR;gCACF;;wBAEJ;;;;;IACF;AACF"}
@@ -16,11 +16,8 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
16
16
  reject(error);
17
17
  return;
18
18
  }
19
- if (info.done) {
20
- resolve(value);
21
- } else {
22
- Promise.resolve(value).then(_next, _throw);
23
- }
19
+ if (info.done) resolve(value);
20
+ else Promise.resolve(value).then(_next, _throw);
24
21
  }
25
22
  function _async_to_generator(fn) {
26
23
  return function() {
@@ -140,7 +137,7 @@ function createPrompt() {
140
137
  var config = {
141
138
  description: 'Reference guide for Google Drive query syntax'
142
139
  };
143
- var handler = function(_args, _extra) {
140
+ var handler = function handler(_args, _extra) {
144
141
  return _async_to_generator(function() {
145
142
  return _ts_generator(this, function(_state) {
146
143
  return [
@@ -151,7 +148,7 @@ function createPrompt() {
151
148
  role: 'user',
152
149
  content: {
153
150
  type: 'text',
154
- text: '# Google Drive Query Syntax Reference\n\n## Logical Operators\n- `$and`: Array of conditions that ALL must match\n- `$or`: Array of conditions where ANY must match\n- `$not`: Condition that must NOT match\n\n## File/Folder Fields\n- `name`: Search by name (partial match, case-insensitive)\n- `mimeType`: Filter by MIME type\n- `fullText`: Search file content and metadata\n- `parentId`: Search within folder (use "root" for My Drive)\n- `owner`: Filter by owner email\n\n## Boolean Flags\n- `starred`: true/false\n- `sharedWithMe`: true/false\n- `trashed`: true/false (tools auto-filter trashed by default)\n\n## Date Range\n```json\n{ "modifiedTime": { "$gte": "2024-01-01", "$lt": "2024-12-31" } }\n```\n\n## Common MIME Types\n- `application/vnd.google-apps.folder`: Folders\n- `application/vnd.google-apps.document`: Google Docs\n- `application/vnd.google-apps.spreadsheet`: Google Sheets\n- `application/vnd.google-apps.presentation`: Google Slides\n- `application/pdf`: PDF files\n- `image/jpeg`, `image/png`: Images\n\n## Field Operators (for multi-value fields)\n- `$any`: OR - matches if ANY value matches\n- `$all`: AND - matches if ALL values match\n- `$none`: NOT - matches if NONE match\n\n## Escape Hatch\n- `rawDriveQuery`: Raw Google Drive query syntax\n\n## Example Queries\n```json\n// PDFs modified this year\n{ "mimeType": "application/pdf", "modifiedTime": { "$gte": "2024-01-01" } }\n\n// Starred spreadsheets\n{ "mimeType": "application/vnd.google-apps.spreadsheet", "starred": true }\n\n// Files in specific folder\n{ "parentId": "1abc123xyz" }\n\n// Search by name\n{ "name": "budget" }\n\n// Complex: shared PDFs or Docs\n{ "$or": [\n { "mimeType": "application/pdf", "sharedWithMe": true },\n { "mimeType": "application/vnd.google-apps.document", "sharedWithMe": true }\n]}\n```'
151
+ text: '# Google Drive Query Syntax Reference\n\n## Logical Operators\n- `$and`: Array of conditions that ALL must match\n- `$or`: Array of conditions where ANY must match\n- `$not`: Condition that must NOT match\n\n## File/Folder Fields\n- `name`: Search by name (partial match, case-insensitive)\n- `mimeType`: Filter by MIME type\n- `fullText`: Search file content and metadata\n- `parentId`: Search within folder (use "root" for My Drive)\n- `owner`: Filter by owner email\n\n## Boolean Flags\n- `starred`: true/false\n- `sharedWithMe`: true/false\n- `trashed`: true/false\n\n## Date Range\n```json\n{ "modifiedTime": { "$gte": "2024-01-01", "$lt": "2024-12-31" } }\n```\n\n## Common MIME Types\n- `application/vnd.google-apps.folder`: Folders\n- `application/vnd.google-apps.document`: Google Docs\n- `application/vnd.google-apps.spreadsheet`: Google Sheets\n- `application/vnd.google-apps.presentation`: Google Slides\n- `application/pdf`: PDF files\n- `image/jpeg`, `image/png`: Images\n\n## Field Operators (for multi-value fields)\n- `$any`: OR - matches if ANY value matches\n- `$all`: AND - matches if ALL values match\n- `$none`: NOT - matches if NONE match\n\n## Escape Hatch\n- `rawDriveQuery`: Raw Google Drive query syntax\n\n## Example Queries\n```json\n// PDFs modified this year\n{ "mimeType": "application/pdf", "modifiedTime": { "$gte": "2024-01-01" } }\n\n// Starred spreadsheets\n{ "mimeType": "application/vnd.google-apps.spreadsheet", "starred": true }\n\n// Files in specific folder\n{ "parentId": "1abc123xyz" }\n\n// Search by name\n{ "name": "budget" }\n\n// Complex: shared PDFs or Docs\n{ "$or": [\n { "mimeType": "application/pdf", "sharedWithMe": true },\n { "mimeType": "application/vnd.google-apps.document", "sharedWithMe": true }\n]}\n```'
155
152
  }
156
153
  }
157
154
  ]
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/mcp/prompts/query-syntax.ts"],"sourcesContent":["import type { PromptModule } from '@mcp-z/server';\nimport type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';\nimport type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';\n\nexport default function createPrompt() {\n const config = {\n description: 'Reference guide for Google Drive query syntax',\n };\n\n const handler = async (_args: { [x: string]: unknown }, _extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => {\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `# Google Drive Query Syntax Reference\n\n## Logical Operators\n- \\`$and\\`: Array of conditions that ALL must match\n- \\`$or\\`: Array of conditions where ANY must match\n- \\`$not\\`: Condition that must NOT match\n\n## File/Folder Fields\n- \\`name\\`: Search by name (partial match, case-insensitive)\n- \\`mimeType\\`: Filter by MIME type\n- \\`fullText\\`: Search file content and metadata\n- \\`parentId\\`: Search within folder (use \"root\" for My Drive)\n- \\`owner\\`: Filter by owner email\n\n## Boolean Flags\n- \\`starred\\`: true/false\n- \\`sharedWithMe\\`: true/false\n- \\`trashed\\`: true/false (tools auto-filter trashed by default)\n\n## Date Range\n\\`\\`\\`json\n{ \"modifiedTime\": { \"$gte\": \"2024-01-01\", \"$lt\": \"2024-12-31\" } }\n\\`\\`\\`\n\n## Common MIME Types\n- \\`application/vnd.google-apps.folder\\`: Folders\n- \\`application/vnd.google-apps.document\\`: Google Docs\n- \\`application/vnd.google-apps.spreadsheet\\`: Google Sheets\n- \\`application/vnd.google-apps.presentation\\`: Google Slides\n- \\`application/pdf\\`: PDF files\n- \\`image/jpeg\\`, \\`image/png\\`: Images\n\n## Field Operators (for multi-value fields)\n- \\`$any\\`: OR - matches if ANY value matches\n- \\`$all\\`: AND - matches if ALL values match\n- \\`$none\\`: NOT - matches if NONE match\n\n## Escape Hatch\n- \\`rawDriveQuery\\`: Raw Google Drive query syntax\n\n## Example Queries\n\\`\\`\\`json\n// PDFs modified this year\n{ \"mimeType\": \"application/pdf\", \"modifiedTime\": { \"$gte\": \"2024-01-01\" } }\n\n// Starred spreadsheets\n{ \"mimeType\": \"application/vnd.google-apps.spreadsheet\", \"starred\": true }\n\n// Files in specific folder\n{ \"parentId\": \"1abc123xyz\" }\n\n// Search by name\n{ \"name\": \"budget\" }\n\n// Complex: shared PDFs or Docs\n{ \"$or\": [\n { \"mimeType\": \"application/pdf\", \"sharedWithMe\": true },\n { \"mimeType\": \"application/vnd.google-apps.document\", \"sharedWithMe\": true }\n]}\n\\`\\`\\``,\n },\n },\n ],\n };\n };\n\n return {\n name: 'query-syntax',\n config,\n handler,\n } satisfies PromptModule;\n}\n"],"names":["createPrompt","config","description","handler","_args","_extra","messages","role","content","type","text","name"],"mappings":";;;;+BAIA;;;eAAwBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAT,SAASA;IACtB,IAAMC,SAAS;QACbC,aAAa;IACf;IAEA,IAAMC,UAAU,SAAOC,OAAiCC;;;gBACtD;;oBAAO;wBACLC,QAAQ;4BACN;gCACEC,MAAM;gCACNC,SAAS;oCACPC,MAAM;oCACNC,MAAM;gCA4DR;4BACF;;oBAEJ;;;QACF;;IAEA,OAAO;QACLC,MAAM;QACNV,QAAAA;QACAE,SAAAA;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/mcp/prompts/query-syntax.ts"],"sourcesContent":["import type { PromptModule } from '@mcp-z/server';\nimport type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';\nimport type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';\n\nexport default function createPrompt() {\n const config = {\n description: 'Reference guide for Google Drive query syntax',\n };\n\n const handler = async (_args: { [x: string]: unknown }, _extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => {\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `# Google Drive Query Syntax Reference\n\n## Logical Operators\n- \\`$and\\`: Array of conditions that ALL must match\n- \\`$or\\`: Array of conditions where ANY must match\n- \\`$not\\`: Condition that must NOT match\n\n## File/Folder Fields\n- \\`name\\`: Search by name (partial match, case-insensitive)\n- \\`mimeType\\`: Filter by MIME type\n- \\`fullText\\`: Search file content and metadata\n- \\`parentId\\`: Search within folder (use \"root\" for My Drive)\n- \\`owner\\`: Filter by owner email\n\n## Boolean Flags\n- \\`starred\\`: true/false\n- \\`sharedWithMe\\`: true/false\n- \\`trashed\\`: true/false\n\n## Date Range\n\\`\\`\\`json\n{ \"modifiedTime\": { \"$gte\": \"2024-01-01\", \"$lt\": \"2024-12-31\" } }\n\\`\\`\\`\n\n## Common MIME Types\n- \\`application/vnd.google-apps.folder\\`: Folders\n- \\`application/vnd.google-apps.document\\`: Google Docs\n- \\`application/vnd.google-apps.spreadsheet\\`: Google Sheets\n- \\`application/vnd.google-apps.presentation\\`: Google Slides\n- \\`application/pdf\\`: PDF files\n- \\`image/jpeg\\`, \\`image/png\\`: Images\n\n## Field Operators (for multi-value fields)\n- \\`$any\\`: OR - matches if ANY value matches\n- \\`$all\\`: AND - matches if ALL values match\n- \\`$none\\`: NOT - matches if NONE match\n\n## Escape Hatch\n- \\`rawDriveQuery\\`: Raw Google Drive query syntax\n\n## Example Queries\n\\`\\`\\`json\n// PDFs modified this year\n{ \"mimeType\": \"application/pdf\", \"modifiedTime\": { \"$gte\": \"2024-01-01\" } }\n\n// Starred spreadsheets\n{ \"mimeType\": \"application/vnd.google-apps.spreadsheet\", \"starred\": true }\n\n// Files in specific folder\n{ \"parentId\": \"1abc123xyz\" }\n\n// Search by name\n{ \"name\": \"budget\" }\n\n// Complex: shared PDFs or Docs\n{ \"$or\": [\n { \"mimeType\": \"application/pdf\", \"sharedWithMe\": true },\n { \"mimeType\": \"application/vnd.google-apps.document\", \"sharedWithMe\": true }\n]}\n\\`\\`\\``,\n },\n },\n ],\n };\n };\n\n return {\n name: 'query-syntax',\n config,\n handler,\n } satisfies PromptModule;\n}\n"],"names":["createPrompt","config","description","handler","_args","_extra","messages","role","content","type","text","name"],"mappings":";;;;+BAIA;;;eAAwBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAT,SAASA;IACtB,IAAMC,SAAS;QACbC,aAAa;IACf;IAEA,IAAMC,UAAU,iBAAOC,OAAiCC;;;gBACtD;;oBAAO;wBACLC,QAAQ;4BACN;gCACEC,MAAM;gCACNC,SAAS;oCACPC,MAAM;oCACNC,MAAM;gCA4DR;4BACF;;oBAEJ;;;QACF;;IAEA,OAAO;QACLC,MAAM;QACNV,QAAAA;QACAE,SAAAA;IACF;AACF"}
@@ -18,11 +18,8 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
18
18
  reject(error);
19
19
  return;
20
20
  }
21
- if (info.done) {
22
- resolve(value);
23
- } else {
24
- Promise.resolve(value).then(_next, _throw);
25
- }
21
+ if (info.done) resolve(value);
22
+ else Promise.resolve(value).then(_next, _throw);
26
23
  }
27
24
  function _async_to_generator(fn) {
28
25
  return function() {
@@ -146,7 +143,7 @@ function createResource() {
146
143
  description: 'Drive file resource',
147
144
  mimeType: 'application/json'
148
145
  };
149
- var handler = function(uri, variables, extra) {
146
+ var handler = function handler(uri, variables, extra) {
150
147
  return _async_to_generator(function() {
151
148
  var fileId, _logger_debug, logger, authContext, drive, resp, data, error, _logger_debug1, logger1;
152
149
  return _ts_generator(this, function(_state) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/mcp/resources/file.ts"],"sourcesContent":["import type { EnrichedExtra } from '@mcp-z/oauth-google';\nimport type { ResourceConfig, ResourceModule } from '@mcp-z/server';\nimport { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';\nimport type { ReadResourceResult, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';\nimport { google } from 'googleapis';\n\nexport default function createResource() {\n const template = new ResourceTemplate('drive://files/{fileId}', {\n list: undefined,\n });\n const config: ResourceConfig = {\n description: 'Drive file resource',\n mimeType: 'application/json',\n };\n\n const handler = async (uri: URL, variables: Record<string, string | string[]>, extra: RequestHandlerExtra<ServerRequest, ServerNotification>): Promise<ReadResourceResult> => {\n // Extract fileId and handle both string and string[] cases\n const fileId = Array.isArray(variables.fileId) ? variables.fileId[0] : variables.fileId;\n\n try {\n // Validate fileId exists and is a string\n if (!fileId || typeof fileId !== 'string') {\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({\n error: 'Missing or invalid fileId in resource URI',\n }),\n },\n ],\n };\n }\n\n // Safe type guard to access middleware-enriched extra\n const { logger, authContext } = extra as unknown as EnrichedExtra;\n const drive = google.drive({ version: 'v3', auth: authContext.auth });\n const resp = await drive.files.get({\n fileId,\n fields: 'id,name,mimeType,size,modifiedTime,owners,webViewLink',\n });\n const data = resp.data;\n logger.debug?.({ fileId, fileName: data?.name }, 'drive-file resource fetch success');\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(data || {}),\n },\n ],\n };\n } catch (error) {\n const { logger } = extra as unknown as EnrichedExtra;\n logger.debug?.(error as Record<string, unknown>, 'drive resource fetch failed');\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({ error: (error as Error).message }),\n },\n ],\n };\n }\n };\n\n return {\n name: 'file',\n template,\n config,\n handler,\n } satisfies ResourceModule;\n}\n"],"names":["createResource","template","ResourceTemplate","list","undefined","config","description","mimeType","handler","uri","variables","extra","fileId","logger","authContext","drive","resp","data","error","Array","isArray","contents","href","text","JSON","stringify","google","version","auth","files","get","fields","debug","fileName","name","message"],"mappings":";;;;+BAOA;;;eAAwBA;;;mBALS;0BAGV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAER,SAASA;IACtB,IAAMC,WAAW,IAAIC,qBAAgB,CAAC,0BAA0B;QAC9DC,MAAMC;IACR;IACA,IAAMC,SAAyB;QAC7BC,aAAa;QACbC,UAAU;IACZ;IAEA,IAAMC,UAAU,SAAOC,KAAUC,WAA8CC;;gBAEvEC,QA0BJC,eAPQA,QAAQC,aACVC,OACAC,MAIAC,MAWCC,OAEPL,gBADQA;;;;wBAtCV,2DAA2D;wBACrDD,SAASO,MAAMC,OAAO,CAACV,UAAUE,MAAM,IAAIF,UAAUE,MAAM,CAAC,EAAE,GAAGF,UAAUE,MAAM;;;;;;;;;wBAGrF,yCAAyC;wBACzC,IAAI,CAACA,UAAU,OAAOA,WAAW,UAAU;4BACzC;;gCAAO;oCACLS,QAAQ;wCACN;4CACEZ,KAAKA,IAAIa,IAAI;4CACbf,UAAU;4CACVgB,MAAMC,KAAKC,SAAS,CAAC;gDACnBP,OAAO;4CACT;wCACF;;gCAEJ;;wBACF;wBAEA,sDAAsD;wBAC9CL,SAAwBF,MAAxBE,QAAQC,cAAgBH,MAAhBG;wBACVC,QAAQW,kBAAM,CAACX,KAAK,CAAC;4BAAEY,SAAS;4BAAMC,MAAMd,YAAYc,IAAI;wBAAC;wBACtD;;4BAAMb,MAAMc,KAAK,CAACC,GAAG,CAAC;gCACjClB,QAAAA;gCACAmB,QAAQ;4BACV;;;wBAHMf,OAAO;wBAIPC,OAAOD,KAAKC,IAAI;yBACtBJ,gBAAAA,OAAOmB,KAAK,cAAZnB,oCAAAA,mBAAAA,QAAe;4BAAED,QAAAA;4BAAQqB,QAAQ,EAAEhB,iBAAAA,2BAAAA,KAAMiB,IAAI;wBAAC,GAAG;wBACjD;;4BAAO;gCACLb,QAAQ;oCACN;wCACEZ,KAAKA,IAAIa,IAAI;wCACbf,UAAU;wCACVgB,MAAMC,KAAKC,SAAS,CAACR,QAAQ,CAAC;oCAChC;;4BAEJ;;;wBACOC;wBACCL,UAAWF,MAAXE;yBACRA,iBAAAA,QAAOmB,KAAK,cAAZnB,qCAAAA,oBAAAA,SAAeK,OAAkC;wBACjD;;4BAAO;gCACLG,QAAQ;oCACN;wCACEZ,KAAKA,IAAIa,IAAI;wCACbf,UAAU;wCACVgB,MAAMC,KAAKC,SAAS,CAAC;4CAAEP,OAAO,AAACA,MAAgBiB,OAAO;wCAAC;oCACzD;;4BAEJ;;;;;;;;QAEJ;;IAEA,OAAO;QACLD,MAAM;QACNjC,UAAAA;QACAI,QAAAA;QACAG,SAAAA;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/mcp/resources/file.ts"],"sourcesContent":["import type { EnrichedExtra } from '@mcp-z/oauth-google';\nimport type { ResourceConfig, ResourceModule } from '@mcp-z/server';\nimport { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';\nimport type { ReadResourceResult, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';\nimport { google } from 'googleapis';\n\nexport default function createResource() {\n const template = new ResourceTemplate('drive://files/{fileId}', {\n list: undefined,\n });\n const config: ResourceConfig = {\n description: 'Drive file resource',\n mimeType: 'application/json',\n };\n\n const handler = async (uri: URL, variables: Record<string, string | string[]>, extra: RequestHandlerExtra<ServerRequest, ServerNotification>): Promise<ReadResourceResult> => {\n // Extract fileId and handle both string and string[] cases\n const fileId = Array.isArray(variables.fileId) ? variables.fileId[0] : variables.fileId;\n\n try {\n // Validate fileId exists and is a string\n if (!fileId || typeof fileId !== 'string') {\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({\n error: 'Missing or invalid fileId in resource URI',\n }),\n },\n ],\n };\n }\n\n // Safe type guard to access middleware-enriched extra\n const { logger, authContext } = extra as unknown as EnrichedExtra;\n const drive = google.drive({ version: 'v3', auth: authContext.auth });\n const resp = await drive.files.get({\n fileId,\n fields: 'id,name,mimeType,size,modifiedTime,owners,webViewLink',\n });\n const data = resp.data;\n logger.debug?.({ fileId, fileName: data?.name }, 'drive-file resource fetch success');\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify(data || {}),\n },\n ],\n };\n } catch (error) {\n const { logger } = extra as unknown as EnrichedExtra;\n logger.debug?.(error as Record<string, unknown>, 'drive resource fetch failed');\n return {\n contents: [\n {\n uri: uri.href,\n mimeType: 'application/json',\n text: JSON.stringify({ error: (error as Error).message }),\n },\n ],\n };\n }\n };\n\n return {\n name: 'file',\n template,\n config,\n handler,\n } satisfies ResourceModule;\n}\n"],"names":["createResource","template","ResourceTemplate","list","undefined","config","description","mimeType","handler","uri","variables","extra","fileId","logger","authContext","drive","resp","data","error","Array","isArray","contents","href","text","JSON","stringify","google","version","auth","files","get","fields","debug","fileName","name","message"],"mappings":";;;;+BAOA;;;eAAwBA;;;mBALS;0BAGV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAER,SAASA;IACtB,IAAMC,WAAW,IAAIC,qBAAgB,CAAC,0BAA0B;QAC9DC,MAAMC;IACR;IACA,IAAMC,SAAyB;QAC7BC,aAAa;QACbC,UAAU;IACZ;IAEA,IAAMC,UAAU,iBAAOC,KAAUC,WAA8CC;;gBAEvEC,QA0BJC,eAPQA,QAAQC,aACVC,OACAC,MAIAC,MAWCC,OAEPL,gBADQA;;;;wBAtCV,2DAA2D;wBACrDD,SAASO,MAAMC,OAAO,CAACV,UAAUE,MAAM,IAAIF,UAAUE,MAAM,CAAC,EAAE,GAAGF,UAAUE,MAAM;;;;;;;;;wBAGrF,yCAAyC;wBACzC,IAAI,CAACA,UAAU,OAAOA,WAAW,UAAU;4BACzC;;gCAAO;oCACLS,QAAQ;wCACN;4CACEZ,KAAKA,IAAIa,IAAI;4CACbf,UAAU;4CACVgB,MAAMC,KAAKC,SAAS,CAAC;gDACnBP,OAAO;4CACT;wCACF;;gCAEJ;;wBACF;wBAEA,sDAAsD;wBAC9CL,SAAwBF,MAAxBE,QAAQC,cAAgBH,MAAhBG;wBACVC,QAAQW,kBAAM,CAACX,KAAK,CAAC;4BAAEY,SAAS;4BAAMC,MAAMd,YAAYc,IAAI;wBAAC;wBACtD;;4BAAMb,MAAMc,KAAK,CAACC,GAAG,CAAC;gCACjClB,QAAAA;gCACAmB,QAAQ;4BACV;;;wBAHMf,OAAO;wBAIPC,OAAOD,KAAKC,IAAI;yBACtBJ,gBAAAA,OAAOmB,KAAK,cAAZnB,oCAAAA,mBAAAA,QAAe;4BAAED,QAAAA;4BAAQqB,QAAQ,EAAEhB,iBAAAA,2BAAAA,KAAMiB,IAAI;wBAAC,GAAG;wBACjD;;4BAAO;gCACLb,QAAQ;oCACN;wCACEZ,KAAKA,IAAIa,IAAI;wCACbf,UAAU;wCACVgB,MAAMC,KAAKC,SAAS,CAACR,QAAQ,CAAC;oCAChC;;4BAEJ;;;wBACOC;wBACCL,UAAWF,MAAXE;yBACRA,iBAAAA,QAAOmB,KAAK,cAAZnB,qCAAAA,oBAAAA,SAAeK,OAAkC;wBACjD;;4BAAO;gCACLG,QAAQ;oCACN;wCACEZ,KAAKA,IAAIa,IAAI;wCACbf,UAAU;wCACVgB,MAAMC,KAAKC,SAAS,CAAC;4CAAEP,OAAO,AAACA,MAAgBiB,OAAO;wCAAC;oCACzD;;4BAEJ;;;;;;;;QAEJ;;IAEA,OAAO;QACLD,MAAM;QACNjC,UAAAA;QACAI,QAAAA;QACAG,SAAAA;IACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/mcp/resources/index.ts"],"sourcesContent":["export { default as file } from './file.ts';\n"],"names":["file"],"mappings":";;;;+BAAoBA;;;eAAAA,eAAI;;;6DAAQ"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/mcp/resources/index.ts"],"sourcesContent":["export { default as file } from './file.ts';\n"],"names":["file"],"mappings":";;;;+BAAoBA;;;eAAAA,eAAI;;;6DAAQ"}
@@ -20,11 +20,8 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
20
20
  reject(error);
21
21
  return;
22
22
  }
23
- if (info.done) {
24
- resolve(value);
25
- } else {
26
- Promise.resolve(value).then(_next, _throw);
27
- }
23
+ if (info.done) resolve(value);
24
+ else Promise.resolve(value).then(_next, _throw);
28
25
  }
29
26
  function _async_to_generator(fn) {
30
27
  return function() {
@@ -49,17 +46,14 @@ function _define_property(obj, key, value) {
49
46
  configurable: true,
50
47
  writable: true
51
48
  });
52
- } else {
53
- obj[key] = value;
54
- }
49
+ } else obj[key] = value;
55
50
  return obj;
56
51
  }
57
52
  function _instanceof(left, right) {
53
+ "@swc/helpers - instanceof";
58
54
  if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
59
55
  return !!right[Symbol.hasInstance](left);
60
- } else {
61
- return left instanceof right;
62
- }
56
+ } else return left instanceof right;
63
57
  }
64
58
  function _object_spread(target) {
65
59
  for(var i = 1; i < arguments.length; i++){
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-drive/src/mcp/tools/file-move-to-trash.ts"],"sourcesContent":["import type { EnrichedExtra } from '@mcp-z/oauth-google';\nimport { schemas } from '@mcp-z/oauth-google';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport { type CallToolResult, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { google } from 'googleapis';\nimport { z } from 'zod';\n\nconst MAX_BATCH_SIZE = 1000;\n\nconst inputSchema = z.object({\n ids: z.array(z.string().min(1)).min(1).max(MAX_BATCH_SIZE).describe('File IDs to soft delete (move to trash)'),\n});\n\n// Success branch schema\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n operationSummary: z.string().describe('Human-readable summary of the operation'),\n totalCount: z.number().describe('Total number of files requested to trash'),\n successCount: z.number().describe('Number of files successfully moved to trash'),\n failureCount: z.number().describe('Number of files that failed to move'),\n recoverable: z.boolean().describe('Whether trashed files can be restored'),\n recoverableDays: z.number().describe('Days until permanent deletion'),\n failures: z\n .array(\n z.object({\n id: z.string().describe('ID of the file that failed'),\n error: z.string().describe('Error message explaining the failure'),\n })\n )\n .optional()\n .describe('Details of any files that failed to trash'),\n});\n\n// Output schema with auth_required support\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n title: 'Move Files to Trash',\n description: 'Move files to trash (recoverable for 30 days).',\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\nasync function handler({ ids }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('drive.file.moveToTrash called', { count: ids.length });\n\n try {\n const drive = google.drive({ version: 'v3', auth: extra.authContext.auth });\n\n const results = await Promise.allSettled(\n ids.map(async (id) => {\n await drive.files.update({\n fileId: id,\n requestBody: { trashed: true },\n });\n return id;\n })\n );\n\n // Separate successes and failures\n const failures: Array<{ id: string; error: string }> = [];\n\n results.forEach((result, index) => {\n const id = ids[index];\n if (!id) return;\n\n if (result.status === 'rejected') {\n const errorMessage = result.reason instanceof Error ? result.reason.message : String(result.reason);\n failures.push({ id, error: errorMessage });\n }\n });\n\n const successCount = ids.length - failures.length;\n const failureCount = failures.length;\n const totalCount = ids.length;\n\n logger.info('drive.file.moveToTrash completed', {\n totalCount,\n successCount,\n failureCount,\n });\n\n const operationSummary = failureCount === 0 ? `Moved ${successCount} file${successCount === 1 ? '' : 's'} to trash (recoverable for 30 days)` : `Moved ${successCount} of ${totalCount} file${totalCount === 1 ? '' : 's'} to trash (${failureCount} failed, recoverable for 30 days)`;\n\n const result: Output = {\n type: 'success' as const,\n operationSummary,\n totalCount,\n successCount,\n failureCount,\n recoverable: true,\n recoverableDays: 30,\n ...(failures.length > 0 && { failures }),\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.file.moveToTrash error', { error: message });\n\n // Throw McpError\n throw new McpError(ErrorCode.InternalError, `Error moving files to trash: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'file-move-to-trash' as const,\n config,\n handler,\n };\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","MAX_BATCH_SIZE","inputSchema","z","object","ids","array","string","min","max","describe","successBranchSchema","type","literal","operationSummary","totalCount","number","successCount","failureCount","recoverable","boolean","recoverableDays","failures","id","error","optional","outputSchema","discriminatedUnion","config","title","description","result","handler","extra","logger","drive","results","message","info","count","length","google","version","auth","authContext","Promise","allSettled","map","files","update","fileId","requestBody","trashed","forEach","index","status","errorMessage","reason","Error","String","push","content","text","JSON","stringify","structuredContent","McpError","ErrorCode","InternalError","stack","undefined","name"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-drive/src/mcp/tools/file-move-to-trash.ts"],"sourcesContent":["import type { EnrichedExtra } from '@mcp-z/oauth-google';\nimport { schemas } from '@mcp-z/oauth-google';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport { type CallToolResult, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { google } from 'googleapis';\nimport { z } from 'zod';\n\nconst MAX_BATCH_SIZE = 1000;\n\nconst inputSchema = z.object({\n ids: z.array(z.string().min(1)).min(1).max(MAX_BATCH_SIZE).describe('File IDs to soft delete (move to trash)'),\n});\n\n// Success branch schema\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n operationSummary: z.string().describe('Human-readable summary of the operation'),\n totalCount: z.number().describe('Total number of files requested to trash'),\n successCount: z.number().describe('Number of files successfully moved to trash'),\n failureCount: z.number().describe('Number of files that failed to move'),\n recoverable: z.boolean().describe('Whether trashed files can be restored'),\n recoverableDays: z.number().describe('Days until permanent deletion'),\n failures: z\n .array(\n z.object({\n id: z.string().describe('ID of the file that failed'),\n error: z.string().describe('Error message explaining the failure'),\n })\n )\n .optional()\n .describe('Details of any files that failed to trash'),\n});\n\n// Output schema with auth_required support\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n title: 'Move Files to Trash',\n description: 'Move files to trash (recoverable for 30 days).',\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\nasync function handler({ ids }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('drive.file.moveToTrash called', { count: ids.length });\n\n try {\n const drive = google.drive({ version: 'v3', auth: extra.authContext.auth });\n\n const results = await Promise.allSettled(\n ids.map(async (id) => {\n await drive.files.update({\n fileId: id,\n requestBody: { trashed: true },\n });\n return id;\n })\n );\n\n // Separate successes and failures\n const failures: Array<{ id: string; error: string }> = [];\n\n results.forEach((result, index) => {\n const id = ids[index];\n if (!id) return;\n\n if (result.status === 'rejected') {\n const errorMessage = result.reason instanceof Error ? result.reason.message : String(result.reason);\n failures.push({ id, error: errorMessage });\n }\n });\n\n const successCount = ids.length - failures.length;\n const failureCount = failures.length;\n const totalCount = ids.length;\n\n logger.info('drive.file.moveToTrash completed', {\n totalCount,\n successCount,\n failureCount,\n });\n\n const operationSummary = failureCount === 0 ? `Moved ${successCount} file${successCount === 1 ? '' : 's'} to trash (recoverable for 30 days)` : `Moved ${successCount} of ${totalCount} file${totalCount === 1 ? '' : 's'} to trash (${failureCount} failed, recoverable for 30 days)`;\n\n const result: Output = {\n type: 'success' as const,\n operationSummary,\n totalCount,\n successCount,\n failureCount,\n recoverable: true,\n recoverableDays: 30,\n ...(failures.length > 0 && { failures }),\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.file.moveToTrash error', { error: message });\n\n // Throw McpError\n throw new McpError(ErrorCode.InternalError, `Error moving files to trash: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'file-move-to-trash' as const,\n config,\n handler,\n };\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","MAX_BATCH_SIZE","inputSchema","z","object","ids","array","string","min","max","describe","successBranchSchema","type","literal","operationSummary","totalCount","number","successCount","failureCount","recoverable","boolean","recoverableDays","failures","id","error","optional","outputSchema","discriminatedUnion","config","title","description","result","handler","extra","logger","drive","results","message","info","count","length","google","version","auth","authContext","Promise","allSettled","map","files","update","fileId","requestBody","trashed","forEach","index","status","errorMessage","reason","Error","String","push","content","text","JSON","stringify","structuredContent","McpError","ErrorCode","InternalError","stack","undefined","name"],"mappings":"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"}
@@ -20,11 +20,8 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
20
20
  reject(error);
21
21
  return;
22
22
  }
23
- if (info.done) {
24
- resolve(value);
25
- } else {
26
- Promise.resolve(value).then(_next, _throw);
27
- }
23
+ if (info.done) resolve(value);
24
+ else Promise.resolve(value).then(_next, _throw);
28
25
  }
29
26
  function _async_to_generator(fn) {
30
27
  return function() {
@@ -49,17 +46,14 @@ function _define_property(obj, key, value) {
49
46
  configurable: true,
50
47
  writable: true
51
48
  });
52
- } else {
53
- obj[key] = value;
54
- }
49
+ } else obj[key] = value;
55
50
  return obj;
56
51
  }
57
52
  function _instanceof(left, right) {
53
+ "@swc/helpers - instanceof";
58
54
  if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
59
55
  return !!right[Symbol.hasInstance](left);
60
- } else {
61
- return left instanceof right;
62
- }
56
+ } else return left instanceof right;
63
57
  }
64
58
  function _object_spread(target) {
65
59
  for(var i = 1; i < arguments.length; i++){
@@ -91,19 +85,14 @@ function ownKeys(object, enumerableOnly) {
91
85
  }
92
86
  function _object_spread_props(target, source) {
93
87
  source = source != null ? source : {};
94
- if (Object.getOwnPropertyDescriptors) {
95
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
96
- } else {
88
+ if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
89
+ else {
97
90
  ownKeys(Object(source)).forEach(function(key) {
98
91
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
99
92
  });
100
93
  }
101
94
  return target;
102
95
  }
103
- function _type_of(obj) {
104
- "@swc/helpers - typeof";
105
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
106
- }
107
96
  function _ts_generator(thisArg, body) {
108
97
  var f, y, t, _ = {
109
98
  label: 0,
@@ -203,6 +192,10 @@ function _ts_generator(thisArg, body) {
203
192
  };
204
193
  }
205
194
  }
195
+ function _type_of(obj) {
196
+ "@swc/helpers - typeof";
197
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
198
+ }
206
199
  var AuthRequiredBranchSchema = _oauthgoogle.schemas.AuthRequiredBranchSchema;
207
200
  function isDriveApiError(error) {
208
201
  return (typeof error === "undefined" ? "undefined" : _type_of(error)) === 'object' && error !== null && ('message' in error || 'code' in error);