@structured-world/gitlab-mcp 6.31.0 → 6.31.1
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/dist/src/server.d.ts +0 -35
- package/dist/src/server.js +52 -163
- package/dist/src/server.js.map +1 -1
- package/dist/src/session-manager.d.ts +19 -0
- package/dist/src/session-manager.js +125 -0
- package/dist/src/session-manager.js.map +1 -0
- package/dist/structured-world-gitlab-mcp-6.31.1.tgz +0 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/structured-world-gitlab-mcp-6.31.0.tgz +0 -0
package/dist/src/server.d.ts
CHANGED
|
@@ -1,37 +1,2 @@
|
|
|
1
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
|
-
export declare const server: Server<{
|
|
3
|
-
method: string;
|
|
4
|
-
params?: {
|
|
5
|
-
[x: string]: unknown;
|
|
6
|
-
_meta?: {
|
|
7
|
-
[x: string]: unknown;
|
|
8
|
-
progressToken?: string | number | undefined;
|
|
9
|
-
"io.modelcontextprotocol/related-task"?: {
|
|
10
|
-
taskId: string;
|
|
11
|
-
} | undefined;
|
|
12
|
-
} | undefined;
|
|
13
|
-
} | undefined;
|
|
14
|
-
}, {
|
|
15
|
-
method: string;
|
|
16
|
-
params?: {
|
|
17
|
-
[x: string]: unknown;
|
|
18
|
-
_meta?: {
|
|
19
|
-
[x: string]: unknown;
|
|
20
|
-
progressToken?: string | number | undefined;
|
|
21
|
-
"io.modelcontextprotocol/related-task"?: {
|
|
22
|
-
taskId: string;
|
|
23
|
-
} | undefined;
|
|
24
|
-
} | undefined;
|
|
25
|
-
} | undefined;
|
|
26
|
-
}, {
|
|
27
|
-
[x: string]: unknown;
|
|
28
|
-
_meta?: {
|
|
29
|
-
[x: string]: unknown;
|
|
30
|
-
progressToken?: string | number | undefined;
|
|
31
|
-
"io.modelcontextprotocol/related-task"?: {
|
|
32
|
-
taskId: string;
|
|
33
|
-
} | undefined;
|
|
34
|
-
} | undefined;
|
|
35
|
-
}>;
|
|
36
1
|
export declare function sendToolsListChangedNotification(): Promise<void>;
|
|
37
2
|
export declare function startServer(): Promise<void>;
|
package/dist/src/server.js
CHANGED
|
@@ -36,45 +36,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.server = void 0;
|
|
40
39
|
exports.sendToolsListChangedNotification = sendToolsListChangedNotification;
|
|
41
40
|
exports.startServer = startServer;
|
|
42
|
-
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
43
41
|
const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
|
|
44
42
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
45
43
|
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
|
|
46
44
|
const express_1 = __importDefault(require("express"));
|
|
45
|
+
const crypto = __importStar(require("crypto"));
|
|
47
46
|
const https = __importStar(require("https"));
|
|
48
47
|
const fs = __importStar(require("fs"));
|
|
49
48
|
const config_1 = require("./config");
|
|
50
|
-
const config_2 = require("./config");
|
|
51
|
-
const handlers_1 = require("./handlers");
|
|
52
49
|
const logger_1 = require("./logger");
|
|
50
|
+
const session_manager_1 = require("./session-manager");
|
|
53
51
|
const index_1 = require("./oauth/index");
|
|
54
52
|
const index_2 = require("./middleware/index");
|
|
55
|
-
const schema_utils_1 = require("./utils/schema-utils");
|
|
56
53
|
const request_logger_1 = require("./utils/request-logger");
|
|
57
|
-
exports.server = new index_js_1.Server({
|
|
58
|
-
name: config_2.packageName,
|
|
59
|
-
version: config_2.packageVersion,
|
|
60
|
-
}, {
|
|
61
|
-
capabilities: {
|
|
62
|
-
tools: {
|
|
63
|
-
listChanged: true,
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
exports.server.oninitialized = () => {
|
|
68
|
-
const clientVersion = exports.server.getClientVersion();
|
|
69
|
-
(0, schema_utils_1.setDetectedSchemaMode)(clientVersion?.name);
|
|
70
|
-
};
|
|
71
54
|
async function sendToolsListChangedNotification() {
|
|
72
55
|
try {
|
|
73
|
-
|
|
74
|
-
|
|
56
|
+
const sessionManager = (0, session_manager_1.getSessionManager)();
|
|
57
|
+
await sessionManager.broadcastToolsListChanged();
|
|
75
58
|
}
|
|
76
59
|
catch (error) {
|
|
77
|
-
logger_1.logger.
|
|
60
|
+
logger_1.logger.error({ err: error }, "Failed to broadcast tools/list_changed notification");
|
|
78
61
|
}
|
|
79
62
|
}
|
|
80
63
|
function registerOAuthEndpoints(app) {
|
|
@@ -173,143 +156,16 @@ async function startServer() {
|
|
|
173
156
|
if (oauthConfig) {
|
|
174
157
|
await index_1.sessionStore.initialize();
|
|
175
158
|
}
|
|
176
|
-
|
|
159
|
+
const sessionManager = (0, session_manager_1.getSessionManager)();
|
|
160
|
+
sessionManager.start();
|
|
177
161
|
const transportMode = determineTransportMode();
|
|
178
162
|
switch (transportMode) {
|
|
179
163
|
case "stdio": {
|
|
180
164
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
181
|
-
await
|
|
165
|
+
await sessionManager.createSession("stdio", transport);
|
|
182
166
|
logger_1.logger.info("GitLab MCP Server running on stdio");
|
|
183
167
|
break;
|
|
184
168
|
}
|
|
185
|
-
case "sse": {
|
|
186
|
-
logger_1.logger.info("Setting up SSE mode with MCP SDK...");
|
|
187
|
-
const app = (0, express_1.default)();
|
|
188
|
-
app.use(express_1.default.json());
|
|
189
|
-
configureTrustProxy(app);
|
|
190
|
-
app.use((0, index_2.rateLimiterMiddleware)());
|
|
191
|
-
if ((0, index_1.isOAuthEnabled)()) {
|
|
192
|
-
registerOAuthEndpoints(app);
|
|
193
|
-
}
|
|
194
|
-
const sseTransports = {};
|
|
195
|
-
app.get("/sse", async (req, res) => {
|
|
196
|
-
logger_1.logger.debug("SSE endpoint hit!");
|
|
197
|
-
const transport = new sse_js_1.SSEServerTransport("/messages", res);
|
|
198
|
-
await exports.server.connect(transport);
|
|
199
|
-
const sessionId = transport.sessionId;
|
|
200
|
-
sseTransports[sessionId] = transport;
|
|
201
|
-
logger_1.logger.debug(`SSE transport created with session: ${sessionId}`);
|
|
202
|
-
});
|
|
203
|
-
app.post("/messages", async (req, res) => {
|
|
204
|
-
logger_1.logger.debug("Messages endpoint hit!");
|
|
205
|
-
const sessionId = req.query.sessionId;
|
|
206
|
-
if (!sessionId || !sseTransports[sessionId]) {
|
|
207
|
-
res.status(404).json({ error: "Session not found" });
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
try {
|
|
211
|
-
const transport = sseTransports[sessionId];
|
|
212
|
-
await transport.handlePostMessage(req, res, req.body);
|
|
213
|
-
}
|
|
214
|
-
catch (error) {
|
|
215
|
-
logger_1.logger.error({ err: error }, "Error handling SSE message");
|
|
216
|
-
res.status(500).json({ error: "Internal server error" });
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
startHttpServer(app, () => {
|
|
220
|
-
const url = `${getProtocol()}://${config_1.HOST}:${config_1.PORT}`;
|
|
221
|
-
logger_1.logger.info(`GitLab MCP Server SSE running on ${url}`);
|
|
222
|
-
if (isTLSEnabled()) {
|
|
223
|
-
logger_1.logger.info("TLS/HTTPS enabled");
|
|
224
|
-
}
|
|
225
|
-
logger_1.logger.info("SSE server started successfully");
|
|
226
|
-
});
|
|
227
|
-
break;
|
|
228
|
-
}
|
|
229
|
-
case "streamable-http": {
|
|
230
|
-
const app = (0, express_1.default)();
|
|
231
|
-
app.use(express_1.default.json());
|
|
232
|
-
configureTrustProxy(app);
|
|
233
|
-
app.use((0, index_2.rateLimiterMiddleware)());
|
|
234
|
-
if ((0, index_1.isOAuthEnabled)()) {
|
|
235
|
-
registerOAuthEndpoints(app);
|
|
236
|
-
}
|
|
237
|
-
app.use("/mcp", (req, res, next) => {
|
|
238
|
-
const accept = req.headers.accept ?? "";
|
|
239
|
-
if (req.method === "POST" && !accept.includes("text/event-stream")) {
|
|
240
|
-
req.headers.accept = accept
|
|
241
|
-
? `${accept}, text/event-stream`
|
|
242
|
-
: "application/json, text/event-stream";
|
|
243
|
-
logger_1.logger.debug({ originalAccept: accept, newAccept: req.headers.accept }, "Modified Accept header for MCP compatibility");
|
|
244
|
-
}
|
|
245
|
-
next();
|
|
246
|
-
});
|
|
247
|
-
if ((0, index_1.isOAuthEnabled)()) {
|
|
248
|
-
app.use("/mcp", index_2.oauthAuthMiddleware);
|
|
249
|
-
}
|
|
250
|
-
const streamableTransports = {};
|
|
251
|
-
app.all("/mcp", async (req, res) => {
|
|
252
|
-
const sessionId = req.headers["mcp-session-id"];
|
|
253
|
-
const oauthSessionId = res.locals.oauthSessionId;
|
|
254
|
-
const gitlabToken = res.locals.gitlabToken;
|
|
255
|
-
const gitlabUserId = res.locals.gitlabUserId;
|
|
256
|
-
const gitlabUsername = res.locals.gitlabUsername;
|
|
257
|
-
const handleWithContext = async (transport) => {
|
|
258
|
-
if (gitlabToken && oauthSessionId && gitlabUserId && gitlabUsername) {
|
|
259
|
-
await (0, index_1.runWithTokenContext)({
|
|
260
|
-
gitlabToken,
|
|
261
|
-
gitlabUserId,
|
|
262
|
-
gitlabUsername,
|
|
263
|
-
sessionId: oauthSessionId,
|
|
264
|
-
}, async () => {
|
|
265
|
-
await transport.handleRequest(req, res, req.body);
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
await transport.handleRequest(req, res, req.body);
|
|
270
|
-
}
|
|
271
|
-
};
|
|
272
|
-
try {
|
|
273
|
-
let transport;
|
|
274
|
-
if (sessionId && sessionId in streamableTransports) {
|
|
275
|
-
transport = streamableTransports[sessionId];
|
|
276
|
-
await handleWithContext(transport);
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
|
|
280
|
-
sessionIdGenerator: () => Math.random().toString(36).substring(7),
|
|
281
|
-
onsessioninitialized: (newSessionId) => {
|
|
282
|
-
streamableTransports[newSessionId] = transport;
|
|
283
|
-
logger_1.logger.info(`MCP session initialized: ${newSessionId} (method: ${req.method})`);
|
|
284
|
-
if (oauthSessionId) {
|
|
285
|
-
index_1.sessionStore.associateMcpSession(newSessionId, oauthSessionId);
|
|
286
|
-
}
|
|
287
|
-
},
|
|
288
|
-
onsessionclosed: (closedSessionId) => {
|
|
289
|
-
delete streamableTransports[closedSessionId];
|
|
290
|
-
index_1.sessionStore.removeMcpSessionAssociation(closedSessionId);
|
|
291
|
-
logger_1.logger.info(`MCP session closed: ${closedSessionId}`);
|
|
292
|
-
},
|
|
293
|
-
});
|
|
294
|
-
await exports.server.connect(transport);
|
|
295
|
-
await handleWithContext(transport);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
catch (error) {
|
|
299
|
-
logger_1.logger.error({ err: error }, "Error in StreamableHTTP transport");
|
|
300
|
-
res.status(500).json({ error: "Internal server error" });
|
|
301
|
-
}
|
|
302
|
-
});
|
|
303
|
-
startHttpServer(app, () => {
|
|
304
|
-
const url = `${getProtocol()}://${config_1.HOST}:${config_1.PORT}`;
|
|
305
|
-
logger_1.logger.info(`GitLab MCP Server running on ${url}/mcp`);
|
|
306
|
-
if (isTLSEnabled()) {
|
|
307
|
-
logger_1.logger.info("TLS/HTTPS enabled");
|
|
308
|
-
}
|
|
309
|
-
logger_1.logger.info("Supports both SSE (GET) and JSON-RPC (POST) on same endpoint");
|
|
310
|
-
});
|
|
311
|
-
break;
|
|
312
|
-
}
|
|
313
169
|
case "dual": {
|
|
314
170
|
logger_1.logger.info("Setting up dual transport mode (SSE + StreamableHTTP)...");
|
|
315
171
|
const app = (0, express_1.default)();
|
|
@@ -337,10 +193,25 @@ async function startServer() {
|
|
|
337
193
|
app.get("/sse", async (req, res) => {
|
|
338
194
|
logger_1.logger.debug("SSE endpoint hit!");
|
|
339
195
|
const transport = new sse_js_1.SSEServerTransport("/messages", res);
|
|
340
|
-
await exports.server.connect(transport);
|
|
341
196
|
const sessionId = transport.sessionId;
|
|
342
|
-
|
|
343
|
-
|
|
197
|
+
try {
|
|
198
|
+
await sessionManager.createSession(sessionId, transport);
|
|
199
|
+
sseTransports[sessionId] = transport;
|
|
200
|
+
logger_1.logger.debug(`SSE transport created with session: ${sessionId}`);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
logger_1.logger.error({ err: error, sessionId }, "Failed to create SSE session");
|
|
204
|
+
if (!res.headersSent) {
|
|
205
|
+
res.status(500).end();
|
|
206
|
+
}
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
res.on("close", () => {
|
|
210
|
+
delete sseTransports[sessionId];
|
|
211
|
+
sessionManager.removeSession(sessionId).catch((error) => {
|
|
212
|
+
logger_1.logger.debug({ err: error, sessionId }, "Error removing SSE session on disconnect");
|
|
213
|
+
});
|
|
214
|
+
});
|
|
344
215
|
});
|
|
345
216
|
app.post("/messages", async (req, res) => {
|
|
346
217
|
logger_1.logger.debug("SSE messages endpoint hit!");
|
|
@@ -350,12 +221,15 @@ async function startServer() {
|
|
|
350
221
|
return;
|
|
351
222
|
}
|
|
352
223
|
try {
|
|
224
|
+
sessionManager.touchSession(sessionId);
|
|
353
225
|
const transport = sseTransports[sessionId];
|
|
354
226
|
await transport.handlePostMessage(req, res, req.body);
|
|
355
227
|
}
|
|
356
228
|
catch (error) {
|
|
357
229
|
logger_1.logger.error({ err: error }, "Error handling SSE message");
|
|
358
|
-
res.
|
|
230
|
+
if (!res.headersSent) {
|
|
231
|
+
res.status(500).json({ error: "Internal server error" });
|
|
232
|
+
}
|
|
359
233
|
}
|
|
360
234
|
});
|
|
361
235
|
app.all(["/", "/mcp"], async (req, res) => {
|
|
@@ -388,32 +262,39 @@ async function startServer() {
|
|
|
388
262
|
try {
|
|
389
263
|
let transport;
|
|
390
264
|
if (sessionId && sessionId in streamableTransports) {
|
|
265
|
+
sessionManager.touchSession(sessionId);
|
|
391
266
|
transport = streamableTransports[sessionId];
|
|
392
267
|
await handleWithContext(transport);
|
|
393
268
|
}
|
|
394
269
|
else {
|
|
270
|
+
const newSessionId = crypto.randomUUID();
|
|
395
271
|
transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
|
|
396
|
-
sessionIdGenerator: () =>
|
|
397
|
-
onsessioninitialized: (
|
|
398
|
-
streamableTransports[
|
|
399
|
-
logger_1.logger.info(`MCP session initialized: ${
|
|
272
|
+
sessionIdGenerator: () => newSessionId,
|
|
273
|
+
onsessioninitialized: (sessionId) => {
|
|
274
|
+
streamableTransports[sessionId] = transport;
|
|
275
|
+
logger_1.logger.info(`MCP session initialized: ${sessionId} (method: ${req.method})`);
|
|
400
276
|
if (oauthSessionId) {
|
|
401
|
-
index_1.sessionStore.associateMcpSession(
|
|
277
|
+
index_1.sessionStore.associateMcpSession(sessionId, oauthSessionId);
|
|
402
278
|
}
|
|
403
279
|
},
|
|
404
280
|
onsessionclosed: (closedSessionId) => {
|
|
405
281
|
delete streamableTransports[closedSessionId];
|
|
406
282
|
index_1.sessionStore.removeMcpSessionAssociation(closedSessionId);
|
|
283
|
+
sessionManager.removeSession(closedSessionId).catch((err) => {
|
|
284
|
+
logger_1.logger.debug({ err, sessionId: closedSessionId }, "Error removing closed session");
|
|
285
|
+
});
|
|
407
286
|
logger_1.logger.info(`MCP session closed: ${closedSessionId}`);
|
|
408
287
|
},
|
|
409
288
|
});
|
|
410
|
-
await
|
|
289
|
+
await sessionManager.createSession(newSessionId, transport);
|
|
411
290
|
await handleWithContext(transport);
|
|
412
291
|
}
|
|
413
292
|
}
|
|
414
293
|
catch (error) {
|
|
415
294
|
logger_1.logger.error({ err: error }, "Error in StreamableHTTP transport");
|
|
416
|
-
res.
|
|
295
|
+
if (!res.headersSent) {
|
|
296
|
+
res.status(500).json({ error: "Internal server error" });
|
|
297
|
+
}
|
|
417
298
|
}
|
|
418
299
|
});
|
|
419
300
|
startHttpServer(app, () => {
|
|
@@ -439,6 +320,14 @@ async function startServer() {
|
|
|
439
320
|
}
|
|
440
321
|
async function gracefulShutdown(signal) {
|
|
441
322
|
logger_1.logger.info({ signal }, "Shutting down GitLab MCP Server...");
|
|
323
|
+
try {
|
|
324
|
+
const sm = (0, session_manager_1.getSessionManager)();
|
|
325
|
+
await sm.shutdown();
|
|
326
|
+
logger_1.logger.info("Session manager shut down successfully");
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
logger_1.logger.error({ err: error }, "Error shutting down session manager");
|
|
330
|
+
}
|
|
442
331
|
try {
|
|
443
332
|
await index_1.sessionStore.close();
|
|
444
333
|
logger_1.logger.info("Session store closed successfully");
|
package/dist/src/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
|
+
import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
3
|
+
export declare class SessionManager {
|
|
4
|
+
private sessions;
|
|
5
|
+
private cleanupInterval;
|
|
6
|
+
private readonly sessionTimeoutMs;
|
|
7
|
+
private schemaModeDetected;
|
|
8
|
+
constructor(sessionTimeoutMs?: number);
|
|
9
|
+
start(): void;
|
|
10
|
+
createSession(sessionId: string, transport: Transport): Promise<Server>;
|
|
11
|
+
touchSession(sessionId: string): void;
|
|
12
|
+
removeSession(sessionId: string): Promise<void>;
|
|
13
|
+
broadcastToolsListChanged(): Promise<void>;
|
|
14
|
+
get activeSessionCount(): number;
|
|
15
|
+
private cleanupStaleSessions;
|
|
16
|
+
shutdown(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare function getSessionManager(): SessionManager;
|
|
19
|
+
export declare function resetSessionManager(): void;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionManager = void 0;
|
|
4
|
+
exports.getSessionManager = getSessionManager;
|
|
5
|
+
exports.resetSessionManager = resetSessionManager;
|
|
6
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
7
|
+
const config_1 = require("./config");
|
|
8
|
+
const handlers_1 = require("./handlers");
|
|
9
|
+
const schema_utils_1 = require("./utils/schema-utils");
|
|
10
|
+
const logger_1 = require("./logger");
|
|
11
|
+
const DEFAULT_SESSION_TIMEOUT_MS = 30 * 60 * 1000;
|
|
12
|
+
class SessionManager {
|
|
13
|
+
sessions = new Map();
|
|
14
|
+
cleanupInterval = null;
|
|
15
|
+
sessionTimeoutMs;
|
|
16
|
+
schemaModeDetected = false;
|
|
17
|
+
constructor(sessionTimeoutMs) {
|
|
18
|
+
this.sessionTimeoutMs = sessionTimeoutMs ?? DEFAULT_SESSION_TIMEOUT_MS;
|
|
19
|
+
}
|
|
20
|
+
start() {
|
|
21
|
+
this.cleanupInterval = setInterval(() => {
|
|
22
|
+
this.cleanupStaleSessions();
|
|
23
|
+
}, 60_000);
|
|
24
|
+
this.cleanupInterval.unref();
|
|
25
|
+
logger_1.logger.info({ sessionTimeoutMs: this.sessionTimeoutMs }, "Session manager started");
|
|
26
|
+
}
|
|
27
|
+
async createSession(sessionId, transport) {
|
|
28
|
+
if (this.sessions.has(sessionId)) {
|
|
29
|
+
logger_1.logger.warn({ sessionId }, "Duplicate sessionId detected — closing existing session");
|
|
30
|
+
await this.removeSession(sessionId);
|
|
31
|
+
}
|
|
32
|
+
const server = new index_js_1.Server({ name: config_1.packageName, version: config_1.packageVersion }, { capabilities: { tools: { listChanged: true } } });
|
|
33
|
+
server.oninitialized = () => {
|
|
34
|
+
if (!this.schemaModeDetected) {
|
|
35
|
+
this.schemaModeDetected = true;
|
|
36
|
+
const clientVersion = server.getClientVersion();
|
|
37
|
+
(0, schema_utils_1.setDetectedSchemaMode)(clientVersion?.name);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
await (0, handlers_1.setupHandlers)(server);
|
|
41
|
+
await server.connect(transport);
|
|
42
|
+
const now = Date.now();
|
|
43
|
+
this.sessions.set(sessionId, {
|
|
44
|
+
server,
|
|
45
|
+
sessionId,
|
|
46
|
+
createdAt: now,
|
|
47
|
+
lastActivityAt: now,
|
|
48
|
+
});
|
|
49
|
+
logger_1.logger.info({ sessionId, activeSessions: this.sessions.size }, "Session created");
|
|
50
|
+
return server;
|
|
51
|
+
}
|
|
52
|
+
touchSession(sessionId) {
|
|
53
|
+
const session = this.sessions.get(sessionId);
|
|
54
|
+
if (session) {
|
|
55
|
+
session.lastActivityAt = Date.now();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async removeSession(sessionId) {
|
|
59
|
+
const session = this.sessions.get(sessionId);
|
|
60
|
+
if (!session)
|
|
61
|
+
return;
|
|
62
|
+
this.sessions.delete(sessionId);
|
|
63
|
+
try {
|
|
64
|
+
await session.server.close();
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
logger_1.logger.debug({ err: error, sessionId }, "Error closing session server (may already be closed)");
|
|
68
|
+
}
|
|
69
|
+
logger_1.logger.info({ sessionId, activeSessions: this.sessions.size }, "Session removed");
|
|
70
|
+
}
|
|
71
|
+
async broadcastToolsListChanged() {
|
|
72
|
+
const promises = [];
|
|
73
|
+
for (const [sessionId, session] of this.sessions) {
|
|
74
|
+
promises.push(session.server
|
|
75
|
+
.notification({ method: "notifications/tools/list_changed" })
|
|
76
|
+
.then(() => {
|
|
77
|
+
logger_1.logger.debug({ sessionId }, "Sent tools/list_changed to session");
|
|
78
|
+
})
|
|
79
|
+
.catch((error) => {
|
|
80
|
+
logger_1.logger.debug({ err: error, sessionId }, "Failed to send tools/list_changed to session");
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
await Promise.allSettled(promises);
|
|
84
|
+
logger_1.logger.info({ sessionCount: this.sessions.size }, "Broadcast tools/list_changed to all sessions");
|
|
85
|
+
}
|
|
86
|
+
get activeSessionCount() {
|
|
87
|
+
return this.sessions.size;
|
|
88
|
+
}
|
|
89
|
+
cleanupStaleSessions() {
|
|
90
|
+
const now = Date.now();
|
|
91
|
+
const stale = [];
|
|
92
|
+
for (const [sessionId, session] of this.sessions) {
|
|
93
|
+
if (now - session.lastActivityAt > this.sessionTimeoutMs) {
|
|
94
|
+
stale.push(sessionId);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (stale.length === 0)
|
|
98
|
+
return;
|
|
99
|
+
logger_1.logger.info({ staleCount: stale.length, activeSessions: this.sessions.size }, "Cleaning up stale sessions");
|
|
100
|
+
for (const sessionId of stale) {
|
|
101
|
+
this.removeSession(sessionId).catch((error) => {
|
|
102
|
+
logger_1.logger.error({ err: error, sessionId }, "Error during stale session cleanup");
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async shutdown() {
|
|
107
|
+
if (this.cleanupInterval) {
|
|
108
|
+
clearInterval(this.cleanupInterval);
|
|
109
|
+
this.cleanupInterval = null;
|
|
110
|
+
}
|
|
111
|
+
const sessionIds = [...this.sessions.keys()];
|
|
112
|
+
await Promise.allSettled(sessionIds.map(id => this.removeSession(id)));
|
|
113
|
+
logger_1.logger.info("Session manager shut down");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.SessionManager = SessionManager;
|
|
117
|
+
let sessionManagerInstance = null;
|
|
118
|
+
function getSessionManager() {
|
|
119
|
+
sessionManagerInstance ??= new SessionManager();
|
|
120
|
+
return sessionManagerInstance;
|
|
121
|
+
}
|
|
122
|
+
function resetSessionManager() {
|
|
123
|
+
sessionManagerInstance = null;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session-manager.ts"],"names":[],"mappings":";;;AAiNA,8CAGC;AAKD,kDAEC;AA3ND,wEAAmE;AAEnE,qCAAuD;AACvD,yCAA2C;AAC3C,uDAA6D;AAC7D,qCAAkC;AAGlC,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAgBlD,MAAa,cAAc;IACjB,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC7C,eAAe,GAA0C,IAAI,CAAC;IACrD,gBAAgB,CAAS;IAClC,kBAAkB,GAAG,KAAK,CAAC;IAEnC,YAAY,gBAAyB;QACnC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,0BAA0B,CAAC;IACzE,CAAC;IAMD,KAAK;QAEH,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,EAAE,MAAM,CAAC,CAAC;QAGX,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,eAAM,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,yBAAyB,CAAC,CAAC;IACtF,CAAC;IAMD,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,SAAoB;QAEzD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,eAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,yDAAyD,CAAC,CAAC;YACtF,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB,EAAE,IAAI,EAAE,oBAAW,EAAE,OAAO,EAAE,uBAAc,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CACnD,CAAC;QAIF,MAAM,CAAC,aAAa,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAChD,IAAA,oCAAqB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC;QAGF,MAAM,IAAA,wBAAa,EAAC,MAAM,CAAC,CAAC;QAE5B,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE;YAC3B,MAAM;YACN,SAAS;YACT,SAAS,EAAE,GAAG;YACd,cAAc,EAAE,GAAG;SACpB,CAAC,CAAC;QAEH,eAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAElF,OAAO,MAAM,CAAC;IAChB,CAAC;IAKD,YAAY,CAAC,SAAiB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAKD,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,EACzB,sDAAsD,CACvD,CAAC;QACJ,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACpF,CAAC;IAKD,KAAK,CAAC,yBAAyB;QAC7B,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,MAAM;iBACX,YAAY,CAAC,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;iBAC5D,IAAI,CAAC,GAAG,EAAE;gBACT,eAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACpE,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,8CAA8C,CAAC,CAAC;YAC1F,CAAC,CAAC,CACL,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEnC,eAAM,CAAC,IAAI,CACT,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EACpC,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IAKD,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAKO,oBAAoB;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjD,IAAI,GAAG,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE/B,eAAM,CAAC,IAAI,CACT,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAChE,4BAA4B,CAC7B,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;YAE9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACrD,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,oCAAoC,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAKD,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEvE,eAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;CACF;AAjLD,wCAiLC;AAMD,IAAI,sBAAsB,GAA0B,IAAI,CAAC;AAEzD,SAAgB,iBAAiB;IAC/B,sBAAsB,KAAK,IAAI,cAAc,EAAE,CAAC;IAChD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAKD,SAAgB,mBAAmB;IACjC,sBAAsB,GAAG,IAAI,CAAC;AAChC,CAAC"}
|
|
Binary file
|