@shin1ohno/sage 0.7.9 → 0.8.6

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.
Files changed (149) hide show
  1. package/README.md +26 -8
  2. package/dist/cli/mcp-handler.d.ts.map +1 -1
  3. package/dist/cli/mcp-handler.js +141 -987
  4. package/dist/cli/mcp-handler.js.map +1 -1
  5. package/dist/config/loader.d.ts.map +1 -1
  6. package/dist/config/loader.js +30 -1
  7. package/dist/config/loader.js.map +1 -1
  8. package/dist/config/update-validation.d.ts +52 -0
  9. package/dist/config/update-validation.d.ts.map +1 -0
  10. package/dist/config/update-validation.js +133 -0
  11. package/dist/config/update-validation.js.map +1 -0
  12. package/dist/config/validation.d.ts +130 -0
  13. package/dist/config/validation.d.ts.map +1 -0
  14. package/dist/config/validation.js +53 -0
  15. package/dist/config/validation.js.map +1 -0
  16. package/dist/index.js +443 -1632
  17. package/dist/index.js.map +1 -1
  18. package/dist/integrations/calendar-event-creator.d.ts +2 -3
  19. package/dist/integrations/calendar-event-creator.d.ts.map +1 -1
  20. package/dist/integrations/calendar-event-creator.js +3 -4
  21. package/dist/integrations/calendar-event-creator.js.map +1 -1
  22. package/dist/integrations/calendar-event-deleter.d.ts +2 -3
  23. package/dist/integrations/calendar-event-deleter.d.ts.map +1 -1
  24. package/dist/integrations/calendar-event-deleter.js +3 -4
  25. package/dist/integrations/calendar-event-deleter.js.map +1 -1
  26. package/dist/integrations/calendar-event-response.d.ts +4 -17
  27. package/dist/integrations/calendar-event-response.d.ts.map +1 -1
  28. package/dist/integrations/calendar-event-response.js +3 -4
  29. package/dist/integrations/calendar-event-response.js.map +1 -1
  30. package/dist/integrations/calendar-service.d.ts +6 -3
  31. package/dist/integrations/calendar-service.d.ts.map +1 -1
  32. package/dist/integrations/calendar-service.js +26 -4
  33. package/dist/integrations/calendar-service.js.map +1 -1
  34. package/dist/integrations/calendar-source-manager.d.ts +302 -0
  35. package/dist/integrations/calendar-source-manager.d.ts.map +1 -0
  36. package/dist/integrations/calendar-source-manager.js +862 -0
  37. package/dist/integrations/calendar-source-manager.js.map +1 -0
  38. package/dist/integrations/google-calendar-service.d.ts +176 -0
  39. package/dist/integrations/google-calendar-service.d.ts.map +1 -0
  40. package/dist/integrations/google-calendar-service.js +745 -0
  41. package/dist/integrations/google-calendar-service.js.map +1 -0
  42. package/dist/integrations/notion-mcp.d.ts +28 -3
  43. package/dist/integrations/notion-mcp.d.ts.map +1 -1
  44. package/dist/integrations/notion-mcp.js +21 -5
  45. package/dist/integrations/notion-mcp.js.map +1 -1
  46. package/dist/integrations/reminder-manager.d.ts.map +1 -1
  47. package/dist/integrations/reminder-manager.js +2 -0
  48. package/dist/integrations/reminder-manager.js.map +1 -1
  49. package/dist/oauth/google-oauth-handler.d.ts +149 -0
  50. package/dist/oauth/google-oauth-handler.d.ts.map +1 -0
  51. package/dist/oauth/google-oauth-handler.js +365 -0
  52. package/dist/oauth/google-oauth-handler.js.map +1 -0
  53. package/dist/services/container.d.ts +56 -0
  54. package/dist/services/container.d.ts.map +1 -0
  55. package/dist/services/container.js +76 -0
  56. package/dist/services/container.js.map +1 -0
  57. package/dist/tools/calendar/handlers.d.ts +186 -0
  58. package/dist/tools/calendar/handlers.d.ts.map +1 -0
  59. package/dist/tools/calendar/handlers.js +525 -0
  60. package/dist/tools/calendar/handlers.js.map +1 -0
  61. package/dist/tools/calendar/index.d.ts +11 -0
  62. package/dist/tools/calendar/index.d.ts.map +1 -0
  63. package/dist/tools/calendar/index.js +10 -0
  64. package/dist/tools/calendar/index.js.map +1 -0
  65. package/dist/tools/index.d.ts +23 -0
  66. package/dist/tools/index.d.ts.map +1 -0
  67. package/dist/tools/index.js +24 -0
  68. package/dist/tools/index.js.map +1 -0
  69. package/dist/tools/integrations/handlers.d.ts +57 -0
  70. package/dist/tools/integrations/handlers.d.ts.map +1 -0
  71. package/dist/tools/integrations/handlers.js +159 -0
  72. package/dist/tools/integrations/handlers.js.map +1 -0
  73. package/dist/tools/integrations/index.d.ts +11 -0
  74. package/dist/tools/integrations/index.d.ts.map +1 -0
  75. package/dist/tools/integrations/index.js +10 -0
  76. package/dist/tools/integrations/index.js.map +1 -0
  77. package/dist/tools/registry.d.ts +8 -0
  78. package/dist/tools/registry.d.ts.map +1 -0
  79. package/dist/tools/registry.js +10 -0
  80. package/dist/tools/registry.js.map +1 -0
  81. package/dist/tools/reminders/handlers.d.ts +61 -0
  82. package/dist/tools/reminders/handlers.d.ts.map +1 -0
  83. package/dist/tools/reminders/handlers.js +148 -0
  84. package/dist/tools/reminders/handlers.js.map +1 -0
  85. package/dist/tools/reminders/index.d.ts +11 -0
  86. package/dist/tools/reminders/index.d.ts.map +1 -0
  87. package/dist/tools/reminders/index.js +10 -0
  88. package/dist/tools/reminders/index.js.map +1 -0
  89. package/dist/tools/setup/handlers.d.ts +81 -0
  90. package/dist/tools/setup/handlers.d.ts.map +1 -0
  91. package/dist/tools/setup/handlers.js +172 -0
  92. package/dist/tools/setup/handlers.js.map +1 -0
  93. package/dist/tools/setup/index.d.ts +11 -0
  94. package/dist/tools/setup/index.d.ts.map +1 -0
  95. package/dist/tools/setup/index.js +10 -0
  96. package/dist/tools/setup/index.js.map +1 -0
  97. package/dist/tools/tasks/handlers.d.ts +95 -0
  98. package/dist/tools/tasks/handlers.d.ts.map +1 -0
  99. package/dist/tools/tasks/handlers.js +197 -0
  100. package/dist/tools/tasks/handlers.js.map +1 -0
  101. package/dist/tools/tasks/index.d.ts +11 -0
  102. package/dist/tools/tasks/index.d.ts.map +1 -0
  103. package/dist/tools/tasks/index.js +10 -0
  104. package/dist/tools/tasks/index.js.map +1 -0
  105. package/dist/tools/types.d.ts +54 -0
  106. package/dist/tools/types.d.ts.map +1 -0
  107. package/dist/tools/types.js +9 -0
  108. package/dist/tools/types.js.map +1 -0
  109. package/dist/types/calendar.d.ts +41 -0
  110. package/dist/types/calendar.d.ts.map +1 -0
  111. package/dist/types/calendar.js +18 -0
  112. package/dist/types/calendar.js.map +1 -0
  113. package/dist/types/config.d.ts +15 -0
  114. package/dist/types/config.d.ts.map +1 -1
  115. package/dist/types/config.js +21 -0
  116. package/dist/types/config.js.map +1 -1
  117. package/dist/types/google-calendar-types.d.ts +139 -0
  118. package/dist/types/google-calendar-types.d.ts.map +1 -0
  119. package/dist/types/google-calendar-types.js +46 -0
  120. package/dist/types/google-calendar-types.js.map +1 -0
  121. package/dist/types/index.d.ts +1 -0
  122. package/dist/types/index.d.ts.map +1 -1
  123. package/dist/types/index.js +1 -0
  124. package/dist/types/index.js.map +1 -1
  125. package/dist/utils/estimation.d.ts +34 -0
  126. package/dist/utils/estimation.d.ts.map +1 -1
  127. package/dist/utils/estimation.js +38 -1
  128. package/dist/utils/estimation.js.map +1 -1
  129. package/dist/utils/mcp-response.d.ts +89 -0
  130. package/dist/utils/mcp-response.d.ts.map +1 -0
  131. package/dist/utils/mcp-response.js +103 -0
  132. package/dist/utils/mcp-response.js.map +1 -0
  133. package/dist/utils/task-splitter.d.ts +65 -4
  134. package/dist/utils/task-splitter.d.ts.map +1 -1
  135. package/dist/utils/task-splitter.js +69 -5
  136. package/dist/utils/task-splitter.js.map +1 -1
  137. package/dist/version.d.ts +2 -2
  138. package/dist/version.d.ts.map +1 -1
  139. package/dist/version.js +22 -4
  140. package/dist/version.js.map +1 -1
  141. package/package.json +4 -3
  142. package/dist/cli/http-server.d.ts +0 -74
  143. package/dist/cli/http-server.d.ts.map +0 -1
  144. package/dist/cli/http-server.js +0 -407
  145. package/dist/cli/http-server.js.map +0 -1
  146. package/dist/remote/remote-mcp-server.d.ts +0 -244
  147. package/dist/remote/remote-mcp-server.d.ts.map +0 -1
  148. package/dist/remote/remote-mcp-server.js +0 -507
  149. package/dist/remote/remote-mcp-server.js.map +0 -1
