@karashiiro/my-cool-proxy 1.0.0 → 1.0.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.
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@karashiiro/my-cool-proxy",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "MCP gateway server that lets you call multiple MCP servers from Lua scripts.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -11,13 +11,29 @@
11
11
  "bin"
12
12
  ],
13
13
  "type": "module",
14
+ "scripts": {
15
+ "format": "prettier --write .",
16
+ "lint": "eslint . --ext .ts,.js && prettier --check .",
17
+ "typecheck": "tsgo --noEmit",
18
+ "build": "tsgo -p tsconfig.build.json",
19
+ "dev": "tsx src/index.ts",
20
+ "test": "vitest run",
21
+ "test:unit": "vitest run --exclude 'src/e2e/**'",
22
+ "test:e2e": "vitest run src/e2e",
23
+ "test:e2e:http": "vitest run src/e2e/http",
24
+ "test:e2e:stdio": "vitest run src/e2e/stdio",
25
+ "test:coverage": "vitest run --coverage",
26
+ "test:watch": "vitest",
27
+ "check": "pnpm run lint && pnpm run typecheck && pnpm run test"
28
+ },
14
29
  "keywords": [],
15
30
  "author": "karashiiro",
16
- "license": "MTI",
31
+ "license": "MIT",
17
32
  "repository": {
18
33
  "type": "git",
19
34
  "url": "https://github.com/karashiiro/my-cool-proxy.git"
20
35
  },
36
+ "packageManager": "pnpm@10.26.0+sha512.3b3f6c725ebe712506c0ab1ad4133cf86b1f4b687effce62a9b38b4d72e3954242e643190fc51fa1642949c735f403debd44f5cb0edd657abe63a8b6a7e1e402",
21
37
  "devDependencies": {
22
38
  "@eslint/js": "^9.39.2",
23
39
  "@suites/di.inversify": "4.0.0-alpha.0",
@@ -48,20 +64,5 @@
48
64
  "reflect-metadata": "^0.2.2",
49
65
  "wasmoon": "^1.16.0",
50
66
  "zod": "^4.3.5"
51
- },
52
- "scripts": {
53
- "format": "prettier --write .",
54
- "lint": "eslint . --ext .ts,.js && prettier --check .",
55
- "typecheck": "tsgo --noEmit",
56
- "build": "tsgo -p tsconfig.build.json",
57
- "dev": "tsx src/index.ts",
58
- "test": "vitest run",
59
- "test:unit": "vitest run --exclude 'src/e2e/**'",
60
- "test:e2e": "vitest run src/e2e",
61
- "test:e2e:http": "vitest run src/e2e/http",
62
- "test:e2e:stdio": "vitest run src/e2e/stdio",
63
- "test:coverage": "vitest run --coverage",
64
- "test:watch": "vitest",
65
- "check": "pnpm run lint && pnpm run typecheck && pnpm run test"
66
67
  }
