@loop_ouroboros/mcp-hub-lite 1.2.6 → 1.2.7
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/CHANGELOG.md +659 -640
- package/dist/client/assets/HomeView-CgEri1kD.js +1 -0
- package/dist/client/assets/{ResourceDetailView-BGBtmsyc.js → ResourceDetailView-B8Qo1_jK.js} +1 -1
- package/dist/client/assets/ResourcesView-B12FzUdo.js +1 -0
- package/dist/client/assets/ServerDashboard-B3O-crvv.js +1 -0
- package/dist/client/assets/ServerDetail-Bz5_9yOY.js +2 -0
- package/dist/client/assets/{ServerDetail-CtnNKJGx.css → ServerDetail-CXg8rI3q.css} +1 -1
- package/dist/client/assets/{ServerListView-C7kcd4GC.js → ServerListView-SlZN8ppC.js} +2 -2
- package/dist/client/assets/{ServerStatusTags.vue_vue_type_script_setup_true_lang-BHhwEuGe.js → ServerStatusTags.vue_vue_type_script_setup_true_lang-DmGg4uuV.js} +1 -1
- package/dist/client/assets/SettingsView-D8fiOG0O.js +1 -0
- package/dist/client/assets/ToolCallDialog-DYEdhnCk.js +1 -0
- package/dist/client/assets/ToolsView-BreAl-yn.js +1 -0
- package/dist/client/assets/{_baseClone-kbJbcBJT.js → _baseClone-BYxCbA_9.js} +1 -1
- package/dist/client/assets/{el-form-item-iQ0G8e97.js → el-form-item-ySymCPMr.js} +2 -2
- package/dist/client/assets/el-input-C85p6Nqj.js +1 -0
- package/dist/client/assets/el-loading-DIjKEx81.js +1 -0
- package/dist/client/assets/{el-overlay-Cy5xg31y.js → el-overlay-B_CxiSem.js} +1 -1
- package/dist/client/assets/el-radio-group-BjkTCPRf.js +1 -0
- package/dist/client/assets/el-skeleton-item-CupTKK6n.js +1 -0
- package/dist/client/assets/{el-switch-KpjV93lm.js → el-switch-BosIJ9jf.js} +1 -1
- package/dist/client/assets/el-tab-pane-BydxdJoc.js +1 -0
- package/dist/client/assets/{el-table-column-fofd_2n-.js → el-table-column-DV5TZOUW.js} +1 -1
- package/dist/client/assets/index-kC4mf0Vo.js +2 -0
- package/dist/client/assets/{index-DpH6ZSbs.css → index-xJkq2euk.css} +1 -1
- package/dist/client/assets/omit-DxDGRttI.js +1 -0
- package/dist/client/assets/{raf-MWAHt9ca.js → raf-Y9AoxecD.js} +1 -1
- package/dist/client/assets/{vue-vendor-CbgVSHIh.js → vue-vendor-Dwcr0jep.js} +1 -1
- package/dist/client/index.html +3 -3
- package/dist/server/shared/types/websocket.types.d.ts +28 -19
- package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
- package/dist/server/shared/types/websocket.types.js +3 -2
- package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
- package/dist/server/src/api/ws/ws-handler.js +4 -3
- package/dist/server/src/app.d.ts.map +1 -1
- package/dist/server/src/app.js +46 -0
- package/dist/server/src/models/event.model.d.ts +0 -13
- package/dist/server/src/models/event.model.d.ts.map +1 -1
- package/dist/server/src/models/server.model.d.ts +0 -29
- package/dist/server/src/models/server.model.d.ts.map +1 -1
- package/dist/server/src/models/types.d.ts +1 -70
- package/dist/server/src/models/types.d.ts.map +1 -1
- package/dist/server/src/models/types.js +1 -67
- package/dist/server/src/server/dev-server.js +24 -6
- package/dist/server/src/services/connection/connection-manager.d.ts +13 -0
- package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
- package/dist/server/src/services/connection/connection-manager.js +122 -5
- package/dist/server/src/services/event-bus.service.d.ts +0 -4
- package/dist/server/src/services/event-bus.service.d.ts.map +1 -1
- package/dist/server/src/services/event-bus.service.js +1 -6
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +1 -0
- package/dist/server/src/services/mcp-oauth/index.d.ts +5 -0
- package/dist/server/src/services/mcp-oauth/index.d.ts.map +1 -0
- package/dist/server/src/services/mcp-oauth/index.js +3 -0
- package/dist/server/src/services/mcp-oauth/oauth-callback-server.d.ts +19 -0
- package/dist/server/src/services/mcp-oauth/oauth-callback-server.d.ts.map +1 -0
- package/dist/server/src/services/mcp-oauth/oauth-callback-server.js +100 -0
- package/dist/server/src/services/mcp-oauth/oauth-provider.d.ts +42 -0
- package/dist/server/src/services/mcp-oauth/oauth-provider.d.ts.map +1 -0
- package/dist/server/src/services/mcp-oauth/oauth-provider.js +121 -0
- package/dist/server/src/services/mcp-oauth/oauth-token-storage.d.ts +23 -0
- package/dist/server/src/services/mcp-oauth/oauth-token-storage.d.ts.map +1 -0
- package/dist/server/src/services/mcp-oauth/oauth-token-storage.js +92 -0
- package/dist/server/src/services/mcp-oauth/oauth-types.d.ts +21 -0
- package/dist/server/src/services/mcp-oauth/oauth-types.d.ts.map +1 -0
- package/dist/server/src/services/mcp-oauth/oauth-types.js +4 -0
- package/dist/server/src/utils/network-security.d.ts +33 -0
- package/dist/server/src/utils/network-security.d.ts.map +1 -0
- package/dist/server/src/utils/network-security.js +83 -0
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts +12 -1
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/streamable-http-transport.js +20 -1
- package/dist/server/src/utils/transports/transport-factory.d.ts +2 -0
- package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
- package/dist/server/src/utils/transports/transport-factory.js +17 -2
- package/dist/server/src/utils/transports/transport.interface.d.ts +2 -0
- package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
- package/dist/server/tests/unit/utils/network-security.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/network-security.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/network-security.test.js +123 -0
- package/dist/server/vite.config.js +1 -1
- package/package.json +111 -111
- package/dist/client/assets/HomeView-BnO4yIT9.js +0 -1
- package/dist/client/assets/ResourcesView-B5Xg0ynh.js +0 -1
- package/dist/client/assets/ServerDashboard-DYAVrrUk.js +0 -1
- package/dist/client/assets/ServerDetail-q94ZFfjL.js +0 -2
- package/dist/client/assets/SettingsView-BM6P5yrT.js +0 -1
- package/dist/client/assets/ToolCallDialog-BoAGxlB5.js +0 -1
- package/dist/client/assets/ToolsView-lqFhr7Bk.js +0 -1
- package/dist/client/assets/el-input-DkJq57wP.js +0 -1
- package/dist/client/assets/el-loading-C3v6a9xV.js +0 -1
- package/dist/client/assets/el-radio-group-C9QUL5mm.js +0 -1
- package/dist/client/assets/el-skeleton-item-Bbmpc0Xz.js +0 -1
- package/dist/client/assets/el-tab-pane-YsYuBcem.js +0 -1
- package/dist/client/assets/index-5tzIwwtS.js +0 -1
- package/dist/client/assets/index-MqHvQjDP.js +0 -2
- package/dist/client/assets/omit-CB4hTeTH.js +0 -1
- package/dist/client/assets/typescript-Bp3YSIOJ.js +0 -1
package/dist/client/index.html
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<link rel="icon" href="/favicon.ico" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>MCP Server Manager</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/vue-vendor-
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-kC4mf0Vo.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/vue-vendor-Dwcr0jep.js">
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/index-xJkq2euk.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<div id="app"></div>
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { Tool } from '../models/tool.model';
|
|
6
6
|
import type { Resource } from '../models/resource.model';
|
|
7
|
+
import type { ServerInstance } from '../models/server.model';
|
|
7
8
|
import type { LogLevel } from './common.types';
|
|
8
9
|
export declare const WEB_SOCKET_EVENT_TYPES: {
|
|
9
10
|
readonly SERVER_STATUS: "server-status";
|
|
@@ -13,17 +14,18 @@ export declare const WEB_SOCKET_EVENT_TYPES: {
|
|
|
13
14
|
readonly SERVER_ADDED: "server-added";
|
|
14
15
|
readonly SERVER_UPDATED: "server-updated";
|
|
15
16
|
readonly SERVER_DELETED: "server-deleted";
|
|
17
|
+
readonly SERVER_INSTANCE_ADDED: "server-instance-added";
|
|
18
|
+
readonly SERVER_INSTANCE_UPDATED: "server-instance-updated";
|
|
19
|
+
readonly SERVER_INSTANCE_DELETED: "server-instance-deleted";
|
|
16
20
|
readonly SERVER_CONNECTED: "server-connected";
|
|
17
21
|
readonly SERVER_DISCONNECTED: "server-disconnected";
|
|
18
22
|
readonly TOOL_CALL_STARTED: "tool-call-started";
|
|
19
23
|
readonly TOOL_CALL_COMPLETED: "tool-call-completed";
|
|
20
24
|
readonly TOOL_CALL_ERROR: "tool-call-error";
|
|
21
25
|
readonly CONFIGURATION_UPDATED: "configuration-updated";
|
|
22
|
-
readonly CLIENT_CONNECTED: "client-connected";
|
|
23
|
-
readonly CLIENT_DISCONNECTED: "client-disconnected";
|
|
24
26
|
readonly PONG: "pong";
|
|
25
27
|
};
|
|
26
|
-
export declare const VALID_WS_EVENT_TYPES: ("server-status" | "server-connected" | "server-disconnected" | "server-added" | "server-updated" | "server-deleted" | "tools" | "tool-call-started" | "tool-call-completed" | "tool-call-error" | "resources" | "log" | "configuration-updated" | "
|
|
28
|
+
export declare const VALID_WS_EVENT_TYPES: ("server-status" | "server-connected" | "server-disconnected" | "server-added" | "server-updated" | "server-deleted" | "server-instance-added" | "server-instance-updated" | "server-instance-deleted" | "tools" | "tool-call-started" | "tool-call-completed" | "tool-call-error" | "resources" | "log" | "configuration-updated" | "pong")[];
|
|
27
29
|
export type WebSocketEventType = (typeof VALID_WS_EVENT_TYPES)[number];
|
|
28
30
|
export interface SubscribeMessage {
|
|
29
31
|
type: 'subscribe';
|
|
@@ -95,6 +97,28 @@ export interface ServerDeletedEvent {
|
|
|
95
97
|
type: 'server-deleted';
|
|
96
98
|
data: string;
|
|
97
99
|
}
|
|
100
|
+
export interface ServerInstanceAddedEvent {
|
|
101
|
+
type: 'server-instance-added';
|
|
102
|
+
data: {
|
|
103
|
+
name: string;
|
|
104
|
+
instance: ServerInstance;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export interface ServerInstanceUpdatedEvent {
|
|
108
|
+
type: 'server-instance-updated';
|
|
109
|
+
data: {
|
|
110
|
+
name: string;
|
|
111
|
+
index: number;
|
|
112
|
+
updates: Partial<ServerInstance>;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export interface ServerInstanceDeletedEvent {
|
|
116
|
+
type: 'server-instance-deleted';
|
|
117
|
+
data: {
|
|
118
|
+
name: string;
|
|
119
|
+
index: number;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
98
122
|
export interface ServerConnectedEvent {
|
|
99
123
|
type: 'server-connected';
|
|
100
124
|
data: {
|
|
@@ -159,26 +183,11 @@ export interface ConfigurationUpdatedEvent {
|
|
|
159
183
|
changes?: unknown;
|
|
160
184
|
};
|
|
161
185
|
}
|
|
162
|
-
export interface ClientConnectedEvent {
|
|
163
|
-
type: 'client-connected';
|
|
164
|
-
data: {
|
|
165
|
-
timestamp: number;
|
|
166
|
-
client: unknown;
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
export interface ClientDisconnectedEvent {
|
|
170
|
-
type: 'client-disconnected';
|
|
171
|
-
data: {
|
|
172
|
-
timestamp: number;
|
|
173
|
-
clientId: string;
|
|
174
|
-
client?: unknown;
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
186
|
export interface ErrorMessage {
|
|
178
187
|
type: 'error';
|
|
179
188
|
data: {
|
|
180
189
|
message: string;
|
|
181
190
|
};
|
|
182
191
|
}
|
|
183
|
-
export type ServerMessage = ServerStatusEvent | LogEvent | ToolsEvent | ResourcesEvent | ServerAddedEvent | ServerUpdatedEvent | ServerDeletedEvent | ServerConnectedEvent | ServerDisconnectedEvent | PongMessage | ToolCallStartedEvent | ToolCallCompletedEvent | ToolCallErrorEvent | ConfigurationUpdatedEvent |
|
|
192
|
+
export type ServerMessage = ServerStatusEvent | LogEvent | ToolsEvent | ResourcesEvent | ServerAddedEvent | ServerUpdatedEvent | ServerDeletedEvent | ServerInstanceAddedEvent | ServerInstanceUpdatedEvent | ServerInstanceDeletedEvent | ServerConnectedEvent | ServerDisconnectedEvent | PongMessage | ToolCallStartedEvent | ToolCallCompletedEvent | ToolCallErrorEvent | ConfigurationUpdatedEvent | ErrorMessage;
|
|
184
193
|
//# sourceMappingURL=websocket.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/websocket.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG3D,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"websocket.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/websocket.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,14 +11,15 @@ export const WEB_SOCKET_EVENT_TYPES = {
|
|
|
11
11
|
SERVER_ADDED: 'server-added',
|
|
12
12
|
SERVER_UPDATED: 'server-updated',
|
|
13
13
|
SERVER_DELETED: 'server-deleted',
|
|
14
|
+
SERVER_INSTANCE_ADDED: 'server-instance-added',
|
|
15
|
+
SERVER_INSTANCE_UPDATED: 'server-instance-updated',
|
|
16
|
+
SERVER_INSTANCE_DELETED: 'server-instance-deleted',
|
|
14
17
|
SERVER_CONNECTED: 'server-connected',
|
|
15
18
|
SERVER_DISCONNECTED: 'server-disconnected',
|
|
16
19
|
TOOL_CALL_STARTED: 'tool-call-started',
|
|
17
20
|
TOOL_CALL_COMPLETED: 'tool-call-completed',
|
|
18
21
|
TOOL_CALL_ERROR: 'tool-call-error',
|
|
19
22
|
CONFIGURATION_UPDATED: 'configuration-updated',
|
|
20
|
-
CLIENT_CONNECTED: 'client-connected',
|
|
21
|
-
CLIENT_DISCONNECTED: 'client-disconnected',
|
|
22
23
|
PONG: 'pong'
|
|
23
24
|
};
|
|
24
25
|
// Valid event type array
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-handler.d.ts","sourceRoot":"","sources":["../../../../../src/api/ws/ws-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAc,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"ws-handler.d.ts","sourceRoot":"","sources":["../../../../../src/api/ws/ws-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAc,MAAM,gCAAgC,CAAC;AAiC7E,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IALlB,OAAO,CAAC,aAAa,CAAkD;IACvE,OAAO,CAAC,iBAAiB,CAAC,CAAiB;gBAGjC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,eAAe;IAGnC;;OAEG;IACH,UAAU,IAAI,IAAI;IAWlB;;OAEG;IACH,OAAO,CAAC,aAAa;IA6BrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,IAAI;IAMZ;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,aAAa;CAKtB"}
|
|
@@ -36,15 +36,16 @@ const eventTypeMap = {
|
|
|
36
36
|
[EventTypes.SERVER_ADDED]: WEB_SOCKET_EVENT_TYPES.SERVER_ADDED,
|
|
37
37
|
[EventTypes.SERVER_UPDATED]: WEB_SOCKET_EVENT_TYPES.SERVER_UPDATED,
|
|
38
38
|
[EventTypes.SERVER_DELETED]: WEB_SOCKET_EVENT_TYPES.SERVER_DELETED,
|
|
39
|
+
[EventTypes.SERVER_INSTANCE_ADDED]: WEB_SOCKET_EVENT_TYPES.SERVER_INSTANCE_ADDED,
|
|
40
|
+
[EventTypes.SERVER_INSTANCE_UPDATED]: WEB_SOCKET_EVENT_TYPES.SERVER_INSTANCE_UPDATED,
|
|
41
|
+
[EventTypes.SERVER_INSTANCE_DELETED]: WEB_SOCKET_EVENT_TYPES.SERVER_INSTANCE_DELETED,
|
|
39
42
|
[EventTypes.TOOLS_UPDATED]: WEB_SOCKET_EVENT_TYPES.TOOLS,
|
|
40
43
|
[EventTypes.RESOURCES_UPDATED]: WEB_SOCKET_EVENT_TYPES.RESOURCES,
|
|
41
44
|
[EventTypes.LOG_ENTRY]: WEB_SOCKET_EVENT_TYPES.LOG,
|
|
42
45
|
[EventTypes.TOOL_CALL_STARTED]: WEB_SOCKET_EVENT_TYPES.TOOL_CALL_STARTED,
|
|
43
46
|
[EventTypes.TOOL_CALL_COMPLETED]: WEB_SOCKET_EVENT_TYPES.TOOL_CALL_COMPLETED,
|
|
44
47
|
[EventTypes.TOOL_CALL_ERROR]: WEB_SOCKET_EVENT_TYPES.TOOL_CALL_ERROR,
|
|
45
|
-
[EventTypes.CONFIGURATION_UPDATED]: WEB_SOCKET_EVENT_TYPES.CONFIGURATION_UPDATED
|
|
46
|
-
[EventTypes.CLIENT_CONNECTED]: WEB_SOCKET_EVENT_TYPES.CLIENT_CONNECTED,
|
|
47
|
-
[EventTypes.CLIENT_DISCONNECTED]: WEB_SOCKET_EVENT_TYPES.CLIENT_DISCONNECTED
|
|
48
|
+
[EventTypes.CONFIGURATION_UPDATED]: WEB_SOCKET_EVENT_TYPES.CONFIGURATION_UPDATED
|
|
48
49
|
};
|
|
49
50
|
export class WebSocketHandler {
|
|
50
51
|
socket;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"AAgCA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,QAAQ,mWAmH7B"}
|
package/dist/server/src/app.js
CHANGED
|
@@ -4,6 +4,7 @@ import path from 'path';
|
|
|
4
4
|
import { fileURLToPath } from 'url';
|
|
5
5
|
import { configManager } from './config/config-manager.js';
|
|
6
6
|
import { setJsonPrettyConfigGetter } from './utils/json-utils.js';
|
|
7
|
+
import { isIpAllowed } from './utils/network-security.js';
|
|
7
8
|
// MCP Protocol Routes
|
|
8
9
|
import { mcpGatewayRoutes } from './api/mcp/gateway.js';
|
|
9
10
|
// Web API Routes
|
|
@@ -20,6 +21,9 @@ import { webSocketRoutes } from './api/ws/events.js';
|
|
|
20
21
|
// Get __dirname equivalent in ESM
|
|
21
22
|
const __filename = fileURLToPath(import.meta.url);
|
|
22
23
|
const __dirname = path.dirname(__filename);
|
|
24
|
+
// Connection tracking counters (module-scoped, shared across all requests)
|
|
25
|
+
let currentConnections = 0;
|
|
26
|
+
let currentConcurrentRequests = 0;
|
|
23
27
|
/**
|
|
24
28
|
* Creates and configures a Fastify application instance for the MCP Hub Lite service.
|
|
25
29
|
*
|
|
@@ -55,6 +59,48 @@ export async function buildApp() {
|
|
|
55
59
|
const idleTimeout = config.security.idleConnectionTimeout;
|
|
56
60
|
fastify.server.keepAliveTimeout = idleTimeout;
|
|
57
61
|
fastify.server.headersTimeout = idleTimeout + 5000; // headersTimeout must be longer than keepAliveTimeout
|
|
62
|
+
// ===== Security: per-socket timeout + maxConnections =====
|
|
63
|
+
fastify.server.on('connection', (socket) => {
|
|
64
|
+
socket.setTimeout(config.security.connectionTimeout);
|
|
65
|
+
socket.on('timeout', () => {
|
|
66
|
+
socket.destroy(new Error('Connection timeout'));
|
|
67
|
+
});
|
|
68
|
+
currentConnections++;
|
|
69
|
+
socket.on('close', () => {
|
|
70
|
+
currentConnections--;
|
|
71
|
+
});
|
|
72
|
+
if (currentConnections > config.security.maxConnections) {
|
|
73
|
+
socket.destroy();
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
// ===== Security: IP allowlist =====
|
|
77
|
+
fastify.addHook('onRequest', (request, reply, done) => {
|
|
78
|
+
const allowed = config.security.allowedNetworks;
|
|
79
|
+
if (allowed.length > 0 && !isIpAllowed(request.ip, allowed)) {
|
|
80
|
+
reply.code(403).send({
|
|
81
|
+
error: 'Forbidden',
|
|
82
|
+
message: `Access denied: ${request.ip} is not allowed`
|
|
83
|
+
});
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
done();
|
|
87
|
+
});
|
|
88
|
+
// ===== Security: concurrent request limit =====
|
|
89
|
+
fastify.addHook('onRequest', (_request, reply, done) => {
|
|
90
|
+
if (currentConcurrentRequests >= config.security.maxConcurrentConnections) {
|
|
91
|
+
reply.code(503).send({
|
|
92
|
+
error: 'Service Unavailable',
|
|
93
|
+
message: 'Too many concurrent requests'
|
|
94
|
+
});
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
currentConcurrentRequests++;
|
|
98
|
+
done();
|
|
99
|
+
});
|
|
100
|
+
fastify.addHook('onResponse', (_request, _reply, done) => {
|
|
101
|
+
currentConcurrentRequests = Math.max(0, currentConcurrentRequests - 1);
|
|
102
|
+
done();
|
|
103
|
+
});
|
|
58
104
|
// Simple CORS for dev
|
|
59
105
|
fastify.addHook('onRequest', (request, reply, done) => {
|
|
60
106
|
reply.header('Access-Control-Allow-Origin', '*');
|
|
@@ -91,23 +91,10 @@ export interface LogEntryEventData {
|
|
|
91
91
|
timestamp: number;
|
|
92
92
|
}>;
|
|
93
93
|
}
|
|
94
|
-
export interface LogsClearedEventData {
|
|
95
|
-
serverName: string;
|
|
96
|
-
serverIndex: number;
|
|
97
|
-
}
|
|
98
94
|
export interface ConfigurationUpdatedEventData {
|
|
99
95
|
timestamp: number;
|
|
100
96
|
config: unknown;
|
|
101
97
|
changes?: unknown;
|
|
102
98
|
}
|
|
103
|
-
export interface ClientConnectedEventData {
|
|
104
|
-
timestamp: number;
|
|
105
|
-
client: unknown;
|
|
106
|
-
}
|
|
107
|
-
export interface ClientDisconnectedEventData {
|
|
108
|
-
timestamp: number;
|
|
109
|
-
clientId: string;
|
|
110
|
-
client?: unknown;
|
|
111
|
-
}
|
|
112
99
|
export type EventData = unknown;
|
|
113
100
|
//# sourceMappingURL=event.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.model.d.ts","sourceRoot":"","sources":["../../../../src/models/event.model.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"event.model.d.ts","sourceRoot":"","sources":["../../../../src/models/event.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,4 @@
|
|
|
1
|
-
import type { ServerStatus, ServerTransport } from '../../shared/types/common.types.js';
|
|
2
1
|
import type { ServerConfig as SharedServerConfig, ServerTemplate as SharedServerTemplate, ServerInstance as SharedServerInstance, ServerRuntimeConfig as SharedServerRuntimeConfig, ServerInstanceConfig as SharedServerInstanceConfig, TagDefinition as SharedTagDefinition, SystemConfig as SharedSystemConfig, LoggingConfig as SharedLoggingConfig, SecurityConfig as SharedSecurityConfig, Server as SharedServer, StatusInfo as SharedStatusInfo, LogEntry as SharedLogEntry } from '../../shared/models/server.model.js';
|
|
3
2
|
export type { SharedServerConfig as ServerConfig, SharedServerTemplate as ServerTemplate, SharedServerInstance as ServerInstance, SharedServerRuntimeConfig as ServerRuntimeConfig, SharedServerInstanceConfig as ServerInstanceConfig, SharedTagDefinition as TagDefinition, SharedSystemConfig as SystemConfig, SharedLoggingConfig as LoggingConfig, SharedSecurityConfig as SecurityConfig, SharedServer as Server, SharedStatusInfo as StatusInfo, SharedLogEntry as LogEntry };
|
|
4
3
|
export { InstanceSelectionStrategy } from '../../shared/models/server.model.js';
|
|
5
|
-
/**
|
|
6
|
-
* @deprecated Use ServerConfig from @shared-models/server.model instead
|
|
7
|
-
* Backend server configuration interface, extending shared configuration
|
|
8
|
-
*/
|
|
9
|
-
export interface LegacyBackendServerConfig extends Omit<SharedServerConfig, 'type'> {
|
|
10
|
-
id: string;
|
|
11
|
-
name: string;
|
|
12
|
-
command: string;
|
|
13
|
-
args: string[];
|
|
14
|
-
type: ServerTransport;
|
|
15
|
-
enabled: boolean;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* @deprecated Use appropriate types from @shared-models/server.model instead
|
|
19
|
-
* Server state interface
|
|
20
|
-
*/
|
|
21
|
-
export interface ServerState {
|
|
22
|
-
status: ServerStatus;
|
|
23
|
-
lastCheck: number;
|
|
24
|
-
error?: string;
|
|
25
|
-
pid?: number;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* @deprecated Use Server from @shared-models/server.model instead
|
|
29
|
-
* Backend server model interface, extending shared server model
|
|
30
|
-
*/
|
|
31
|
-
export interface LegacyBackendServer extends LegacyBackendServerConfig, ServerState {
|
|
32
|
-
}
|
|
33
4
|
//# sourceMappingURL=server.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.model.d.ts","sourceRoot":"","sources":["../../../../src/models/server.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"server.model.d.ts","sourceRoot":"","sources":["../../../../src/models/server.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,IAAI,kBAAkB,EAClC,cAAc,IAAI,oBAAoB,EACtC,cAAc,IAAI,oBAAoB,EACtC,mBAAmB,IAAI,yBAAyB,EAChD,oBAAoB,IAAI,0BAA0B,EAClD,aAAa,IAAI,mBAAmB,EACpC,YAAY,IAAI,kBAAkB,EAClC,aAAa,IAAI,mBAAmB,EACpC,cAAc,IAAI,oBAAoB,EACtC,MAAM,IAAI,YAAY,EACtB,UAAU,IAAI,gBAAgB,EAC9B,QAAQ,IAAI,cAAc,EAC3B,MAAM,gCAAgC,CAAC;AAKxC,YAAY,EACV,kBAAkB,IAAI,YAAY,EAClC,oBAAoB,IAAI,cAAc,EACtC,oBAAoB,IAAI,cAAc,EACtC,yBAAyB,IAAI,mBAAmB,EAChD,0BAA0B,IAAI,oBAAoB,EAClD,mBAAmB,IAAI,aAAa,EACpC,kBAAkB,IAAI,YAAY,EAClC,mBAAmB,IAAI,aAAa,EACpC,oBAAoB,IAAI,cAAc,EACtC,YAAY,IAAI,MAAM,EACtB,gBAAgB,IAAI,UAAU,EAC9B,cAAc,IAAI,QAAQ,EAC3B,CAAC;AAGF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -1,74 +1,5 @@
|
|
|
1
|
-
export declare const CMDErrors: {
|
|
2
|
-
readonly SystemErrors: {
|
|
3
|
-
readonly DATABASE_CONNECTION_FAILED: 1001;
|
|
4
|
-
readonly MEMORY_INSUFFICIENT: 1002;
|
|
5
|
-
readonly NETWORK_UNREACHABLE: 1003;
|
|
6
|
-
readonly DISK_FULL: 1004;
|
|
7
|
-
readonly SERVICE_UNAVAILABLE: 1005;
|
|
8
|
-
readonly INTERNAL_SERVER_ERROR: 1500;
|
|
9
|
-
};
|
|
10
|
-
readonly SecurityErrors: {
|
|
11
|
-
readonly UNAUTHORIZED: 2001;
|
|
12
|
-
readonly FORBIDDEN: 2003;
|
|
13
|
-
readonly TOKEN_EXPIRED: 2004;
|
|
14
|
-
readonly INVALID_CREDENTIALS: 2005;
|
|
15
|
-
readonly ACCESS_DENIED: 2006;
|
|
16
|
-
readonly RATE_LIMIT_EXCEEDED: 2007;
|
|
17
|
-
};
|
|
18
|
-
readonly BusinessErrors: {
|
|
19
|
-
readonly VALIDATION_FAILED: 3001;
|
|
20
|
-
readonly RESOURCE_NOT_FOUND: 3004;
|
|
21
|
-
readonly RESOURCE_ALREADY_EXISTS: 3009;
|
|
22
|
-
readonly INVALID_OPERATION: 3009;
|
|
23
|
-
readonly GROUP_CONSTRAINT_VIOLATION: 3010;
|
|
24
|
-
readonly SERVER_STATUS_CONFLICT: 3011;
|
|
25
|
-
readonly CONFIGURATION_INVALID: 3012;
|
|
26
|
-
};
|
|
27
|
-
readonly APIErrors: {
|
|
28
|
-
readonly INVALID_REQUEST_FORMAT: 4000;
|
|
29
|
-
readonly MISSING_REQUIRED_PARAMETER: 4001;
|
|
30
|
-
readonly INVALID_PARAMETER_VALUE: 4002;
|
|
31
|
-
readonly UNSUPPORTED_MEDIA_TYPE: 4003;
|
|
32
|
-
readonly BAD_REQUEST: 4000;
|
|
33
|
-
};
|
|
34
|
-
readonly MCPProtocolErrors: {
|
|
35
|
-
readonly MCP_SERVER_UNREACHABLE: -32001;
|
|
36
|
-
readonly MCP_REQUEST_TIMEOUT: -32002;
|
|
37
|
-
readonly MCP_INVALID_RESPONSE: -32003;
|
|
38
|
-
readonly MCP_TOOL_NOT_FOUND: -32801;
|
|
39
|
-
readonly MCP_EXECUTION_FAILED: -32802;
|
|
40
|
-
readonly MCP_INITIALIZATION_FAILED: -32803;
|
|
41
|
-
readonly MCP_INVALID_CONFIGURATION: -32804;
|
|
42
|
-
readonly MCP_RATE_LIMIT_EXCEEDED: -32805;
|
|
43
|
-
readonly MCP_AUTHENTICATION_FAILED: -32806;
|
|
44
|
-
readonly MCP_AUTHORIZATION_FAILED: -32807;
|
|
45
|
-
readonly MCP_RESOURCE_EXHAUSTED: -32808;
|
|
46
|
-
readonly MCP_PRECONDITION_FAILED: -32809;
|
|
47
|
-
readonly MCP_CONTENT_MODIFIED: -32810;
|
|
48
|
-
readonly MCP_LOOP_DETECTED: -32811;
|
|
49
|
-
readonly MCP_NOT_IMPLEMENTED: -32812;
|
|
50
|
-
readonly MCP_NOT_SUPPORTED: -32813;
|
|
51
|
-
readonly MCP_TOO_BUSY: -32814;
|
|
52
|
-
readonly MCP_SERVER_SHUTDOWN: -32815;
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
export type AllErrorCodes = (typeof CMDErrors.SystemErrors)[keyof typeof CMDErrors.SystemErrors] | (typeof CMDErrors.SecurityErrors)[keyof typeof CMDErrors.SecurityErrors] | (typeof CMDErrors.BusinessErrors)[keyof typeof CMDErrors.BusinessErrors] | (typeof CMDErrors.APIErrors)[keyof typeof CMDErrors.APIErrors] | (typeof CMDErrors.MCPProtocolErrors)[keyof typeof CMDErrors.MCPProtocolErrors] | 6000 | 6001 | 6002 | 6003 | 6004 | 6005;
|
|
56
|
-
export interface CMDBaseResponse<T = unknown> {
|
|
57
|
-
code: number;
|
|
58
|
-
message: string;
|
|
59
|
-
data?: T;
|
|
60
|
-
timestamp: string;
|
|
61
|
-
requestId?: string;
|
|
62
|
-
}
|
|
63
|
-
export type CMDSuccess<T = unknown> = {
|
|
64
|
-
code: 200 | 201 | 204;
|
|
65
|
-
message: string;
|
|
66
|
-
data: T;
|
|
67
|
-
timestamp: string;
|
|
68
|
-
requestId?: string;
|
|
69
|
-
};
|
|
70
1
|
export type CMDError = {
|
|
71
|
-
code:
|
|
2
|
+
code: number;
|
|
72
3
|
message: string;
|
|
73
4
|
data: null;
|
|
74
5
|
timestamp: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/models/types.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/models/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QAEN,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG,cAAc,CAAC;QAEtE,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;QAE9C,KAAK,CAAC,EAAE,MAAM,CAAC;QAEf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAElC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC"}
|
|
@@ -1,67 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export const CMDErrors = {
|
|
3
|
-
// === System-level errors (1000-1999) ===
|
|
4
|
-
// Infrastructure failures, runtime errors
|
|
5
|
-
SystemErrors: {
|
|
6
|
-
DATABASE_CONNECTION_FAILED: 1001,
|
|
7
|
-
MEMORY_INSUFFICIENT: 1002,
|
|
8
|
-
NETWORK_UNREACHABLE: 1003,
|
|
9
|
-
DISK_FULL: 1004,
|
|
10
|
-
SERVICE_UNAVAILABLE: 1005,
|
|
11
|
-
INTERNAL_SERVER_ERROR: 1500
|
|
12
|
-
},
|
|
13
|
-
// === Security errors (2000-2999) ===
|
|
14
|
-
// Authentication, authorization, security policy related
|
|
15
|
-
SecurityErrors: {
|
|
16
|
-
UNAUTHORIZED: 2001,
|
|
17
|
-
FORBIDDEN: 2003,
|
|
18
|
-
TOKEN_EXPIRED: 2004,
|
|
19
|
-
INVALID_CREDENTIALS: 2005,
|
|
20
|
-
ACCESS_DENIED: 2006,
|
|
21
|
-
RATE_LIMIT_EXCEEDED: 2007
|
|
22
|
-
},
|
|
23
|
-
// === Business logic errors (3000-3999) ===
|
|
24
|
-
// Business rule validation, resource status, etc.
|
|
25
|
-
BusinessErrors: {
|
|
26
|
-
VALIDATION_FAILED: 3001,
|
|
27
|
-
RESOURCE_NOT_FOUND: 3004,
|
|
28
|
-
RESOURCE_ALREADY_EXISTS: 3009,
|
|
29
|
-
INVALID_OPERATION: 3009,
|
|
30
|
-
GROUP_CONSTRAINT_VIOLATION: 3010,
|
|
31
|
-
SERVER_STATUS_CONFLICT: 3011,
|
|
32
|
-
CONFIGURATION_INVALID: 3012
|
|
33
|
-
},
|
|
34
|
-
// === API errors (4000-4999) ===
|
|
35
|
-
// Request format, parameter validation
|
|
36
|
-
APIErrors: {
|
|
37
|
-
INVALID_REQUEST_FORMAT: 4000,
|
|
38
|
-
MISSING_REQUIRED_PARAMETER: 4001,
|
|
39
|
-
INVALID_PARAMETER_VALUE: 4002,
|
|
40
|
-
UNSUPPORTED_MEDIA_TYPE: 4003,
|
|
41
|
-
BAD_REQUEST: 4000
|
|
42
|
-
},
|
|
43
|
-
// === MCP protocol errors (according to MCP standard specification) ===
|
|
44
|
-
// Error code definitions based on MCP protocol standard (https://modelcontextprotocol.io/specification/2025-11-25)
|
|
45
|
-
MCPProtocolErrors: {
|
|
46
|
-
// Standard JSON-RPC 2.0 error code range (-32099 to -32000)
|
|
47
|
-
MCP_SERVER_UNREACHABLE: -32001, // Service unreachable
|
|
48
|
-
MCP_REQUEST_TIMEOUT: -32002, // Request timeout
|
|
49
|
-
MCP_INVALID_RESPONSE: -32003, // Invalid response
|
|
50
|
-
// MCP specific error code range (-32899 to -32800)
|
|
51
|
-
MCP_TOOL_NOT_FOUND: -32801, // Tool not found (corresponds to toolNotFound in MCP specification)
|
|
52
|
-
MCP_EXECUTION_FAILED: -32802, // Execution failed
|
|
53
|
-
MCP_INITIALIZATION_FAILED: -32803, // Initialization failed
|
|
54
|
-
MCP_INVALID_CONFIGURATION: -32804, // Invalid configuration
|
|
55
|
-
MCP_RATE_LIMIT_EXCEEDED: -32805, // Rate limit exceeded
|
|
56
|
-
MCP_AUTHENTICATION_FAILED: -32806, // Authentication failed
|
|
57
|
-
MCP_AUTHORIZATION_FAILED: -32807, // Authorization failed
|
|
58
|
-
MCP_RESOURCE_EXHAUSTED: -32808, // Resource exhausted
|
|
59
|
-
MCP_PRECONDITION_FAILED: -32809, // Precondition failed
|
|
60
|
-
MCP_CONTENT_MODIFIED: -32810, // Content modified
|
|
61
|
-
MCP_LOOP_DETECTED: -32811, // Loop detected
|
|
62
|
-
MCP_NOT_IMPLEMENTED: -32812, // Not implemented
|
|
63
|
-
MCP_NOT_SUPPORTED: -32813, // Not supported
|
|
64
|
-
MCP_TOO_BUSY: -32814, // Overloaded
|
|
65
|
-
MCP_SERVER_SHUTDOWN: -32815 // Server shutdown
|
|
66
|
-
}
|
|
67
|
-
};
|
|
1
|
+
export {};
|
|
@@ -65,12 +65,30 @@ async function startDevServer() {
|
|
|
65
65
|
logger.info('------------------------------------------------', LOG_MODULES.DEV_SERVER);
|
|
66
66
|
app = await buildApp();
|
|
67
67
|
const config = configManager.getConfig();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
const host = config.system.host;
|
|
69
|
+
let port = config.system.port;
|
|
70
|
+
const maxPortAttempts = 10;
|
|
71
|
+
// Auto-increment port if occupied (dev mode only — no hard fail)
|
|
72
|
+
for (let attempt = 0; attempt < maxPortAttempts; attempt++) {
|
|
73
|
+
try {
|
|
74
|
+
await app.listen({ port, host });
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
const error = err;
|
|
79
|
+
if (error.code === 'EADDRINUSE' && attempt < maxPortAttempts - 1) {
|
|
80
|
+
logger.warn(`Port ${port} is already in use, trying port ${port + 1}...`, LOG_MODULES.DEV_SERVER);
|
|
81
|
+
port++;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
throw err;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (port !== config.system.port) {
|
|
89
|
+
logger.info(`Dev server using alternate port ${port} (default ${config.system.port} was occupied)`, LOG_MODULES.DEV_SERVER);
|
|
90
|
+
}
|
|
91
|
+
logger.info(`MCP Hub Lite Dev Server running at http://${host}:${port}`, LOG_MODULES.DEV_SERVER);
|
|
74
92
|
// Write PID file after server starts successfully
|
|
75
93
|
PidManager.writePid();
|
|
76
94
|
// Auto-create instances for enabled servers without existing instances
|
|
@@ -117,6 +117,19 @@ export declare class McpConnectionManager {
|
|
|
117
117
|
* Refreshes server tools and resources (only for bidirectional transports).
|
|
118
118
|
*/
|
|
119
119
|
private refreshServerResources;
|
|
120
|
+
/**
|
|
121
|
+
* Sends logging/setLevel request to downstream server to start receiving log notifications.
|
|
122
|
+
* This is a best-effort request — servers that don't support logging will silently ignore it.
|
|
123
|
+
*/
|
|
124
|
+
private requestLoggingFromServer;
|
|
125
|
+
/**
|
|
126
|
+
* Handles the OAuth authorization flow for Streamable HTTP servers.
|
|
127
|
+
* Starts a local callback server, waits for the user to complete auth in the browser,
|
|
128
|
+
* then finishes the auth on the transport.
|
|
129
|
+
*
|
|
130
|
+
* @returns true if OAuth was handled successfully, false otherwise
|
|
131
|
+
*/
|
|
132
|
+
private handleOAuthFlow;
|
|
120
133
|
/**
|
|
121
134
|
* Handles connection error with logging and retry delay.
|
|
122
135
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../../../src/services/connection/connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../../../src/services/connection/connection-manager.ts"],"names":[],"mappings":"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"}
|