@@ -1,407 +0,0 @@
1
- /**
2
- * HTTP Server Mode for sage
3
- * Requirements: 14.1, 14.9, 14.10, 13.1
4
- *
5
- * Provides HTTP server functionality for Remote MCP access.
6
- */
7
- import { createServer } from 'http';
8
- import { VERSION } from '../version.js';
9
- import { createServer as createHttpsServer } from 'https';
10
- import { randomUUID } from 'crypto';
11
- /**
12
- * HTTP Server implementation
13
- */
14
- class HTTPServer {
15
- config;
16
- server = null;
17
- running = false;
18
- startTime = null;
19
- tokens = new Map();
20
- constructor(config) {
21
- this.config = config;
22
- }
23
- /**
24
- * Start the server
25
- */
26
- async start() {
27
- if (this.running) {
28
- return;
29
- }
30
- return new Promise((resolve, reject) => {
31
- try {
32
- const requestHandler = this.handleRequest.bind(this);
33
- if (this.config.ssl) {
34
- this.server = createHttpsServer({
35
- cert: this.config.ssl.cert,
36
- key: this.config.ssl.key,
37
- ca: this.config.ssl.ca,
38
- }, requestHandler);
39
- }
40
- else {
41
- this.server = createServer(requestHandler);
42
- }
43
- this.server.listen(this.config.port, this.config.host, () => {
44
- this.running = true;
45
- this.startTime = new Date();
46
- resolve();
47
- });
48
- this.server.on('error', (error) => {
49
- reject(error);
50
- });
51
- }
52
- catch (error) {
53
- reject(error);
54
- }
55
- });
56
- }
57
- /**
58
- * Stop the server
59
- */
60
- async stop() {
61
- if (!this.running || !this.server) {
62
- return;
63
- }
64
- return new Promise((resolve) => {
65
- this.server.close(() => {
66
- this.running = false;
67
- this.startTime = null;
68
- resolve();
69
- });
70
- });
71
- }
72
- /**
73
- * Check if server is running
74
- */
75
- isRunning() {
76
- return this.running;
77
- }
78
- /**
79
- * Get configured port
80
- */
81
- getPort() {
82
- return this.config.port;
83
- }
84
- /**
85
- * Get configured host
86
- */
87
- getHost() {
88
- return this.config.host;
89
- }
90
- /**
91
- * Get server info
92
- */
93
- getServerInfo() {
94
- return {
95
- port: this.config.port,
96
- host: this.config.host,
97
- ssl: !!this.config.ssl,
98
- authEnabled: this.config.auth?.enabled ?? false,
99
- startTime: this.startTime ?? undefined,
100
- };
101
- }
102
- /**
103
- * Handle incoming HTTP request
104
- */
105
- handleRequest(req, res) {
106
- const url = req.url || '/';
107
- const method = req.method || 'GET';
108
- const origin = req.headers.origin;
109
- // Add CORS headers
110
- const corsHeaders = this.getCORSHeaders(origin);
111
- for (const [key, value] of Object.entries(corsHeaders)) {
112
- res.setHeader(key, value);
113
- }
114
- // Handle preflight
115
- if (method === 'OPTIONS') {
116
- res.writeHead(204);
117
- res.end();
118
- return;
119
- }
120
- // Health check endpoint
121
- if (url === '/health' && method === 'GET') {
122
- this.handleHealthCheck(res);
123
- return;
124
- }
125
- // Auth token endpoint
126
- if (url === '/auth/token' && method === 'POST') {
127
- this.handleAuthToken(req, res);
128
- return;
129
- }
130
- // MCP endpoint
131
- if (url === '/mcp' && method === 'POST') {
132
- this.handleMCPRequest(req, res);
133
- return;
134
- }
135
- // 404 for unknown routes
136
- res.writeHead(404, { 'Content-Type': 'application/json' });
137
- res.end(JSON.stringify({ error: 'Not found' }));
138
- }
139
- /**
140
- * Get CORS headers
141
- */
142
- getCORSHeaders(origin) {
143
- const allowedOrigins = this.config.cors?.allowedOrigins || ['*'];
144
- let allowOrigin = '*';
145
- if (origin && allowedOrigins.includes(origin)) {
146
- allowOrigin = origin;
147
- }
148
- else if (allowedOrigins.length === 1 && allowedOrigins[0] !== '*') {
149
- allowOrigin = allowedOrigins[0];
150
- }
151
- return {
152
- 'Access-Control-Allow-Origin': allowOrigin,
153
- 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
154
- 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-API-Key',
155
- 'Access-Control-Max-Age': '86400',
156
- };
157
- }
158
- /**
159
- * Handle health check request
160
- */
161
- handleHealthCheck(res) {
162
- const uptime = this.startTime ? Date.now() - this.startTime.getTime() : 0;
163
- const health = {
164
- status: this.running ? 'ok' : 'error',
165
- uptime,
166
- version: VERSION,
167
- timestamp: new Date().toISOString(),
168
- };
169
- res.writeHead(200, { 'Content-Type': 'application/json' });
170
- res.end(JSON.stringify(health));
171
- }
172
- /**
173
- * Handle auth token request
174
- */
175
- handleAuthToken(req, res) {
176
- // Check if auth is enabled and API key is valid
177
- if (this.config.auth?.enabled) {
178
- const apiKey = req.headers['x-api-key'];
179
- if (!apiKey || !this.config.auth.apiKeys?.includes(apiKey)) {
180
- res.writeHead(401, { 'Content-Type': 'application/json' });
181
- res.end(JSON.stringify({ error: 'Invalid API key' }));
182
- return;
183
- }
184
- }
185
- // Read request body
186
- let body = '';
187
- req.on('data', (chunk) => {
188
- body += chunk.toString();
189
- });
190
- req.on('end', () => {
191
- try {
192
- const parsed = JSON.parse(body);
193
- const userId = parsed.userId || 'anonymous';
194
- // Generate token
195
- const token = randomUUID();
196
- const expiry = this.config.auth?.tokenExpiry || 3600000; // 1 hour default
197
- const expiresAt = Date.now() + expiry;
198
- this.tokens.set(token, { userId, expiresAt });
199
- res.writeHead(200, { 'Content-Type': 'application/json' });
200
- res.end(JSON.stringify({ token, expiresIn: expiry }));
201
- }
202
- catch {
203
- res.writeHead(400, { 'Content-Type': 'application/json' });
204
- res.end(JSON.stringify({ error: 'Invalid request body' }));
205
- }
206
- });
207
- }
208
- /**
209
- * Handle MCP request
210
- */
211
- handleMCPRequest(req, res) {
212
- // Check authentication if enabled
213
- if (this.config.auth?.enabled) {
214
- const authResult = this.checkAuth(req);
215
- if (!authResult.success) {
216
- res.writeHead(authResult.statusCode, { 'Content-Type': 'application/json' });
217
- res.end(JSON.stringify({
218
- jsonrpc: '2.0',
219
- id: null,
220
- error: {
221
- code: authResult.errorCode,
222
- message: authResult.errorMessage,
223
- },
224
- }));
225
- return;
226
- }
227
- }
228
- // Read request body
229
- let body = '';
230
- req.on('data', (chunk) => {
231
- body += chunk.toString();
232
- });
233
- req.on('end', () => {
234
- try {
235
- const request = this.parseJSONRPCRequest(body);
236
- // TODO: Route to appropriate MCP tool handler
237
- // For now, return a placeholder response
238
- const response = {
239
- jsonrpc: '2.0',
240
- id: request.id,
241
- result: {
242
- message: 'MCP request received',
243
- method: request.method,
244
- params: request.params,
245
- },
246
- };
247
- res.writeHead(200, { 'Content-Type': 'application/json' });
248
- res.end(JSON.stringify(response));
249
- }
250
- catch (error) {
251
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
252
- res.writeHead(400, { 'Content-Type': 'application/json' });
253
- res.end(JSON.stringify({
254
- jsonrpc: '2.0',
255
- id: null,
256
- error: {
257
- code: -32700,
258
- message: errorMessage,
259
- },
260
- }));
261
- }
262
- });
263
- req.on('error', (error) => {
264
- res.writeHead(500, { 'Content-Type': 'application/json' });
265
- res.end(JSON.stringify({
266
- jsonrpc: '2.0',
267
- id: null,
268
- error: {
269
- code: -32603,
270
- message: error.message,
271
- },
272
- }));
273
- });
274
- }
275
- /**
276
- * Check authentication
277
- */
278
- checkAuth(req) {
279
- const authHeader = req.headers.authorization;
280
- const apiKey = req.headers['x-api-key'];
281
- const clientIP = req.headers['x-forwarded-for']?.split(',')[0] ||
282
- req.socket.remoteAddress ||
283
- '';
284
- // Check IP whitelist
285
- if (this.config.auth?.ipWhitelist &&
286
- this.config.auth.ipWhitelist.length > 0 &&
287
- !this.isIPAllowed(clientIP)) {
288
- return {
289
- success: false,
290
- statusCode: 403,
291
- errorCode: -32001,
292
- errorMessage: 'IP not allowed',
293
- };
294
- }
295
- // Check API key or token
296
- const token = this.extractToken(authHeader);
297
- if (!token && !apiKey) {
298
- return {
299
- success: false,
300
- statusCode: 401,
301
- errorCode: -32002,
302
- errorMessage: 'Authentication required',
303
- };
304
- }
305
- // Validate token
306
- if (token) {
307
- const tokenData = this.tokens.get(token);
308
- if (tokenData && Date.now() <= tokenData.expiresAt) {
309
- return { success: true };
310
- }
311
- }
312
- // Validate API key
313
- if (apiKey && this.config.auth?.apiKeys?.includes(apiKey)) {
314
- return { success: true };
315
- }
316
- return {
317
- success: false,
318
- statusCode: 401,
319
- errorCode: -32003,
320
- errorMessage: 'Invalid credentials',
321
- };
322
- }
323
- /**
324
- * Check if IP is allowed
325
- */
326
- isIPAllowed(ip) {
327
- if (!this.config.auth?.ipWhitelist || this.config.auth.ipWhitelist.length === 0) {
328
- return true;
329
- }
330
- for (const allowed of this.config.auth.ipWhitelist) {
331
- if (ip === allowed) {
332
- return true;
333
- }
334
- // Simple CIDR matching
335
- if (allowed.includes('/')) {
336
- const [network, bits] = allowed.split('/');
337
- const mask = parseInt(bits, 10);
338
- if (this.matchCIDR(ip, network, mask)) {
339
- return true;
340
- }
341
- }
342
- }
343
- return false;
344
- }
345
- /**
346
- * Match IP against CIDR
347
- */
348
- matchCIDR(ip, network, mask) {
349
- const ipParts = ip.split('.').map(Number);
350
- const networkParts = network.split('.').map(Number);
351
- if (ipParts.length !== 4 || networkParts.length !== 4) {
352
- return false;
353
- }
354
- const ipNum = (ipParts[0] << 24) | (ipParts[1] << 16) | (ipParts[2] << 8) | ipParts[3];
355
- const networkNum = (networkParts[0] << 24) | (networkParts[1] << 16) | (networkParts[2] << 8) | networkParts[3];
356
- const maskNum = ~((1 << (32 - mask)) - 1);
357
- return (ipNum & maskNum) === (networkNum & maskNum);
358
- }
359
- /**
360
- * Extract token from Authorization header
361
- */
362
- extractToken(authHeader) {
363
- if (!authHeader) {
364
- return null;
365
- }
366
- if (authHeader.startsWith('Bearer ')) {
367
- return authHeader.slice(7);
368
- }
369
- return null;
370
- }
371
- /**
372
- * Parse JSON-RPC request
373
- */
374
- parseJSONRPCRequest(body) {
375
- let parsed;
376
- try {
377
- parsed = JSON.parse(body);
378
- }
379
- catch {
380
- throw new Error('Invalid JSON');
381
- }
382
- const request = parsed;
383
- if (!request.jsonrpc || request.jsonrpc !== '2.0') {
384
- throw new Error('Invalid JSON-RPC request');
385
- }
386
- if (request.method === undefined) {
387
- throw new Error('Invalid JSON-RPC request: missing method');
388
- }
389
- return {
390
- jsonrpc: '2.0',
391
- id: request.id ?? null,
392
- method: request.method,
393
- params: request.params,
394
- };
395
- }
396
- }
397
- /**
398
- * Create and start an HTTP server
399
- * @param config - Server configuration
400
- * @returns Running HTTP server instance
401
- */
402
- export async function createHTTPServer(config) {
403
- const server = new HTTPServer(config);
404
- await server.start();
405
- return server;
406
- }
407
- //# sourceMappingURL=http-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/cli/http-server.ts"],"names":[],"mappings":"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"}
@@ -1,244 +0,0 @@
1
- /**
2
- * Remote MCP Server
3
- * HTTP/WebSocket based MCP server for remote access
4
- * Requirements: 13.1-13.5
5
- */
6
- /**
7
- * SSL configuration
8
- */
9
- export interface SSLConfig {
10
- cert: string;
11
- key: string;
12
- ca?: string;
13
- }
14
- /**
15
- * Remote MCP Server configuration
16
- */
17
- export interface RemoteMCPServerConfig {
18
- port?: number;
19
- host?: string;
20
- ssl?: SSLConfig;
21
- auth?: {
22
- enabled: boolean;
23
- jwtSecret?: string;
24
- apiKeys?: string[];
25
- ipWhitelist?: string[];
26
- tokenExpiry?: number;
27
- };
28
- cors?: {
29
- allowedOrigins?: string[];
30
- allowedMethods?: string[];
31
- allowedHeaders?: string[];
32
- };
33
- }
34
- /**
35
- * Session information
36
- */
37
- export interface Session {
38
- id: string;
39
- userId: string;
40
- createdAt: Date;
41
- lastAccessedAt: Date;
42
- data: Record<string, unknown>;
43
- }
44
- /**
45
- * Session manager configuration
46
- */
47
- export interface SessionManagerConfig {
48
- sessionTimeout: number;
49
- maxSessions: number;
50
- }
51
- /**
52
- * Health check response
53
- */
54
- export interface HealthCheckResponse {
55
- status: 'ok' | 'error';
56
- uptime: number;
57
- version: string;
58
- timestamp: string;
59
- }
60
- /**
61
- * JSON-RPC request
62
- */
63
- export interface JSONRPCRequest {
64
- jsonrpc: string;
65
- id: number | string;
66
- method: string;
67
- params?: Record<string, unknown>;
68
- }
69
- /**
70
- * JSON-RPC response
71
- */
72
- export interface JSONRPCResponse {
73
- jsonrpc: string;
74
- id: number | string | null;
75
- result?: unknown;
76
- error?: {
77
- code: number;
78
- message: string;
79
- data?: unknown;
80
- };
81
- }
82
- /**
83
- * MCP Over HTTP Handler configuration
84
- */
85
- export interface MCPOverHTTPHandlerConfig {
86
- allowedOrigins?: string[];
87
- }
88
- /**
89
- * Session Manager
90
- * Handles session creation, validation, and cleanup
91
- */
92
- export declare class SessionManager {
93
- private sessions;
94
- private config;
95
- constructor(config: SessionManagerConfig);
96
- /**
97
- * Create a new session
98
- */
99
- createSession(userId: string): Session;
100
- /**
101
- * Check if a session is valid
102
- */
103
- isValidSession(sessionId: string): boolean;
104
- /**
105
- * Terminate a session
106
- */
107
- terminateSession(sessionId: string): void;
108
- /**
109
- * Get a session by ID
110
- */
111
- getSession(sessionId: string): Session | undefined;
112
- /**
113
- * Clean up expired sessions
114
- */
115
- cleanExpiredSessions(): void;
116
- /**
117
- * Get active session count
118
- */
119
- getActiveSessionCount(): number;
120
- /**
121
- * Remove oldest session
122
- */
123
- private removeOldestSession;
124
- }
125
- /**
126
- * Authentication Configuration
127
- * Handles JWT, API keys, and IP whitelist authentication
128
- */
129
- export declare class AuthConfig {
130
- private config;
131
- private tokens;
132
- constructor(config: NonNullable<RemoteMCPServerConfig['auth']>);
133
- /**
134
- * Generate a token for a user
135
- */
136
- generateToken(userId: string): string;
137
- /**
138
- * Validate a token
139
- */
140
- validateToken(token: string): boolean;
141
- /**
142
- * Validate an API key
143
- */
144
- validateApiKey(apiKey: string): boolean;
145
- /**
146
- * Check if an IP is allowed
147
- */
148
- isIPAllowed(ip: string): boolean;
149
- /**
150
- * Match IP against pattern (exact or CIDR)
151
- */
152
- private matchIP;
153
- /**
154
- * Extract token from Authorization header
155
- */
156
- extractToken(authHeader: string | undefined): string | null;
157
- /**
158
- * Check if authentication is enabled
159
- */
160
- isEnabled(): boolean;
161
- }
162
- /**
163
- * MCP Over HTTP Handler
164
- * Handles JSON-RPC over HTTP protocol
165
- */
166
- export declare class MCPOverHTTPHandler {
167
- private config;
168
- constructor(config?: MCPOverHTTPHandlerConfig);
169
- /**
170
- * Parse a JSON-RPC request
171
- */
172
- parseRequest(body: string): JSONRPCRequest;
173
- /**
174
- * Build a success response
175
- */
176
- buildResponse(id: number | string | null, result: unknown): JSONRPCResponse;
177
- /**
178
- * Build an error response
179
- */
180
- buildErrorResponse(id: number | string | null, code: number, message: string, data?: unknown): JSONRPCResponse;
181
- /**
182
- * Get CORS headers for a request
183
- */
184
- getCORSHeaders(origin?: string): Record<string, string>;
185
- }
186
- /**
187
- * Remote MCP Server
188
- * HTTP/HTTPS server that exposes MCP protocol over HTTP
189
- */
190
- export declare class RemoteMCPServer {
191
- private config;
192
- private server;
193
- private running;
194
- private startTime;
195
- private _sessionManager;
196
- private auth;
197
- private httpHandler;
198
- constructor(config: RemoteMCPServerConfig);
199
- /**
200
- * Start the server
201
- */
202
- start(): Promise<void>;
203
- /**
204
- * Stop the server
205
- */
206
- stop(): Promise<void>;
207
- /**
208
- * Check if server is running
209
- */
210
- isRunning(): boolean;
211
- /**
212
- * Get configured port
213
- */
214
- getPort(): number;
215
- /**
216
- * Check if HTTPS is enabled
217
- */
218
- isHTTPS(): boolean;
219
- /**
220
- * Health check
221
- */
222
- healthCheck(): Promise<HealthCheckResponse>;
223
- /**
224
- * Get session manager for external access
225
- */
226
- getSessionManager(): SessionManager;
227
- /**
228
- * Get active session count
229
- */
230
- getActiveSessionCount(): number;
231
- /**
232
- * Handle incoming HTTP request
233
- */
234
- private handleRequest;
235
- /**
236
- * Handle health check request
237
- */
238
- private handleHealthCheck;
239
- /**
240
- * Handle MCP request
241
- */
242
- private handleMCPRequest;
243
- }
244
- //# sourceMappingURL=remote-mcp-server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-mcp-server.d.ts","sourceRoot":"","sources":["../../src/remote/remote-mcp-server.ts"],"names":[],"mappings":"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"}