@elliotding/ai-agent-mcp 0.1.24 → 0.1.26
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 +27 -0
- package/package.json +4 -1
- package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-generate-testcase.md +0 -101
- package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-submit_zct_job.md +0 -158
- package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-conf-status.md +0 -311
- package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-sdk-log.md +0 -64
- package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-zmb-log-errors.md +0 -84
- package/ai-resource-telemetry.json +0 -40
- package/dist/api/cached-client.d.ts +0 -48
- package/dist/api/cached-client.d.ts.map +0 -1
- package/dist/api/cached-client.js +0 -126
- package/dist/api/cached-client.js.map +0 -1
- package/dist/api/client.d.ts +0 -281
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -371
- package/dist/api/client.js.map +0 -1
- package/dist/auth/index.d.ts +0 -8
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -26
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/middleware.d.ts +0 -36
- package/dist/auth/middleware.d.ts.map +0 -1
- package/dist/auth/middleware.js +0 -194
- package/dist/auth/middleware.js.map +0 -1
- package/dist/auth/permissions.d.ts +0 -60
- package/dist/auth/permissions.d.ts.map +0 -1
- package/dist/auth/permissions.js +0 -262
- package/dist/auth/permissions.js.map +0 -1
- package/dist/auth/token-validator.d.ts +0 -52
- package/dist/auth/token-validator.d.ts.map +0 -1
- package/dist/auth/token-validator.js +0 -215
- package/dist/auth/token-validator.js.map +0 -1
- package/dist/cache/cache-manager.d.ts +0 -49
- package/dist/cache/cache-manager.d.ts.map +0 -1
- package/dist/cache/cache-manager.js +0 -191
- package/dist/cache/cache-manager.js.map +0 -1
- package/dist/cache/index.d.ts +0 -6
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -12
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/redis-client.d.ts +0 -45
- package/dist/cache/redis-client.d.ts.map +0 -1
- package/dist/cache/redis-client.js +0 -210
- package/dist/cache/redis-client.js.map +0 -1
- package/dist/config/constants.d.ts +0 -28
- package/dist/config/constants.d.ts.map +0 -1
- package/dist/config/constants.js +0 -31
- package/dist/config/constants.js.map +0 -1
- package/dist/config/index.d.ts +0 -71
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -190
- package/dist/config/index.js.map +0 -1
- package/dist/filesystem/manager.d.ts +0 -45
- package/dist/filesystem/manager.d.ts.map +0 -1
- package/dist/filesystem/manager.js +0 -246
- package/dist/filesystem/manager.js.map +0 -1
- package/dist/git/multi-source-manager.d.ts +0 -78
- package/dist/git/multi-source-manager.d.ts.map +0 -1
- package/dist/git/multi-source-manager.js +0 -577
- package/dist/git/multi-source-manager.js.map +0 -1
- package/dist/git/operations.d.ts +0 -27
- package/dist/git/operations.d.ts.map +0 -1
- package/dist/git/operations.js +0 -83
- package/dist/git/operations.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -122
- package/dist/index.js.map +0 -1
- package/dist/monitoring/health.d.ts +0 -35
- package/dist/monitoring/health.d.ts.map +0 -1
- package/dist/monitoring/health.js +0 -105
- package/dist/monitoring/health.js.map +0 -1
- package/dist/prompts/cache.d.ts +0 -69
- package/dist/prompts/cache.d.ts.map +0 -1
- package/dist/prompts/cache.js +0 -163
- package/dist/prompts/cache.js.map +0 -1
- package/dist/prompts/generator.d.ts +0 -49
- package/dist/prompts/generator.d.ts.map +0 -1
- package/dist/prompts/generator.js +0 -160
- package/dist/prompts/generator.js.map +0 -1
- package/dist/prompts/index.d.ts +0 -13
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js +0 -24
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/manager.d.ts +0 -169
- package/dist/prompts/manager.d.ts.map +0 -1
- package/dist/prompts/manager.js +0 -488
- package/dist/prompts/manager.js.map +0 -1
- package/dist/resources/index.d.ts +0 -6
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js +0 -10
- package/dist/resources/index.js.map +0 -1
- package/dist/resources/loader.d.ts +0 -88
- package/dist/resources/loader.d.ts.map +0 -1
- package/dist/resources/loader.js +0 -492
- package/dist/resources/loader.js.map +0 -1
- package/dist/server/http.d.ts +0 -57
- package/dist/server/http.d.ts.map +0 -1
- package/dist/server/http.js +0 -435
- package/dist/server/http.js.map +0 -1
- package/dist/server.d.ts +0 -13
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -200
- package/dist/server.js.map +0 -1
- package/dist/session/manager.d.ts +0 -91
- package/dist/session/manager.d.ts.map +0 -1
- package/dist/session/manager.js +0 -251
- package/dist/session/manager.js.map +0 -1
- package/dist/telemetry/index.d.ts +0 -3
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/telemetry/index.js +0 -7
- package/dist/telemetry/index.js.map +0 -1
- package/dist/telemetry/manager.d.ts +0 -151
- package/dist/telemetry/manager.d.ts.map +0 -1
- package/dist/telemetry/manager.js +0 -367
- package/dist/telemetry/manager.js.map +0 -1
- package/dist/tools/index.d.ts +0 -12
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -28
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/manage-subscription.d.ts +0 -47
- package/dist/tools/manage-subscription.d.ts.map +0 -1
- package/dist/tools/manage-subscription.js +0 -314
- package/dist/tools/manage-subscription.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -40
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -85
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/search-resources.d.ts +0 -35
- package/dist/tools/search-resources.d.ts.map +0 -1
- package/dist/tools/search-resources.js +0 -159
- package/dist/tools/search-resources.js.map +0 -1
- package/dist/tools/sync-resources.d.ts +0 -54
- package/dist/tools/sync-resources.d.ts.map +0 -1
- package/dist/tools/sync-resources.js +0 -733
- package/dist/tools/sync-resources.js.map +0 -1
- package/dist/tools/track-usage.d.ts +0 -63
- package/dist/tools/track-usage.d.ts.map +0 -1
- package/dist/tools/track-usage.js +0 -90
- package/dist/tools/track-usage.js.map +0 -1
- package/dist/tools/uninstall-resource.d.ts +0 -30
- package/dist/tools/uninstall-resource.d.ts.map +0 -1
- package/dist/tools/uninstall-resource.js +0 -174
- package/dist/tools/uninstall-resource.js.map +0 -1
- package/dist/tools/upload-resource.d.ts +0 -81
- package/dist/tools/upload-resource.d.ts.map +0 -1
- package/dist/tools/upload-resource.js +0 -393
- package/dist/tools/upload-resource.js.map +0 -1
- package/dist/transport/sse.d.ts +0 -29
- package/dist/transport/sse.d.ts.map +0 -1
- package/dist/transport/sse.js +0 -271
- package/dist/transport/sse.js.map +0 -1
- package/dist/types/errors.d.ts +0 -60
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/errors.js +0 -112
- package/dist/types/errors.js.map +0 -1
- package/dist/types/index.d.ts +0 -7
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -23
- package/dist/types/index.js.map +0 -1
- package/dist/types/mcp.d.ts +0 -50
- package/dist/types/mcp.d.ts.map +0 -1
- package/dist/types/mcp.js +0 -6
- package/dist/types/mcp.js.map +0 -1
- package/dist/types/resources.d.ts +0 -109
- package/dist/types/resources.d.ts.map +0 -1
- package/dist/types/resources.js +0 -7
- package/dist/types/resources.js.map +0 -1
- package/dist/types/tools.d.ts +0 -235
- package/dist/types/tools.d.ts.map +0 -1
- package/dist/types/tools.js +0 -6
- package/dist/types/tools.js.map +0 -1
- package/dist/utils/cursor-paths.d.ts +0 -84
- package/dist/utils/cursor-paths.d.ts.map +0 -1
- package/dist/utils/cursor-paths.js +0 -166
- package/dist/utils/cursor-paths.js.map +0 -1
- package/dist/utils/log-cleaner.d.ts +0 -18
- package/dist/utils/log-cleaner.d.ts.map +0 -1
- package/dist/utils/log-cleaner.js +0 -112
- package/dist/utils/log-cleaner.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -59
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -292
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -58
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -214
- package/dist/utils/validation.js.map +0 -1
- package/src/api/cached-client.ts +0 -144
- package/src/api/client.ts +0 -697
- package/src/auth/index.ts +0 -11
- package/src/auth/middleware.ts +0 -244
- package/src/auth/permissions.ts +0 -323
- package/src/auth/token-validator.ts +0 -292
- package/src/cache/cache-manager.ts +0 -243
- package/src/cache/index.ts +0 -6
- package/src/cache/redis-client.ts +0 -249
- package/src/config/constants.ts +0 -33
- package/src/config/index.ts +0 -269
- package/src/filesystem/manager.ts +0 -235
- package/src/git/multi-source-manager.ts +0 -654
- package/src/git/operations.ts +0 -93
- package/src/index.ts +0 -157
- package/src/monitoring/health.ts +0 -132
- package/src/prompts/cache.ts +0 -140
- package/src/prompts/generator.ts +0 -143
- package/src/prompts/index.ts +0 -20
- package/src/prompts/manager.ts +0 -613
- package/src/resources/index.ts +0 -13
- package/src/resources/loader.ts +0 -563
- package/src/server/http.ts +0 -549
- package/src/server.ts +0 -204
- package/src/session/manager.ts +0 -296
- package/src/telemetry/index.ts +0 -10
- package/src/telemetry/manager.ts +0 -419
- package/src/tools/index.ts +0 -12
- package/src/tools/manage-subscription.ts +0 -385
- package/src/tools/registry.ts +0 -97
- package/src/tools/search-resources.ts +0 -185
- package/src/tools/sync-resources.ts +0 -827
- package/src/tools/track-usage.ts +0 -113
- package/src/tools/uninstall-resource.ts +0 -199
- package/src/tools/upload-resource.ts +0 -431
- package/src/transport/sse.ts +0 -308
- package/src/types/errors.ts +0 -146
- package/src/types/index.ts +0 -7
- package/src/types/mcp.ts +0 -61
- package/src/types/resources.ts +0 -141
- package/src/types/tools.ts +0 -284
- package/src/utils/cursor-paths.ts +0 -135
- package/src/utils/log-cleaner.ts +0 -92
- package/src/utils/logger.ts +0 -333
- package/src/utils/validation.ts +0 -262
package/dist/server.js
DELETED
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* MCP Server Main Logic
|
|
4
|
-
* Implements Model Context Protocol server with dual transport support
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
-
var ownKeys = function(o) {
|
|
24
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
-
var ar = [];
|
|
26
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
|
-
return ownKeys(o);
|
|
30
|
-
};
|
|
31
|
-
return function (mod) {
|
|
32
|
-
if (mod && mod.__esModule) return mod;
|
|
33
|
-
var result = {};
|
|
34
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
-
__setModuleDefault(result, mod);
|
|
36
|
-
return result;
|
|
37
|
-
};
|
|
38
|
-
})();
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.startServer = startServer;
|
|
41
|
-
exports.stopServer = stopServer;
|
|
42
|
-
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
43
|
-
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
44
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
45
|
-
const logger_1 = require("./utils/logger");
|
|
46
|
-
const config_1 = require("./config");
|
|
47
|
-
const registry_1 = require("./tools/registry");
|
|
48
|
-
const tools_1 = require("./tools");
|
|
49
|
-
const http_1 = require("./server/http");
|
|
50
|
-
let server = null;
|
|
51
|
-
/**
|
|
52
|
-
* Register all MCP tools
|
|
53
|
-
*/
|
|
54
|
-
function registerTools() {
|
|
55
|
-
logger_1.logger.info('Registering MCP tools...');
|
|
56
|
-
registry_1.toolRegistry.registerTool(tools_1.syncResourcesTool);
|
|
57
|
-
registry_1.toolRegistry.registerTool(tools_1.manageSubscriptionTool);
|
|
58
|
-
registry_1.toolRegistry.registerTool(tools_1.searchResourcesTool);
|
|
59
|
-
registry_1.toolRegistry.registerTool(tools_1.uploadResourceTool);
|
|
60
|
-
registry_1.toolRegistry.registerTool(tools_1.uninstallResourceTool);
|
|
61
|
-
registry_1.toolRegistry.registerTool(tools_1.trackUsageTool);
|
|
62
|
-
logger_1.logger.info({ toolCount: registry_1.toolRegistry.getToolCount() }, `Registered ${registry_1.toolRegistry.getToolCount()} MCP tools`);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Start MCP Server with stdio transport
|
|
66
|
-
*/
|
|
67
|
-
async function startStdioServer() {
|
|
68
|
-
logger_1.logger.info('Starting MCP Server with stdio transport...');
|
|
69
|
-
// Create MCP Server
|
|
70
|
-
server = new index_js_1.Server({
|
|
71
|
-
name: 'csp-ai-agent-mcp',
|
|
72
|
-
version: '0.2.0',
|
|
73
|
-
}, {
|
|
74
|
-
capabilities: {
|
|
75
|
-
tools: {},
|
|
76
|
-
prompts: {},
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
// Install Prompt list/get handlers so Command and Skill resources are
|
|
80
|
-
// exposed as MCP Prompts (Cursor slash commands).
|
|
81
|
-
const { promptManager } = await Promise.resolve().then(() => __importStar(require('./prompts/index.js')));
|
|
82
|
-
promptManager.installHandlers(server);
|
|
83
|
-
// Handle tools/list request
|
|
84
|
-
server.setRequestHandler(types_js_1.ListToolsRequestSchema, () => {
|
|
85
|
-
const tools = registry_1.toolRegistry.getMCPToolDefinitions();
|
|
86
|
-
logger_1.logger.debug({ toolCount: tools.length }, 'tools/list request handled');
|
|
87
|
-
return {
|
|
88
|
-
tools,
|
|
89
|
-
};
|
|
90
|
-
});
|
|
91
|
-
// Handle tools/call request
|
|
92
|
-
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
93
|
-
const { name, arguments: args } = request.params;
|
|
94
|
-
logger_1.logger.info({ toolName: name, arguments: args }, `tools/call request: ${name}`);
|
|
95
|
-
const tool = registry_1.toolRegistry.getTool(name);
|
|
96
|
-
if (!tool) {
|
|
97
|
-
const error = `Tool not found: ${name}`;
|
|
98
|
-
logger_1.logger.error({ toolName: name }, error);
|
|
99
|
-
return {
|
|
100
|
-
content: [
|
|
101
|
-
{
|
|
102
|
-
type: 'text',
|
|
103
|
-
text: JSON.stringify({
|
|
104
|
-
success: false,
|
|
105
|
-
error: {
|
|
106
|
-
code: 'TOOL_NOT_FOUND',
|
|
107
|
-
message: error,
|
|
108
|
-
},
|
|
109
|
-
}),
|
|
110
|
-
},
|
|
111
|
-
],
|
|
112
|
-
isError: true,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
try {
|
|
116
|
-
// Call the tool handler
|
|
117
|
-
const result = await tool.handler(args || {});
|
|
118
|
-
return {
|
|
119
|
-
content: [
|
|
120
|
-
{
|
|
121
|
-
type: 'text',
|
|
122
|
-
text: JSON.stringify(result),
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
129
|
-
logger_1.logger.error({ toolName: name, error: errorMessage }, `Tool execution failed: ${name}`);
|
|
130
|
-
return {
|
|
131
|
-
content: [
|
|
132
|
-
{
|
|
133
|
-
type: 'text',
|
|
134
|
-
text: JSON.stringify({
|
|
135
|
-
success: false,
|
|
136
|
-
error: {
|
|
137
|
-
code: 'TOOL_EXECUTION_ERROR',
|
|
138
|
-
message: errorMessage,
|
|
139
|
-
},
|
|
140
|
-
}),
|
|
141
|
-
},
|
|
142
|
-
],
|
|
143
|
-
isError: true,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
// Connect to stdio transport
|
|
148
|
-
const transport = new stdio_js_1.StdioServerTransport();
|
|
149
|
-
await server.connect(transport);
|
|
150
|
-
// Flush any pending telemetry immediately — stdio reconnects when Cursor
|
|
151
|
-
// restarts the process, so treat connect as a reconnect event.
|
|
152
|
-
const { telemetry: tel } = await Promise.resolve().then(() => __importStar(require('./telemetry/index.js')));
|
|
153
|
-
tel.flushOnReconnect();
|
|
154
|
-
logger_1.logger.info('✅ MCP Server started successfully (stdio transport)');
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Start MCP Server with SSE transport
|
|
158
|
-
*/
|
|
159
|
-
async function startSSEServer() {
|
|
160
|
-
logger_1.logger.info('Starting MCP Server with SSE transport...');
|
|
161
|
-
// Start HTTP server
|
|
162
|
-
await http_1.httpServer.start();
|
|
163
|
-
logger_1.logger.info('✅ MCP Server started successfully (SSE transport)');
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Start MCP Server (auto-detect transport mode)
|
|
167
|
-
*/
|
|
168
|
-
async function startServer() {
|
|
169
|
-
// Register all tools (common for both transports)
|
|
170
|
-
registerTools();
|
|
171
|
-
// Start server based on transport mode
|
|
172
|
-
const transportMode = config_1.config.transport.mode;
|
|
173
|
-
logger_1.logger.info({ transportMode }, `Starting server with ${transportMode} transport`);
|
|
174
|
-
if (transportMode === 'sse') {
|
|
175
|
-
await startSSEServer();
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
await startStdioServer();
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Stop MCP Server
|
|
183
|
-
*/
|
|
184
|
-
async function stopServer() {
|
|
185
|
-
logger_1.logger.info('Stopping MCP Server...');
|
|
186
|
-
const transportMode = config_1.config.transport.mode;
|
|
187
|
-
if (transportMode === 'sse') {
|
|
188
|
-
// Stop HTTP server
|
|
189
|
-
await http_1.httpServer.stop();
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
// Stop stdio server
|
|
193
|
-
if (server) {
|
|
194
|
-
await server.close();
|
|
195
|
-
server = null;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
logger_1.logger.info('MCP Server stopped');
|
|
199
|
-
}
|
|
200
|
-
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session Manager
|
|
3
|
-
* Manages SSE sessions and connections
|
|
4
|
-
*/
|
|
5
|
-
import type { ServerResponse } from 'http';
|
|
6
|
-
export interface Session {
|
|
7
|
-
id: string;
|
|
8
|
-
userId: string;
|
|
9
|
-
email: string;
|
|
10
|
-
groups: string[];
|
|
11
|
-
token: string;
|
|
12
|
-
ip: string;
|
|
13
|
-
createdAt: Date;
|
|
14
|
-
lastActivity: Date;
|
|
15
|
-
connection?: ServerResponse;
|
|
16
|
-
}
|
|
17
|
-
export interface CreateSessionOptions {
|
|
18
|
-
userId?: string;
|
|
19
|
-
email?: string;
|
|
20
|
-
groups?: string[];
|
|
21
|
-
}
|
|
22
|
-
export declare class SessionManager {
|
|
23
|
-
private sessions;
|
|
24
|
-
private totalSessions;
|
|
25
|
-
private cleanupInterval?;
|
|
26
|
-
constructor();
|
|
27
|
-
/**
|
|
28
|
-
* Create new session
|
|
29
|
-
* @param token - Auth token (JWT from CSP)
|
|
30
|
-
* @param ip - Client IP address
|
|
31
|
-
* @param options - User info from /user/permissions API (userId, email, groups)
|
|
32
|
-
*/
|
|
33
|
-
createSession(token: string, ip: string, options?: CreateSessionOptions): Promise<Session>;
|
|
34
|
-
/**
|
|
35
|
-
* Get session by ID
|
|
36
|
-
*/
|
|
37
|
-
getSession(sessionId: string): Session | undefined;
|
|
38
|
-
/**
|
|
39
|
-
* Register SSE connection with session
|
|
40
|
-
*/
|
|
41
|
-
registerConnection(sessionId: string, connection: ServerResponse): void;
|
|
42
|
-
/**
|
|
43
|
-
* Send message to session via SSE
|
|
44
|
-
* Enhanced error handling to prevent EPIPE errors
|
|
45
|
-
* Note: This is synchronous for SSE transport compatibility
|
|
46
|
-
*/
|
|
47
|
-
sendMessage(sessionId: string, message: unknown): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Update session activity timestamp
|
|
50
|
-
*/
|
|
51
|
-
updateActivity(sessionId: string): void;
|
|
52
|
-
/**
|
|
53
|
-
* Close session with improved error handling
|
|
54
|
-
*/
|
|
55
|
-
closeSession(sessionId: string): void;
|
|
56
|
-
/**
|
|
57
|
-
* Close all sessions
|
|
58
|
-
*/
|
|
59
|
-
closeAllSessions(): void;
|
|
60
|
-
/**
|
|
61
|
-
* Get active session count
|
|
62
|
-
*/
|
|
63
|
-
getActiveSessionCount(): number;
|
|
64
|
-
/**
|
|
65
|
-
* Get total session count (since server start)
|
|
66
|
-
*/
|
|
67
|
-
getTotalSessionCount(): number;
|
|
68
|
-
/**
|
|
69
|
-
* Get all active sessions
|
|
70
|
-
*/
|
|
71
|
-
getActiveSessions(): Session[];
|
|
72
|
-
/**
|
|
73
|
-
* Start cleanup interval for expired sessions
|
|
74
|
-
*/
|
|
75
|
-
private startCleanup;
|
|
76
|
-
/**
|
|
77
|
-
* Stop cleanup interval
|
|
78
|
-
*/
|
|
79
|
-
stopCleanup(): void;
|
|
80
|
-
/**
|
|
81
|
-
* Cleanup expired sessions
|
|
82
|
-
*/
|
|
83
|
-
private cleanupExpiredSessions;
|
|
84
|
-
/**
|
|
85
|
-
* Extract user ID from token (simplified)
|
|
86
|
-
* TODO: Implement proper JWT validation in Stage 5
|
|
87
|
-
*/
|
|
88
|
-
private extractUserIdFromToken;
|
|
89
|
-
}
|
|
90
|
-
export declare const sessionManager: SessionManager;
|
|
91
|
-
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAI3C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,eAAe,CAAC,CAAiB;;IAOzC;;;;;OAKG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,OAAO,CAAC;IA0BnB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIlD;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,IAAI;IAQvE;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAoDzD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOvC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IA0CrC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAQxB;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;OAEG;IACH,iBAAiB,IAAI,OAAO,EAAE;IAI9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;CAK/B;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
package/dist/session/manager.js
DELETED
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Session Manager
|
|
4
|
-
* Manages SSE sessions and connections
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.sessionManager = exports.SessionManager = void 0;
|
|
8
|
-
const crypto_1 = require("crypto");
|
|
9
|
-
const logger_1 = require("../utils/logger");
|
|
10
|
-
const config_1 = require("../config");
|
|
11
|
-
class SessionManager {
|
|
12
|
-
sessions = new Map();
|
|
13
|
-
totalSessions = 0;
|
|
14
|
-
cleanupInterval;
|
|
15
|
-
constructor() {
|
|
16
|
-
// Start cleanup interval
|
|
17
|
-
this.startCleanup();
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Create new session
|
|
21
|
-
* @param token - Auth token (JWT from CSP)
|
|
22
|
-
* @param ip - Client IP address
|
|
23
|
-
* @param options - User info from /user/permissions API (userId, email, groups)
|
|
24
|
-
*/
|
|
25
|
-
async createSession(token, ip, options) {
|
|
26
|
-
const sessionId = (0, crypto_1.randomUUID)();
|
|
27
|
-
const userId = options?.userId ?? this.extractUserIdFromToken(token);
|
|
28
|
-
const email = options?.email ?? '';
|
|
29
|
-
const groups = options?.groups ?? [];
|
|
30
|
-
const session = {
|
|
31
|
-
id: sessionId,
|
|
32
|
-
userId,
|
|
33
|
-
email,
|
|
34
|
-
groups,
|
|
35
|
-
token,
|
|
36
|
-
ip,
|
|
37
|
-
createdAt: new Date(),
|
|
38
|
-
lastActivity: new Date(),
|
|
39
|
-
};
|
|
40
|
-
this.sessions.set(sessionId, session);
|
|
41
|
-
this.totalSessions++;
|
|
42
|
-
logger_1.logger.info({ sessionId, userId, email, groups, ip }, 'Session created');
|
|
43
|
-
return session;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Get session by ID
|
|
47
|
-
*/
|
|
48
|
-
getSession(sessionId) {
|
|
49
|
-
return this.sessions.get(sessionId);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Register SSE connection with session
|
|
53
|
-
*/
|
|
54
|
-
registerConnection(sessionId, connection) {
|
|
55
|
-
const session = this.sessions.get(sessionId);
|
|
56
|
-
if (session) {
|
|
57
|
-
session.connection = connection;
|
|
58
|
-
logger_1.logger.debug({ sessionId }, 'Connection registered with session');
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Send message to session via SSE
|
|
63
|
-
* Enhanced error handling to prevent EPIPE errors
|
|
64
|
-
* Note: This is synchronous for SSE transport compatibility
|
|
65
|
-
*/
|
|
66
|
-
sendMessage(sessionId, message) {
|
|
67
|
-
const session = this.sessions.get(sessionId);
|
|
68
|
-
if (!session || !session.connection || session.connection.destroyed) {
|
|
69
|
-
logger_1.logger.debug({ sessionId }, 'Cannot send message: session not found or connection closed');
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
const data = JSON.stringify(message);
|
|
74
|
-
// Use write callback to detect errors (fire-and-forget)
|
|
75
|
-
let writeSuccess = true;
|
|
76
|
-
session.connection.write(`data: ${data}\n\n`, (err) => {
|
|
77
|
-
if (err) {
|
|
78
|
-
// Handle specific error types
|
|
79
|
-
if (err.message.includes('EPIPE') || err.message.includes('ECONNRESET')) {
|
|
80
|
-
logger_1.logger.debug({
|
|
81
|
-
sessionId,
|
|
82
|
-
error: err.message
|
|
83
|
-
}, 'Message write failed (client disconnected)');
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
logger_1.logger.warn({
|
|
87
|
-
sessionId,
|
|
88
|
-
error: err.message
|
|
89
|
-
}, 'Message write failed');
|
|
90
|
-
}
|
|
91
|
-
writeSuccess = false;
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
logger_1.logger.debug({ sessionId, messageSize: data.length }, 'Message sent to session');
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
return writeSuccess;
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
// Catch synchronous errors
|
|
101
|
-
if (error instanceof Error) {
|
|
102
|
-
if (error.message.includes('EPIPE') || error.message.includes('ECONNRESET')) {
|
|
103
|
-
logger_1.logger.debug({
|
|
104
|
-
sessionId,
|
|
105
|
-
error: error.message
|
|
106
|
-
}, 'Message send failed (client disconnected)');
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
logger_1.logger.error({
|
|
110
|
-
error: error.message,
|
|
111
|
-
sessionId
|
|
112
|
-
}, 'Failed to send message to session');
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Update session activity timestamp
|
|
120
|
-
*/
|
|
121
|
-
updateActivity(sessionId) {
|
|
122
|
-
const session = this.sessions.get(sessionId);
|
|
123
|
-
if (session) {
|
|
124
|
-
session.lastActivity = new Date();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Close session with improved error handling
|
|
129
|
-
*/
|
|
130
|
-
closeSession(sessionId) {
|
|
131
|
-
const session = this.sessions.get(sessionId);
|
|
132
|
-
if (session) {
|
|
133
|
-
// Close connection if exists
|
|
134
|
-
if (session.connection && !session.connection.destroyed) {
|
|
135
|
-
try {
|
|
136
|
-
// Try to send close message
|
|
137
|
-
session.connection.write(`data: ${JSON.stringify({ type: 'close' })}\n\n`, (err) => {
|
|
138
|
-
if (err) {
|
|
139
|
-
logger_1.logger.debug({
|
|
140
|
-
sessionId,
|
|
141
|
-
error: err.message
|
|
142
|
-
}, 'Close message write failed (expected if client already disconnected)');
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
// End connection
|
|
146
|
-
session.connection.end();
|
|
147
|
-
}
|
|
148
|
-
catch (error) {
|
|
149
|
-
if (error instanceof Error) {
|
|
150
|
-
// Only log non-EPIPE errors as warnings
|
|
151
|
-
if (error.message.includes('EPIPE') || error.message.includes('ECONNRESET')) {
|
|
152
|
-
logger_1.logger.debug({
|
|
153
|
-
sessionId,
|
|
154
|
-
error: error.message
|
|
155
|
-
}, 'Connection already closed');
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
logger_1.logger.warn({
|
|
159
|
-
sessionId,
|
|
160
|
-
error: error.message
|
|
161
|
-
}, 'Error closing connection');
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
// Remove session
|
|
167
|
-
this.sessions.delete(sessionId);
|
|
168
|
-
logger_1.logger.info({ sessionId }, 'Session closed');
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Close all sessions
|
|
173
|
-
*/
|
|
174
|
-
closeAllSessions() {
|
|
175
|
-
logger_1.logger.info({ count: this.sessions.size }, 'Closing all sessions');
|
|
176
|
-
for (const [sessionId] of this.sessions) {
|
|
177
|
-
this.closeSession(sessionId);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Get active session count
|
|
182
|
-
*/
|
|
183
|
-
getActiveSessionCount() {
|
|
184
|
-
return this.sessions.size;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Get total session count (since server start)
|
|
188
|
-
*/
|
|
189
|
-
getTotalSessionCount() {
|
|
190
|
-
return this.totalSessions;
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Get all active sessions
|
|
194
|
-
*/
|
|
195
|
-
getActiveSessions() {
|
|
196
|
-
return Array.from(this.sessions.values());
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Start cleanup interval for expired sessions
|
|
200
|
-
*/
|
|
201
|
-
startCleanup() {
|
|
202
|
-
const timeout = config_1.config.session?.timeout || 3600; // Default 1 hour
|
|
203
|
-
const cleanupInterval = 60000; // Check every 1 minute
|
|
204
|
-
this.cleanupInterval = setInterval(() => {
|
|
205
|
-
this.cleanupExpiredSessions(timeout);
|
|
206
|
-
}, cleanupInterval);
|
|
207
|
-
logger_1.logger.info({ timeout, cleanupInterval }, 'Session cleanup started');
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Stop cleanup interval
|
|
211
|
-
*/
|
|
212
|
-
stopCleanup() {
|
|
213
|
-
if (this.cleanupInterval) {
|
|
214
|
-
clearInterval(this.cleanupInterval);
|
|
215
|
-
this.cleanupInterval = undefined;
|
|
216
|
-
logger_1.logger.info('Session cleanup stopped');
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Cleanup expired sessions
|
|
221
|
-
*/
|
|
222
|
-
cleanupExpiredSessions(timeoutSeconds) {
|
|
223
|
-
const now = Date.now();
|
|
224
|
-
const expiredSessions = [];
|
|
225
|
-
for (const [sessionId, session] of this.sessions) {
|
|
226
|
-
const inactiveTime = (now - session.lastActivity.getTime()) / 1000;
|
|
227
|
-
if (inactiveTime > timeoutSeconds) {
|
|
228
|
-
expiredSessions.push(sessionId);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
if (expiredSessions.length > 0) {
|
|
232
|
-
logger_1.logger.info({ count: expiredSessions.length }, 'Cleaning up expired sessions');
|
|
233
|
-
for (const sessionId of expiredSessions) {
|
|
234
|
-
this.closeSession(sessionId);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Extract user ID from token (simplified)
|
|
240
|
-
* TODO: Implement proper JWT validation in Stage 5
|
|
241
|
-
*/
|
|
242
|
-
extractUserIdFromToken(token) {
|
|
243
|
-
// For now, use a simple hash or the token itself
|
|
244
|
-
// In Stage 5, this should decode and validate JWT
|
|
245
|
-
return token.substring(0, 16);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
exports.SessionManager = SessionManager;
|
|
249
|
-
// Singleton instance
|
|
250
|
-
exports.sessionManager = new SessionManager();
|
|
251
|
-
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,QAAQ,GACT,MAAM,cAAc,CAAC"}
|
package/dist/telemetry/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.telemetry = exports.TelemetryManager = void 0;
|
|
4
|
-
var manager_js_1 = require("./manager.js");
|
|
5
|
-
Object.defineProperty(exports, "TelemetryManager", { enumerable: true, get: function () { return manager_js_1.TelemetryManager; } });
|
|
6
|
-
Object.defineProperty(exports, "telemetry", { enumerable: true, get: function () { return manager_js_1.telemetry; } });
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":";;;AAAA,2CAA2D;AAAlD,8GAAA,gBAAgB,OAAA;AAAE,uGAAA,SAAS,OAAA"}
|