@mcp-z/mcp-drive 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +163 -0
  3. package/bin/server.js +5 -0
  4. package/dist/cjs/constants.d.cts +7 -0
  5. package/dist/cjs/constants.d.ts +7 -0
  6. package/dist/cjs/constants.js +18 -0
  7. package/dist/cjs/constants.js.map +1 -0
  8. package/dist/cjs/index.d.cts +8 -0
  9. package/dist/cjs/index.d.ts +8 -0
  10. package/dist/cjs/index.js +314 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/lib/create-store.d.cts +2 -0
  13. package/dist/cjs/lib/create-store.d.ts +2 -0
  14. package/dist/cjs/lib/create-store.js +166 -0
  15. package/dist/cjs/lib/create-store.js.map +1 -0
  16. package/dist/cjs/lib/query-builder.d.cts +45 -0
  17. package/dist/cjs/lib/query-builder.d.ts +45 -0
  18. package/dist/cjs/lib/query-builder.js +219 -0
  19. package/dist/cjs/lib/query-builder.js.map +1 -0
  20. package/dist/cjs/mcp/index.d.cts +3 -0
  21. package/dist/cjs/mcp/index.d.ts +3 -0
  22. package/dist/cjs/mcp/index.js +66 -0
  23. package/dist/cjs/mcp/index.js.map +1 -0
  24. package/dist/cjs/mcp/prompts/index.d.cts +2 -0
  25. package/dist/cjs/mcp/prompts/index.d.ts +2 -0
  26. package/dist/cjs/mcp/prompts/index.js +26 -0
  27. package/dist/cjs/mcp/prompts/index.js.map +1 -0
  28. package/dist/cjs/mcp/prompts/organize-files.d.cts +16 -0
  29. package/dist/cjs/mcp/prompts/organize-files.d.ts +16 -0
  30. package/dist/cjs/mcp/prompts/organize-files.js +169 -0
  31. package/dist/cjs/mcp/prompts/organize-files.js.map +1 -0
  32. package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
  33. package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
  34. package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
  35. package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
  36. package/dist/cjs/mcp/resources/file.d.cts +9 -0
  37. package/dist/cjs/mcp/resources/file.d.ts +9 -0
  38. package/dist/cjs/mcp/resources/file.js +247 -0
  39. package/dist/cjs/mcp/resources/file.js.map +1 -0
  40. package/dist/cjs/mcp/resources/index.d.cts +1 -0
  41. package/dist/cjs/mcp/resources/index.d.ts +1 -0
  42. package/dist/cjs/mcp/resources/index.js +17 -0
  43. package/dist/cjs/mcp/resources/index.js.map +1 -0
  44. package/dist/cjs/mcp/tools/file-move-to-trash.d.cts +59 -0
  45. package/dist/cjs/mcp/tools/file-move-to-trash.d.ts +59 -0
  46. package/dist/cjs/mcp/tools/file-move-to-trash.js +334 -0
  47. package/dist/cjs/mcp/tools/file-move-to-trash.js.map +1 -0
  48. package/dist/cjs/mcp/tools/file-move.d.cts +73 -0
  49. package/dist/cjs/mcp/tools/file-move.d.ts +73 -0
  50. package/dist/cjs/mcp/tools/file-move.js +613 -0
  51. package/dist/cjs/mcp/tools/file-move.js.map +1 -0
  52. package/dist/cjs/mcp/tools/files-search.d.cts +135 -0
  53. package/dist/cjs/mcp/tools/files-search.d.ts +135 -0
  54. package/dist/cjs/mcp/tools/files-search.js +558 -0
  55. package/dist/cjs/mcp/tools/files-search.js.map +1 -0
  56. package/dist/cjs/mcp/tools/folder-contents.d.cts +139 -0
  57. package/dist/cjs/mcp/tools/folder-contents.d.ts +139 -0
  58. package/dist/cjs/mcp/tools/folder-contents.js +513 -0
  59. package/dist/cjs/mcp/tools/folder-contents.js.map +1 -0
  60. package/dist/cjs/mcp/tools/folder-create.d.cts +59 -0
  61. package/dist/cjs/mcp/tools/folder-create.d.ts +59 -0
  62. package/dist/cjs/mcp/tools/folder-create.js +368 -0
  63. package/dist/cjs/mcp/tools/folder-create.js.map +1 -0
  64. package/dist/cjs/mcp/tools/folder-path.d.cts +49 -0
  65. package/dist/cjs/mcp/tools/folder-path.d.ts +49 -0
  66. package/dist/cjs/mcp/tools/folder-path.js +367 -0
  67. package/dist/cjs/mcp/tools/folder-path.js.map +1 -0
  68. package/dist/cjs/mcp/tools/folder-search.d.cts +139 -0
  69. package/dist/cjs/mcp/tools/folder-search.d.ts +139 -0
  70. package/dist/cjs/mcp/tools/folder-search.js +760 -0
  71. package/dist/cjs/mcp/tools/folder-search.js.map +1 -0
  72. package/dist/cjs/mcp/tools/index.d.cts +7 -0
  73. package/dist/cjs/mcp/tools/index.d.ts +7 -0
  74. package/dist/cjs/mcp/tools/index.js +46 -0
  75. package/dist/cjs/mcp/tools/index.js.map +1 -0
  76. package/dist/cjs/package.json +1 -0
  77. package/dist/cjs/schemas/drive-query-schema.d.cts +40 -0
  78. package/dist/cjs/schemas/drive-query-schema.d.ts +40 -0
  79. package/dist/cjs/schemas/drive-query-schema.js +90 -0
  80. package/dist/cjs/schemas/drive-query-schema.js.map +1 -0
  81. package/dist/cjs/schemas/drive-validation.d.cts +48 -0
  82. package/dist/cjs/schemas/drive-validation.d.ts +48 -0
  83. package/dist/cjs/schemas/drive-validation.js +96 -0
  84. package/dist/cjs/schemas/drive-validation.js.map +1 -0
  85. package/dist/cjs/schemas/index.d.cts +2 -0
  86. package/dist/cjs/schemas/index.d.ts +2 -0
  87. package/dist/cjs/schemas/index.js +20 -0
  88. package/dist/cjs/schemas/index.js.map +1 -0
  89. package/dist/cjs/setup/config.d.cts +44 -0
  90. package/dist/cjs/setup/config.d.ts +44 -0
  91. package/dist/cjs/setup/config.js +201 -0
  92. package/dist/cjs/setup/config.js.map +1 -0
  93. package/dist/cjs/setup/http.d.cts +8 -0
  94. package/dist/cjs/setup/http.d.ts +8 -0
  95. package/dist/cjs/setup/http.js +260 -0
  96. package/dist/cjs/setup/http.js.map +1 -0
  97. package/dist/cjs/setup/index.d.cts +5 -0
  98. package/dist/cjs/setup/index.d.ts +5 -0
  99. package/dist/cjs/setup/index.js +46 -0
  100. package/dist/cjs/setup/index.js.map +1 -0
  101. package/dist/cjs/setup/oauth-google.d.cts +64 -0
  102. package/dist/cjs/setup/oauth-google.d.ts +64 -0
  103. package/dist/cjs/setup/oauth-google.js +347 -0
  104. package/dist/cjs/setup/oauth-google.js.map +1 -0
  105. package/dist/cjs/setup/runtime.d.cts +10 -0
  106. package/dist/cjs/setup/runtime.d.ts +10 -0
  107. package/dist/cjs/setup/runtime.js +353 -0
  108. package/dist/cjs/setup/runtime.js.map +1 -0
  109. package/dist/cjs/setup/stdio.d.cts +7 -0
  110. package/dist/cjs/setup/stdio.d.ts +7 -0
  111. package/dist/cjs/setup/stdio.js +239 -0
  112. package/dist/cjs/setup/stdio.js.map +1 -0
  113. package/dist/cjs/types.d.cts +45 -0
  114. package/dist/cjs/types.d.ts +45 -0
  115. package/dist/cjs/types.js +5 -0
  116. package/dist/cjs/types.js.map +1 -0
  117. package/dist/esm/constants.d.ts +7 -0
  118. package/dist/esm/constants.js +7 -0
  119. package/dist/esm/constants.js.map +1 -0
  120. package/dist/esm/index.d.ts +8 -0
  121. package/dist/esm/index.js +34 -0
  122. package/dist/esm/index.js.map +1 -0
  123. package/dist/esm/lib/create-store.d.ts +2 -0
  124. package/dist/esm/lib/create-store.js +6 -0
  125. package/dist/esm/lib/create-store.js.map +1 -0
  126. package/dist/esm/lib/query-builder.d.ts +45 -0
  127. package/dist/esm/lib/query-builder.js +184 -0
  128. package/dist/esm/lib/query-builder.js.map +1 -0
  129. package/dist/esm/mcp/index.d.ts +3 -0
  130. package/dist/esm/mcp/index.js +6 -0
  131. package/dist/esm/mcp/index.js.map +1 -0
  132. package/dist/esm/mcp/prompts/index.d.ts +2 -0
  133. package/dist/esm/mcp/prompts/index.js +2 -0
  134. package/dist/esm/mcp/prompts/index.js.map +1 -0
  135. package/dist/esm/mcp/prompts/organize-files.d.ts +16 -0
  136. package/dist/esm/mcp/prompts/organize-files.js +21 -0
  137. package/dist/esm/mcp/prompts/organize-files.js.map +1 -0
  138. package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
  139. package/dist/esm/mcp/prompts/query-syntax.js +82 -0
  140. package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
  141. package/dist/esm/mcp/resources/file.d.ts +9 -0
  142. package/dist/esm/mcp/resources/file.js +77 -0
  143. package/dist/esm/mcp/resources/file.js.map +1 -0
  144. package/dist/esm/mcp/resources/index.d.ts +1 -0
  145. package/dist/esm/mcp/resources/index.js +1 -0
  146. package/dist/esm/mcp/resources/index.js.map +1 -0
  147. package/dist/esm/mcp/tools/file-move-to-trash.d.ts +59 -0
  148. package/dist/esm/mcp/tools/file-move-to-trash.js +118 -0
  149. package/dist/esm/mcp/tools/file-move-to-trash.js.map +1 -0
  150. package/dist/esm/mcp/tools/file-move.d.ts +73 -0
  151. package/dist/esm/mcp/tools/file-move.js +274 -0
  152. package/dist/esm/mcp/tools/file-move.js.map +1 -0
  153. package/dist/esm/mcp/tools/files-search.d.ts +135 -0
  154. package/dist/esm/mcp/tools/files-search.js +254 -0
  155. package/dist/esm/mcp/tools/files-search.js.map +1 -0
  156. package/dist/esm/mcp/tools/folder-contents.d.ts +139 -0
  157. package/dist/esm/mcp/tools/folder-contents.js +214 -0
  158. package/dist/esm/mcp/tools/folder-contents.js.map +1 -0
  159. package/dist/esm/mcp/tools/folder-create.d.ts +59 -0
  160. package/dist/esm/mcp/tools/folder-create.js +140 -0
  161. package/dist/esm/mcp/tools/folder-create.js.map +1 -0
  162. package/dist/esm/mcp/tools/folder-path.d.ts +49 -0
  163. package/dist/esm/mcp/tools/folder-path.js +147 -0
  164. package/dist/esm/mcp/tools/folder-path.js.map +1 -0
  165. package/dist/esm/mcp/tools/folder-search.d.ts +139 -0
  166. package/dist/esm/mcp/tools/folder-search.js +343 -0
  167. package/dist/esm/mcp/tools/folder-search.js.map +1 -0
  168. package/dist/esm/mcp/tools/index.d.ts +7 -0
  169. package/dist/esm/mcp/tools/index.js +7 -0
  170. package/dist/esm/mcp/tools/index.js.map +1 -0
  171. package/dist/esm/package.json +1 -0
  172. package/dist/esm/schemas/drive-query-schema.d.ts +40 -0
  173. package/dist/esm/schemas/drive-query-schema.js +84 -0
  174. package/dist/esm/schemas/drive-query-schema.js.map +1 -0
  175. package/dist/esm/schemas/drive-validation.d.ts +48 -0
  176. package/dist/esm/schemas/drive-validation.js +73 -0
  177. package/dist/esm/schemas/drive-validation.js.map +1 -0
  178. package/dist/esm/schemas/index.d.ts +2 -0
  179. package/dist/esm/schemas/index.js +2 -0
  180. package/dist/esm/schemas/index.js.map +1 -0
  181. package/dist/esm/setup/config.d.ts +44 -0
  182. package/dist/esm/setup/config.js +151 -0
  183. package/dist/esm/setup/config.js.map +1 -0
  184. package/dist/esm/setup/http.d.ts +8 -0
  185. package/dist/esm/setup/http.js +54 -0
  186. package/dist/esm/setup/http.js.map +1 -0
  187. package/dist/esm/setup/index.d.ts +5 -0
  188. package/dist/esm/setup/index.js +5 -0
  189. package/dist/esm/setup/index.js.map +1 -0
  190. package/dist/esm/setup/oauth-google.d.ts +64 -0
  191. package/dist/esm/setup/oauth-google.js +168 -0
  192. package/dist/esm/setup/oauth-google.js.map +1 -0
  193. package/dist/esm/setup/runtime.d.ts +10 -0
  194. package/dist/esm/setup/runtime.js +84 -0
  195. package/dist/esm/setup/runtime.js.map +1 -0
  196. package/dist/esm/setup/stdio.d.ts +7 -0
  197. package/dist/esm/setup/stdio.js +38 -0
  198. package/dist/esm/setup/stdio.js.map +1 -0
  199. package/dist/esm/types.d.ts +45 -0
  200. package/dist/esm/types.js +1 -0
  201. package/dist/esm/types.js.map +1 -0
  202. package/package.json +108 -0
