@1mcp/agent 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -50
- package/build/auth/clientSessionManager.d.ts +94 -0
- package/build/auth/clientSessionManager.d.ts.map +1 -0
- package/build/auth/clientSessionManager.js +220 -0
- package/build/auth/clientSessionManager.js.map +1 -0
- package/build/auth/sdkOAuthClientProvider.d.ts +93 -0
- package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -0
- package/build/auth/sdkOAuthClientProvider.js +199 -0
- package/build/auth/sdkOAuthClientProvider.js.map +1 -0
- package/build/auth/sdkOAuthServerProvider.d.ts +63 -0
- package/build/auth/sdkOAuthServerProvider.d.ts.map +1 -0
- package/build/auth/sdkOAuthServerProvider.js +428 -0
- package/build/auth/sdkOAuthServerProvider.js.map +1 -0
- package/build/{server/auth/sessionManager.d.ts → auth/serverSessionManager.d.ts} +26 -37
- package/build/auth/serverSessionManager.d.ts.map +1 -0
- package/build/{server/auth/sessionManager.js → auth/serverSessionManager.js} +104 -19
- package/build/auth/serverSessionManager.js.map +1 -0
- package/build/auth/sessionTypes.d.ts +24 -0
- package/build/auth/sessionTypes.d.ts.map +1 -0
- package/build/auth/sessionTypes.js +3 -0
- package/build/auth/sessionTypes.js.map +1 -0
- package/build/capabilities/capabilityManager.d.ts +2 -2
- package/build/capabilities/capabilityManager.d.ts.map +1 -1
- package/build/capabilities/capabilityManager.js +40 -7
- package/build/capabilities/capabilityManager.js.map +1 -1
- package/build/config/{configManager.d.ts → mcpConfigManager.d.ts} +18 -7
- package/build/config/mcpConfigManager.d.ts.map +1 -0
- package/build/config/{configManager.js → mcpConfigManager.js} +50 -10
- package/build/config/mcpConfigManager.js.map +1 -0
- package/build/constants.d.ts +36 -14
- package/build/constants.d.ts.map +1 -1
- package/build/constants.js +40 -17
- package/build/constants.js.map +1 -1
- package/build/{client.d.ts → core/client/clientFactory.d.ts} +1 -1
- package/build/core/client/clientFactory.d.ts.map +1 -0
- package/build/{client.js → core/client/clientFactory.js} +2 -2
- package/build/core/client/clientFactory.js.map +1 -0
- package/build/{clients → core/client}/clientManager.d.ts +14 -6
- package/build/core/client/clientManager.d.ts.map +1 -0
- package/build/core/client/clientManager.js +209 -0
- package/build/core/client/clientManager.js.map +1 -0
- package/build/{server/config/serverConfig.d.ts → core/server/agentConfig.d.ts} +50 -15
- package/build/core/server/agentConfig.d.ts.map +1 -0
- package/build/core/server/agentConfig.js +166 -0
- package/build/core/server/agentConfig.js.map +1 -0
- package/build/core/server/serverManager.d.ts +39 -0
- package/build/core/server/serverManager.d.ts.map +1 -0
- package/build/core/server/serverManager.js +169 -0
- package/build/core/server/serverManager.js.map +1 -0
- package/build/core/types/client.d.ts +51 -0
- package/build/core/types/client.d.ts.map +1 -0
- package/build/core/types/client.js +15 -0
- package/build/core/types/client.js.map +1 -0
- package/build/core/types/index.d.ts +4 -0
- package/build/core/types/index.d.ts.map +1 -0
- package/build/core/types/index.js +5 -0
- package/build/core/types/index.js.map +1 -0
- package/build/core/types/server.d.ts +14 -0
- package/build/core/types/server.d.ts.map +1 -0
- package/build/core/types/server.js +2 -0
- package/build/core/types/server.js.map +1 -0
- package/build/{types.d.ts → core/types/transport.d.ts} +59 -49
- package/build/core/types/transport.d.ts.map +1 -0
- package/build/{types.js → core/types/transport.js} +11 -13
- package/build/core/types/transport.js.map +1 -0
- package/build/handlers/notificationHandlers.d.ts +3 -3
- package/build/handlers/notificationHandlers.d.ts.map +1 -1
- package/build/handlers/notificationHandlers.js +13 -9
- package/build/handlers/notificationHandlers.js.map +1 -1
- package/build/handlers/requestHandlers.d.ts +2 -2
- package/build/handlers/requestHandlers.d.ts.map +1 -1
- package/build/handlers/requestHandlers.js +25 -3
- package/build/handlers/requestHandlers.js.map +1 -1
- package/build/index.js +48 -8
- package/build/index.js.map +1 -1
- package/build/logger/logger.js +1 -1
- package/build/logger/logger.js.map +1 -1
- package/build/{middleware/loggingMiddleware.d.ts → logger/mcpLoggingEnhancer.d.ts} +1 -1
- package/build/logger/mcpLoggingEnhancer.d.ts.map +1 -0
- package/build/{middleware/loggingMiddleware.js → logger/mcpLoggingEnhancer.js} +2 -2
- package/build/logger/mcpLoggingEnhancer.js.map +1 -0
- package/build/server.d.ts +1 -1
- package/build/server.d.ts.map +1 -1
- package/build/server.js +9 -6
- package/build/server.js.map +1 -1
- package/build/services/configReloadService.d.ts +15 -5
- package/build/services/configReloadService.d.ts.map +1 -1
- package/build/services/configReloadService.js +31 -14
- package/build/services/configReloadService.js.map +1 -1
- package/build/transport/http/middlewares/errorHandler.d.ts.map +1 -0
- package/build/{server → transport/http/middlewares}/errorHandler.js +1 -1
- package/build/transport/http/middlewares/errorHandler.js.map +1 -0
- package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts +42 -0
- package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -0
- package/build/transport/http/middlewares/scopeAuthMiddleware.js +136 -0
- package/build/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -0
- package/build/transport/http/middlewares/securityMiddleware.d.ts +30 -0
- package/build/transport/http/middlewares/securityMiddleware.d.ts.map +1 -0
- package/build/transport/http/middlewares/securityMiddleware.js +201 -0
- package/build/transport/http/middlewares/securityMiddleware.js.map +1 -0
- package/build/transport/http/middlewares/tagsExtractor.d.ts.map +1 -0
- package/build/transport/http/middlewares/tagsExtractor.js.map +1 -0
- package/build/transport/http/routes/oauthRoutes.d.ts +4 -0
- package/build/transport/http/routes/oauthRoutes.d.ts.map +1 -0
- package/build/transport/http/routes/oauthRoutes.js +474 -0
- package/build/transport/http/routes/oauthRoutes.js.map +1 -0
- package/build/transport/http/routes/sseRoutes.d.ts +4 -0
- package/build/transport/http/routes/sseRoutes.d.ts.map +1 -0
- package/build/{server → transport/http}/routes/sseRoutes.js +12 -10
- package/build/transport/http/routes/sseRoutes.js.map +1 -0
- package/build/transport/http/routes/streamableHttpRoutes.d.ts +4 -0
- package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -0
- package/build/{server → transport/http}/routes/streamableHttpRoutes.js +46 -13
- package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -0
- package/build/{server/expressServer.d.ts → transport/http/server.d.ts} +5 -4
- package/build/transport/http/server.d.ts.map +1 -0
- package/build/{server/expressServer.js → transport/http/server.js} +60 -23
- package/build/transport/http/server.js.map +1 -0
- package/build/transport/transportFactory.d.ts +9 -0
- package/build/transport/transportFactory.d.ts.map +1 -0
- package/build/transport/transportFactory.js +148 -0
- package/build/transport/transportFactory.js.map +1 -0
- package/build/utils/clientFiltering.d.ts +4 -4
- package/build/utils/clientFiltering.d.ts.map +1 -1
- package/build/utils/clientFiltering.js +14 -14
- package/build/utils/clientFiltering.js.map +1 -1
- package/build/utils/errorHandling.d.ts +0 -11
- package/build/utils/errorHandling.d.ts.map +1 -1
- package/build/utils/errorHandling.js +1 -18
- package/build/utils/errorHandling.js.map +1 -1
- package/build/utils/errorTypes.js +4 -4
- package/build/utils/errorTypes.js.map +1 -1
- package/build/utils/pagination.d.ts +2 -2
- package/build/utils/pagination.d.ts.map +1 -1
- package/build/utils/pagination.js +87 -8
- package/build/utils/pagination.js.map +1 -1
- package/build/utils/parsing.d.ts +13 -0
- package/build/utils/parsing.d.ts.map +1 -0
- package/build/utils/parsing.js +32 -0
- package/build/utils/parsing.js.map +1 -0
- package/build/utils/sanitization.d.ts +60 -0
- package/build/utils/sanitization.d.ts.map +1 -0
- package/build/utils/sanitization.js +149 -0
- package/build/utils/sanitization.js.map +1 -0
- package/build/utils/scopeValidation.d.ts +102 -0
- package/build/utils/scopeValidation.d.ts.map +1 -0
- package/build/utils/scopeValidation.js +244 -0
- package/build/utils/scopeValidation.js.map +1 -0
- package/package.json +23 -9
- package/build/client.d.ts.map +0 -1
- package/build/client.js.map +0 -1
- package/build/clients/clientManager.d.ts.map +0 -1
- package/build/clients/clientManager.js +0 -147
- package/build/clients/clientManager.js.map +0 -1
- package/build/config/configManager.d.ts.map +0 -1
- package/build/config/configManager.js.map +0 -1
- package/build/config/transportConfig.d.ts +0 -7
- package/build/config/transportConfig.d.ts.map +0 -1
- package/build/config/transportConfig.js +0 -90
- package/build/config/transportConfig.js.map +0 -1
- package/build/middleware/loggingMiddleware.d.ts.map +0 -1
- package/build/middleware/loggingMiddleware.js.map +0 -1
- package/build/server/auth/authManager.d.ts +0 -109
- package/build/server/auth/authManager.d.ts.map +0 -1
- package/build/server/auth/authManager.js +0 -173
- package/build/server/auth/authManager.js.map +0 -1
- package/build/server/auth/authMiddleware.d.ts +0 -16
- package/build/server/auth/authMiddleware.d.ts.map +0 -1
- package/build/server/auth/authMiddleware.js +0 -45
- package/build/server/auth/authMiddleware.js.map +0 -1
- package/build/server/auth/sessionManager.d.ts.map +0 -1
- package/build/server/auth/sessionManager.js.map +0 -1
- package/build/server/config/serverConfig.d.ts.map +0 -1
- package/build/server/config/serverConfig.js +0 -117
- package/build/server/config/serverConfig.js.map +0 -1
- package/build/server/errorHandler.d.ts.map +0 -1
- package/build/server/errorHandler.js.map +0 -1
- package/build/server/expressServer.d.ts.map +0 -1
- package/build/server/expressServer.js.map +0 -1
- package/build/server/routes/oauthRoutes.d.ts +0 -14
- package/build/server/routes/oauthRoutes.d.ts.map +0 -1
- package/build/server/routes/oauthRoutes.js +0 -132
- package/build/server/routes/oauthRoutes.js.map +0 -1
- package/build/server/routes/sseRoutes.d.ts +0 -4
- package/build/server/routes/sseRoutes.d.ts.map +0 -1
- package/build/server/routes/sseRoutes.js.map +0 -1
- package/build/server/routes/streamableHttpRoutes.d.ts +0 -4
- package/build/server/routes/streamableHttpRoutes.d.ts.map +0 -1
- package/build/server/routes/streamableHttpRoutes.js.map +0 -1
- package/build/server/tagsExtractor.d.ts.map +0 -1
- package/build/server/tagsExtractor.js.map +0 -1
- package/build/serverManager.d.ts +0 -27
- package/build/serverManager.d.ts.map +0 -1
- package/build/serverManager.js +0 -87
- package/build/serverManager.js.map +0 -1
- package/build/types.d.ts.map +0 -1
- package/build/types.js.map +0 -1
- /package/build/{server → transport/http/middlewares}/errorHandler.d.ts +0 -0
- /package/build/{server → transport/http/middlewares}/tagsExtractor.d.ts +0 -0
- /package/build/{server → transport/http/middlewares}/tagsExtractor.js +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { randomUUID } from 'node:crypto';
|
|
4
|
-
import logger from '
|
|
5
|
-
import { AUTH_CONFIG, getGlobalConfigDir } from '
|
|
4
|
+
import logger from '../logger/logger.js';
|
|
5
|
+
import { AUTH_CONFIG, getGlobalConfigDir } from '../constants.js';
|
|
6
6
|
/**
|
|
7
7
|
* SessionManager handles file-based session storage with automatic cleanup.
|
|
8
8
|
*
|
|
@@ -23,7 +23,7 @@ import { AUTH_CONFIG, getGlobalConfigDir } from '../../constants.js';
|
|
|
23
23
|
* const session = sessionManager.getSession(sessionId);
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
|
-
export class
|
|
26
|
+
export class ServerSessionManager {
|
|
27
27
|
sessionStoragePath;
|
|
28
28
|
cleanupInterval = null;
|
|
29
29
|
/**
|
|
@@ -35,10 +35,19 @@ export class SessionManager {
|
|
|
35
35
|
* @param sessionStoragePath - Optional custom path for session storage
|
|
36
36
|
*/
|
|
37
37
|
constructor(sessionStoragePath) {
|
|
38
|
-
this.sessionStoragePath =
|
|
38
|
+
this.sessionStoragePath =
|
|
39
|
+
sessionStoragePath || path.join(getGlobalConfigDir(), AUTH_CONFIG.SERVER.SESSION.STORAGE_DIR);
|
|
39
40
|
this.ensureSessionDirectory();
|
|
40
41
|
this.startCleanupInterval();
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Gets the session storage path.
|
|
45
|
+
*
|
|
46
|
+
* @returns The absolute path to the session storage directory
|
|
47
|
+
*/
|
|
48
|
+
getSessionStoragePath() {
|
|
49
|
+
return this.sessionStoragePath;
|
|
50
|
+
}
|
|
42
51
|
/**
|
|
43
52
|
* Ensures the session storage directory exists.
|
|
44
53
|
*
|
|
@@ -66,9 +75,17 @@ export class SessionManager {
|
|
|
66
75
|
* @returns Full file path for the session file
|
|
67
76
|
*/
|
|
68
77
|
getSessionFilePath(sessionId) {
|
|
69
|
-
|
|
70
|
-
if (!
|
|
71
|
-
throw new Error('Invalid session
|
|
78
|
+
// Validate session ID format first
|
|
79
|
+
if (!this.isValidId(sessionId)) {
|
|
80
|
+
throw new Error('Invalid session ID format');
|
|
81
|
+
}
|
|
82
|
+
const fileName = `${AUTH_CONFIG.SERVER.SESSION.FILE_PREFIX}${sessionId}${AUTH_CONFIG.SERVER.SESSION.FILE_EXTENSION}`;
|
|
83
|
+
const filePath = path.resolve(this.sessionStoragePath, fileName);
|
|
84
|
+
// Additional security check: ensure resolved path is within session storage
|
|
85
|
+
const normalizedStoragePath = path.resolve(this.sessionStoragePath);
|
|
86
|
+
const normalizedFilePath = path.resolve(filePath);
|
|
87
|
+
if (!normalizedFilePath.startsWith(normalizedStoragePath + path.sep)) {
|
|
88
|
+
throw new Error('Invalid session file path: outside storage directory');
|
|
72
89
|
}
|
|
73
90
|
return filePath;
|
|
74
91
|
}
|
|
@@ -79,19 +96,52 @@ export class SessionManager {
|
|
|
79
96
|
* @returns Full file path for the auth code file
|
|
80
97
|
*/
|
|
81
98
|
getAuthCodeFilePath(code) {
|
|
82
|
-
|
|
83
|
-
if (!
|
|
84
|
-
throw new Error('Invalid authorization code
|
|
99
|
+
// Validate auth code format first
|
|
100
|
+
if (!this.isValidId(code)) {
|
|
101
|
+
throw new Error('Invalid authorization code format');
|
|
102
|
+
}
|
|
103
|
+
const fileName = `auth_code_${code}${AUTH_CONFIG.SERVER.SESSION.FILE_EXTENSION}`;
|
|
104
|
+
const filePath = path.resolve(this.sessionStoragePath, fileName);
|
|
105
|
+
// Additional security check: ensure resolved path is within session storage
|
|
106
|
+
const normalizedStoragePath = path.resolve(this.sessionStoragePath);
|
|
107
|
+
const normalizedFilePath = path.resolve(filePath);
|
|
108
|
+
if (!normalizedFilePath.startsWith(normalizedStoragePath + path.sep)) {
|
|
109
|
+
throw new Error('Invalid authorization code path: outside storage directory');
|
|
85
110
|
}
|
|
86
111
|
return filePath;
|
|
87
112
|
}
|
|
88
113
|
/**
|
|
89
|
-
* Utility to validate session IDs and auth codes for
|
|
114
|
+
* Utility to validate session IDs and auth codes for proper format and security.
|
|
115
|
+
* Ensures proper format with prefix and UUID structure for security.
|
|
90
116
|
* @param id - The session ID or auth code to validate
|
|
91
117
|
* @returns true if valid, false otherwise
|
|
92
118
|
*/
|
|
93
119
|
isValidId(id) {
|
|
94
|
-
|
|
120
|
+
// Check minimum length (prefix + content)
|
|
121
|
+
if (!id || id.length < 8) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
// Check for valid server-side prefix
|
|
125
|
+
const hasServerPrefix = id.startsWith(AUTH_CONFIG.SERVER.PREFIXES.SESSION_ID) || id.startsWith(AUTH_CONFIG.SERVER.PREFIXES.AUTH_CODE);
|
|
126
|
+
if (hasServerPrefix) {
|
|
127
|
+
// Validate the UUID portion (after prefix)
|
|
128
|
+
const uuidPart = id.startsWith(AUTH_CONFIG.SERVER.PREFIXES.SESSION_ID)
|
|
129
|
+
? id.substring(AUTH_CONFIG.SERVER.PREFIXES.SESSION_ID.length)
|
|
130
|
+
: id.substring(AUTH_CONFIG.SERVER.PREFIXES.AUTH_CODE.length);
|
|
131
|
+
// UUID v4 format: 8-4-4-4-12 hexadecimal digits with hyphens
|
|
132
|
+
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
133
|
+
return uuidRegex.test(uuidPart);
|
|
134
|
+
}
|
|
135
|
+
// Check for valid client-side OAuth prefix
|
|
136
|
+
const hasClientPrefix = id.startsWith(AUTH_CONFIG.CLIENT.PREFIXES.CLIENT) ||
|
|
137
|
+
id.startsWith(AUTH_CONFIG.CLIENT.PREFIXES.TOKENS) ||
|
|
138
|
+
id.startsWith(AUTH_CONFIG.CLIENT.PREFIXES.VERIFIER) ||
|
|
139
|
+
id.startsWith(AUTH_CONFIG.CLIENT.PREFIXES.STATE);
|
|
140
|
+
if (hasClientPrefix) {
|
|
141
|
+
const contentPart = id.substring(4); // All client prefixes are 4 characters
|
|
142
|
+
return contentPart.length > 0 && /^[a-zA-Z0-9_-]+$/.test(contentPart);
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
95
145
|
}
|
|
96
146
|
/**
|
|
97
147
|
* Creates a new session with the specified parameters.
|
|
@@ -106,7 +156,7 @@ export class SessionManager {
|
|
|
106
156
|
* @throws Error if session creation fails
|
|
107
157
|
*/
|
|
108
158
|
createSession(clientId, resource, ttlMs) {
|
|
109
|
-
const sessionId = AUTH_CONFIG.PREFIXES.SESSION_ID + randomUUID();
|
|
159
|
+
const sessionId = AUTH_CONFIG.SERVER.PREFIXES.SESSION_ID + randomUUID();
|
|
110
160
|
const sessionData = {
|
|
111
161
|
clientId,
|
|
112
162
|
resource,
|
|
@@ -197,7 +247,7 @@ export class SessionManager {
|
|
|
197
247
|
* @throws Error if code creation fails
|
|
198
248
|
*/
|
|
199
249
|
createAuthCode(clientId, redirectUri, resource, ttlMs) {
|
|
200
|
-
const code = AUTH_CONFIG.PREFIXES.AUTH_CODE + randomUUID();
|
|
250
|
+
const code = AUTH_CONFIG.SERVER.PREFIXES.AUTH_CODE + randomUUID();
|
|
201
251
|
const authCodeData = {
|
|
202
252
|
clientId,
|
|
203
253
|
redirectUri,
|
|
@@ -295,11 +345,17 @@ export class SessionManager {
|
|
|
295
345
|
* by removing them to prevent future errors.
|
|
296
346
|
*/
|
|
297
347
|
cleanupExpiredSessions() {
|
|
348
|
+
this.cleanupExpiredServerSessions();
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Cleans up expired server sessions and authorization codes.
|
|
352
|
+
*/
|
|
353
|
+
cleanupExpiredServerSessions() {
|
|
298
354
|
try {
|
|
299
355
|
const files = fs.readdirSync(this.sessionStoragePath);
|
|
300
356
|
let cleanedCount = 0;
|
|
301
357
|
for (const file of files) {
|
|
302
|
-
if (file.endsWith(AUTH_CONFIG.
|
|
358
|
+
if (file.endsWith(AUTH_CONFIG.SERVER.SESSION.FILE_EXTENSION)) {
|
|
303
359
|
const filePath = path.join(this.sessionStoragePath, file);
|
|
304
360
|
try {
|
|
305
361
|
const data = fs.readFileSync(filePath, 'utf8');
|
|
@@ -323,11 +379,11 @@ export class SessionManager {
|
|
|
323
379
|
}
|
|
324
380
|
}
|
|
325
381
|
if (cleanedCount > 0) {
|
|
326
|
-
logger.info(`Cleaned up ${cleanedCount} expired sessions`);
|
|
382
|
+
logger.info(`Cleaned up ${cleanedCount} expired server sessions`);
|
|
327
383
|
}
|
|
328
384
|
}
|
|
329
385
|
catch (error) {
|
|
330
|
-
logger.error(`Failed to cleanup expired sessions: ${error}`);
|
|
386
|
+
logger.error(`Failed to cleanup expired server sessions: ${error}`);
|
|
331
387
|
}
|
|
332
388
|
}
|
|
333
389
|
/**
|
|
@@ -354,7 +410,7 @@ export class SessionManager {
|
|
|
354
410
|
* @throws Error if session creation fails
|
|
355
411
|
*/
|
|
356
412
|
createSessionWithId(tokenId, clientId, resource, ttlMs) {
|
|
357
|
-
const sessionId = AUTH_CONFIG.PREFIXES.SESSION_ID + tokenId;
|
|
413
|
+
const sessionId = AUTH_CONFIG.SERVER.PREFIXES.SESSION_ID + tokenId;
|
|
358
414
|
const sessionData = {
|
|
359
415
|
clientId,
|
|
360
416
|
resource,
|
|
@@ -372,5 +428,34 @@ export class SessionManager {
|
|
|
372
428
|
throw error;
|
|
373
429
|
}
|
|
374
430
|
}
|
|
431
|
+
/**
|
|
432
|
+
* Creates a new session with custom data.
|
|
433
|
+
* Used for OAuth client data storage where arbitrary data needs to be stored.
|
|
434
|
+
*
|
|
435
|
+
* @param sessionId - The session ID to use
|
|
436
|
+
* @param data - The custom data to store
|
|
437
|
+
* @param ttlMs - Time-to-live in milliseconds
|
|
438
|
+
* @returns The session ID
|
|
439
|
+
* @throws Error if session creation fails
|
|
440
|
+
*/
|
|
441
|
+
createSessionWithData(sessionId, data, ttlMs) {
|
|
442
|
+
const sessionData = {
|
|
443
|
+
clientId: 'oauth-client-data',
|
|
444
|
+
resource: 'internal',
|
|
445
|
+
expires: Date.now() + ttlMs,
|
|
446
|
+
createdAt: Date.now(),
|
|
447
|
+
data,
|
|
448
|
+
};
|
|
449
|
+
try {
|
|
450
|
+
const filePath = this.getSessionFilePath(sessionId);
|
|
451
|
+
fs.writeFileSync(filePath, JSON.stringify(sessionData, null, 2));
|
|
452
|
+
logger.info(`Created data session: ${sessionId}`);
|
|
453
|
+
return sessionId;
|
|
454
|
+
}
|
|
455
|
+
catch (error) {
|
|
456
|
+
logger.error(`Failed to create data session: ${error}`);
|
|
457
|
+
throw error;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
375
460
|
}
|
|
376
|
-
//# sourceMappingURL=
|
|
461
|
+
//# sourceMappingURL=serverSessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverSessionManager.js","sourceRoot":"","sources":["../../src/auth/serverSessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface SessionData {
|
|
2
|
+
clientId: string;
|
|
3
|
+
resource: string;
|
|
4
|
+
expires: number;
|
|
5
|
+
createdAt: number;
|
|
6
|
+
data?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface AuthCodeData {
|
|
9
|
+
clientId: string;
|
|
10
|
+
redirectUri: string;
|
|
11
|
+
resource: string;
|
|
12
|
+
expires: number;
|
|
13
|
+
createdAt: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ClientSessionData {
|
|
16
|
+
serverName: string;
|
|
17
|
+
clientInfo?: string;
|
|
18
|
+
tokens?: string;
|
|
19
|
+
codeVerifier?: string;
|
|
20
|
+
state?: string;
|
|
21
|
+
expires: number;
|
|
22
|
+
createdAt: number;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=sessionTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionTypes.d.ts","sourceRoot":"","sources":["../../src/auth/sessionTypes.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionTypes.js","sourceRoot":"","sources":["../../src/auth/sessionTypes.ts"],"names":[],"mappings":"AAAA,8DAA8D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OutboundConnections, InboundConnection } from '../core/types/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Collects capabilities from all clients and registers them with the server
|
|
4
4
|
* @param clients Record of client instances
|
|
@@ -6,7 +6,7 @@ import { Clients, ServerInfo } from '../types.js';
|
|
|
6
6
|
* @param tags Array of tags to filter clients by
|
|
7
7
|
* @returns The combined server capabilities
|
|
8
8
|
*/
|
|
9
|
-
export declare function setupCapabilities(clients:
|
|
9
|
+
export declare function setupCapabilities(clients: OutboundConnections, serverInfo: InboundConnection): Promise<{
|
|
10
10
|
[x: string]: unknown;
|
|
11
11
|
experimental?: {
|
|
12
12
|
[x: string]: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilityManager.d.ts","sourceRoot":"","sources":["../../src/capabilities/capabilityManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"capabilityManager.d.ts","sourceRoot":"","sources":["../../src/capabilities/capabilityManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;GAYlG"}
|
|
@@ -25,18 +25,18 @@ export async function setupCapabilities(clients, serverInfo) {
|
|
|
25
25
|
*/
|
|
26
26
|
function collectCapabilities(clients) {
|
|
27
27
|
const capabilities = {};
|
|
28
|
-
for (const [name, clientInfo] of
|
|
28
|
+
for (const [name, clientInfo] of clients.entries()) {
|
|
29
29
|
try {
|
|
30
30
|
const serverCapabilities = clientInfo.client.getServerCapabilities() || {};
|
|
31
31
|
logger.debug(`Capabilities from ${name}: ${JSON.stringify(serverCapabilities)}`);
|
|
32
32
|
// Store capabilities per client
|
|
33
33
|
clientInfo.capabilities = serverCapabilities;
|
|
34
|
-
// Aggregate capabilities
|
|
35
|
-
capabilities.resources =
|
|
36
|
-
capabilities.tools =
|
|
37
|
-
capabilities.prompts =
|
|
38
|
-
capabilities.experimental =
|
|
39
|
-
capabilities.logging =
|
|
34
|
+
// Aggregate capabilities with conflict handling
|
|
35
|
+
capabilities.resources = mergeCapabilities(capabilities.resources, serverCapabilities.resources, 'resources', name);
|
|
36
|
+
capabilities.tools = mergeCapabilities(capabilities.tools, serverCapabilities.tools, 'tools', name);
|
|
37
|
+
capabilities.prompts = mergeCapabilities(capabilities.prompts, serverCapabilities.prompts, 'prompts', name);
|
|
38
|
+
capabilities.experimental = mergeCapabilities(capabilities.experimental, serverCapabilities.experimental, 'experimental', name);
|
|
39
|
+
capabilities.logging = mergeCapabilities(capabilities.logging, serverCapabilities.logging, 'logging', name);
|
|
40
40
|
}
|
|
41
41
|
catch (error) {
|
|
42
42
|
logger.error(`Failed to get capabilities from ${name}: ${error}`);
|
|
@@ -44,4 +44,37 @@ function collectCapabilities(clients) {
|
|
|
44
44
|
}
|
|
45
45
|
return capabilities;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Merges capability objects with conflict detection and resolution
|
|
49
|
+
* @param existing The existing capability object
|
|
50
|
+
* @param incoming The incoming capability object
|
|
51
|
+
* @param capabilityType The type of capability being merged
|
|
52
|
+
* @param clientName The name of the client providing the incoming capability
|
|
53
|
+
* @returns The merged capability object
|
|
54
|
+
*/
|
|
55
|
+
function mergeCapabilities(existing, incoming, capabilityType, clientName) {
|
|
56
|
+
if (!incoming) {
|
|
57
|
+
return existing;
|
|
58
|
+
}
|
|
59
|
+
if (!existing) {
|
|
60
|
+
return incoming;
|
|
61
|
+
}
|
|
62
|
+
const merged = { ...existing };
|
|
63
|
+
const conflicts = [];
|
|
64
|
+
for (const [key, value] of Object.entries(incoming)) {
|
|
65
|
+
if (key in existing) {
|
|
66
|
+
// Check if values are different (potential conflict)
|
|
67
|
+
if (JSON.stringify(existing[key]) !== JSON.stringify(value)) {
|
|
68
|
+
conflicts.push(key);
|
|
69
|
+
logger.warn(`Capability conflict in ${capabilityType}.${key}: client ${clientName} overriding existing value`);
|
|
70
|
+
logger.debug(`Existing: ${JSON.stringify(existing[key])}, New: ${JSON.stringify(value)}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
merged[key] = value;
|
|
74
|
+
}
|
|
75
|
+
if (conflicts.length > 0) {
|
|
76
|
+
logger.info(`Client ${clientName} has ${conflicts.length} ${capabilityType} capability conflicts: ${conflicts.join(', ')}`);
|
|
77
|
+
}
|
|
78
|
+
return merged;
|
|
79
|
+
}
|
|
47
80
|
//# sourceMappingURL=capabilityManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilityManager.js","sourceRoot":"","sources":["../../src/capabilities/capabilityManager.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EACL,gCAAgC,EAChC,gCAAgC,GACjC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"capabilityManager.js","sourceRoot":"","sources":["../../src/capabilities/capabilityManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import { MCPServerParams } from '../types.js';
|
|
2
|
+
import { MCPServerParams } from '../core/types/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Configuration change event types
|
|
5
5
|
*/
|
|
@@ -7,23 +7,25 @@ export declare enum ConfigChangeEvent {
|
|
|
7
7
|
TRANSPORT_CONFIG_CHANGED = "transportConfigChanged"
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* MCP configuration manager that handles loading, watching, and reloading MCP server configurations
|
|
11
11
|
*/
|
|
12
|
-
export declare class
|
|
12
|
+
export declare class McpConfigManager extends EventEmitter {
|
|
13
13
|
private static instance;
|
|
14
14
|
private configWatcher;
|
|
15
15
|
private transportConfig;
|
|
16
16
|
private configFilePath;
|
|
17
|
+
private debounceTimer;
|
|
18
|
+
private readonly debounceDelayMs;
|
|
17
19
|
/**
|
|
18
20
|
* Private constructor to enforce singleton pattern
|
|
19
21
|
* @param configFilePath - Optional path to the config file. If not provided, uses global config path
|
|
20
22
|
*/
|
|
21
23
|
private constructor();
|
|
22
24
|
/**
|
|
23
|
-
* Get the singleton instance of
|
|
25
|
+
* Get the singleton instance of McpConfigManager
|
|
24
26
|
* @param configFilePath - Optional path to the config file
|
|
25
27
|
*/
|
|
26
|
-
static getInstance(configFilePath?: string):
|
|
28
|
+
static getInstance(configFilePath?: string): McpConfigManager;
|
|
27
29
|
/**
|
|
28
30
|
* Ensure the config directory and file exist
|
|
29
31
|
*/
|
|
@@ -40,6 +42,10 @@ export declare class ConfigManager extends EventEmitter {
|
|
|
40
42
|
* Stop watching the configuration file
|
|
41
43
|
*/
|
|
42
44
|
stopWatching(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Debounced configuration reload to prevent excessive reloading
|
|
47
|
+
*/
|
|
48
|
+
private debouncedReloadConfig;
|
|
43
49
|
/**
|
|
44
50
|
* Reload the configuration from the config file
|
|
45
51
|
*/
|
|
@@ -49,6 +55,11 @@ export declare class ConfigManager extends EventEmitter {
|
|
|
49
55
|
* @returns The current transport configuration
|
|
50
56
|
*/
|
|
51
57
|
getTransportConfig(): Record<string, MCPServerParams>;
|
|
58
|
+
/**
|
|
59
|
+
* Get all available tags from the configured servers
|
|
60
|
+
* @returns Array of unique tags from all servers
|
|
61
|
+
*/
|
|
62
|
+
getAvailableTags(): string[];
|
|
52
63
|
}
|
|
53
|
-
export default
|
|
54
|
-
//# sourceMappingURL=
|
|
64
|
+
export default McpConfigManager;
|
|
65
|
+
//# sourceMappingURL=mcpConfigManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpConfigManager.d.ts","sourceRoot":"","sources":["../../src/config/mcpConfigManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,wBAAwB,2BAA2B;CACpD;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;IAE/C;;;OAGG;IACH,OAAO;IAOP;;;OAGG;WACW,WAAW,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAOpE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACI,aAAa,IAAI,IAAI;IAkB5B;;OAEG;IACI,YAAY,IAAI,IAAI;IAc3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACI,YAAY,IAAI,IAAI;IAgB3B;;;OAGG;IACI,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;IAI5D;;;OAGG;IACI,gBAAgB,IAAI,MAAM,EAAE;CAiBpC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -11,13 +11,15 @@ export var ConfigChangeEvent;
|
|
|
11
11
|
ConfigChangeEvent["TRANSPORT_CONFIG_CHANGED"] = "transportConfigChanged";
|
|
12
12
|
})(ConfigChangeEvent || (ConfigChangeEvent = {}));
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* MCP configuration manager that handles loading, watching, and reloading MCP server configurations
|
|
15
15
|
*/
|
|
16
|
-
export class
|
|
16
|
+
export class McpConfigManager extends EventEmitter {
|
|
17
17
|
static instance;
|
|
18
18
|
configWatcher = null;
|
|
19
19
|
transportConfig = {};
|
|
20
20
|
configFilePath;
|
|
21
|
+
debounceTimer = null;
|
|
22
|
+
debounceDelayMs = 500; // 500ms debounce delay
|
|
21
23
|
/**
|
|
22
24
|
* Private constructor to enforce singleton pattern
|
|
23
25
|
* @param configFilePath - Optional path to the config file. If not provided, uses global config path
|
|
@@ -29,14 +31,14 @@ export class ConfigManager extends EventEmitter {
|
|
|
29
31
|
this.loadConfig();
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
|
-
* Get the singleton instance of
|
|
34
|
+
* Get the singleton instance of McpConfigManager
|
|
33
35
|
* @param configFilePath - Optional path to the config file
|
|
34
36
|
*/
|
|
35
37
|
static getInstance(configFilePath) {
|
|
36
|
-
if (!
|
|
37
|
-
|
|
38
|
+
if (!McpConfigManager.instance) {
|
|
39
|
+
McpConfigManager.instance = new McpConfigManager(configFilePath);
|
|
38
40
|
}
|
|
39
|
-
return
|
|
41
|
+
return McpConfigManager.instance;
|
|
40
42
|
}
|
|
41
43
|
/**
|
|
42
44
|
* Ensure the config directory and file exist
|
|
@@ -82,8 +84,8 @@ export class ConfigManager extends EventEmitter {
|
|
|
82
84
|
try {
|
|
83
85
|
this.configWatcher = fs.watch(this.configFilePath, (eventType, filename) => {
|
|
84
86
|
if (filename === path.basename(this.configFilePath) && eventType === 'change') {
|
|
85
|
-
logger.
|
|
86
|
-
this.
|
|
87
|
+
logger.debug(`Configuration file ${filename} changed, debouncing reload...`);
|
|
88
|
+
this.debouncedReloadConfig();
|
|
87
89
|
}
|
|
88
90
|
});
|
|
89
91
|
logger.info(`Started watching configuration file: ${this.configFilePath}`);
|
|
@@ -101,6 +103,26 @@ export class ConfigManager extends EventEmitter {
|
|
|
101
103
|
this.configWatcher = null;
|
|
102
104
|
logger.info('Stopped watching configuration file');
|
|
103
105
|
}
|
|
106
|
+
// Clear any pending debounce timer
|
|
107
|
+
if (this.debounceTimer) {
|
|
108
|
+
clearTimeout(this.debounceTimer);
|
|
109
|
+
this.debounceTimer = null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Debounced configuration reload to prevent excessive reloading
|
|
114
|
+
*/
|
|
115
|
+
debouncedReloadConfig() {
|
|
116
|
+
// Clear existing timer
|
|
117
|
+
if (this.debounceTimer) {
|
|
118
|
+
clearTimeout(this.debounceTimer);
|
|
119
|
+
}
|
|
120
|
+
// Set new timer
|
|
121
|
+
this.debounceTimer = setTimeout(() => {
|
|
122
|
+
logger.info('Debounce period completed, reloading configuration...');
|
|
123
|
+
this.reloadConfig();
|
|
124
|
+
this.debounceTimer = null;
|
|
125
|
+
}, this.debounceDelayMs);
|
|
104
126
|
}
|
|
105
127
|
/**
|
|
106
128
|
* Reload the configuration from the config file
|
|
@@ -126,6 +148,24 @@ export class ConfigManager extends EventEmitter {
|
|
|
126
148
|
getTransportConfig() {
|
|
127
149
|
return { ...this.transportConfig };
|
|
128
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Get all available tags from the configured servers
|
|
153
|
+
* @returns Array of unique tags from all servers
|
|
154
|
+
*/
|
|
155
|
+
getAvailableTags() {
|
|
156
|
+
const tags = new Set();
|
|
157
|
+
for (const [_serverName, serverParams] of Object.entries(this.transportConfig)) {
|
|
158
|
+
// Skip disabled servers
|
|
159
|
+
if (serverParams.disabled) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
// Add tags from server configuration
|
|
163
|
+
if (serverParams.tags && Array.isArray(serverParams.tags)) {
|
|
164
|
+
serverParams.tags.forEach((tag) => tags.add(tag));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return Array.from(tags).sort();
|
|
168
|
+
}
|
|
129
169
|
}
|
|
130
|
-
export default
|
|
131
|
-
//# sourceMappingURL=
|
|
170
|
+
export default McpConfigManager;
|
|
171
|
+
//# sourceMappingURL=mcpConfigManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpConfigManager.js","sourceRoot":"","sources":["../../src/config/mcpConfigManager.ts"],"names":[],"mappings":"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"}
|
package/build/constants.d.ts
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { ClientCapabilities, ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
export declare const PORT = 3050;
|
|
6
|
-
export declare const HOST = "
|
|
6
|
+
export declare const HOST = "localhost";
|
|
7
7
|
export declare const SSE_ENDPOINT = "/sse";
|
|
8
8
|
export declare const MESSAGES_ENDPOINT = "/messages";
|
|
9
9
|
export declare const STREAMABLE_HTTP_ENDPOINT = "/mcp";
|
|
10
10
|
export declare const MCP_CONFIG_FILE = "mcp.json";
|
|
11
11
|
export declare const MCP_SERVER_NAME = "1mcp";
|
|
12
|
-
export declare const MCP_SERVER_VERSION = "0.
|
|
12
|
+
export declare const MCP_SERVER_VERSION = "0.13.0";
|
|
13
13
|
export declare const MCP_URI_SEPARATOR = "_1mcp_";
|
|
14
14
|
export declare const CONFIG_DIR_NAME = "1mcp";
|
|
15
15
|
export declare const DEFAULT_CONFIG: {
|
|
@@ -28,18 +28,40 @@ export declare const CONNECTION_RETRY: {
|
|
|
28
28
|
INITIAL_DELAY_MS: number;
|
|
29
29
|
};
|
|
30
30
|
export declare const AUTH_CONFIG: {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
SERVER: {
|
|
32
|
+
DEFAULT_ENABLED: boolean;
|
|
33
|
+
SESSION: {
|
|
34
|
+
TTL_MINUTES: number;
|
|
35
|
+
STORAGE_DIR: string;
|
|
36
|
+
FILE_PREFIX: string;
|
|
37
|
+
FILE_EXTENSION: string;
|
|
38
|
+
};
|
|
39
|
+
OAUTH: {
|
|
40
|
+
CODE_TTL_MS: number;
|
|
41
|
+
TOKEN_TTL_MS: number;
|
|
42
|
+
};
|
|
43
|
+
PREFIXES: {
|
|
44
|
+
SESSION_ID: string;
|
|
45
|
+
ACCESS_TOKEN: string;
|
|
46
|
+
AUTH_CODE: string;
|
|
47
|
+
CLIENT_ID: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
CLIENT: {
|
|
51
|
+
OAUTH: {
|
|
52
|
+
TTL_MS: number;
|
|
53
|
+
CODE_VERIFIER_TTL_MS: number;
|
|
54
|
+
STATE_TTL_MS: number;
|
|
55
|
+
DEFAULT_TOKEN_EXPIRY_SECONDS: number;
|
|
56
|
+
DEFAULT_CALLBACK_PATH: string;
|
|
57
|
+
DEFAULT_SCOPES: never[];
|
|
58
|
+
};
|
|
59
|
+
PREFIXES: {
|
|
60
|
+
CLIENT: string;
|
|
61
|
+
TOKENS: string;
|
|
62
|
+
VERIFIER: string;
|
|
63
|
+
STATE: string;
|
|
64
|
+
};
|
|
43
65
|
};
|
|
44
66
|
};
|
|
45
67
|
export declare const RATE_LIMIT_CONFIG: {
|
package/build/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAG5F,eAAO,MAAM,IAAI,OAAO,CAAC;AACzB,eAAO,MAAM,IAAI,cAAc,CAAC;AAGhC,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAG/C,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAG1C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAY3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAGD,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAGF,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAG5F,eAAO,MAAM,IAAI,OAAO,CAAC;AACzB,eAAO,MAAM,IAAI,cAAc,CAAC;AAGhC,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAG/C,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAG1C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAY3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAGD,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAGF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCvB,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;CAM7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAYrC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAUrC,CAAC"}
|