67
- }
68
+ }
@@ -1,21 +0,0 @@
1
- import type { IMCPClientManager, ITransportManager, ILogger, ServerConfig, IMCPSessionController } from "../types/interfaces.js";
2
- import type { IToolRegistry } from "../tools/tool-registry.js";
3
- import type { ResourceAggregationService } from "../mcp/resource-aggregation-service.js";
4
- import type { PromptAggregationService } from "../mcp/prompt-aggregation-service.js";
5
- export declare class MCPSessionController implements IMCPSessionController {
6
- private clientPool;
7
- private transportManager;
8
- private toolRegistry;
9
- private resourceAggregation;
10
- private promptAggregation;
11
- private config;
12
- private logger;
13
- private connectingTransports;
14
- private connectedTransports;
15
- private gatewayServers;
16
- constructor(clientPool: IMCPClientManager, transportManager: ITransportManager, toolRegistry: IToolRegistry, resourceAggregation: ResourceAggregationService, promptAggregation: PromptAggregationService, config: ServerConfig, logger: ILogger);
17
- handleRequest(req: Request): Promise<Response>;
18
- private initializeClientsForSession;
19
- private connectGatewayServer;
20
- }
21
- //# sourceMappingURL=mcp-session-controller.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-session-controller.d.ts","sourceRoot":"","sources":["../../src/controllers/mcp-session-controller.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAiBrF,qBACa,oBAAqB,YAAW,qBAAqB;IAc7B,OAAO,CAAC,UAAU;IAEnD,OAAO,CAAC,gBAAgB;IACK,OAAO,CAAC,YAAY;IAEjD,OAAO,CAAC,mBAAmB;IAE3B,OAAO,CAAC,iBAAiB;IACI,OAAO,CAAC,MAAM;IACpB,OAAO,CAAC,MAAM;IArBvC,OAAO,CAAC,oBAAoB,CAC0B;IAEtD,OAAO,CAAC,mBAAmB,CAC+B;IAE1D,OAAO,CAAC,cAAc,CAGlB;IAEJ,YAC2C,UAAU,EAAE,iBAAiB,EAE9D,gBAAgB,EAAE,iBAAiB,EACN,YAAY,EAAE,aAAa,EAExD,mBAAmB,EAAE,0BAA0B,EAE/C,iBAAiB,EAAE,wBAAwB,EACd,MAAM,EAAE,YAAY,EAC1B,MAAM,EAAE,OAAO,EAC5C;IAaE,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+CnD;YASa,2BAA2B;YAoC3B,oBAAoB;CAuBnC"}
@@ -1,100 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- import { injectable } from "inversify";
14
- import { $inject } from "../container/decorators.js";
15
- import { TYPES } from "../types/index.js";
16
- import { MCPGatewayServer } from "../mcp/gateway-server.js";
17
- let MCPSessionController = class MCPSessionController {
18
- clientPool;
19
- transportManager;
20
- toolRegistry;
21
- resourceAggregation;
22
- promptAggregation;
23
- config;
24
- logger;
25
- connectingTransports = new Set();
26
- connectedTransports = new WeakSet();
27
- gatewayServers = new WeakMap();
28
- constructor(clientPool, transportManager, toolRegistry, resourceAggregation, promptAggregation, config, logger) {
29
- this.clientPool = clientPool;
30
- this.transportManager = transportManager;
31
- this.toolRegistry = toolRegistry;
32
- this.resourceAggregation = resourceAggregation;
33
- this.promptAggregation = promptAggregation;
34
- this.config = config;
35
- this.logger = logger;
36
- }
37
- async handleRequest(req) {
38
- try {
39
- const sessionId = req.headers.get("mcp-session-id") ?? undefined;
40
- const transport = this.transportManager.getOrCreateForRequest(sessionId);
41
- const clientSession = sessionId || "default";
42
- await this.initializeClientsForSession(clientSession);
43
- if (!this.connectedTransports.has(transport)) {
44
- if (!this.connectingTransports.has(transport)) {
45
- this.connectingTransports.add(transport);
46
- try {
47
- await this.connectGatewayServer(transport, clientSession);
48
- this.connectedTransports.add(transport);
49
- }
50
- finally {
51
- this.connectingTransports.delete(transport);
52
- }
53
- }
54
- else {
55
- while (this.connectingTransports.has(transport)) {
56
- await new Promise((resolve) => setTimeout(resolve, 10));
57
- }
58
- }
59
- }
60
- return await transport.handleRequest(req);
61
- }
62
- catch (error) {
63
- this.logger.error(`Error handling MCP request: ${error}`, error);
64
- throw error;
65
- }
66
- }
67
- async initializeClientsForSession(sessionId) {
68
- for (const [name, clientConfig] of Object.entries(this.config.mcpClients)) {
69
- if (clientConfig.type === "http") {
70
- await this.clientPool.addHttpClient(name, clientConfig.url, sessionId, clientConfig.headers, clientConfig.allowedTools);
71
- }
72
- else if (clientConfig.type === "stdio") {
73
- await this.clientPool.addStdioClient(name, clientConfig.command, sessionId, clientConfig.args, clientConfig.env, clientConfig.allowedTools);
74
- }
75
- else {
76
- const unknownConfig = clientConfig;
77
- this.logger.error(`Unsupported client type '${unknownConfig.type}' for '${name}'`);
78
- }
79
- }
80
- }
81
- async connectGatewayServer(transport, sessionId) {
82
- this.logger.info(`Creating new gateway server instance for session ${sessionId}`);
83
- const gatewayServer = new MCPGatewayServer(this.toolRegistry, this.clientPool, this.logger, this.resourceAggregation, this.promptAggregation);
84
- this.gatewayServers.set(transport, gatewayServer);
85
- await gatewayServer.getServer().connect(transport);
86
- }
87
- };
88
- MCPSessionController = __decorate([
89
- injectable(),
90
- __param(0, $inject(TYPES.MCPClientManager)),
91
- __param(1, $inject(TYPES.TransportManager)),
92
- __param(2, $inject(TYPES.ToolRegistry)),
93
- __param(3, $inject(TYPES.ResourceAggregationService)),
94
- __param(4, $inject(TYPES.PromptAggregationService)),
95
- __param(5, $inject(TYPES.ServerConfig)),
96
- __param(6, $inject(TYPES.Logger)),
97
- __metadata("design:paramtypes", [Object, Object, Object, Function, Function, Object, Object])
98
- ], MCPSessionController);
99
- export { MCPSessionController };
100
- //# sourceMappingURL=mcp-session-controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-session-controller.js","sourceRoot":"","sources":["../../src/controllers/mcp-session-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAQ1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAqBrD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAcY,UAAU;IAE3C,gBAAgB;IACa,YAAY;IAEzC,mBAAmB;IAEnB,iBAAiB;IACY,MAAM;IACZ,MAAM;IArB/B,oBAAoB,GAC1B,IAAI,GAAG,EAA4C,CAAC;IAE9C,mBAAmB,GACzB,IAAI,OAAO,EAA4C,CAAC;IAElD,cAAc,GAAG,IAAI,OAAO,EAGjC,CAAC;IAEJ,YAC2C,UAA6B,EAE9D,gBAAmC,EACN,YAA2B,EAExD,mBAA+C,EAE/C,iBAA2C,EACd,MAAoB,EAC1B,MAAe,EAC9C;0BAVyC,UAAU;gCAE3C,gBAAgB;4BACa,YAAY;mCAEzC,mBAAmB;iCAEnB,iBAAiB;sBACY,MAAM;sBACZ,MAAM;IACpC,CAAC;IAaJ,KAAK,CAAC,aAAa,CAAC,GAAY,EAAqB;QACnD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC;YAGjE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAMzE,MAAM,aAAa,GAAG,SAAS,IAAI,SAAS,CAAC;YAG7C,MAAM,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;YAItD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAE9C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACzC,IAAI,CAAC;wBAEH,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;wBAE1D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC1C,CAAC;4BAAS,CAAC;wBAET,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBAGN,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;YACH,CAAC;YAID,OAAO,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,EAAE,EAAE,KAAc,CAAC,CAAC;YAC1E,MAAM,KAAK,CAAC;QACd,CAAC;IAAA,CACF;IASO,KAAK,CAAC,2BAA2B,CAAC,SAAiB,EAAiB;QAC1E,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1E,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CACjC,IAAI,EACJ,YAAY,CAAC,GAAG,EAChB,SAAS,EACT,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,YAAY,CAC1B,CAAC;YACJ,CAAC;iBAAM,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAClC,IAAI,EACJ,YAAY,CAAC,OAAO,EACpB,SAAS,EACT,YAAY,CAAC,IAAI,EACjB,YAAY,CAAC,GAAG,EAChB,YAAY,CAAC,YAAY,CAC1B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBAEN,MAAM,aAAa,GAAG,YAAgC,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,4BAA4B,aAAa,CAAC,IAAI,UAAU,IAAI,GAAG,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;IAAA,CACF;IASO,KAAK,CAAC,oBAAoB,CAChC,SAAmD,EACnD,SAAiB,EACF;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,oDAAoD,SAAS,EAAE,CAChE,CAAC;QAGF,MAAM,aAAa,GAAG,IAAI,gBAAgB,CACxC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,iBAAiB,CACvB,CAAC;QAGF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAGlD,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAAA,CACpD;CACF,CAAA;AAxJY,oBAAoB;IADhC,UAAU,EAAE;IAeR,WAAA,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAC/B,WAAA,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAE/B,WAAA,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAC3B,WAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAEzC,WAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAEvC,WAAA,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAC3B,WAAA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;;GAvBb,oBAAoB,CAwJhC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=runtime-infinite-loop-worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-infinite-loop-worker.d.ts","sourceRoot":"","sources":["../../src/lua/runtime-infinite-loop-worker.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import { parentPort } from "node:worker_threads";
2
- import { WasmoonRuntime } from "./runtime.js";
3
- const logger = {
4
- info: (msg) => console.log(`[Worker] ${msg}`),
5
- error: (msg, err) => console.error(`[Worker] ${msg}`, err || ""),
6
- debug: () => {
7
- },
8
- };
9
- async function runInfiniteLoopTest() {
10
- const runtime = new WasmoonRuntime(logger);
11
- const infiniteLoopScript = `
12
- while true do
13
- -- This should hang forever
14
- end
15
- `;
16
- try {
17
- await runtime.executeScript(infiniteLoopScript, new Map());
18
- parentPort?.postMessage({ type: "completed" });
19
- }
20
- catch (error) {
21
- parentPort?.postMessage({
22
- type: "error",
23
- message: error.message,
24
- });
25
- }
26
- }
27
- runInfiniteLoopTest().catch((error) => {
28
- parentPort?.postMessage({
29
- type: "error",
30
- message: error.message,
31
- });
32
- });
33
- //# sourceMappingURL=runtime-infinite-loop-worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-infinite-loop-worker.js","sourceRoot":"","sources":["../../src/lua/runtime-infinite-loop-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC;IACrD,KAAK,EAAE,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAClC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;IAC7C,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,CAEb;CACF,CAAC;AAEF,KAAK,UAAU,mBAAmB,GAAG;IACnC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAE3C,MAAM,kBAAkB,GAAG;;;;GAI1B,CAAC;IAEF,IAAI,CAAC;QAEH,MAAM,OAAO,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3D,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,EAAE,WAAW,CAAC;YACtB,IAAI,EAAE,OAAO;YACb,OAAO,EAAG,KAAe,CAAC,OAAO;SAClC,CAAC,CAAC;IACL,CAAC;AAAA,CACF;AAGD,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IACrC,UAAU,EAAE,WAAW,CAAC;QACtB,IAAI,EAAE,OAAO;QACb,OAAO,EAAG,KAAe,CAAC,OAAO;KAClC,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC"}
@@ -1,15 +0,0 @@
1
- import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
2
- import type { ILogger, ITransportManager } from "../types/interfaces.js";
3
- export declare class TransportManager implements ITransportManager {
4
- private logger;
5
- private transports;
6
- private pendingCreations;
7
- private transportToSessionId;
8
- constructor(logger: ILogger);
9
- getOrCreate(sessionId: string): WebStandardStreamableHTTPServerTransport;
10
- has(sessionId: string): boolean;
11
- getOrCreateForRequest(sessionId?: string): WebStandardStreamableHTTPServerTransport;
12
- remove(sessionId: string): void;
13
- closeAll(): Promise<void>;
14
- }
15
- //# sourceMappingURL=transport-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/transport-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AACzH,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIzE,qBACa,gBAAiB,YAAW,iBAAiB;IAgBrB,OAAO,CAAC,MAAM;IAfjD,OAAO,CAAC,UAAU,CAGd;IAEJ,OAAO,CAAC,gBAAgB,CAGpB;IAEJ,OAAO,CAAC,oBAAoB,CAGxB;IAEJ,YAA2C,MAAM,EAAE,OAAO,EAAI;IAE9D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,wCAAwC,CA8DvE;IAED,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9B;IAED,qBAAqB,CACnB,SAAS,CAAC,EAAE,MAAM,GACjB,wCAAwC,CAkB1C;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAM9B;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB9B;CACF"}
@@ -1,105 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- import { injectable } from "inversify";
14
- import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
15
- import { $inject } from "../container/decorators.js";
16
- import { TYPES } from "../types/index.js";
17
- let TransportManager = class TransportManager {
18
- logger;
19
- transports = new Map();
20
- pendingCreations = new Map();
21
- transportToSessionId = new WeakMap();
22
- constructor(logger) {
23
- this.logger = logger;
24
- }
25
- getOrCreate(sessionId) {
26
- const existingTransport = this.transports.get(sessionId);
27
- if (existingTransport) {
28
- this.logger.debug(`Reusing existing transport for session ${sessionId}`);
29
- return existingTransport;
30
- }
31
- const pendingTransport = this.pendingCreations.get(sessionId);
32
- if (pendingTransport) {
33
- this.logger.debug(`Reusing pending transport creation for session ${sessionId}`);
34
- return pendingTransport;
35
- }
36
- const transport = new WebStandardStreamableHTTPServerTransport({
37
- sessionIdGenerator: () => sessionId,
38
- onsessioninitialized: (sid) => {
39
- this.logger.info(`Transport session initialized: ${sid}`);
40
- },
41
- });
42
- this.pendingCreations.set(sessionId, transport);
43
- this.logger.info(`Creating new transport for session ${sessionId}`);
44
- this.transportToSessionId.set(transport, sessionId);
45
- transport.onclose = () => {
46
- const sid = transport.sessionId;
47
- const originalSessionId = this.transportToSessionId.get(transport);
48
- if (sid) {
49
- this.transports.delete(sid);
50
- this.logger.info(`Transport session closed: ${sid}`);
51
- }
52
- if (originalSessionId && originalSessionId !== sid) {
53
- this.transports.delete(originalSessionId);
54
- this.logger.info(`Cleaned up original session reference: ${originalSessionId}`);
55
- }
56
- };
57
- this.transports.set(sessionId, transport);
58
- this.pendingCreations.delete(sessionId);
59
- return transport;
60
- }
61
- has(sessionId) {
62
- return this.transports.has(sessionId);
63
- }
64
- getOrCreateForRequest(sessionId) {
65
- if (sessionId && this.has(sessionId)) {
66
- this.logger.debug(`Reusing transport for session ${sessionId}`);
67
- return this.getOrCreate(sessionId);
68
- }
69
- const transportKey = sessionId || `pending-${Date.now()}-${Math.random()}`;
70
- if (sessionId) {
71
- this.logger.info(`Creating new transport for session ${sessionId}`);
72
- }
73
- else {
74
- this.logger.info(`Creating new transport for new connection`);
75
- }
76
- return this.getOrCreate(transportKey);
77
- }
78
- remove(sessionId) {
79
- const transport = this.transports.get(sessionId);
80
- if (transport) {
81
- this.transports.delete(sessionId);
82
- this.logger.info(`Removed transport for session ${sessionId}`);
83
- }
84
- }
85
- async closeAll() {
86
- this.logger.info(`Closing all ${this.transports.size} transports...`);
87
- for (const [sessionId] of this.transports) {
88
- try {
89
- this.logger.debug(`Closing transport for session ${sessionId}`);
90
- }
91
- catch (error) {
92
- this.logger.error(`Error closing transport for session ${sessionId}`, error);
93
- }
94
- }
95
- this.transports.clear();
96
- this.logger.info("All transports closed");
97
- }
98
- };
99
- TransportManager = __decorate([
100
- injectable(),
101
- __param(0, $inject(TYPES.Logger)),
102
- __metadata("design:paramtypes", [Object])
103
- ], TransportManager);
104
- export { TransportManager };
105
- //# sourceMappingURL=transport-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport-manager.js","sourceRoot":"","sources":["../../src/mcp/transport-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AAEzH,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGnC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAgBgB,MAAM;IAfzC,UAAU,GAAG,IAAI,GAAG,EAGzB,CAAC;IAEI,gBAAgB,GAAG,IAAI,GAAG,EAG/B,CAAC;IAEI,oBAAoB,GAAG,IAAI,OAAO,EAGvC,CAAC;IAEJ,YAA2C,MAAe,EAAE;sBAAjB,MAAM;IAAY,CAAC;IAE9D,WAAW,CAAC,SAAiB,EAA4C;QAEvE,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,SAAS,EAAE,CAAC,CAAC;YACzE,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAGD,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,kDAAkD,SAAS,EAAE,CAC9D,CAAC;YACF,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAKD,MAAM,SAAS,GAAG,IAAI,wCAAwC,CAAC;YAC7D,kBAAkB,EAAE,GAAG,EAAE,CAAC,SAAS;YACnC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;YAAA,CAG3D;SACF,CAAC,CAAC;QAGH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;QAGpE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEpD,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC;YAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAGnE,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,iBAAiB,IAAI,iBAAiB,KAAK,GAAG,EAAE,CAAC;gBACnD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,0CAA0C,iBAAiB,EAAE,CAC9D,CAAC;YACJ,CAAC;QAAA,CACF,CAAC;QAGF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAG1C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAExC,OAAO,SAAS,CAAC;IAAA,CAClB;IAED,GAAG,CAAC,SAAiB,EAAW;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAAA,CACvC;IAED,qBAAqB,CACnB,SAAkB,EACwB;QAE1C,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;QAID,MAAM,YAAY,GAAG,SAAS,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAE3E,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAAA,CACvC;IAED,MAAM,CAAC,SAAiB,EAAQ;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC;IAAA,CACF;IAED,KAAK,CAAC,QAAQ,GAAkB;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,CAAC;QAEtE,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,uCAAuC,SAAS,EAAE,EAClD,KAAc,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAAA,CAC3C;CACF,CAAA;AAtIY,gBAAgB;IAD5B,UAAU,EAAE;IAiBE,WAAA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;;GAhBvB,gBAAgB,CAsI5B"}
@@ -1,3 +0,0 @@
1
- export declare function calculateJsonSize(obj: unknown): number;
2
- export declare function generateDeepStructure(obj: unknown, depth?: number, maxDepth?: number): string;
3
- //# sourceMappingURL=response-size-validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response-size-validator.d.ts","sourceRoot":"","sources":["../../src/utils/response-size-validator.ts"],"names":[],"mappings":"AAWA,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAGtD;AAoBD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,EACZ,KAAK,SAAI,EACT,QAAQ,SAAK,GACZ,MAAM,CAgDR"}
@@ -1,39 +0,0 @@
1
- export function calculateJsonSize(obj) {
2
- const serialized = JSON.stringify(obj, null, 2);
3
- return Buffer.byteLength(serialized, "utf8");
4
- }
5
- export function generateDeepStructure(obj, depth = 0, maxDepth = 10) {
6
- if (obj === null)
7
- return "null";
8
- if (obj === undefined)
9
- return "undefined";
10
- const type = typeof obj;
11
- if (type !== "object")
12
- return type;
13
- if (depth >= maxDepth)
14
- return "...";
15
- if (Array.isArray(obj)) {
16
- if (obj.length === 0)
17
- return "Array(0) []";
18
- const firstElement = generateDeepStructure(obj[0], depth + 1, maxDepth);
19
- return `Array(${obj.length}) [${firstElement}]`;
20
- }
21
- const keys = Object.keys(obj);
22
- if (keys.length === 0)
23
- return "{}";
24
- const maxKeys = 15;
25
- const keysToShow = keys.slice(0, maxKeys);
26
- const hasMore = keys.length > maxKeys;
27
- const indent = " ".repeat(depth + 1);
28
- const entries = keysToShow.map((key) => {
29
- const value = obj[key];
30
- const valueStructure = generateDeepStructure(value, depth + 1, maxDepth);
31
- return `${indent}${key}: ${valueStructure}`;
32
- });
33
- if (hasMore) {
34
- entries.push(`${indent}...`);
35
- }
36
- const closingIndent = " ".repeat(depth);
37
- return `{\n${entries.join(",\n")}\n${closingIndent}}`;
38
- }
39
- //# sourceMappingURL=response-size-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response-size-validator.js","sourceRoot":"","sources":["../../src/utils/response-size-validator.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,iBAAiB,CAAC,GAAY,EAAU;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAAA,CAC9C;AAoBD,MAAM,UAAU,qBAAqB,CACnC,GAAY,EACZ,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,EAAE,EACL;IAER,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAGhC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAG1C,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC;IAGxB,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAGnC,IAAI,KAAK,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IAGpC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,aAAa,CAAC;QAG3C,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxE,OAAO,SAAS,GAAG,CAAC,MAAM,MAAM,YAAY,GAAG,CAAC;IAClD,CAAC;IAGD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAGnC,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IAGtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;QACzE,OAAO,GAAG,MAAM,GAAG,GAAG,KAAK,cAAc,EAAE,CAAC;IAAA,CAC7C,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,aAAa,GAAG,CAAC;AAAA,CACvD"}