@@ -0,0 +1,64 @@
1
+ import { type AuthEmailProvider } from '@mcp-z/oauth';
2
+ import type { CachedToken } from '@mcp-z/oauth-google';
3
+ import { DcrOAuthProvider, LoopbackOAuthProvider, ServiceAccountProvider } from '@mcp-z/oauth-google';
4
+ import type { Logger, PromptModule, ToolModule } from '@mcp-z/server';
5
+ import type { Router } from 'express';
6
+ import type { Keyv } from 'keyv';
7
+ import type { ServerConfig } from '../types.js';
8
+ /**
9
+ * Drive OAuth runtime dependencies
10
+ */
11
+ export interface OAuthRuntimeDeps {
12
+ logger: Logger;
13
+ tokenStore: Keyv<CachedToken>;
14
+ dcrStore?: Keyv<unknown>;
15
+ }
16
+ /**
17
+ * Auth middleware wrapper with withToolAuth/withResourceAuth/withPromptAuth methods
18
+ * Uses structural constraints to avoid contravariance issues with handler types.
19
+ */
20
+ export interface AuthMiddleware {
21
+ withToolAuth<T extends {
22
+ name: string;
23
+ config: unknown;
24
+ handler: unknown;
25
+ }>(module: T): T;
26
+ withResourceAuth<T extends {
27
+ name: string;
28
+ template?: unknown;
29
+ config?: unknown;
30
+ handler: unknown;
31
+ }>(module: T): T;
32
+ withPromptAuth<T extends {
33
+ name: string;
34
+ config: unknown;
35
+ handler: unknown;
36
+ }>(module: T): T;
37
+ }
38
+ /**
39
+ * Result of OAuth adapter creation
40
+ */
41
+ export interface OAuthAdapters {
42
+ primary: LoopbackOAuthProvider | ServiceAccountProvider | DcrOAuthProvider;
43
+ middleware: AuthMiddleware;
44
+ authAdapter: AuthEmailProvider;
45
+ accountTools: ToolModule[];
46
+ accountPrompts: PromptModule[];
47
+ dcrRouter?: Router;
48
+ }
49
+ /**
50
+ * Create Drive OAuth adapters based on transport configuration
51
+ *
52
+ * Returns primary adapter (loopback or service account), pre-configured middleware,
53
+ * auth email provider, and pre-selected account tools based on auth mode.
54
+ *
55
+ * Primary adapter selection is based on auth mode:
56
+ * - 'loopback-oauth': LoopbackOAuthProvider (interactive OAuth with token storage)
57
+ * - 'service-account': ServiceAccountProvider (JWT-based authentication)
58
+ *
59
+ * @param config - Server configuration (transport + auth settings)
60
+ * @param deps - Runtime dependencies (logger, tokenStore, etc.)
61
+ * @returns OAuth adapters with pre-configured middleware and account tools
62
+ * @throws Error if service account mode but no key file provided
63
+ */
64
+ export declare function createOAuthAdapters(config: ServerConfig, deps: OAuthRuntimeDeps, baseUrl?: string): Promise<OAuthAdapters>;
@@ -0,0 +1,64 @@
1
+ import { type AuthEmailProvider } from '@mcp-z/oauth';
2
+ import type { CachedToken } from '@mcp-z/oauth-google';
3
+ import { DcrOAuthProvider, LoopbackOAuthProvider, ServiceAccountProvider } from '@mcp-z/oauth-google';
4
+ import type { Logger, PromptModule, ToolModule } from '@mcp-z/server';
5
+ import type { Router } from 'express';
6
+ import type { Keyv } from 'keyv';
7
+ import type { ServerConfig } from '../types.js';
8
+ /**
9
+ * Drive OAuth runtime dependencies
10
+ */
11
+ export interface OAuthRuntimeDeps {
12
+ logger: Logger;
13
+ tokenStore: Keyv<CachedToken>;
14
+ dcrStore?: Keyv<unknown>;
15
+ }
16
+ /**
17
+ * Auth middleware wrapper with withToolAuth/withResourceAuth/withPromptAuth methods
18
+ * Uses structural constraints to avoid contravariance issues with handler types.
19
+ */
20
+ export interface AuthMiddleware {
21
+ withToolAuth<T extends {
22
+ name: string;
23
+ config: unknown;
24
+ handler: unknown;
25
+ }>(module: T): T;
26
+ withResourceAuth<T extends {
27
+ name: string;
28
+ template?: unknown;
29
+ config?: unknown;
30
+ handler: unknown;
31
+ }>(module: T): T;
32
+ withPromptAuth<T extends {
33
+ name: string;
34
+ config: unknown;
35
+ handler: unknown;
36
+ }>(module: T): T;
37
+ }
38
+ /**
39
+ * Result of OAuth adapter creation
40
+ */
41
+ export interface OAuthAdapters {
42
+ primary: LoopbackOAuthProvider | ServiceAccountProvider | DcrOAuthProvider;
43
+ middleware: AuthMiddleware;
44
+ authAdapter: AuthEmailProvider;
45
+ accountTools: ToolModule[];
46
+ accountPrompts: PromptModule[];
47
+ dcrRouter?: Router;
48
+ }
49
+ /**
50
+ * Create Drive OAuth adapters based on transport configuration
51
+ *
52
+ * Returns primary adapter (loopback or service account), pre-configured middleware,
53
+ * auth email provider, and pre-selected account tools based on auth mode.
54
+ *
55
+ * Primary adapter selection is based on auth mode:
56
+ * - 'loopback-oauth': LoopbackOAuthProvider (interactive OAuth with token storage)
57
+ * - 'service-account': ServiceAccountProvider (JWT-based authentication)
58
+ *
59
+ * @param config - Server configuration (transport + auth settings)
60
+ * @param deps - Runtime dependencies (logger, tokenStore, etc.)
61
+ * @returns OAuth adapters with pre-configured middleware and account tools
62
+ * @throws Error if service account mode but no key file provided
63
+ */
64
+ export declare function createOAuthAdapters(config: ServerConfig, deps: OAuthRuntimeDeps, baseUrl?: string): Promise<OAuthAdapters>;
@@ -0,0 +1,347 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "createOAuthAdapters", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createOAuthAdapters;
9
+ }
10
+ });
11
+ var _oauth = require("@mcp-z/oauth");
12
+ var _oauthgoogle = require("@mcp-z/oauth-google");
13
+ var _constantsts = require("../constants.js");
14
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
15
+ try {
16
+ var info = gen[key](arg);
17
+ var value = info.value;
18
+ } catch (error) {
19
+ reject(error);
20
+ return;
21
+ }
22
+ if (info.done) {
23
+ resolve(value);
24
+ } else {
25
+ Promise.resolve(value).then(_next, _throw);
26
+ }
27
+ }
28
+ function _async_to_generator(fn) {
29
+ return function() {
30
+ var self = this, args = arguments;
31
+ return new Promise(function(resolve, reject) {
32
+ var gen = fn.apply(self, args);
33
+ function _next(value) {
34
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
35
+ }
36
+ function _throw(err) {
37
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
38
+ }
39
+ _next(undefined);
40
+ });
41
+ };
42
+ }
43
+ function _define_property(obj, key, value) {
44
+ if (key in obj) {
45
+ Object.defineProperty(obj, key, {
46
+ value: value,
47
+ enumerable: true,
48
+ configurable: true,
49
+ writable: true
50
+ });
51
+ } else {
52
+ obj[key] = value;
53
+ }
54
+ return obj;
55
+ }
56
+ function _object_spread(target) {
57
+ for(var i = 1; i < arguments.length; i++){
58
+ var source = arguments[i] != null ? arguments[i] : {};
59
+ var ownKeys = Object.keys(source);
60
+ if (typeof Object.getOwnPropertySymbols === "function") {
61
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
62
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
63
+ }));
64
+ }
65
+ ownKeys.forEach(function(key) {
66
+ _define_property(target, key, source[key]);
67
+ });
68
+ }
69
+ return target;
70
+ }
71
+ function ownKeys(object, enumerableOnly) {
72
+ var keys = Object.keys(object);
73
+ if (Object.getOwnPropertySymbols) {
74
+ var symbols = Object.getOwnPropertySymbols(object);
75
+ if (enumerableOnly) {
76
+ symbols = symbols.filter(function(sym) {
77
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
78
+ });
79
+ }
80
+ keys.push.apply(keys, symbols);
81
+ }
82
+ return keys;
83
+ }
84
+ function _object_spread_props(target, source) {
85
+ source = source != null ? source : {};
86
+ if (Object.getOwnPropertyDescriptors) {
87
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
88
+ } else {
89
+ ownKeys(Object(source)).forEach(function(key) {
90
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
91
+ });
92
+ }
93
+ return target;
94
+ }
95
+ function _ts_generator(thisArg, body) {
96
+ var f, y, t, _ = {
97
+ label: 0,
98
+ sent: function() {
99
+ if (t[0] & 1) throw t[1];
100
+ return t[1];
101
+ },
102
+ trys: [],
103
+ ops: []
104
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
105
+ return d(g, "next", {
106
+ value: verb(0)
107
+ }), d(g, "throw", {
108
+ value: verb(1)
109
+ }), d(g, "return", {
110
+ value: verb(2)
111
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
112
+ value: function() {
113
+ return this;
114
+ }
115
+ }), g;
116
+ function verb(n) {
117
+ return function(v) {
118
+ return step([
119
+ n,
120
+ v
121
+ ]);
122
+ };
123
+ }
124
+ function step(op) {
125
+ if (f) throw new TypeError("Generator is already executing.");
126
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
127
+ 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;
128
+ if (y = 0, t) op = [
129
+ op[0] & 2,
130
+ t.value
131
+ ];
132
+ switch(op[0]){
133
+ case 0:
134
+ case 1:
135
+ t = op;
136
+ break;
137
+ case 4:
138
+ _.label++;
139
+ return {
140
+ value: op[1],
141
+ done: false
142
+ };
143
+ case 5:
144
+ _.label++;
145
+ y = op[1];
146
+ op = [
147
+ 0
148
+ ];
149
+ continue;
150
+ case 7:
151
+ op = _.ops.pop();
152
+ _.trys.pop();
153
+ continue;
154
+ default:
155
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
156
+ _ = 0;
157
+ continue;
158
+ }
159
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
160
+ _.label = op[1];
161
+ break;
162
+ }
163
+ if (op[0] === 6 && _.label < t[1]) {
164
+ _.label = t[1];
165
+ t = op;
166
+ break;
167
+ }
168
+ if (t && _.label < t[2]) {
169
+ _.label = t[2];
170
+ _.ops.push(op);
171
+ break;
172
+ }
173
+ if (t[2]) _.ops.pop();
174
+ _.trys.pop();
175
+ continue;
176
+ }
177
+ op = body.call(thisArg, _);
178
+ } catch (e) {
179
+ op = [
180
+ 6,
181
+ e
182
+ ];
183
+ y = 0;
184
+ } finally{
185
+ f = t = 0;
186
+ }
187
+ if (op[0] & 5) throw op[1];
188
+ return {
189
+ value: op[0] ? op[1] : void 0,
190
+ done: true
191
+ };
192
+ }
193
+ }
194
+ function createOAuthAdapters(config, deps, baseUrl) {
195
+ return _async_to_generator(function() {
196
+ var logger, tokenStore, dcrStore, resolvedBaseUrl, oauthStaticConfig, primary, dcrRouter, middleware, authAdapter, accountTools, accountPrompts, authAdapter1, middleware1, accountTools1, accountPrompts1, result;
197
+ return _ts_generator(this, function(_state) {
198
+ logger = deps.logger, tokenStore = deps.tokenStore, dcrStore = deps.dcrStore;
199
+ resolvedBaseUrl = baseUrl !== null && baseUrl !== void 0 ? baseUrl : config.baseUrl;
200
+ oauthStaticConfig = _object_spread({
201
+ service: config.name,
202
+ clientId: config.clientId,
203
+ clientSecret: config.clientSecret,
204
+ scope: _constantsts.GOOGLE_SCOPE,
205
+ auth: config.auth,
206
+ headless: config.headless,
207
+ redirectUri: config.transport.type === 'stdio' ? undefined : config.redirectUri
208
+ }, config.serviceAccountKeyFile && {
209
+ serviceAccountKeyFile: config.serviceAccountKeyFile
210
+ }, resolvedBaseUrl && {
211
+ baseUrl: resolvedBaseUrl
212
+ });
213
+ // DCR mode - Dynamic Client Registration with HTTP-only support
214
+ if (oauthStaticConfig.auth === 'dcr') {
215
+ logger.debug('Creating DCR provider', {
216
+ service: oauthStaticConfig.service
217
+ });
218
+ // DCR requires dcrStore and baseUrl
219
+ if (!dcrStore) {
220
+ throw new Error('DCR mode requires dcrStore to be configured');
221
+ }
222
+ if (!oauthStaticConfig.baseUrl) {
223
+ throw new Error('DCR mode requires baseUrl to be configured');
224
+ }
225
+ // Create DcrOAuthProvider (stateless provider that receives tokens from verification context)
226
+ primary = new _oauthgoogle.DcrOAuthProvider(_object_spread_props(_object_spread({
227
+ clientId: oauthStaticConfig.clientId
228
+ }, oauthStaticConfig.clientSecret && {
229
+ clientSecret: oauthStaticConfig.clientSecret
230
+ }), {
231
+ scope: oauthStaticConfig.scope,
232
+ verifyEndpoint: "".concat(oauthStaticConfig.baseUrl, "/oauth/verify"),
233
+ logger: logger
234
+ }));
235
+ // Create DCR OAuth router with authorization server endpoints
236
+ dcrRouter = (0, _oauthgoogle.createDcrRouter)({
237
+ store: dcrStore,
238
+ issuerUrl: oauthStaticConfig.baseUrl,
239
+ baseUrl: oauthStaticConfig.baseUrl,
240
+ scopesSupported: oauthStaticConfig.scope.split(' '),
241
+ clientConfig: _object_spread({
242
+ clientId: oauthStaticConfig.clientId
243
+ }, oauthStaticConfig.clientSecret && {
244
+ clientSecret: oauthStaticConfig.clientSecret
245
+ })
246
+ });
247
+ // DCR uses bearer token authentication with middleware validation
248
+ middleware = primary.authMiddleware();
249
+ // Create auth email provider (stateless)
250
+ authAdapter = {
251
+ getUserEmail: function() {
252
+ throw new Error('DCR mode does not support getUserEmail - tokens are provided via bearer auth');
253
+ }
254
+ };
255
+ // No account management tools for DCR
256
+ accountTools = [];
257
+ accountPrompts = [];
258
+ return [
259
+ 2,
260
+ {
261
+ primary: primary,
262
+ middleware: middleware,
263
+ authAdapter: authAdapter,
264
+ accountTools: accountTools,
265
+ accountPrompts: accountPrompts,
266
+ dcrRouter: dcrRouter
267
+ }
268
+ ];
269
+ }
270
+ if (config.auth === 'service-account') {
271
+ // Service account mode - JWT-based authentication
272
+ if (!oauthStaticConfig.serviceAccountKeyFile) {
273
+ throw new Error('Service account key file is required when auth mode is "service-account". ' + 'Set GOOGLE_SERVICE_ACCOUNT_KEY_FILE environment variable or use --service-account-key-file flag.');
274
+ }
275
+ logger.debug('Creating service account provider', {
276
+ service: oauthStaticConfig.service
277
+ });
278
+ primary = new _oauthgoogle.ServiceAccountProvider({
279
+ keyFilePath: oauthStaticConfig.serviceAccountKeyFile,
280
+ scopes: oauthStaticConfig.scope.split(' '),
281
+ logger: logger
282
+ });
283
+ } else {
284
+ // Loopback mode - interactive OAuth with token storage
285
+ logger.debug('Creating loopback OAuth provider', {
286
+ service: oauthStaticConfig.service
287
+ });
288
+ primary = new _oauthgoogle.LoopbackOAuthProvider(_object_spread({
289
+ service: oauthStaticConfig.service,
290
+ clientId: oauthStaticConfig.clientId,
291
+ clientSecret: oauthStaticConfig.clientSecret,
292
+ scope: oauthStaticConfig.scope,
293
+ headless: oauthStaticConfig.headless,
294
+ logger: logger,
295
+ tokenStore: tokenStore
296
+ }, oauthStaticConfig.redirectUri !== undefined && {
297
+ redirectUri: oauthStaticConfig.redirectUri
298
+ }));
299
+ }
300
+ // Create auth email provider (used by account management tools)
301
+ authAdapter1 = _object_spread({
302
+ getUserEmail: function(accountId) {
303
+ return primary.getUserEmail(accountId);
304
+ }
305
+ }, 'authenticateNewAccount' in primary && primary.authenticateNewAccount ? {
306
+ authenticateNewAccount: function() {
307
+ var _primary_authenticateNewAccount;
308
+ return (_primary_authenticateNewAccount = primary.authenticateNewAccount) === null || _primary_authenticateNewAccount === void 0 ? void 0 : _primary_authenticateNewAccount.call(primary);
309
+ }
310
+ } : {});
311
+ if (oauthStaticConfig.auth === 'service-account') {
312
+ // Service account mode - no account management tools needed (single identity)
313
+ middleware1 = primary.authMiddleware();
314
+ accountTools1 = [];
315
+ accountPrompts1 = [];
316
+ logger.debug('Service account mode - no account tools', {
317
+ service: oauthStaticConfig.service
318
+ });
319
+ } else {
320
+ // Loopback OAuth - multi-account mode
321
+ middleware1 = primary.authMiddleware();
322
+ result = _oauth.AccountServer.createLoopback({
323
+ service: oauthStaticConfig.service,
324
+ store: tokenStore,
325
+ logger: logger,
326
+ auth: authAdapter1
327
+ });
328
+ accountTools1 = result.tools;
329
+ accountPrompts1 = result.prompts;
330
+ logger.debug('Loopback OAuth (multi-account mode)', {
331
+ service: oauthStaticConfig.service
332
+ });
333
+ }
334
+ return [
335
+ 2,
336
+ {
337
+ primary: primary,
338
+ middleware: middleware1,
339
+ authAdapter: authAdapter1,
340
+ accountTools: accountTools1,
341
+ accountPrompts: accountPrompts1
342
+ }
343
+ ];
344
+ });
345
+ })();
346
+ }
347
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-drive/src/setup/oauth-google.ts"],"sourcesContent":["import { AccountServer, type AuthEmailProvider } from '@mcp-z/oauth';\nimport type { CachedToken } from '@mcp-z/oauth-google';\nimport { createDcrRouter, DcrOAuthProvider, LoopbackOAuthProvider, ServiceAccountProvider } from '@mcp-z/oauth-google';\nimport type { Logger, PromptModule, ToolModule } from '@mcp-z/server';\nimport type { Router } from 'express';\nimport type { Keyv } from 'keyv';\nimport { GOOGLE_SCOPE } from '../constants.ts';\nimport type { ServerConfig } from '../types.js';\n\n/**\n * Drive OAuth runtime dependencies\n */\nexport interface OAuthRuntimeDeps {\n logger: Logger;\n tokenStore: Keyv<CachedToken>;\n dcrStore?: Keyv<unknown>;\n}\n\n/**\n * Auth middleware wrapper with withToolAuth/withResourceAuth/withPromptAuth methods\n * Uses structural constraints to avoid contravariance issues with handler types.\n */\nexport interface AuthMiddleware {\n withToolAuth<T extends { name: string; config: unknown; handler: unknown }>(module: T): T;\n withResourceAuth<T extends { name: string; template?: unknown; config?: unknown; handler: unknown }>(module: T): T;\n withPromptAuth<T extends { name: string; config: unknown; handler: unknown }>(module: T): T;\n}\n\n/**\n * Result of OAuth adapter creation\n */\nexport interface OAuthAdapters {\n primary: LoopbackOAuthProvider | ServiceAccountProvider | DcrOAuthProvider;\n middleware: AuthMiddleware;\n authAdapter: AuthEmailProvider;\n accountTools: ToolModule[];\n accountPrompts: PromptModule[];\n dcrRouter?: Router;\n}\n\n/**\n * Create Drive OAuth adapters based on transport configuration\n *\n * Returns primary adapter (loopback or service account), pre-configured middleware,\n * auth email provider, and pre-selected account tools based on auth mode.\n *\n * Primary adapter selection is based on auth mode:\n * - 'loopback-oauth': LoopbackOAuthProvider (interactive OAuth with token storage)\n * - 'service-account': ServiceAccountProvider (JWT-based authentication)\n *\n * @param config - Server configuration (transport + auth settings)\n * @param deps - Runtime dependencies (logger, tokenStore, etc.)\n * @returns OAuth adapters with pre-configured middleware and account tools\n * @throws Error if service account mode but no key file provided\n */\nexport async function createOAuthAdapters(config: ServerConfig, deps: OAuthRuntimeDeps, baseUrl?: string): Promise<OAuthAdapters> {\n const { logger, tokenStore, dcrStore } = deps;\n const resolvedBaseUrl = baseUrl ?? config.baseUrl;\n const oauthStaticConfig = {\n service: config.name,\n clientId: config.clientId,\n clientSecret: config.clientSecret,\n scope: GOOGLE_SCOPE,\n auth: config.auth,\n headless: config.headless,\n redirectUri: config.transport.type === 'stdio' ? undefined : config.redirectUri,\n ...(config.serviceAccountKeyFile && { serviceAccountKeyFile: config.serviceAccountKeyFile }),\n ...(resolvedBaseUrl && { baseUrl: resolvedBaseUrl }),\n };\n\n // Create primary adapter based on auth mode\n let primary: LoopbackOAuthProvider | ServiceAccountProvider | DcrOAuthProvider;\n\n // DCR mode - Dynamic Client Registration with HTTP-only support\n if (oauthStaticConfig.auth === 'dcr') {\n logger.debug('Creating DCR provider', { service: oauthStaticConfig.service });\n\n // DCR requires dcrStore and baseUrl\n if (!dcrStore) {\n throw new Error('DCR mode requires dcrStore to be configured');\n }\n if (!oauthStaticConfig.baseUrl) {\n throw new Error('DCR mode requires baseUrl to be configured');\n }\n\n // Create DcrOAuthProvider (stateless provider that receives tokens from verification context)\n primary = new DcrOAuthProvider({\n clientId: oauthStaticConfig.clientId,\n ...(oauthStaticConfig.clientSecret && { clientSecret: oauthStaticConfig.clientSecret }),\n scope: oauthStaticConfig.scope,\n verifyEndpoint: `${oauthStaticConfig.baseUrl}/oauth/verify`,\n logger,\n });\n\n // Create DCR OAuth router with authorization server endpoints\n const dcrRouter = createDcrRouter({\n store: dcrStore,\n issuerUrl: oauthStaticConfig.baseUrl,\n baseUrl: oauthStaticConfig.baseUrl,\n scopesSupported: oauthStaticConfig.scope.split(' '),\n clientConfig: {\n clientId: oauthStaticConfig.clientId,\n ...(oauthStaticConfig.clientSecret && { clientSecret: oauthStaticConfig.clientSecret }),\n },\n });\n\n // DCR uses bearer token authentication with middleware validation\n const middleware = primary.authMiddleware();\n\n // Create auth email provider (stateless)\n const authAdapter: AuthEmailProvider = {\n getUserEmail: () => {\n throw new Error('DCR mode does not support getUserEmail - tokens are provided via bearer auth');\n },\n };\n\n // No account management tools for DCR\n const accountTools: ToolModule[] = [];\n const accountPrompts: PromptModule[] = [];\n\n return { primary, middleware: middleware as unknown as AuthMiddleware, authAdapter, accountTools, accountPrompts, dcrRouter };\n }\n\n if (config.auth === 'service-account') {\n // Service account mode - JWT-based authentication\n if (!oauthStaticConfig.serviceAccountKeyFile) {\n throw new Error('Service account key file is required when auth mode is \"service-account\". ' + 'Set GOOGLE_SERVICE_ACCOUNT_KEY_FILE environment variable or use --service-account-key-file flag.');\n }\n\n logger.debug('Creating service account provider', { service: oauthStaticConfig.service });\n primary = new ServiceAccountProvider({\n keyFilePath: oauthStaticConfig.serviceAccountKeyFile,\n scopes: oauthStaticConfig.scope.split(' '),\n logger,\n });\n } else {\n // Loopback mode - interactive OAuth with token storage\n logger.debug('Creating loopback OAuth provider', { service: oauthStaticConfig.service });\n primary = new LoopbackOAuthProvider({\n service: oauthStaticConfig.service,\n clientId: oauthStaticConfig.clientId,\n clientSecret: oauthStaticConfig.clientSecret,\n scope: oauthStaticConfig.scope,\n headless: oauthStaticConfig.headless,\n logger,\n tokenStore,\n ...(oauthStaticConfig.redirectUri !== undefined && {\n redirectUri: oauthStaticConfig.redirectUri,\n }),\n });\n }\n\n // Create auth email provider (used by account management tools)\n const authAdapter: AuthEmailProvider = {\n getUserEmail: (accountId) => primary.getUserEmail(accountId),\n ...('authenticateNewAccount' in primary && primary.authenticateNewAccount\n ? {\n authenticateNewAccount: () => primary.authenticateNewAccount?.(),\n }\n : {}),\n };\n\n // Select middleware AND account tools based on auth mode\n let middleware: ReturnType<LoopbackOAuthProvider['authMiddleware']>;\n let accountTools: ToolModule[];\n let accountPrompts: PromptModule[];\n\n if (oauthStaticConfig.auth === 'service-account') {\n // Service account mode - no account management tools needed (single identity)\n middleware = primary.authMiddleware();\n accountTools = [];\n accountPrompts = [];\n logger.debug('Service account mode - no account tools', { service: oauthStaticConfig.service });\n } else {\n // Loopback OAuth - multi-account mode\n middleware = primary.authMiddleware();\n\n const result = AccountServer.createLoopback({\n service: oauthStaticConfig.service,\n store: tokenStore,\n logger,\n auth: authAdapter,\n });\n accountTools = result.tools as ToolModule[];\n accountPrompts = result.prompts as PromptModule[];\n logger.debug('Loopback OAuth (multi-account mode)', { service: oauthStaticConfig.service });\n }\n\n return { primary, middleware: middleware as unknown as AuthMiddleware, authAdapter, accountTools, accountPrompts };\n}\n"],"names":["createOAuthAdapters","config","deps","baseUrl","logger","tokenStore","dcrStore","resolvedBaseUrl","oauthStaticConfig","primary","dcrRouter","middleware","authAdapter","accountTools","accountPrompts","result","service","name","clientId","clientSecret","scope","GOOGLE_SCOPE","auth","headless","redirectUri","transport","type","undefined","serviceAccountKeyFile","debug","Error","DcrOAuthProvider","verifyEndpoint","createDcrRouter","store","issuerUrl","scopesSupported","split","clientConfig","authMiddleware","getUserEmail","ServiceAccountProvider","keyFilePath","scopes","LoopbackOAuthProvider","accountId","authenticateNewAccount","AccountServer","createLoopback","tools","prompts"],"mappings":";;;;+BAuDsBA;;;eAAAA;;;qBAvDgC;2BAE2C;2BAIpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDtB,SAAeA,oBAAoBC,MAAoB,EAAEC,IAAsB,EAAEC,OAAgB;;YAC9FC,QAAQC,YAAYC,UACtBC,iBACAC,mBAaFC,SAwBIC,WAYAC,YAGAC,aAOAC,cACAC,gBAmCFF,cAUFD,aACAE,eACAC,iBAYIC;;YAzHAX,SAAiCF,KAAjCE,QAAQC,aAAyBH,KAAzBG,YAAYC,WAAaJ,KAAbI;YACtBC,kBAAkBJ,oBAAAA,qBAAAA,UAAWF,OAAOE,OAAO;YAC3CK,oBAAoB;gBACxBQ,SAASf,OAAOgB,IAAI;gBACpBC,UAAUjB,OAAOiB,QAAQ;gBACzBC,cAAclB,OAAOkB,YAAY;gBACjCC,OAAOC,yBAAY;gBACnBC,MAAMrB,OAAOqB,IAAI;gBACjBC,UAAUtB,OAAOsB,QAAQ;gBACzBC,aAAavB,OAAOwB,SAAS,CAACC,IAAI,KAAK,UAAUC,YAAY1B,OAAOuB,WAAW;eAC3EvB,OAAO2B,qBAAqB,IAAI;gBAAEA,uBAAuB3B,OAAO2B,qBAAqB;YAAC,GACtFrB,mBAAmB;gBAAEJ,SAASI;YAAgB;YAMpD,gEAAgE;YAChE,IAAIC,kBAAkBc,IAAI,KAAK,OAAO;gBACpClB,OAAOyB,KAAK,CAAC,yBAAyB;oBAAEb,SAASR,kBAAkBQ,OAAO;gBAAC;gBAE3E,oCAAoC;gBACpC,IAAI,CAACV,UAAU;oBACb,MAAM,IAAIwB,MAAM;gBAClB;gBACA,IAAI,CAACtB,kBAAkBL,OAAO,EAAE;oBAC9B,MAAM,IAAI2B,MAAM;gBAClB;gBAEA,8FAA8F;gBAC9FrB,UAAU,IAAIsB,6BAAgB,CAAC;oBAC7Bb,UAAUV,kBAAkBU,QAAQ;mBAChCV,kBAAkBW,YAAY,IAAI;oBAAEA,cAAcX,kBAAkBW,YAAY;gBAAC;oBACrFC,OAAOZ,kBAAkBY,KAAK;oBAC9BY,gBAAgB,AAAC,GAA4B,OAA1BxB,kBAAkBL,OAAO,EAAC;oBAC7CC,QAAAA;;gBAGF,8DAA8D;gBACxDM,YAAYuB,IAAAA,4BAAe,EAAC;oBAChCC,OAAO5B;oBACP6B,WAAW3B,kBAAkBL,OAAO;oBACpCA,SAASK,kBAAkBL,OAAO;oBAClCiC,iBAAiB5B,kBAAkBY,KAAK,CAACiB,KAAK,CAAC;oBAC/CC,cAAc;wBACZpB,UAAUV,kBAAkBU,QAAQ;uBAChCV,kBAAkBW,YAAY,IAAI;wBAAEA,cAAcX,kBAAkBW,YAAY;oBAAC;gBAEzF;gBAEA,kEAAkE;gBAC5DR,aAAaF,QAAQ8B,cAAc;gBAEzC,yCAAyC;gBACnC3B,cAAiC;oBACrC4B,cAAc;wBACZ,MAAM,IAAIV,MAAM;oBAClB;gBACF;gBAEA,sCAAsC;gBAChCjB;gBACAC;gBAEN;;oBAAO;wBAAEL,SAAAA;wBAASE,YAAYA;wBAAyCC,aAAAA;wBAAaC,cAAAA;wBAAcC,gBAAAA;wBAAgBJ,WAAAA;oBAAU;;YAC9H;YAEA,IAAIT,OAAOqB,IAAI,KAAK,mBAAmB;gBACrC,kDAAkD;gBAClD,IAAI,CAACd,kBAAkBoB,qBAAqB,EAAE;oBAC5C,MAAM,IAAIE,MAAM,+EAA+E;gBACjG;gBAEA1B,OAAOyB,KAAK,CAAC,qCAAqC;oBAAEb,SAASR,kBAAkBQ,OAAO;gBAAC;gBACvFP,UAAU,IAAIgC,mCAAsB,CAAC;oBACnCC,aAAalC,kBAAkBoB,qBAAqB;oBACpDe,QAAQnC,kBAAkBY,KAAK,CAACiB,KAAK,CAAC;oBACtCjC,QAAAA;gBACF;YACF,OAAO;gBACL,uDAAuD;gBACvDA,OAAOyB,KAAK,CAAC,oCAAoC;oBAAEb,SAASR,kBAAkBQ,OAAO;gBAAC;gBACtFP,UAAU,IAAImC,kCAAqB,CAAC;oBAClC5B,SAASR,kBAAkBQ,OAAO;oBAClCE,UAAUV,kBAAkBU,QAAQ;oBACpCC,cAAcX,kBAAkBW,YAAY;oBAC5CC,OAAOZ,kBAAkBY,KAAK;oBAC9BG,UAAUf,kBAAkBe,QAAQ;oBACpCnB,QAAAA;oBACAC,YAAAA;mBACIG,kBAAkBgB,WAAW,KAAKG,aAAa;oBACjDH,aAAahB,kBAAkBgB,WAAW;gBAC5C;YAEJ;YAEA,gEAAgE;YAC1DZ,eAAiC;gBACrC4B,cAAc,SAACK;2BAAcpC,QAAQ+B,YAAY,CAACK;;eAC9C,4BAA4BpC,WAAWA,QAAQqC,sBAAsB,GACrE;gBACEA,wBAAwB;wBAAMrC;4BAAAA,kCAAAA,QAAQqC,sBAAsB,cAA9BrC,sDAAAA,qCAAAA;;YAChC,IACA,CAAC;YAQP,IAAID,kBAAkBc,IAAI,KAAK,mBAAmB;gBAChD,8EAA8E;gBAC9EX,cAAaF,QAAQ8B,cAAc;gBACnC1B;gBACAC;gBACAV,OAAOyB,KAAK,CAAC,2CAA2C;oBAAEb,SAASR,kBAAkBQ,OAAO;gBAAC;YAC/F,OAAO;gBACL,sCAAsC;gBACtCL,cAAaF,QAAQ8B,cAAc;gBAE7BxB,SAASgC,oBAAa,CAACC,cAAc,CAAC;oBAC1ChC,SAASR,kBAAkBQ,OAAO;oBAClCkB,OAAO7B;oBACPD,QAAAA;oBACAkB,MAAMV;gBACR;gBACAC,gBAAeE,OAAOkC,KAAK;gBAC3BnC,kBAAiBC,OAAOmC,OAAO;gBAC/B9C,OAAOyB,KAAK,CAAC,uCAAuC;oBAAEb,SAASR,kBAAkBQ,OAAO;gBAAC;YAC3F;YAEA;;gBAAO;oBAAEP,SAAAA;oBAASE,YAAYA;oBAAyCC,aAAAA;oBAAaC,cAAAA;oBAAcC,gBAAAA;gBAAe;;;IACnH"}
@@ -0,0 +1,10 @@
1
+ import type { CachedToken } from '@mcp-z/oauth-google';
2
+ import type { Logger, MiddlewareLayer } from '@mcp-z/server';
3
+ import type { CommonRuntime, RuntimeOverrides, ServerConfig } from '../types.js';
4
+ import { type AuthMiddleware } from './oauth-google.js';
5
+ export declare function createLogger(config: ServerConfig): Logger;
6
+ export declare function createTokenStore(baseDir: string): Promise<import("keyv").Keyv<CachedToken>>;
7
+ export declare function createDcrStore(baseDir: string, required: boolean): Promise<import("keyv").Keyv<unknown>>;
8
+ export declare function createAuthLayer(authMiddleware: AuthMiddleware): MiddlewareLayer;
9
+ export declare function createLoggingLayer(logger: Logger): MiddlewareLayer;
10
+ export declare function createDefaultRuntime(config: ServerConfig, overrides?: RuntimeOverrides): Promise<CommonRuntime>;
@@ -0,0 +1,10 @@
1
+ import type { CachedToken } from '@mcp-z/oauth-google';
2
+ import type { Logger, MiddlewareLayer } from '@mcp-z/server';
3
+ import type { CommonRuntime, RuntimeOverrides, ServerConfig } from '../types.js';
4
+ import { type AuthMiddleware } from './oauth-google.js';
5
+ export declare function createLogger(config: ServerConfig): Logger;
6
+ export declare function createTokenStore(baseDir: string): Promise<import("keyv").Keyv<CachedToken>>;
7
+ export declare function createDcrStore(baseDir: string, required: boolean): Promise<import("keyv").Keyv<unknown>>;
8
+ export declare function createAuthLayer(authMiddleware: AuthMiddleware): MiddlewareLayer;
9
+ export declare function createLoggingLayer(logger: Logger): MiddlewareLayer;
10
+ export declare function createDefaultRuntime(config: ServerConfig, overrides?: RuntimeOverrides): Promise<CommonRuntime>;